(* égalité dans bool puis sur les (Map bool) (dans bool) *)
Definition eq_bool (b0 b1 : bool) : bool :=
match b0, b1 with
| false, false => true
| false, true => false
| true, false => false
| true, true => true
end.

Lemma equal_eq_bool : forall b : bool, eq_bool b b = true.
Fixpoint eqm_bool (x y : Map bool) {struct y} : bool :=
match x, y with
| M0, M0 => true
| M0, M1 _ _ => false
| M0, M2 _ _ => false
| M1 _ _, M0 => false
| M1 a b, M1 c d => Neqb a c && eq_bool b d
| M1 _ _, M2 _ _ => false
| M2 _ _, M0 => false
| M2 _ _, M1 _ _ => false
| M2 a b, M2 c d => eqm_bool a c && eqm_bool b d
end.