]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/dynamic/snv_cpcs.ma
- advances in the theory of cofrees
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / dynamic / snv_cpcs.ma
index 797f73147272055091c3a1c7aaf6d1326add106e..56ed1c2c5d734f8154f1622be5beaf4f6e710ed1 100644 (file)
@@ -47,17 +47,17 @@ definition IH_snv_lsstas: ∀h:sh. sd h → relation3 genv lenv term ≝
 (* Properties for the preservation results **********************************)
 
 fact snv_cprs_lpr_aux: ∀h,g,G0,L0,T0.
-                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
-                       â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
+                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
+                       â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
                        ∀T2. ⦃G, L1⦄ ⊢ T1 ➡* T2 → ∀L2. ⦃G, L1⦄ ⊢ ➡ L2 → ⦃G, L2⦄ ⊢ T2 ¡[h, g].
 #h #g #G0 #L0 #T0 #IH #G #L1 #T1 #HLT0 #HT1 #T2 #H
 @(cprs_ind … H) -T2 /4 width=6 by fpbg_fpbs_trans, cprs_fpbs/
 qed-.
 
 fact da_cprs_lpr_aux: ∀h,g,G0,L0,T0.
-                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
-                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
-                      â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
+                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
+                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
+                      â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
                       ∀l. ⦃G, L1⦄ ⊢ T1 ▪[h, g] l →
                       ∀T2. ⦃G, L1⦄ ⊢ T1 ➡* T2 → ∀L2. ⦃G, L1⦄ ⊢ ➡ L2 → ⦃G, L2⦄ ⊢ T2 ▪[h, g] l.
 #h #g #G0 #L0 #T0 #IH2 #IH1 #G #L1 #T1 #HLT0 #HT1 #l #Hl #T2 #H
@@ -65,10 +65,10 @@ fact da_cprs_lpr_aux: ∀h,g,G0,L0,T0.
 qed-.
 
 fact da_cpcs_aux: ∀h,g,G0,L0,T0.
-                  (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
-                  (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
-                  â\88\80G,L,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L, T1⦄ → ⦃G, L⦄ ⊢ T1 ¡[h, g] →
-                  â\88\80T2. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L, T2⦄ → ⦃G, L⦄ ⊢ T2 ¡[h, g] →
+                  (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
+                  (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
+                  â\88\80G,L,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L, T1⦄ → ⦃G, L⦄ ⊢ T1 ¡[h, g] →
+                  â\88\80T2. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L, T2⦄ → ⦃G, L⦄ ⊢ T2 ¡[h, g] →
                   ∀l1. ⦃G, L⦄ ⊢ T1 ▪[h, g] l1 → ∀l2. ⦃G, L⦄ ⊢ T2 ▪[h, g] l2 →
                   ⦃G, L⦄ ⊢ T1 ⬌* T2 → l1 = l2.
 #h #g #G0 #L0 #T0 #IH2 #IH1 #G #L #T1 #HLT01 #HT1 #T2 #HLT02 #HT2 #l1 #Hl1 #l2 #Hl2 #H
@@ -76,8 +76,8 @@ elim (cpcs_inv_cprs … H) -H /4 width=18 by da_cprs_lpr_aux, da_mono/
 qed-.
 
 fact ssta_cpr_lpr_aux: ∀h,g,G0,L0,T0.
-                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
-                       â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
+                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
+                       â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
                        ∀l. ⦃G, L1⦄ ⊢ T1 ▪[h, g] l+1 →
                        ∀U1. ⦃G, L1⦄ ⊢ T1 •[h, g] U1 →
                        ∀T2. ⦃G, L1⦄ ⊢ T1 ➡ T2 → ∀L2. ⦃G, L1⦄ ⊢ ➡ L2 →
@@ -88,10 +88,10 @@ elim (IH … H01 … 1 … Hl U1 … HT12 … HL12)
 qed-.
 
 fact lsstas_cprs_lpr_aux: ∀h,g,G0,L0,T0.
-                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
-                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
-                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
-                          â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
+                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
+                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
+                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
+                          â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
                           ∀l1,l2. l2 ≤ l1 → ⦃G, L1⦄ ⊢ T1 ▪[h, g] l1 →
                           ∀U1. ⦃G, L1⦄ ⊢ T1 •*[h, g, l2] U1 →
                           ∀T2. ⦃G, L1⦄ ⊢ T1 ➡* T2 → ∀L2. ⦃G, L1⦄ ⊢ ➡ L2 →
@@ -109,12 +109,12 @@ elim (IH1 … Hl21 … HTU … HTT2 … HL12) -IH1 -HTU -HTT2
 qed-.
 
 fact lsstas_cpcs_lpr_aux: ∀h,g,G0,L0,T0.
-                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
-                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
-                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
-                          â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
+                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
+                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
+                          (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
+                          â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
                           ∀l,l1. l ≤ l1 → ⦃G, L1⦄ ⊢ T1 ▪[h, g] l1 → ∀U1. ⦃G, L1⦄ ⊢ T1 •*[h, g, l] U1 →
-                          â\88\80T2. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L1, T2⦄ → ⦃G, L1⦄ ⊢ T2 ¡[h, g] →
+                          â\88\80T2. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L1, T2⦄ → ⦃G, L1⦄ ⊢ T2 ¡[h, g] →
                           ∀l2. l ≤ l2 → ⦃G, L1⦄ ⊢ T2 ▪[h, g] l2 → ∀U2. ⦃G, L1⦄ ⊢ T2 •*[h, g, l] U2 →
                           ⦃G, L1⦄ ⊢ T1 ⬌* T2 → ∀L2. ⦃G, L1⦄ ⊢ ➡ L2 → ⦃G, L2⦄ ⊢ U1 ⬌* U2.
 #h #g #G0 #L0 #T0 #IH3 #IH2 #IH1 #G #L1 #T1 #H01 #HT1 #l #l1 #Hl1 #HTl1 #U1 #HTU1 #T2 #H02 #HT2 #l2 #Hl2 #HTl2 #U2 #HTU2 #H #L2 #HL12
@@ -125,18 +125,18 @@ lapply (lsstas_mono … H1 … H2) -h -T -l #H destruct /2 width=3 by cpcs_canc_
 qed-.
 
 fact snv_ssta_aux: ∀h,g,G0,L0,T0.
-                   (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_lsstas h g G1 L1 T1) →
-                   â\88\80G,L,T. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L, T⦄ → ⦃G, L⦄ ⊢ T ¡[h, g] →
+                   (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_lsstas h g G1 L1 T1) →
+                   â\88\80G,L,T. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L, T⦄ → ⦃G, L⦄ ⊢ T ¡[h, g] →
                    ∀l. ⦃G, L⦄ ⊢ T ▪[h, g] l+1 →
                    ∀U. ⦃G, L⦄ ⊢ T •[h, g] U → ⦃G, L⦄ ⊢ U ¡[h, g].
 /3 width=8 by lsstas_inv_SO, ssta_lsstas/ qed-.
 
 fact lsstas_cpds_aux: ∀h,g,G0,L0,T0.
-                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_lsstas h g G1 L1 T1) →
-                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
-                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
-                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
-                      â\88\80G,L,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L, T1⦄ → ⦃G, L⦄ ⊢ T1 ¡[h, g] →
+                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_lsstas h g G1 L1 T1) →
+                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_snv_cpr_lpr h g G1 L1 T1) →
+                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
+                      (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
+                      â\88\80G,L,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L, T1⦄ → ⦃G, L⦄ ⊢ T1 ¡[h, g] →
                       ∀l1,l2. l2 ≤ l1 → ⦃G, L⦄ ⊢ T1 ▪[h, g] l1 →
                       ∀U1. ⦃G, L⦄ ⊢ T1 •*[h, g, l2] U1 → ∀T2. ⦃G, L⦄ ⊢ T1 •*➡*[h, g] T2 →
                       ∃∃U2,l. l ≤ l2 & ⦃G, L⦄ ⊢ T2 •*[h, g, l] U2 & ⦃G, L⦄ ⊢ U1 •*⬌*[h, g] U2.
@@ -155,9 +155,9 @@ elim (le_or_ge l2 l) #Hl2
 qed-.
 
 fact cpds_cpr_lpr_aux: ∀h,g,G0,L0,T0.
-                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
-                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
-                       â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\8b\95[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
+                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_da_cpr_lpr h g G1 L1 T1) →
+                       (â\88\80G1,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G1, L1, T1⦄ → IH_lsstas_cpr_lpr h g G1 L1 T1) →
+                       â\88\80G,L1,T1. â¦\83G0, L0, T0â¦\84 >â\89¡[h, g] ⦃G, L1, T1⦄ → ⦃G, L1⦄ ⊢ T1 ¡[h, g] →
                        ∀U1. ⦃G, L1⦄ ⊢ T1 •*➡*[h, g] U1 →
                        ∀T2. ⦃G, L1⦄ ⊢ T1 ➡ T2 → ∀L2. ⦃G, L1⦄ ⊢ ➡ L2 →
                        ∃∃U2. ⦃G, L2⦄ ⊢ T2 •*➡*[h, g] U2 & ⦃G, L2⦄ ⊢ U1 ➡* U2.