Definition in_dom (a:ad) (m:Map A) :=
match MapGet A m a with
| None => false
| _ => true
end.

(* Specifications: *)
Lemma in_dom_M0 : forall a:ad, in_dom a (M0 A) = false.
Lemma in_dom_M1 : forall (a a0:ad) (y:A), in_dom a0 (M1 A a y) = Neqb a a0.
Lemma in_dom_M1_1 : forall (a:ad) (y:A), in_dom a (M1 A a y) = true.
Lemma in_dom_M1_2 :
forall (a a0:ad) (y:A), in_dom a0 (M1 A a y) = true -> a = a0.
Lemma in_dom_some :
forall (m:Map A) (a:ad),
in_dom a m = true -> {y : A | MapGet A m a = Some y}.
Lemma in_dom_none :
forall (m:Map A) (a:ad), in_dom a m = false -> MapGet A m a = None.
Lemma in_dom_put :
forall (m:Map A) (a0:ad) (y0:A) (a:ad),
in_dom a (MapPut A m a0 y0) = orb (Neqb a a0) (in_dom a m).
Lemma in_dom_put_behind :
forall (m:Map A) (a0:ad) (y0:A) (a:ad),
in_dom a (MapPut_behind A m a0 y0) = orb (Neqb a a0) (in_dom a m).
Lemma in_dom_remove :
forall (m:Map A) (a0 a:ad),
in_dom a (MapRemove A m a0) = andb (negb (Neqb a a0)) (in_dom a m).
Lemma in_dom_merge :
forall (m m':Map A) (a:ad),
in_dom a (MapMerge A m m') = orb (in_dom a m) (in_dom a m').
Lemma in_dom_delta :
forall (m m':Map A) (a:ad),
in_dom a (MapDelta A m m') = xorb (in_dom a m) (in_dom a m').