]> matita.cs.unibo.it Git - helm.git/commitdiff
still more additions and corrections for the article
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 19 Aug 2019 21:31:18 +0000 (23:31 +0200)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 19 Aug 2019 21:31:18 +0000 (23:31 +0200)
+ one theorem was missing
+ some renaming

24 files changed:
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpes.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpme.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fsb.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_sub.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_cnv.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_cpms.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_drops.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/nta.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml
matita/matita/contribs/lambdadelta/ground_2/lib/relations.ma

index 0fa415ae4dafbfb675557e4d4bb4adeb5f38f3e1..962b6d77540cdd610cf57ec5dc61396ff19eb982 100644 (file)
@@ -44,8 +44,9 @@ interpretation "context-sensitive extended native validity (term)"
 
 (* Basic inversion lemmas ***************************************************)
 
-fact cnv_inv_zero_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → X = #0 →
-                               ∃∃I,K,V. ⦃G,K⦄ ⊢ V ![a,h] & L = K.ⓑ{I}V.
+fact cnv_inv_zero_aux (a) (h):
+     ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → X = #0 →
+     ∃∃I,K,V. ⦃G,K⦄ ⊢ V ![a,h] & L = K.ⓑ{I}V.
 #a #h #G #L #X * -G -L -X
 [ #G #L #s #H destruct
 | #I #G #K #V #HV #_ /2 width=5 by ex2_3_intro/
@@ -56,12 +57,14 @@ fact cnv_inv_zero_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → X = #0 →
 ]
 qed-.
 
-lemma cnv_inv_zero (a) (h): ∀G,L. ⦃G,L⦄ ⊢ #0 ![a,h] →
-                            ∃∃I,K,V. ⦃G,K⦄ ⊢ V ![a,h] & L = K.ⓑ{I}V.
+lemma cnv_inv_zero (a) (h):
+      ∀G,L. ⦃G,L⦄ ⊢ #0 ![a,h] →
+      ∃∃I,K,V. ⦃G,K⦄ ⊢ V ![a,h] & L = K.ⓑ{I}V.
 /2 width=3 by cnv_inv_zero_aux/ qed-.
 
-fact cnv_inv_lref_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀i. X = #(↑i) →
-                              ∃∃I,K. ⦃G,K⦄ ⊢ #i ![a,h] & L = K.ⓘ{I}.
+fact cnv_inv_lref_aux (a) (h):
+     ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀i. X = #(↑i) →
+     ∃∃I,K. ⦃G,K⦄ ⊢ #i ![a,h] & L = K.ⓘ{I}.
 #a #h #G #L #X * -G -L -X
 [ #G #L #s #j #H destruct
 | #I #G #K #V #_ #j #H destruct
@@ -72,8 +75,9 @@ fact cnv_inv_lref_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀i. X = #(
 ]
 qed-.
 
-lemma cnv_inv_lref (a) (h): ∀G,L,i. ⦃G,L⦄ ⊢ #↑i ![a,h] →
-                            ∃∃I,K. ⦃G,K⦄ ⊢ #i ![a,h] & L = K.ⓘ{I}.
+lemma cnv_inv_lref (a) (h):
+      ∀G,L,i. ⦃G,L⦄ ⊢ #↑i ![a,h] →
+      ∃∃I,K. ⦃G,K⦄ ⊢ #i ![a,h] & L = K.ⓘ{I}.
 /2 width=3 by cnv_inv_lref_aux/ qed-.
 
 fact cnv_inv_gref_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀l. X = §l → ⊥.
@@ -91,10 +95,10 @@ qed-.
 lemma cnv_inv_gref (a) (h): ∀G,L,l. ⦃G,L⦄ ⊢ §l ![a,h] → ⊥.
 /2 width=8 by cnv_inv_gref_aux/ qed-.
 
-fact cnv_inv_bind_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] →
-                               ∀p,I,V,T. X = ⓑ{p,I}V.T →
-                               ∧∧ ⦃G,L⦄ ⊢ V ![a,h]
-                                & ⦃G,L.ⓑ{I}V⦄ ⊢ T ![a,h].
+fact cnv_inv_bind_aux (a) (h):
+     ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] →
+     ∀p,I,V,T. X = ⓑ{p,I}V.T →
+     ∧∧ ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T ![a,h].
 #a #h #G #L #X * -G -L -X
 [ #G #L #s #q #Z #X1 #X2 #H destruct
 | #I #G #K #V #_ #q #Z #X1 #X2 #H destruct
@@ -106,14 +110,15 @@ fact cnv_inv_bind_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] →
 qed-.
 
 (* Basic_2A1: uses: snv_inv_bind *)
-lemma cnv_inv_bind (a) (h): ∀p,I,G,L,V,T. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T ![a,h] →
-                            ∧∧ ⦃G,L⦄ ⊢ V ![a,h]
-                             & ⦃G,L.ⓑ{I}V⦄ ⊢ T ![a,h].
+lemma cnv_inv_bind (a) (h):
+      ∀p,I,G,L,V,T. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T ![a,h] →
+      ∧∧ ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T ![a,h].
 /2 width=4 by cnv_inv_bind_aux/ qed-.
 
-fact cnv_inv_appl_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀V,T. X = ⓐV.T →
-                               ∃∃n,p,W0,U0. yinj n < a & ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
-                                            ⦃G,L⦄ ⊢ V ➡*[1,h] W0 & ⦃G,L⦄ ⊢ T ➡*[n,h] ⓛ{p}W0.U0.
+fact cnv_inv_appl_aux (a) (h):
+     ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀V,T. X = ⓐV.T →
+     ∃∃n,p,W0,U0. yinj n < a & ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
+                  ⦃G,L⦄ ⊢ V ➡*[1,h] W0 & ⦃G,L⦄ ⊢ T ➡*[n,h] ⓛ{p}W0.U0.
 #a #h #G #L #X * -L -X
 [ #G #L #s #X1 #X2 #H destruct
 | #I #G #K #V #_ #X1 #X2 #H destruct
@@ -125,14 +130,16 @@ fact cnv_inv_appl_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀V,T. X =
 qed-.
 
 (* Basic_2A1: uses: snv_inv_appl *)
-lemma cnv_inv_appl (a) (h): ∀G,L,V,T. ⦃G,L⦄ ⊢ ⓐV.T ![a,h] →
-                            ∃∃n,p,W0,U0. yinj n < a & ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
-                                         ⦃G,L⦄ ⊢ V ➡*[1,h] W0 & ⦃G,L⦄ ⊢ T ➡*[n,h] ⓛ{p}W0.U0.
+lemma cnv_inv_appl (a) (h):
+      ∀G,L,V,T. ⦃G,L⦄ ⊢ ⓐV.T ![a,h] →
+      ∃∃n,p,W0,U0. yinj n < a & ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
+                   ⦃G,L⦄ ⊢ V ➡*[1,h] W0 & ⦃G,L⦄ ⊢ T ➡*[n,h] ⓛ{p}W0.U0.
 /2 width=3 by cnv_inv_appl_aux/ qed-.
 
-fact cnv_inv_cast_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀U,T. X = ⓝU.T →
-                               ∃∃U0. ⦃G,L⦄ ⊢ U ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
-                                     ⦃G,L⦄ ⊢ U ➡*[h] U0 & ⦃G,L⦄ ⊢ T ➡*[1,h] U0.
+fact cnv_inv_cast_aux (a) (h):
+     ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀U,T. X = ⓝU.T →
+     ∃∃U0. ⦃G,L⦄ ⊢ U ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
+           ⦃G,L⦄ ⊢ U ➡*[h] U0 & ⦃G,L⦄ ⊢ T ➡*[1,h] U0.
 #a #h #G #L #X * -G -L -X
 [ #G #L #s #X1 #X2 #H destruct
 | #I #G #K #V #_ #X1 #X2 #H destruct
@@ -143,17 +150,18 @@ fact cnv_inv_cast_aux (a) (h): ∀G,L,X. ⦃G,L⦄ ⊢ X ![a,h] → ∀U,T. X =
 ]
 qed-.
 
-(* Basic_2A1: uses: snv_inv_appl *)
-lemma cnv_inv_cast (a) (h): ∀G,L,U,T. ⦃G,L⦄ ⊢ ⓝU.T ![a,h] →
-                            ∃∃U0. ⦃G,L⦄ ⊢ U ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
-                                  ⦃G,L⦄ ⊢ U ➡*[h] U0 & ⦃G,L⦄ ⊢ T ➡*[1,h] U0.
+(* Basic_2A1: uses: snv_inv_cast *)
+lemma cnv_inv_cast (a) (h):
+      ∀G,L,U,T. ⦃G,L⦄ ⊢ ⓝU.T ![a,h] →
+      ∃∃U0. ⦃G,L⦄ ⊢ U ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
+            ⦃G,L⦄ ⊢ U ➡*[h] U0 & ⦃G,L⦄ ⊢ T ➡*[1,h] U0.
 /2 width=3 by cnv_inv_cast_aux/ qed-.
 
 (* Basic forward lemmas *****************************************************)
 
 lemma cnv_fwd_flat (a) (h) (I) (G) (L):
-                   ∀V,T. ⦃G,L⦄ ⊢ ⓕ{I}V.T ![a,h] →
-                   ∧∧ ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h].
+      ∀V,T. ⦃G,L⦄ ⊢ ⓕ{I}V.T ![a,h] →
+      ∧∧ ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h].
 #a #h * #G #L #V #T #H
 [ elim (cnv_inv_appl … H) #n #p #W #U #_ #HV #HT #_ #_
 | elim (cnv_inv_cast … H) #U #HV #HT #_ #_
index aa0c10865bfebc3f49e13d937606b7cab1028093..c7735d20c36ba9a2cc4ca89af5e5d4f557b1050b 100644 (file)
@@ -66,7 +66,7 @@ qed-.
 lemma cnv_inv_appl_pred (a) (h) (G) (L):
       ∀V,T. ⦃G,L⦄ ⊢ ⓐV.T ![yinj a,h] →
       ∃∃p,W0,U0. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
-                   ⦃G,L⦄ ⊢ V ➡*[1,h] W0 & ⦃G,L⦄ ⊢ T ➡*[↓a,h] ⓛ{p}W0.U0.
+                 ⦃G,L⦄ ⊢ V ➡*[1,h] W0 & ⦃G,L⦄ ⊢ T ➡*[↓a,h] ⓛ{p}W0.U0.
 #a #h #G #L #V #T #H
 elim (cnv_inv_appl … H) -H #n #p #W #U #Ha #HV #HT #HVW #HTU
 lapply (ylt_inv_inj … Ha) -Ha #Ha
index 190165fe69e170eae398f38e1be0c2d58a6d59b3..e0775c0211dfae85a79237c5871676a31674df55 100644 (file)
@@ -48,7 +48,7 @@ qed-.
 lemma cnv_inv_appl_pred_cpes (a) (h) (G) (L):
       ∀V,T. ⦃G,L⦄ ⊢ ⓐV.T ![yinj a,h] →
       ∃∃p,W,U. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ T ![a,h] &
-                 ⦃G,L⦄ ⊢ V ⬌*[h,1,0] W & ⦃G,L⦄ ⊢ T ➡*[↓a,h] ⓛ{p}W.U.
+               ⦃G,L⦄ ⊢ V ⬌*[h,1,0] W & ⦃G,L⦄ ⊢ T ➡*[↓a,h] ⓛ{p}W.U.
 #a #h #G #L #V #T #H
 elim (cnv_inv_appl_pred … H) -H #p #W #U #HV #HT #HVW #HTU
 /3 width=7 by cpms_div, ex4_3_intro/
index c10e470dd3976498d84cb22e26449c73445d52dc..56e5ffd9b7df90ab0df852c9218d0e07dbc39520 100644 (file)
@@ -387,10 +387,10 @@ elim (cnv_cpm_conf_lpr_sub … IH … HV01 … HV02 … HL01 … HL02) [|*: /2 w
 qed-.
 
 fact cnv_cpm_conf_lpr_aux (a) (h):
-                          ∀G0,L0,T0.
-                          (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
-                          (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
-                          ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_conf_lpr a h G1 L1 T1.
+     ∀G0,L0,T0.
+     (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
+     (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+     ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_conf_lpr a h G1 L1 T1.
 #a #h #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
 [ #I #HG0 #HL0 #HT0 #HT #n1 #X1 #HX1 #n2 #X2 #HX2 #L1 #HL1 #L2 #HL2 destruct
   elim (cpm_inv_atom1_drops … HX1) -HX1 *
index e3057788cd5018f5a88f98a207ee4ecb7795e72b..e8f59293c9c609426594a13eea28056ded0b5d21 100644 (file)
@@ -23,8 +23,7 @@ include "basic_2/dynamic/cnv_fsb.ma".
 (* Inversion lemmas with restricted rt-transition for terms *****************)
 
 lemma cnv_cpr_tdeq_fwd_refl (a) (h) (G) (L):
-                            ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 → T1 ≛ T2 →
-                            ⦃G,L⦄ ⊢ T1 ![a,h] → T1 = T2.
+      ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 → T1 ≛ T2 → ⦃G,L⦄ ⊢ T1 ![a,h] → T1 = T2.
 #a #h #G #L #T1 #T2 #H @(cpr_ind … H) -G -L -T1 -T2
 [ //
 | #G #K #V1 #V2 #X2 #_ #_ #_ #H1 #_ -a -G -K -V1 -V2
@@ -55,9 +54,9 @@ lemma cnv_cpr_tdeq_fwd_refl (a) (h) (G) (L):
 qed-.
 
 lemma cpm_tdeq_inv_bind_sn (a) (h) (n) (p) (I) (G) (L):
-                           ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![a,h] →
-                           ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
-                           ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
+      ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![a,h] →
+      ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
+      ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
 #a #h #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_inv_bind1 … H1) -H1 *
 [ #XV #T2 #HXV #HT12 #H destruct
@@ -73,10 +72,10 @@ elim (cpm_inv_bind1 … H1) -H1 *
 qed-.
 
 lemma cpm_tdeq_inv_appl_sn (a) (h) (n) (G) (L):
-                           ∀V,T1. ⦃G,L⦄ ⊢ ⓐV.T1 ![a,h] →
-                           ∀X. ⦃G,L⦄ ⊢ ⓐV.T1 ➡[n,h] X → ⓐV.T1 ≛ X →
-                           ∃∃m,q,W,U1,T2. yinj m < a & ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ V ➡*[1,h] W & ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{q}W.U1
-                                        & ⦃G,L⦄⊢ T1 ![a,h] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓐV.T2.
+      ∀V,T1. ⦃G,L⦄ ⊢ ⓐV.T1 ![a,h] →
+      ∀X. ⦃G,L⦄ ⊢ ⓐV.T1 ➡[n,h] X → ⓐV.T1 ≛ X →
+      ∃∃m,q,W,U1,T2. yinj m < a & ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L⦄ ⊢ V ➡*[1,h] W & ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{q}W.U1
+                   & ⦃G,L⦄⊢ T1 ![a,h] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓐV.T2.
 #a #h #n #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_inv_appl1 … H1) -H1 *
 [ #XV #T2 #HXV #HT12 #H destruct
@@ -92,11 +91,11 @@ elim (cpm_inv_appl1 … H1) -H1 *
 qed-.
 
 lemma cpm_tdeq_inv_cast_sn (a) (h) (n) (G) (L):
-                           ∀U1,T1. ⦃G,L⦄ ⊢ ⓝU1.T1 ![a,h] →
-                           ∀X. ⦃G,L⦄ ⊢ ⓝU1.T1 ➡[n,h] X → ⓝU1.T1 ≛ X →
-                           ∃∃U0,U2,T2. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 & ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0
-                                     & ⦃G,L⦄ ⊢ U1 ![a,h] & ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 & U1 ≛ U2
-                                     & ⦃G,L⦄ ⊢ T1 ![a,h] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓝU2.T2.
+      ∀U1,T1. ⦃G,L⦄ ⊢ ⓝU1.T1 ![a,h] →
+      ∀X. ⦃G,L⦄ ⊢ ⓝU1.T1 ➡[n,h] X → ⓝU1.T1 ≛ X →
+      ∃∃U0,U2,T2. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 & ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0
+                & ⦃G,L⦄ ⊢ U1 ![a,h] & ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 & U1 ≛ U2
+                & ⦃G,L⦄ ⊢ T1 ![a,h] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓝU2.T2.
 #a #h #n #G #L #U1 #T1 #H0 #X #H1 #H2
 elim (cpm_inv_cast1 … H1) -H1 [ * || * ]
 [ #U2 #T2 #HU12 #HT12 #H destruct
@@ -115,9 +114,9 @@ elim (cpm_inv_cast1 … H1) -H1 [ * || * ]
 qed-.
 
 lemma cpm_tdeq_inv_bind_dx (a) (h) (n) (p) (I) (G) (L):
-                           ∀X. ⦃G,L⦄ ⊢ X ![a,h] →
-                           ∀V,T2. ⦃G,L⦄ ⊢ X ➡[n,h] ⓑ{p,I}V.T2 → X ≛ ⓑ{p,I}V.T2 →
-                           ∃∃T1. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T1.
+      ∀X. ⦃G,L⦄ ⊢ X ![a,h] →
+      ∀V,T2. ⦃G,L⦄ ⊢ X ➡[n,h] ⓑ{p,I}V.T2 → X ≛ ⓑ{p,I}V.T2 →
+      ∃∃T1. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T1.
 #a #h #n #p #I #G #L #X #H0 #V #T2 #H1 #H2
 elim (tdeq_inv_pair2 … H2) #V0 #T1 #_ #_ #H destruct
 elim (cpm_tdeq_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T0 #HV #HT1 #H1T12 #H2T12 #H destruct
@@ -127,25 +126,25 @@ qed-.
 (* Eliminators with restricted rt-transition for terms **********************)
 
 lemma cpm_tdeq_ind (a) (h) (n) (G) (Q:relation3 …):
-                   (∀I,L. n = 0 → Q L (⓪{I}) (⓪{I})) →
-                   (∀L,s. n = 1 → Q L (⋆s) (⋆(⫯[h]s))) →
-                   (∀p,I,L,V,T1. ⦃G,L⦄⊢ V![a,h] → ⦃G,L.ⓑ{I}V⦄⊢T1![a,h] →
-                    ∀T2. ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-                    Q (L.ⓑ{I}V) T1 T2 → Q L (ⓑ{p,I}V.T1) (ⓑ{p,I}V.T2)
-                   ) →
-                   (∀m. yinj m < a →
-                    ∀L,V. ⦃G,L⦄ ⊢ V ![a,h] → ∀W. ⦃G,L⦄ ⊢ V ➡*[1,h] W →
-                    ∀p,T1,U1. ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{p}W.U1 → ⦃G,L⦄⊢ T1 ![a,h] →
-                    ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-                    Q L T1 T2 → Q L (ⓐV.T1) (ⓐV.T2)
-                   ) →
-                   (∀L,U0,U1,T1. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 → ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0 →
-                    ∀U2. ⦃G,L⦄ ⊢ U1 ![a,h] → ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 → U1 ≛ U2 →
-                    ∀T2. ⦃G,L⦄ ⊢ T1 ![a,h] → ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-                    Q L U1 U2 → Q L T1 T2 → Q L (ⓝU1.T1) (ⓝU2.T2)
-                   ) →
-                   ∀L,T1. ⦃G,L⦄ ⊢ T1 ![a,h] →
-                   ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 → Q L T1 T2.
+      (∀I,L. n = 0 → Q L (⓪{I}) (⓪{I})) →
+      (∀L,s. n = 1 → Q L (⋆s) (⋆(⫯[h]s))) →
+      (∀p,I,L,V,T1. ⦃G,L⦄⊢ V![a,h] → ⦃G,L.ⓑ{I}V⦄⊢T1![a,h] →
+        ∀T2. ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        Q (L.ⓑ{I}V) T1 T2 → Q L (ⓑ{p,I}V.T1) (ⓑ{p,I}V.T2)
+      ) →
+      (∀m. yinj m < a →
+        ∀L,V. ⦃G,L⦄ ⊢ V ![a,h] → ∀W. ⦃G,L⦄ ⊢ V ➡*[1,h] W →
+        ∀p,T1,U1. ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{p}W.U1 → ⦃G,L⦄⊢ T1 ![a,h] →
+        ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        Q L T1 T2 → Q L (ⓐV.T1) (ⓐV.T2)
+      ) →
+      (∀L,U0,U1,T1. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 → ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0 →
+        ∀U2. ⦃G,L⦄ ⊢ U1 ![a,h] → ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 → U1 ≛ U2 →
+        ∀T2. ⦃G,L⦄ ⊢ T1 ![a,h] → ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        Q L U1 U2 → Q L T1 T2 → Q L (ⓝU1.T1) (ⓝU2.T2)
+      ) →
+      ∀L,T1. ⦃G,L⦄ ⊢ T1 ![a,h] →
+      ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 → Q L T1 T2.
 #a #h #n #G #Q #IH1 #IH2 #IH3 #IH4 #IH5 #L #T1
 @(insert_eq_0 … G) #F
 @(fqup_wf_ind_eq (Ⓣ) … F L T1) -L -T1 -F
@@ -170,9 +169,9 @@ qed-.
 (* Advanced properties with restricted rt-transition for terms **************)
 
 lemma cpm_tdeq_free (a) (h) (n) (G) (L):
-                    ∀T1. ⦃G,L⦄ ⊢ T1 ![a,h] →
-                    ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-                    ∀F,K. ⦃F,K⦄ ⊢ T1 ➡[n,h] T2.
+      ∀T1. ⦃G,L⦄ ⊢ T1 ![a,h] →
+      ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+      ∀F,K. ⦃F,K⦄ ⊢ T1 ➡[n,h] T2.
 #a #h #n #G #L #T1 #H0 #T2 #H1 #H2
 @(cpm_tdeq_ind … H0 … H1 H2) -L -T1 -T2
 [ #I #L #H #F #K destruct //
@@ -189,9 +188,9 @@ qed-.
 (* Advanced inversion lemmas with restricted rt-transition for terms ********)
 
 lemma cpm_tdeq_inv_bind_sn_void (a) (h) (n) (p) (I) (G) (L):
-                                ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![a,h] →
-                                ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
-                                ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G,L.ⓧ⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
+      ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![a,h] →
+      ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
+      ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G,L.ⓧ⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
 #a #h #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_tdeq_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T2 #HV #HT1 #H1T12 #H2T12 #H
 /3 width=5 by ex5_intro, cpm_tdeq_free/
index 21f0e500c99f08960d77c0388a0706a0179a10d1..3b4b547403b036ba866c76954dea2f51e7cd5d2d 100644 (file)
@@ -24,10 +24,10 @@ include "basic_2/dynamic/lsubv_cnv.ma".
 (* Sub preservation propery with t-bound rt-transition for terms ************)
 
 fact cnv_cpm_trans_lpr_aux (a) (h):
-                           ∀G0,L0,T0.
-                           (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
-                           (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
-                           ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_trans_lpr a h G1 L1 T1.
+     ∀G0,L0,T0.
+     (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+     (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
+     ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_trans_lpr a h G1 L1 T1.
 #a #h #G0 #L0 #T0 #IH2 #IH1 #G1 #L1 * * [|||| * ]
 [ #s #HG0 #HL0 #HT0 #H1 #x #X #H2 #L2 #_ destruct -IH2 -IH1 -H1
   elim (cpm_inv_sort1 … H2) -H2 #H #_ destruct //
index be0443bca6b90a7c39ee7cb6ea80ec2745b1be67..a9091b059071c8c6c2216e1d87ff3d0969b7b0d7 100644 (file)
@@ -35,3 +35,13 @@ elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
 lapply (cprs_inv_cnr_sn … HT20 HT2) -HT20 #H destruct
 /2 width=1 by conj/
 qed-.
+
+(* Main properties with evaluation for t-bound rt-transition on terms *****)
+
+theorem cnv_cpme_mono (a) (h) (n) (G) (L):
+        ∀T. ⦃G,L⦄ ⊢ T ![a,h] → ∀T1. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T1⦄ →
+        ∀T2. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T2⦄ → T1 = T2.
+#a #h #n #G #L #T0 #HT0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2
+elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
+/3 width=7 by cprs_inv_cnr_sn, canc_dx_eq/
+qed-.
index 11d2b3652725b4d5b4fe66e8862a0b33c7de098a..f6ff61e3f01f2665d76f6634a42501de4760af2c 100644 (file)
@@ -64,12 +64,12 @@ fact cnv_cpms_conf_lpr_step_tdneq_sub (a) (h) (G0) (L0) (T0) (m11) (m12) (m21) (
      ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
      ((∀G,L,T. ⦃G0,L0,X1⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-      (∀G,L,T. ⦃G0,L0,X1⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
-      ∀m21,m22.
-      ∀X2. ⦃G0,L0⦄ ⊢ X1 ➡[m21,h] X2 → (X1 ≛ X2 → ⊥) →
-      ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
-      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-      ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[m21+m22-m12,h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[m12-(m21+m22),h]T
+       (∀G,L,T. ⦃G0,L0,X1⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+       ∀m21,m22.
+       ∀X2. ⦃G0,L0⦄ ⊢ X1 ➡[m21,h] X2 → (X1 ≛ X2 → ⊥) →
+       ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
+       ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
+       ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[m21+m22-m12,h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[m12-(m21+m22),h]T
      ) →
      ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[m21+m22-(m11+m12),h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[m11+m12-(m21+m22),h] T.
 #a #h #G0 #L0 #T0 #m11 #m12 #m21 #m22 #IH2 #IH1 #HT0
@@ -147,9 +147,9 @@ lapply (cpms_trans … HTZ2 … HZ02) -Z2 <arith_l4 #HT2Z
 qed-.
 
 fact cnv_cpms_conf_lpr_aux (a) (h) (G0) (L0) (T0):
-                           (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-                           (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
-                           ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpms_conf_lpr a h G L T.
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+     ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpms_conf_lpr a h G L T.
 #a #h #G #L #T #IH2 #IH1 #G0 #L0 #T0 #HG #HL #HT
 #HT0 #n1 #T1 #HT01 #n2 #T2 #HT02 #L1 #HL01 #L2 #HL02 destruct
 elim (tdeq_dec T0 T1) #H2T01
index 9483346c4a921133715ffdd4d29f7f1fb96d25b7..71e11577760e9ad8cda4c4e3bfec2f968d09979a 100644 (file)
@@ -20,8 +20,9 @@ include "basic_2/dynamic/cnv.ma".
 (* Advanced dproperties *****************************************************)
 
 (* Basic_2A1: uses: snv_lref *)
-lemma cnv_lref_drops (a) (h) (G): ∀I,K,V,i,L. ⦃G,K⦄ ⊢ V ![a,h] →
-                                  ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄ ⊢ #i ![a,h].
+lemma cnv_lref_drops (a) (h) (G):
+      ∀I,K,V,i,L. ⦃G,K⦄ ⊢ V ![a,h] →
+      ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄ ⊢ #i ![a,h].
 #a #h #G #I #K #V #i elim i -i
 [ #L #HV #H
   lapply (drops_fwd_isid … H ?) -H // #H destruct
@@ -36,8 +37,8 @@ qed.
 
 (* Basic_2A1: uses: snv_inv_lref *)
 lemma cnv_inv_lref_drops (a) (h) (G):
-                         ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] →
-                         ∃∃I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ V ![a,h].
+      ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] →
+      ∃∃I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ V ![a,h].
 #a #h #G #i elim i -i
 [ #L #H
   elim (cnv_inv_zero … H) -H #I #K #V #HV #H destruct
@@ -50,16 +51,15 @@ lemma cnv_inv_lref_drops (a) (h) (G):
 qed-.
 
 lemma cnv_inv_lref_pair (a) (h) (G):
-                        ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] →
-                        ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ![a,h].
+      ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] →
+      ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ![a,h].
 #a #h #G #i #L #H #I #K #V #HLK
 elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #HX
 lapply (drops_mono … HLY … HLK) -L #H destruct //
 qed-.
 
 lemma cnv_inv_lref_atom (a) (h) (b) (G):
-                        ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] →
-                        ⬇*[b,𝐔❴i❵] L ≘ ⋆ → ⊥.
+      ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] → ⬇*[b,𝐔❴i❵] L ≘ ⋆ → ⊥.
 #a #h #b #G #i #L #H #Hi
 elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #_
 lapply (drops_gen b … HLY) -HLY #HLY
@@ -67,8 +67,8 @@ lapply (drops_mono … HLY … Hi) -L #H destruct
 qed-.
 
 lemma cnv_inv_lref_unit (a) (h) (G):
-                        ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] →
-                        ∀I,K. ⬇*[i] L ≘ K.ⓤ{I} → ⊥.
+      ∀i,L. ⦃G,L⦄ ⊢ #i ![a,h] →
+      ∀I,K. ⬇*[i] L ≘ K.ⓤ{I} → ⊥.
 #a #h #G #i #L #H #I #K #HLK
 elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #_
 lapply (drops_mono … HLY … HLK) -L #H destruct
index fbac6d7f7ce018e22a6fb8732f64ed23e8b410fc..1c30ccce1bfe6ccc4347d0f02ed381cf66bb617e 100644 (file)
@@ -20,8 +20,9 @@ include "basic_2/dynamic/cnv_drops.ma".
 (* Properties with supclosure ***********************************************)
 
 (* Basic_2A1: uses: snv_fqu_conf *)
-lemma cnv_fqu_conf (a) (h): ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂ ⦃G2,L2,T2⦄ →
-                            ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
+lemma cnv_fqu_conf (a) (h):
+      ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂ ⦃G2,L2,T2⦄ →
+      ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
 #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ #I1 #G1 #L1 #V1 #H
   elim (cnv_inv_zero … H) -H #I2 #L2 #V2 #HV2 #H destruct //
@@ -43,22 +44,25 @@ lemma cnv_fqu_conf (a) (h): ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂ ⦃G2,L2,T2
 qed-.
 
 (* Basic_2A1: uses: snv_fquq_conf *)
-lemma cnv_fquq_conf (a) (h): ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂⸮ ⦃G2,L2,T2⦄ →
-                             ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
+lemma cnv_fquq_conf (a) (h):
+      ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂⸮ ⦃G2,L2,T2⦄ →
+      ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
 #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -H [|*]
 /2 width=5 by cnv_fqu_conf/
 qed-.
 
 (* Basic_2A1: uses: snv_fqup_conf *)
-lemma cnv_fqup_conf (a) (h): ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂+ ⦃G2,L2,T2⦄ →
-                             ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
+lemma cnv_fqup_conf (a) (h):
+      ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂+ ⦃G2,L2,T2⦄ →
+      ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
 #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
 /3 width=5 by fqup_strap1, cnv_fqu_conf/
 qed-.
 
 (* Basic_2A1: uses: snv_fqus_conf *)
-lemma cnv_fqus_conf (a) (h): ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂* ⦃G2,L2,T2⦄ →
-                             ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
+lemma cnv_fqus_conf (a) (h):
+      ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂* ⦃G2,L2,T2⦄ →
+      ⦃G1,L1⦄ ⊢ T1 ![a,h] → ⦃G2,L2⦄ ⊢ T2 ![a,h].
 #a #h #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqus_inv_fqup … H) -H [|*]
 /2 width=5 by cnv_fqup_conf/
 qed-.
index bf6732dab755823c3cdf7e153832c4ce975ad837..7f754d97f0ecfd2531c11ab6ad672b8db6e9adb2 100644 (file)
@@ -19,20 +19,23 @@ include "basic_2/dynamic/cnv_aaa.ma".
 
 (* Forward lemmas with strongly rst-normalizing closures ********************)
 
+(* Note: this is the "big tree" theorem *)
 (* Basic_2A1: uses: snv_fwd_fsb *)
-lemma cnv_fwd_fsb (a) (h): ∀G,L,T. ⦃G,L⦄ ⊢ T ![a,h] → ≥[h] 𝐒⦃G,L,T⦄.
+lemma cnv_fwd_fsb (a) (h):
+      ∀G,L,T. ⦃G,L⦄ ⊢ T ![a,h] → ≥[h] 𝐒⦃G,L,T⦄.
 #a #h #G #L #T #H elim (cnv_fwd_aaa … H) -H /2 width=2 by aaa_fsb/
 qed-.
 
 (* Forward lemmas with strongly rt-normalizing terms ************************)
 
-lemma cnv_fwd_csx (a) (h): ∀G,L,T. ⦃G,L⦄ ⊢ T ![a,h] → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
+lemma cnv_fwd_csx (a) (h):
+      ∀G,L,T. ⦃G,L⦄ ⊢ T ![a,h] → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 #a #h #G #L #T #H
 /3 width=2 by cnv_fwd_fsb, fsb_inv_csx/
 qed-.
 
 (* Inversion lemmas with proper parallel rst-computation for closures *******)
 
-lemma cnv_fpbg_refl_false (a) (h) (G) (L) (T):
-                          ⦃G,L⦄ ⊢ T ![a,h] → ⦃G,L,T⦄ >[h] ⦃G,L,T⦄ → ⊥.
+lemma cnv_fpbg_refl_false (a) (h):
+      ∀G,L,T. ⦃G,L⦄ ⊢ T ![a,h] → ⦃G,L,T⦄ >[h] ⦃G,L,T⦄ → ⊥.
 /3 width=7 by cnv_fwd_fsb, fsb_fpbg_refl_false/ qed-.
index 483ea690e474445d45732dfc15511d7b84143d40..178a2b846896cc9381d25154e6fbb16027a4eef6 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/dynamic/cnv_cpms_conf.ma".
 
 (* Basic_2A1: uses: snv_preserve *)
 lemma cnv_preserve (a) (h): ∀G,L,T. ⦃G,L⦄ ⊢ T ![a,h] →
-                            ∧∧ IH_cnv_cpms_conf_lpr a h G L T
-                             & IH_cnv_cpm_trans_lpr a h G L T.
+      ∧∧ IH_cnv_cpms_conf_lpr a h G L T
+       & IH_cnv_cpm_trans_lpr a h G L T.
 #a #h #G #L #T #HT
 lapply (cnv_fwd_fsb … HT) -HT #H
 @(fsb_ind_fpbg … H) -G -L -T #G #L #T #_ #IH
index 2eedc2889194bbf636c00ec0e1b49d8f0aedb092..244f82718e30cfc48a5d355a44ae6a28efc31124 100644 (file)
@@ -50,22 +50,22 @@ definition IH_cnv_cpms_conf_lpr (a) (h): relation3 genv lenv term ≝
 (* Auxiliary properties for preservation ************************************)
 
 fact cnv_cpms_trans_lpr_sub (a) (h):
-                            ∀G0,L0,T0.
-                            (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
-                            ∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_trans_lpr a h G1 L1 T1.
+     ∀G0,L0,T0.
+     (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
+     ∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_trans_lpr a h G1 L1 T1.
 #a #h #G0 #L0 #T0 #IH #G1 #L1 #T1 #H01 #HT1 #n #T2 #H
 @(cpms_ind_dx … H) -n -T2
 /3 width=7 by fpbg_cpms_trans/
 qed-.
 
 fact cnv_cpm_conf_lpr_sub (a) (h):
-                          ∀G0,L0,T0.
-                          (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
-                          ∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_conf_lpr a h G1 L1 T1.
+     ∀G0,L0,T0.
+     (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+     ∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpm_conf_lpr a h G1 L1 T1.
 /3 width=8 by cpm_cpms/ qed-.
 
 fact cnv_cpms_strip_lpr_sub (a) (h):
-                            ∀G0,L0,T0.
-                            (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
-                            ∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_strip_lpr a h G1 L1 T1.
+     ∀G0,L0,T0.
+     (∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+     ∀G1,L1,T1. ⦃G0,L0,T0⦄ >[h] ⦃G1,L1,T1⦄ → IH_cnv_cpms_strip_lpr a h G1 L1 T1.
 /3 width=8 by cpm_cpms/ qed-.
index 17a22da58e20b23bf0b9057e9dfb6f2463e21de2..fdf2ad8033ec615caa435de249a95edb70926a3c 100644 (file)
@@ -30,7 +30,8 @@ interpretation
 
 (* Basic inversion lemmas ***************************************************)
 
-fact lsubv_inv_atom_sn_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 → L1 = ⋆ → L2 = ⋆.
+fact lsubv_inv_atom_sn_aux (a) (h) (G):
+     ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 → L1 = ⋆ → L2 = ⋆.
 #a #h #G #L1 #L2 * -L1 -L2
 [ //
 | #I #L1 #L2 #_ #H destruct
@@ -39,15 +40,15 @@ fact lsubv_inv_atom_sn_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 → L1 =
 qed-.
 
 (* Basic_2A1: uses: lsubsv_inv_atom1 *)
-lemma lsubv_inv_atom_sn (a) (h) (G): ∀L2. G ⊢ ⋆ ⫃![a,h] L2 → L2 = ⋆.
+lemma lsubv_inv_atom_sn (a) (h) (G):
+      ∀L2. G ⊢ ⋆ ⫃![a,h] L2 → L2 = ⋆.
 /2 width=6 by lsubv_inv_atom_sn_aux/ qed-.
 
 fact lsubv_inv_bind_sn_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
-                           ∀I,K1. L1 = K1.ⓘ{I} →
-                           ∨∨ ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & L2 = K2.ⓘ{I}
-                            | ∃∃K2,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] &
-                                        G ⊢ K1 ⫃![a,h] K2 &
-                                        I = BPair Abbr (ⓝW.V) & L2 = K2.ⓛW.
+     ∀I,K1. L1 = K1.ⓘ{I} →
+     ∨∨ ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & L2 = K2.ⓘ{I}
+      | ∃∃K2,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] & G ⊢ K1 ⫃![a,h] K2
+                & I = BPair Abbr (ⓝW.V) & L2 = K2.ⓛW.
 #a #h #G #L1 #L2 * -L1 -L2
 [ #J #K1 #H destruct
 | #I #L1 #L2 #HL12 #J #K1 #H destruct /3 width=3 by ex2_intro, or_introl/
@@ -56,14 +57,15 @@ fact lsubv_inv_bind_sn_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
 qed-.
 
 (* Basic_2A1: uses: lsubsv_inv_pair1 *)
-lemma lsubv_inv_bind_sn (a) (h) (G): ∀I,K1,L2. G ⊢ K1.ⓘ{I} ⫃![a,h] L2 →
-                        ∨∨ ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & L2 = K2.ⓘ{I}
-                         | ∃∃K2,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] &
-                                     G ⊢ K1 ⫃![a,h] K2 &
-                                     I = BPair Abbr (ⓝW.V) & L2 = K2.ⓛW.
+lemma lsubv_inv_bind_sn (a) (h) (G):
+      ∀I,K1,L2. G ⊢ K1.ⓘ{I} ⫃![a,h] L2 →
+      ∨∨ ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & L2 = K2.ⓘ{I}
+       | ∃∃K2,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] & G ⊢ K1 ⫃![a,h] K2
+                 & I = BPair Abbr (ⓝW.V) & L2 = K2.ⓛW.
 /2 width=3 by lsubv_inv_bind_sn_aux/ qed-.
 
-fact lsubv_inv_atom_dx_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 → L2 = ⋆ → L1 = ⋆.
+fact lsubv_inv_atom_dx_aux (a) (h) (G):
+     ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 → L2 = ⋆ → L1 = ⋆.
 #a #h #G #L1 #L2 * -L1 -L2
 [ //
 | #I #L1 #L2 #_ #H destruct
@@ -72,14 +74,16 @@ fact lsubv_inv_atom_dx_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 → L2 =
 qed-.
 
 (* Basic_2A1: uses: lsubsv_inv_atom2 *)
-lemma lsubv_inv_atom2 (a) (h) (G): ∀L1. G ⊢ L1 ⫃![a,h] ⋆ → L1 = ⋆.
+lemma lsubv_inv_atom2 (a) (h) (G):
+      ∀L1. G ⊢ L1 ⫃![a,h] ⋆ → L1 = ⋆.
 /2 width=6 by lsubv_inv_atom_dx_aux/ qed-.
 
-fact lsubv_inv_bind_dx_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
-                           ∀I,K2. L2 = K2.ⓘ{I} →
-                           ∨∨ ∃∃K1. G ⊢ K1 ⫃![a,h] K2 & L1 = K1.ⓘ{I}
-                            | ∃∃K1,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] &
-                                        G ⊢ K1 ⫃![a,h] K2 & I = BPair Abst W & L1 = K1.ⓓⓝW.V.
+fact lsubv_inv_bind_dx_aux (a) (h) (G):
+     ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
+     ∀I,K2. L2 = K2.ⓘ{I} →
+     ∨∨ ∃∃K1. G ⊢ K1 ⫃![a,h] K2 & L1 = K1.ⓘ{I}
+      | ∃∃K1,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] &
+                  G ⊢ K1 ⫃![a,h] K2 & I = BPair Abst W & L1 = K1.ⓓⓝW.V.
 #a #h #G #L1 #L2 * -L1 -L2
 [ #J #K2 #H destruct
 | #I #L1 #L2 #HL12 #J #K2 #H destruct /3 width=3 by ex2_intro, or_introl/
@@ -88,16 +92,18 @@ fact lsubv_inv_bind_dx_aux (a) (h) (G): ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
 qed-.
 
 (* Basic_2A1: uses: lsubsv_inv_pair2 *)
-lemma lsubv_inv_bind_dx (a) (h) (G): ∀I,L1,K2. G ⊢ L1 ⫃![a,h] K2.ⓘ{I} →
-                        ∨∨ ∃∃K1. G ⊢ K1 ⫃![a,h] K2 & L1 = K1.ⓘ{I}
-                         | ∃∃K1,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] &
-                                     G ⊢ K1 ⫃![a,h] K2 & I = BPair Abst W & L1 = K1.ⓓⓝW.V.
+lemma lsubv_inv_bind_dx (a) (h) (G):
+      ∀I,L1,K2. G ⊢ L1 ⫃![a,h] K2.ⓘ{I} →
+      ∨∨ ∃∃K1. G ⊢ K1 ⫃![a,h] K2 & L1 = K1.ⓘ{I}
+       | ∃∃K1,W,V. ⦃G,K1⦄ ⊢ ⓝW.V ![a,h] &
+                   G ⊢ K1 ⫃![a,h] K2 & I = BPair Abst W & L1 = K1.ⓓⓝW.V.
 /2 width=3 by lsubv_inv_bind_dx_aux/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma lsubv_inv_abst_sn (a) (h) (G): ∀K1,L2,W. G ⊢ K1.ⓛW ⫃![a,h] L2 →
-                        ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & L2 = K2.ⓛW.
+lemma lsubv_inv_abst_sn (a) (h) (G):
+      ∀K1,L2,W. G ⊢ K1.ⓛW ⫃![a,h] L2 →
+      ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & L2 = K2.ⓛW.
 #a #h #G #K1 #L2 #W #H
 elim (lsubv_inv_bind_sn … H) -H // *
 #K2 #XW #XV #_ #_ #H1 #H2 destruct
index e5c87b05fa8343d482fca76f46af967cc71d4240..271b5d5b85320d0e79819a140115a7313ed107b3 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/dynamic/lsubv_cpms.ma".
 
 (* Basic_2A1: uses: lsubsv_snv_trans *)
 lemma lsubv_cnv_trans (a) (h) (G):
-                      ∀L2,T. ⦃G,L2⦄ ⊢ T ![a,h] →
-                      ∀L1. G ⊢ L1 ⫃![a,h] L2 → ⦃G,L1⦄ ⊢ T ![a,h].
+      ∀L2,T. ⦃G,L2⦄ ⊢ T ![a,h] →
+      ∀L1. G ⊢ L1 ⫃![a,h] L2 → ⦃G,L1⦄ ⊢ T ![a,h].
 #a #h #G #L2 #T #H elim H -G -L2 -T //
 [ #I #G #K2 #V #HV #IH #L1 #H
   elim (lsubv_inv_bind_dx … H) -H * /3 width=1 by cnv_zero/
index 81d385add2f224ab89190075a80a322534f536a1..ba08f8818fa4b5e65a16b6c95119649b6c383bbe 100644 (file)
@@ -20,6 +20,7 @@ include "basic_2/dynamic/lsubv_lsubr.ma".
 (* Forward lemmas with t-bound contex-sensitive rt-computation for terms ****)
 
 (* Basic_2A1: uses: lsubsv_cprs_trans lsubsv_scpds_trans *)
-lemma lsubv_cpms_trans (a) (n) (h) (G): lsub_trans … (λL. cpms h G L n) (lsubv a h G).
+lemma lsubv_cpms_trans (a) (n) (h) (G):
+      lsub_trans … (λL. cpms h G L n) (lsubv a h G).
 /3 width=6 by lsubv_fwd_lsubr, lsubr_cpms_trans/
 qed-.
index 06d302d57df17dbc634d0e0e7708f8d76023c75b..63b53ec7261be355d440b1101a5edd62862054f7 100644 (file)
@@ -22,9 +22,9 @@ include "basic_2/dynamic/lsubv.ma".
 (* Note: the premise 𝐔⦃f⦄ cannot be removed *)
 (* Basic_2A1: includes: lsubsv_drop_O1_conf *)
 lemma lsubv_drops_conf_isuni (a) (h) (G):
-                             ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
-                             ∀b,f,K1. 𝐔⦃f⦄ → ⬇*[b,f] L1 ≘ K1 →
-                             ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & ⬇*[b,f] L2 ≘ K2.
+      ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
+      ∀b,f,K1. 𝐔⦃f⦄ → ⬇*[b,f] L1 ≘ K1 →
+      ∃∃K2. G ⊢ K1 ⫃![a,h] K2 & ⬇*[b,f] L2 ≘ K2.
 #a #h #G #L1 #L2 #H elim H -L1 -L2
 [ /2 width=3 by ex2_intro/
 | #I #L1 #L2 #HL12 #IH #b #f #K1 #Hf #H
@@ -47,9 +47,9 @@ qed-.
 (* Note: the premise 𝐔⦃f⦄ cannot be removed *)
 (* Basic_2A1: includes: lsubsv_drop_O1_trans *)
 lemma lsubv_drops_trans_isuni (a) (h) (G):
-                              ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
-                              ∀b,f,K2. 𝐔⦃f⦄ → ⬇*[b,f] L2 ≘ K2 →
-                              ∃∃K1. G ⊢ K1 ⫃![a,h] K2 & ⬇*[b,f] L1 ≘ K1.
+      ∀L1,L2. G ⊢ L1 ⫃![a,h] L2 →
+      ∀b,f,K2. 𝐔⦃f⦄ → ⬇*[b,f] L2 ≘ K2 →
+      ∃∃K1. G ⊢ K1 ⫃![a,h] K2 & ⬇*[b,f] L1 ≘ K1.
 #a #h #G #L1 #L2 #H elim H -L1 -L2
 [ /2 width=3 by ex2_intro/
 | #I #L1 #L2 #HL12 #IH #b #f #K2 #Hf #H
index 84bbfeda94a2c4df1493e9833e525707ee2134a7..187370fab65a16de7c9c9d0c489a272a3733f56e 100644 (file)
@@ -78,14 +78,14 @@ qed-.
 (* Basic_forward lemmas *****************************************************)
 
 lemma nta_fwd_cnv_sn (a) (h) (G) (L):
-                     ∀T,U. ⦃G,L⦄ ⊢ T :[a,h] U → ⦃G,L⦄ ⊢ T ![a,h].
+      ∀T,U. ⦃G,L⦄ ⊢ T :[a,h] U → ⦃G,L⦄ ⊢ T ![a,h].
 #a #h #G #L #T #U #H
 elim (cnv_inv_cast … H) -H #X #_ #HT #_ #_ //
 qed-.
 
 (* Note: this is nta_fwd_correct_cnv *)
 lemma nta_fwd_cnv_dx (a) (h) (G) (L):
-                     ∀T,U. ⦃G,L⦄ ⊢ T :[a,h] U → ⦃G,L⦄ ⊢ U ![a,h].
+      ∀T,U. ⦃G,L⦄ ⊢ T :[a,h] U → ⦃G,L⦄ ⊢ U ![a,h].
 #a #h #G #L #T #U #H
 elim (cnv_inv_cast … H) -H #X #HU #_ #_ #_ //
 qed-.
index 0161996dd9f0a1aaf5e66d2f1baaf528ae6c97be..c27755124b98282b44ee27c1ccad14d311a6ea9d 100644 (file)
@@ -40,7 +40,7 @@ lapply (aaa_mono … H1W … H2W) -G -L -W #H
 elim (discr_apair_xy_x … H)
 qed-.
 
-(* Basic_2A1: uses: ty3_repellent *)
+(* Basic_1: uses: ty3_repellent *)
 theorem nta_abst_repellent (a) (h) (p) (G) (K):
         ∀W,T,U1. ⦃G,K⦄ ⊢ ⓛ{p}W.T :[a,h] U1 →
         ∀U2. ⦃G,K.ⓛW⦄ ⊢ T :[a,h] U2 → ⬆*[1] U1 ≘ U2 → ⊥.
index ebc6fd96db1b50b6f73aba63dcd70f8da0c7f37d..ec8f6bfeae49d0cf81493483ba6ff52cc238737a 100644 (file)
@@ -174,9 +174,9 @@ qed-.
 
 (* Basic_2A1: uses: nta_fwd_pure1 *)
 lemma nta_inv_pure_sn_cnv (h) (G) (L) (X2):
-                          ∀V,T. ⦃G,L⦄ ⊢ ⓐV.T :*[h] X2 →
-                          ∨∨ ∃∃p,W,U. ⦃G,L⦄ ⊢ V :*[h] W & ⦃G,L⦄ ⊢ T :*[h] ⓛ{p}W.U & ⦃G,L⦄ ⊢ ⓐV.ⓛ{p}W.U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 !*[h]
-                           | ∃∃U. ⦃G,L⦄ ⊢ T :*[h] U & ⦃G,L⦄ ⊢ ⓐV.U !*[h] & ⦃G,L⦄ ⊢ ⓐV.U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 !*[h].
+      ∀V,T. ⦃G,L⦄ ⊢ ⓐV.T :*[h] X2 →
+      ∨∨ ∃∃p,W,U. ⦃G,L⦄ ⊢ V :*[h] W & ⦃G,L⦄ ⊢ T :*[h] ⓛ{p}W.U & ⦃G,L⦄ ⊢ ⓐV.ⓛ{p}W.U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 !*[h]
+       | ∃∃U. ⦃G,L⦄ ⊢ T :*[h] U & ⦃G,L⦄ ⊢ ⓐV.U !*[h] & ⦃G,L⦄ ⊢ ⓐV.U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 !*[h].
 #h #G #L #X2 #V #T #H
 elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H
 elim (cnv_inv_appl … H1) * [| #n ] #p #W0 #T0 #Hn #HV #HT #HW0 #HT0
index 7ea1776a0299a280012d08896c80c91b004eda6c..b95c6ced6f27940cee4ca3a022484537d759e059 100644 (file)
@@ -21,7 +21,6 @@ include "basic_2/rt_computation/fsb_csx.ma".
 
 (* Main properties with atomic arity assignment for terms *******************)
 
-(* Note: this is the "big tree" theorem *)
 theorem aaa_fsb: ∀h,G,L,T,A. ⦃G,L⦄ ⊢ T ⁝ A → ≥[h] 𝐒⦃G,L,T⦄.
 /3 width=2 by aaa_csx, csx_fsb/ qed.
 
index 60228533724894e629e970983733ac155a0ae66d..b8117c0477ab8eeb9ecc47762b36a4cba2e74ced 100644 (file)
@@ -44,7 +44,7 @@ lemma rpx_tdeq_div: ∀h,T1,T2. T1 ≛ T2 →
                     ∀G,L1,L2. ⦃G,L1⦄ ⊢ ⬈[h,T2] L2 → ⦃G,L1⦄ ⊢ ⬈[h,T1] L2.
 /2 width=5 by tdeq_rex_div/ qed-.
 
-lemma cpx_tdeq_conf_sex: ∀h,G. R_confluent2_rex … (cpx h G) cdeq (cpx h G) cdeq.
+lemma cpx_tdeq_conf_rex: ∀h,G. R_confluent2_rex … (cpx h G) cdeq (cpx h G) cdeq.
 #h #G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/
 [ #G #L0 #s0 #X0 #H0 #L1 #HL01 #L2 #HL02
   elim (tdeq_inv_sort1 … H0) -H0 #s1 #H destruct
@@ -129,7 +129,7 @@ lemma cpx_tdeq_conf: ∀h,G,L. ∀T0:term. ∀T1. ⦃G,L⦄ ⊢ T0 ⬈[h] T1 →
                      ∀T2. T0 ≛ T2 →
                      ∃∃T. T1 ≛ T & ⦃G,L⦄ ⊢ T2 ⬈[h] T.
 #h #G #L #T0 #T1 #HT01 #T2 #HT02
-elim (cpx_tdeq_conf_sex … HT01 … HT02 L … L) -HT01 -HT02
+elim (cpx_tdeq_conf_rex … HT01 … HT02 L … L) -HT01 -HT02
 /2 width=3 by rex_refl, ex2_intro/
 qed-.
 
@@ -145,7 +145,7 @@ lemma cpx_rdeq_conf: ∀h,G,L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈[h] T1 →
                      ∀L2. L0 ≛[T0] L2 →
                      ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈[h] T & T1 ≛ T.
 #h #G #L0 #T0 #T1 #HT01 #L2 #HL02
-elim (cpx_tdeq_conf_sex … HT01 T0 … L0 … HL02) -HT01 -HL02
+elim (cpx_tdeq_conf_rex … HT01 T0 … L0 … HL02) -HT01 -HL02
 /2 width=3 by rex_refl, ex2_intro/
 qed-.
 
@@ -159,7 +159,7 @@ elim (cpx_rdeq_conf … HT01 L2) -HT01
 qed-.
 
 lemma rpx_rdeq_conf: ∀h,G,T. confluent2 … (rpx h G T) (rdeq T).
-/3 width=6 by rpx_fsge_comp, rdeq_fsge_comp, cpx_tdeq_conf_sex, rex_conf/ qed-.
+/3 width=6 by rpx_fsge_comp, rdeq_fsge_comp, cpx_tdeq_conf_rex, rex_conf/ qed-.
 
 lemma rdeq_rpx_trans: ∀h,G,T,L2,K2. ⦃G,L2⦄ ⊢ ⬈[h,T] K2 →
                       ∀L1. L1 ≛[T] L2 →
index bf8f1060858e0f67cd34c4af10745d40d502ded7..be3c16d738801109e4ab49ab78e61d0a3321a900 100644 (file)
    <subsection name="B">Stage "B"</subsection>
    <news class="beta" date="2019 June 2.">
          Parametrized applicability condition
-         allows λδ-2B to generalize both λδ-1A and λδ-1B.
+         allows λδ-2B to generalize both λδ-2A and λδ-1B.
    </news>
    <news class="beta" date="2019 April 16.">
-         Extended (λδ-2A) and restricted (λδ-1A) validity is decidable 
+         Extended (λδ-2A) and restricted (λδ-1B) validity is decidable
          (anniversary milestone).
    </news>
    <news class="beta" date="2019 March 25.">
index fa8bae34356880363acc0a6369876121b7bbe6d9..d272c0dbee63dfdbb474d8e6fa64a8ec7d099a89 100644 (file)
@@ -18,7 +18,7 @@ include "ground_2/lib/logic.ma".
 (* GENERIC RELATIONS ********************************************************)
 
 definition replace_2 (A) (B): relation3 (relation2 A B) (relation A) (relation B) ≝
-                              λR,Sa,Sb. ∀a1,b1. R a1 b1 → ∀a2. Sa a1 a2 → ∀b2. Sb b1 b2 → R a2 b2.
+           λR,Sa,Sb. ∀a1,b1. R a1 b1 → ∀a2. Sa a1 a2 → ∀b2. Sb b1 b2 → R a2 b2.
 
 (* Inclusion ****************************************************************)
 
@@ -36,81 +36,93 @@ interpretation "3-relation inclusion"
 
 (* Properties of relations **************************************************)
 
-definition relation5: Type[0] → Type[0] → Type[0] → Type[0] → Type[0] → Type[0]
- λA,B,C,D,E.A→B→C→D→E→Prop.
+definition relation5: Type[0] → Type[0] → Type[0] → Type[0] → Type[0] → Type[0] ≝
+           λA,B,C,D,E.A→B→C→D→E→Prop.
 
-definition relation6: Type[0] → Type[0] → Type[0] → Type[0] → Type[0] → Type[0] → Type[0]
- λA,B,C,D,E,F.A→B→C→D→E→F→Prop.
+definition relation6: Type[0] → Type[0] → Type[0] → Type[0] → Type[0] → Type[0] → Type[0] ≝
+           λA,B,C,D,E,F.A→B→C→D→E→F→Prop.
 
-(**) (* we dont use "∀a. reflexive … (R a)" since auto seems to dislike repeatd δ-expansion *)  
+(**) (* we don't use "∀a. reflexive … (R a)" since auto seems to dislike repeatd δ-expansion *)  
 definition c_reflexive (A) (B): predicate (relation3 A B B) ≝
-                                λR. ∀a,b. R a b b.
+           λR. ∀a,b. R a b b.
 
 definition Decidable: Prop → Prop ≝ λR. R ∨ (R → ⊥).
 
-definition Transitive: ∀A. ∀R: relation A. Prop ≝ λA,R.
-                       ∀a1,a0. R a1 a0 → ∀a2. R a0 a2 → R a1 a2.
+definition Transitive (A) (R:relation A): Prop ≝
+           ∀a1,a0. R a1 a0 → ∀a2. R a0 a2 → R a1 a2.
 
-definition left_cancellable: ∀A. ∀R: relation A. Prop ≝ λA,R.
-                             ∀a0,a1. R a0 a1 → ∀a2. R a0 a2 → R a1 a2.
+definition left_cancellable (A) (R:relation A): Prop ≝
+           ∀a0,a1. R a0 a1 → ∀a2. R a0 a2 → R a1 a2.
 
-definition right_cancellable: ∀A. ∀R: relation A. Prop ≝ λA,R.
-                              ∀a1,a0. R a1 a0 → ∀a2. R a2 a0 → R a1 a2.
+definition right_cancellable (A) (R:relation A): Prop ≝
+           ∀a1,a0. R a1 a0 → ∀a2. R a2 a0 → R a1 a2.
 
-definition pw_confluent2: ∀A. relation A → relation A → predicate A ≝ λA,R1,R2,a0.
-                          ∀a1. R1 a0 a1 → ∀a2. R2 a0 a2 →
-                          ∃∃a. R2 a1 a & R1 a2 a.
+definition pw_confluent2 (A) (R1,R2:relation A): predicate A ≝
+           λa0.
+           ∀a1. R1 a0 a1 → ∀a2. R2 a0 a2 →
+           ∃∃a. R2 a1 a & R1 a2 a.
 
-definition confluent2: ∀A. relation (relation A) ≝ λA,R1,R2.
-                       ∀a0. pw_confluent2 A R1 R2 a0.
+definition confluent2 (A): relation (relation A) ≝
+           λR1,R2.
+           ∀a0. pw_confluent2 A R1 R2 a0.
 
-definition transitive2: ∀A. ∀R1,R2: relation A. Prop ≝ λA,R1,R2.
-                        ∀a1,a0. R1 a1 a0 → ∀a2. R2 a0 a2 →
-                        ∃∃a. R2 a1 a & R1 a a2.
+definition transitive2 (A) (R1,R2:relation A): Prop ≝
+           ∀a1,a0. R1 a1 a0 → ∀a2. R2 a0 a2 →
+           ∃∃a. R2 a1 a & R1 a a2.
 
-definition bi_confluent: ∀A,B. ∀R: bi_relation A B. Prop ≝ λA,B,R.
-                         ∀a0,a1,b0,b1. R a0 b0 a1 b1 → ∀a2,b2. R a0 b0 a2 b2 →
-                         ∃∃a,b. R a1 b1 a b & R a2 b2 a b.
+definition bi_confluent (A) (B) (R: bi_relation A B): Prop ≝
+           ∀a0,a1,b0,b1. R a0 b0 a1 b1 → ∀a2,b2. R a0 b0 a2 b2 →
+           ∃∃a,b. R a1 b1 a b & R a2 b2 a b.
 
-definition lsub_trans: ∀A,B. relation2 (A→relation B) (relation A) ≝ λA,B,R1,R2.
-                       ∀L2,T1,T2. R1 L2 T1 T2 → ∀L1. R2 L1 L2 → R1 L1 T1 T2.
+definition lsub_trans (A) (B): relation2 (A→relation B) (relation A) ≝
+           λR1,R2.
+           ∀L2,T1,T2. R1 L2 T1 T2 → ∀L1. R2 L1 L2 → R1 L1 T1 T2.
 
-definition s_r_confluent1: ∀A,B. relation2 (A→relation B) (B→relation A) ≝ λA,B,R1,R2.
-                           ∀L1,T1,T2. R1 L1 T1 T2 → ∀L2. R2 T1 L1 L2 → R2 T2 L1 L2.
+definition s_r_confluent1 (A) (B): relation2 (A→relation B) (B→relation A) ≝
+           λR1,R2.
+           ∀L1,T1,T2. R1 L1 T1 T2 → ∀L2. R2 T1 L1 L2 → R2 T2 L1 L2.
 
-definition is_mono: ∀B:Type[0]. predicate (predicate B) ≝ 
-                    λB,R. ∀b1. R b1 → ∀b2. R b2 → b1 = b2.
+definition is_mono (B:Type[0]): predicate (predicate B) ≝
+           λR. ∀b1. R b1 → ∀b2. R b2 → b1 = b2.
 
-definition is_inj2: ∀A,B:Type[0]. predicate (relation2 A B) ≝ 
-                    λA,B,R. ∀a1,b. R a1 b → ∀a2. R a2 b → a1 = a2.
+definition is_inj2 (A,B:Type[0]): predicate (relation2 A B) ≝
+           λR. ∀a1,b. R a1 b → ∀a2. R a2 b → a1 = a2.
+
+(* Main properties of equality **********************************************)
+
+theorem canc_sn_eq (A): left_cancellable A (eq …).
+// qed-.
+
+theorem canc_dx_eq (A): right_cancellable A (eq …).
+// qed-.
 
 (* Normal form and strong normalization *************************************)
 
-definition NF: ∀A. relation A → relation A → predicate A ≝
-   λA,R,S,a1. ∀a2. R a1 a2 → S a1 a2.
+definition NF (A): relation A → relation A → predicate A ≝
+           λR,S,a1. ∀a2. R a1 a2 → S a1 a2.
 
-definition NF_dec: ∀A. relation A → relation A → Prop ≝
-                   λA,R,S. ∀a1. NF A R S a1 ∨
-                   ∃∃a2. R … a1 a2 & (S a1 a2 → ⊥).
+definition NF_dec (A): relation A → relation A → Prop ≝
+           λR,S. ∀a1. NF A R S a1 ∨
+           ∃∃a2. R … a1 a2 & (S a1 a2 → ⊥).
 
 inductive SN (A) (R,S:relation A): predicate A ≝
 | SN_intro: ∀a1. (∀a2. R a1 a2 → (S a1 a2 → ⊥) → SN A R S a2) → SN A R S a1
 .
 
-lemma NF_to_SN: ∀A,R,S,a. NF A R S a → SN A R S a.
+lemma NF_to_SN (A) (R) (S): ∀a. NF A R S a → SN A R S a.
 #A #R #S #a1 #Ha1
 @SN_intro #a2 #HRa12 #HSa12
 elim HSa12 -HSa12 /2 width=1 by/
 qed.
 
-definition NF_sn: ∀A. relation A → relation A → predicate A ≝
-   λA,R,S,a2. ∀a1. R a1 a2 → S a1 a2.
+definition NF_sn (A): relation A → relation A → predicate A ≝
+   λR,S,a2. ∀a1. R a1 a2 → S a1 a2.
 
 inductive SN_sn (A) (R,S:relation A): predicate A ≝
 | SN_sn_intro: ∀a2. (∀a1. R a1 a2 → (S a1 a2 → ⊥) → SN_sn A R S a1) → SN_sn A R S a2
 .
 
-lemma NF_to_SN_sn: ∀A,R,S,a. NF_sn A R S a → SN_sn A R S a.
+lemma NF_to_SN_sn (A) (R) (S): ∀a. NF_sn A R S a → SN_sn A R S a.
 #A #R #S #a2 #Ha2
 @SN_sn_intro #a1 #HRa12 #HSa12
 elim HSa12 -HSa12 /2 width=1 by/
@@ -118,9 +130,10 @@ qed.
 
 (* Relations on unboxed triples *********************************************)
 
-definition tri_RC: ∀A,B,C. tri_relation A B C → tri_relation A B C ≝
-                   λA,B,C,R,a1,b1,c1,a2,b2,c2. R … a1 b1 c1 a2 b2 c2 ∨
-                   ∧∧ a1 = a2 & b1 = b2 & c1 = c2.
+definition tri_RC (A,B,C): tri_relation A B C → tri_relation A B C ≝
+           λR,a1,b1,c1,a2,b2,c2.
+           ∨∨ R … a1 b1 c1 a2 b2 c2
+            | ∧∧ a1 = a2 & b1 = b2 & c1 = c2.
 
-lemma tri_RC_reflexive: ∀A,B,C,R. tri_reflexive A B C (tri_RC … R).
+lemma tri_RC_reflexive (A) (B) (C): ∀R. tri_reflexive A B C (tri_RC … R).
 /3 width=1 by and3_intro, or_intror/ qed.