-nlemma decidable_nat : ∀x,y:nat.decidable (x = y).
- #x; nelim x; nnormalize;
- ##[ ##1: #y; ncases y;
- ##[ ##1: napply (or2_intro1 (O = O) (O ≠ O) (refl_eq …))
- ##| ##2: #n2; napply (or2_intro2 (O = (S n2)) (O ≠ (S n2)) ?);
- nnormalize; #H; napply (nat_destruct_0_S n2 H)
- ##]
- ##| ##2: #n1; #H; #y; ncases y;
- ##[ ##1: napply (or2_intro2 ((S n1) = O) ((S n1) ≠ O) ?);
- nnormalize; #H1; napply (nat_destruct_S_0 n1 H1)
- ##| ##2: #n2; napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (H n2) …);
- ##[ ##1: #H1; napply (or2_intro1 (? = ?) (? ≠ ?) …);
- nrewrite > H1; napply refl_eq
- ##| ##2: #H1; napply (or2_intro2 (? = ?) (? ≠ ?) …);
- nnormalize; #H2; napply (H1 (nat_destruct_S_S … H2))
- ##]
- ##]
- ##]
+nlemma neq_to_neqnat : ∀n1,n2:nat.n1 ≠ n2 → eq_nat n1 n2 = false.
+ #n1; #n2; #H;
+ napply (neqtrue_to_eqfalse (eq_nat n1 n2));
+ napply (not_to_not (eq_nat n1 n2 = true) (n1 = n2) ? H);
+ napply (eqnat_to_eq n1 n2).