(* Extra function on equality *)

Lemma is_even_0 : is_even 0 = true.
Ltac elim_div :=
unfold Z.div, Z.modulo;
match goal with
|  H : context[ Z.div_eucl ?X ?Y ] |-  _ =>
generalize dependent H; generalize (Z_div_mod_full X Y) ; case (Z.div_eucl X Y)
|  |-  context[ Z.div_eucl ?X ?Y ] =>
generalize (Z_div_mod_full X Y) ; case (Z.div_eucl X Y)
end; unfold Remainder.