X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2Fng_assembly%2Ffreescale%2Fnat_lemmas.ma;h=72ceb6188e680d5c8f701a19432128645340bdd9;hb=9f580d9bf8f6ba6950b252f587166e95bc8fb1a8;hp=70b9bbbb90418046b7ec8fe8f7a5dc75ec06d288;hpb=f8830ea7f8b308241d73e558092089a24ab2f867;p=helm.git diff --git a/helm/software/matita/contribs/ng_assembly/freescale/nat_lemmas.ma b/helm/software/matita/contribs/ng_assembly/freescale/nat_lemmas.ma index 70b9bbbb9..72ceb6188 100644 --- a/helm/software/matita/contribs/ng_assembly/freescale/nat_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/freescale/nat_lemmas.ma @@ -113,3 +113,53 @@ nlemma eqnat_to_eq : ∀n1,n2:nat.(eq_nat n1 n2 = true → n1 = n2). ##] ##] nqed. + +nlemma Sn_p_n_to_S_npn : ∀n1,n2.(S n1) + n2 = S (n1 + n2). + #n1; + nelim n1; + ##[ ##1: nnormalize; #n2; napply (refl_eq ??) + ##| ##2: #n; #H; #n2; nrewrite > (H n2); + ncases n in H:(%) ⊢ %; + ##[ ##1: nnormalize; #H; napply (refl_eq ??) + ##| ##2: #n3; nnormalize; #H; napply (refl_eq ??) + ##] + ##] +nqed. + +nlemma n_p_Sn_to_S_npn : ∀n1,n2.n1 + (S n2) = S (n1 + n2). + #n1; + nelim n1; + ##[ ##1: nnormalize; #n2; napply (refl_eq ??) + ##| ##2: #n; #H; #n2; + nrewrite > (Sn_p_n_to_S_npn n (S n2)); + nrewrite > (H n2); + napply (refl_eq ??) + ##] +nqed. + +nlemma Opn_to_n : ∀n.O + n = n. + #n; nnormalize; napply (refl_eq ??). +nqed. + +nlemma npO_to_n : ∀n.n + O = n. + #n; + nelim n; + ##[ ##1: nnormalize; napply (refl_eq ??) + ##| ##2: #n1; #H; + nrewrite > (Sn_p_n_to_S_npn n1 O); + nrewrite > H; + napply (refl_eq ??) + ##] +nqed. + +nlemma symmetric_plusnat : symmetricT nat nat plus. + #n1; + nelim n1; + ##[ ##1: #n2; nrewrite > (npO_to_n n2); nnormalize; napply (refl_eq ??) + ##| ##2: #n2; #H; #n3; + nrewrite > (Sn_p_n_to_S_npn n2 n3); + nrewrite > (n_p_Sn_to_S_npn n3 n2); + nrewrite > (H n3); + napply (refl_eq ??) + ##] +nqed.