let rec domains_overlap m1 m2 = 
    M.fold 
      (fun k _ res ->
         if M.mem k m1 then
           Some(k)
         else
           res)
      m2
      None