Ltac i2z_refl :=
    i2z_gen;
    match goal with |- ?t =>
      let e := p2ep t in
      change (ep2p e); apply norm_ep_correct2; simpl
    end.Definition t := Z.Definition _0 := 0.Definition _1 := 1.Definition _2 := 2.Definition _3 := 3.Definition add := Z.add.Definition opp := Z.opp.Definition sub := Z.sub.Definition mul := Z.mul.Definition max := Z.max.Definition eqb := Z.eqb.Definition ltb := Z.ltb.Definition leb := Z.leb.Definition eq_dec := Z.eq_dec.Definition gt_le_dec i j : {i > j} + { i <= j }.Definition ge_lt_dec i j : {i >= j} + { i < j }.Definition i2z : t -> Z := fun n => n.

(* Specifications: *)
Lemma i2z_eq n p : i2z n = i2z p -> n = p.
Lemma i2z_0 : i2z _0 = 0.
Lemma i2z_1 : i2z _1 = 1.
Lemma i2z_2 : i2z _2 = 2.
Lemma i2z_3 : i2z _3 = 3.
Lemma i2z_add n p : i2z (n + p) = i2z n + i2z p.
Lemma i2z_opp n : i2z (- n) = - i2z n.
Lemma i2z_sub n p : i2z (n - p) = i2z n - i2z p.
Lemma i2z_mul n p : i2z (n * p) = i2z n * i2z p.
Lemma i2z_max n p : i2z (max n p) = Z.max (i2z n) (i2z p).
Lemma i2z_eqb n p : eqb n p = Z.eqb (i2z n) (i2z p).
Lemma i2z_leb n p : leb n p = Z.leb (i2z n) (i2z p).
Lemma i2z_ltb n p : ltb n p = Z.ltb (i2z n) (i2z p).