Definition MapDisjoint (m:Map A) (m':Map B) :=
    forall a:ad, in_dom A a m = true -> in_dom B a m' = true -> False.Definition MapDisjoint_1 (m:Map A) (m':Map B) :=
    match MapSweep A (fun (a:ad) (_:A) => in_dom B a m') m with
    | None => true
    | _ => false
    end.Definition MapDisjoint_2 (m:Map A) (m':Map B) :=
    eqmap A (MapDomRestrTo A B m m') (M0 A).

Lemma MapMerge_disjoint : forall m m':Map A, MapDisjoint A A m m' -> forall a:ad, in_dom A a (MapMerge A m m') = orb (andb (in_dom A a m) (negb (in_dom A a m'))) (andb (in_dom A a m') (negb (in_dom A a m))).