]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambda_delta/Basic_2/reducibility/tnf.ma
- first properties of strongly normalizing terms
[helm.git] / matita / matita / contribs / lambda_delta / Basic_2 / reducibility / tnf.ma
index 5772e7626139acaf15d9a63ee2eb8f1508727f89..5a7205cc01a7c61fd4c098f8772a74f99ecc3508 100644 (file)
@@ -12,8 +12,6 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "Basic_2/substitution/tps_lift.ma".
-include "Basic_2/reducibility/trf.ma".
 include "Basic_2/reducibility/tpr.ma".
 
 (* CONTEXT-FREE NORMAL TERMS ************************************************)
@@ -26,91 +24,36 @@ interpretation
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma tnf_inv_abst: โˆ€V,T. โ„•[๐•”{Abst}V.T] โ†’ โ„•[V] โˆง โ„•[T].
+lemma tnf_inv_abst: โˆ€V,T. ๐[โ“›V.T] โ†’ ๐[V] โˆง ๐[T].
 #V1 #T1 #HVT1 @conj
-[ #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 //
+[ #V2 #HV2 lapply (HVT1 (โ“›V2.T1) ?) -HVT1 /2 width=1/ -HV2 #H destruct //
+| #T2 #HT2 lapply (HVT1 (โ“›V1.T2) ?) -HVT1 /2 width=1/ -HT2 #H destruct //
 ]
 qed-.
 
-lemma tnf_inv_appl: โˆ€V,T. โ„•[๐•”{Appl}V.T] โ†’ โˆงโˆง โ„•[V] & โ„•[T] & ๐•Š[T].
+lemma tnf_inv_appl: โˆ€V,T. ๐[โ“V.T] โ†’ โˆงโˆง ๐[V] & ๐[T] & ๐’[T].
 #V1 #T1 #HVT1 @and3_intro
-[ #V2 #HV2 lapply (HVT1 (๐•”{Appl}V2.T1) ?) -HVT1 /2/ -HV2 #H destruct -V1 T1 //
-| #T2 #HT2 lapply (HVT1 (๐•”{Appl}V1.T2) ?) -HVT1 /2/ -HT2 #H destruct -V1 T1 //
-| generalize in match HVT1 -HVT1; elim T1 -T1 * // * #W1 #U1 #_ #_ #H
+[ #V2 #HV2 lapply (HVT1 (โ“V2.T1) ?) -HVT1 /2 width=1/ -HV2 #H destruct //
+| #T2 #HT2 lapply (HVT1 (โ“V1.T2) ?) -HVT1 /2 width=1/ -HT2 #H destruct //
+| generalize in match HVT1; -HVT1 elim T1 -T1 * // * #W1 #U1 #_ #_ #H
   [ elim (lift_total V1 0 1) #V2 #HV12
-    lapply (H (๐•”{Abbr}W1.๐•”{Appl}V2.U1) ?) -H /2/ -HV12 #H destruct
-  | lapply (H (๐•”{Abbr}V1.U1) ?) -H /2/ #H destruct
+    lapply (H (โ““W1.โ“V2.U1) ?) -H /2 width=3/ -HV12 #H destruct
+  | lapply (H (โ““V1.U1) ?) -H /2 width=1/ #H destruct
 ]
 qed-.
 
-lemma tnf_inv_abbr: โˆ€V,T. โ„•[๐•”{Abbr}V.T] โ†’ False.
+lemma tnf_inv_abbr: โˆ€V,T. ๐[โ““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;
+  lapply (H U ?) -H /2 width=3/ #H destruct
   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/
+  elim (tps_full (โ‹†) V T (โ‹†. โ““V) 0 ?) // #T2 #T1 #HT2 #HT12
+  lapply (H (โ““V.T2) ?) -H /2 width=3/ -HT2 #H destruct /3 width=2/
 ]
 qed.
 
-lemma tnf_inv_cast: โˆ€V,T. โ„•[๐•”{Cast}V.T] โ†’ False.
+lemma tnf_inv_cast: โˆ€V,T. ๐[โ“ฃV.T] โ†’ False.
 #V #T #H lapply (H T ?) -H /2 width=1/ #H
 @(discr_tpair_xy_y โ€ฆ H)
 qed-.
-
-(* Basic properties *********************************************************)
-
-lemma tpr_tif_eq: โˆ€T1,T2. T1 โ‡’ T2 โ†’  ๐•€[T1] โ†’ T1 = T2.
-#T1 #T2 #H elim H -T1 T2
-[ //
-| * #V1 #V2 #T1 #T2 #_ #_ #IHV1 #IHT1 #H
-  [ elim (tif_inv_appl โ€ฆ H) -H #HV1 #HT1 #_
-    >IHV1 -IHV1 // -HV1 >IHT1 -IHT1 //
-  | elim (tif_inv_cast โ€ฆ H)
-  ]
-| #V1 #V2 #W #T1 #T2 #_ #_ #_ #_ #H
-  elim (tif_inv_appl โ€ฆ H) -H #_ #_ #H
-  elim (simple_inv_bind โ€ฆ H)
-| * #V1 #V2 #T1 #T #T2 #_ #_ #HT2 #IHV1 #IHT1 #H
-  [ -HT2 IHV1 IHT1; elim (tif_inv_abbr โ€ฆ H)
-  | <(tps_inv_refl_SO2 โ€ฆ HT2 ?) -HT2 //
-    elim (tif_inv_abst โ€ฆ H) -H #HV1 #HT1
-    >IHV1 -IHV1 // -HV1 >IHT1 -IHT1 //
-  ]
-| #V #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #_ #H
-  elim (tif_inv_appl โ€ฆ H) -H #_ #_ #H
-  elim (simple_inv_bind โ€ฆ H)
-| #V1 #T1 #T2 #T #_ #_ #_ #H
-  elim (tif_inv_abbr โ€ฆ H)
-| #V1 #T1 #T #_ #_ #H
-  elim (tif_inv_cast โ€ฆ H)
-]
-qed.
-
-theorem tif_tnf: โˆ€T1.  ๐•€[T1] โ†’ โ„•[T1].
-/2/ qed.
-
-(* Note: this property is unusual *)
-theorem tnf_trf_false: โˆ€T1. โ„[T1] โ†’ โ„•[T1] โ†’ False.
-#T1 #H elim H -T1
-[ #V #T #_ #IHV #H elim (tnf_inv_abst โ€ฆ H) -H /2/
-| #V #T #_ #IHT #H elim (tnf_inv_abst โ€ฆ H) -H /2/
-| #V #T #_ #IHV #H elim (tnf_inv_appl โ€ฆ H) -H /2/
-| #V #T #_ #IHV #H elim (tnf_inv_appl โ€ฆ H) -H /2/
-| #V #T #H elim (tnf_inv_abbr โ€ฆ H)
-| #V #T #H elim (tnf_inv_cast โ€ฆ H)
-| #V #W #T #H elim (tnf_inv_appl โ€ฆ H) -H #_ #_ #H
-  elim (simple_inv_bind โ€ฆ H)
-]
-qed.
-
-theorem tnf_tif: โˆ€T1. โ„•[T1] โ†’ ๐•€[T1].
-/2/ qed.
-
-lemma tnf_abst: โˆ€V,T. โ„•[V] โ†’ โ„•[T] โ†’ โ„•[๐•”{Abst}V.T].
-/4 width=1/ qed.
-
-lemma tnf_appl: โˆ€V,T. โ„•[V] โ†’ โ„•[T] โ†’ ๐•Š[T] โ†’ โ„•[๐•”{Appl}V.T].
-/4 width=1/ qed.