(* Progetto FreeScale *)
(* *)
(* Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *)
-(* Ultima modifica: 05/08/2009 *)
+(* Sviluppo: 2008-2010 *)
(* *)
(* ********************************************************************** *)
napply refl_eq.
nqed.
+(* !!! da togliere *)
nlemma nat_destruct_0_S : ∀n:nat.O = S n → False.
#n; #H;
nchange with (match S n with [ O ⇒ True | S a ⇒ False ]);
napply I.
nqed.
+(* !!! da togliere *)
nlemma nat_destruct_S_0 : ∀n:nat.S n = O → False.
#n; #H;
nchange with (match S n with [ O ⇒ True | S a ⇒ False ]);
nelim n2;
nnormalize;
##[ ##1: #H; napply refl_eq
- ##| ##2: #n3; #H; #H1; nelim (nat_destruct_0_S ? H1)
+ ##| ##2: #n3; #H; #H1; ndestruct (*nelim (nat_destruct_0_S ? H1)*)
##]
##| ##2: #n2; #H; #n3; #H1;
ncases n3 in H1:(%) ⊢ %;
nnormalize;
- ##[ ##1: #H1; nelim (nat_destruct_S_0 ? H1)
+ ##[ ##1: #H1; ndestruct (*nelim (nat_destruct_S_0 ? H1)*)
##| ##2: #n4; #H1;
napply (H n4 (nat_destruct_S_S … H1))
##]
nelim n2;
nnormalize;
##[ ##1: #H; napply refl_eq
- ##| ##2: #n3; #H; #H1; napply (bool_destruct … (O = S n3) H1)
+ ##| ##2: #n3; #H; #H1; ndestruct (*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; ndestruct (*napply (bool_destruct … (S n2 = O) H1)*)
##| ##2: #n4; #H1;
nrewrite > (H n4 H1);
napply refl_eq