]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambda_delta/Basic_2/reducibility/tnf.ma
- we proved that context-free reduction admits no one-step loops
[helm.git] / matita / matita / contribs / lambda_delta / Basic_2 / reducibility / tnf.ma
index 5868a5c935777d578f0eae1fda58ab43fbb12439..a9a262efed9b6ef5a23066e547d1b71377b70dd7 100644 (file)
@@ -32,7 +32,7 @@ lemma tnf_inv_abst: โˆ€V,T. โ„•[๐•”{Abst}V.T] โ†’ โ„•[V] โˆง โ„•[T].
 [ #V2 #HV2 lapply (HVT1 (๐•”{Abst}V2.T1) ?) -HVT1 /2/ -HV2 #H destruct -V1 T1 //
 | #T2 #HT2 lapply (HVT1 (๐•”{Abst}V1.T2) ?) -HVT1 /2/ -HT2 #H destruct -V1 T1 //
 ]
-qed.
+qed-.
 
 lemma tnf_inv_appl: โˆ€V,T. โ„•[๐•”{Appl}V.T] โ†’ โˆงโˆง โ„•[V] & โ„•[T] & ๐•Š[T].
 #V1 #T1 #HVT1 @and3_intro
@@ -43,13 +43,23 @@ lemma tnf_inv_appl: โˆ€V,T. โ„•[๐•”{Appl}V.T] โ†’ โˆงโˆง โ„•[V] & โ„•[T] & ๐•Š
     lapply (H (๐•”{Abbr}W1.๐•”{Appl}V2.U1) ?) -H /2/ -HV12 #H destruct
   | lapply (H (๐•”{Abbr}V1.U1) ?) -H /2/ #H destruct
 ]
+qed-.
+
+lemma tnf_inv_abbr: โˆ€V,T. โ„•[๐•”{Abbr}V.T] โ†’ False.
+#V #T #H elim (is_lift_dec T 0 1)
+[ * #U #HTU
+  lapply (H U ?) -H /2 width=3/ #H destruct -U;
+  elim (lift_inv_pair_xy_y โ€ฆ HTU)
+| #HT
+  elim (tps_full (โ‹†) V T (โ‹†. ๐•“{Abbr} V) 0 ?) // #T2 #T1 #HT2 #HT12
+  lapply (H (๐•“{Abbr}V.T2) ?) -H /2/ -HT2 #H destruct -T /3 width=2/
+]
 qed.
 
-axiom tnf_inv_abbr: โˆ€V,T. โ„•[๐•”{Abbr}V.T] โ†’ False.
-
 lemma tnf_inv_cast: โˆ€V,T. โ„•[๐•”{Cast}V.T] โ†’ False.
-#V #T #H lapply (H T ?) -H /2/
-qed.
+#V #T #H lapply (H T ?) -H /2 width=1/ #H
+@(discr_tpair_xy_y โ€ฆ H)
+qed-.
 
 (* Basic properties *********************************************************)