Fixpoint Map_eq (m1 m2 : Map unit) {struct m2} : bool :=
match m1, m2 with
| M0, M0 => true
| M1 a1 _, M1 a2 _ => Neqb a1 a2
| M2 m1 m1', M2 m2 m2' => Map_eq m1 m2 && Map_eq m1' m2'
| _, _ => false
end.

Lemma Map_eq_correct : forall m : Map unit, Map_eq m m = true.