(**************************************************************************)
(* ********************************************************************** *)
-(* Progetto FreeScale *)
+(* Progetto FreeScale *)
(* *)
-(* Sviluppato da: *)
-(* Cosimo Oliboni, oliboni@cs.unibo.it *)
+(* Sviluppato da: Cosimo Oliboni, oliboni@cs.unibo.it *)
+(* Cosimo Oliboni, oliboni@cs.unibo.it *)
(* *)
-(* Questo materiale fa parte della tesi: *)
-(* "Formalizzazione Interattiva dei Microcontroller a 8bit FreeScale" *)
-(* *)
-(* data ultima modifica 15/11/2007 *)
(* ********************************************************************** *)
include "freescale/bool_lemmas.ma".
nchange with (match S n2 with [ O ⇒ False | S a ⇒ n1 = a ]);
nrewrite < H;
nnormalize;
- napply (refl_eq ??).
+ napply refl_eq.
nqed.
nlemma nat_destruct_0_S : ∀n:nat.O = S n → False.
##[ ##1: #n2;
nelim n2;
nnormalize;
- ##[ ##1: napply (refl_eq ??)
- ##| ##2: #n3; #H; napply (refl_eq ??)
+ ##[ ##1: napply refl_eq
+ ##| ##2: #n3; #H; napply refl_eq
##]
##| ##2: #n2; #H; #n3;
nnormalize;
ncases n3;
nnormalize;
- ##[ ##1: napply (refl_eq ??)
+ ##[ ##1: napply refl_eq
##| ##2: #n4; napply (H n4)
##]
##]
##[ ##1: #n2;
nelim n2;
nnormalize;
- ##[ ##1: #H; napply (refl_eq ??)
+ ##[ ##1: #H; napply refl_eq
##| ##2: #n3; #H; #H1; nelim (nat_destruct_0_S ? H1)
##]
##| ##2: #n2; #H; #n3; #H1;
nnormalize;
##[ ##1: #H1; nelim (nat_destruct_S_0 ? H1)
##| ##2: #n4; #H1;
- napply (H n4 (nat_destruct_S_S ?? H1))
+ napply (H n4 (nat_destruct_S_S … H1))
##]
##]
nqed.
##[ ##1: #n2;
nelim n2;
nnormalize;
- ##[ ##1: #H; napply (refl_eq ??)
- ##| ##2: #n3; #H; #H1; napply (bool_destruct ?? (O = S n3) H1)
+ ##[ ##1: #H; napply refl_eq
+ ##| ##2: #n3; #H; #H1; napply (bool_destruct … (O = S n3) H1)
##]
##| ##2: #n2; #H; #n3; #H1;
ncases n3 in H1:(%) ⊢ %;
nnormalize;
- ##[ ##1: #H1; napply (bool_destruct ?? (S n2 = O) H1)
+ ##[ ##1: #H1; napply (bool_destruct … (S n2 = O) H1)
##| ##2: #n4; #H1;
nrewrite > (H n4 H1);
- napply (refl_eq ??)
+ napply refl_eq
##]
##]
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 ??)
+ ##[ ##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 ??)
+ ##[ ##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 ??)
+ ##[ ##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 ??)
+ napply refl_eq
##]
nqed.
nlemma Opn_to_n : ∀n.O + n = n.
- #n; nnormalize; napply (refl_eq ??).
+ #n; nnormalize; napply refl_eq.
nqed.
nlemma npO_to_n : ∀n.n + O = n.
#n;
nelim n;
- ##[ ##1: nnormalize; napply (refl_eq ??)
+ ##[ ##1: nnormalize; napply refl_eq
##| ##2: #n1; #H;
nrewrite > (Sn_p_n_to_S_npn n1 O);
nrewrite > H;
- napply (refl_eq ??)
+ 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 ??)
+ ##[ ##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 ??)
+ napply refl_eq
##]
nqed.