]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma
- advances in rt_transition
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / rt_transition / cpx.ma
index 7d20bc47fe9fc848197567877d811a868c2ef74a..0241664db5224e9fb5a2742f9110dcdab6336e35 100644 (file)
@@ -230,3 +230,34 @@ lemma cpx_fwd_bind1_minus: ∀h,I,G,L,V1,T1,T. ⦃G, L⦄ ⊢ -ⓑ{I}V1.T1 ⬈[h
 #h #I #G #L #V1 #T1 #T * #c #H #p elim (cpg_fwd_bind1_minus … H p) -H
 /3 width=4 by ex2_2_intro, ex_intro/
 qed-.
+
+(* Basic eliminators ********************************************************)
+
+lemma cpx_ind: ∀h. ∀R:relation4 genv lenv term term.
+               (∀I,G,L. R G L (⓪{I}) (⓪{I})) →
+               (∀G,L,s. R G L (⋆s) (⋆(next h s))) →
+               (∀I,G,K,V1,V2,W2. ⦃G, K⦄ ⊢ V1 ⬈[h] V2 → R G K V1 V2 →
+                 ⬆*[1] V2 ≡ W2 → R G (K.ⓑ{I}V1) (#0) W2
+               ) → (∀I,G,K,V,T,U,i. ⦃G, K⦄ ⊢ #i ⬈[h] T → R G K (#i) T →
+                 ⬆*[1] T ≡ U → R G (K.ⓑ{I}V) (#⫯i) (U)
+               ) → (∀p,I,G,L,V1,V2,T1,T2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → ⦃G, L.ⓑ{I}V1⦄ ⊢ T1 ⬈[h] T2 →
+                  R G L V1 V2 → R G (L.ⓑ{I}V1) T1 T2 → R G L (ⓑ{p,I}V1.T1) (ⓑ{p,I}V2.T2)
+               ) → (∀I,G,L,V1,V2,T1,T2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → ⦃G, L⦄ ⊢ T1 ⬈[h] T2 →
+                  R G L V1 V2 → R G L T1 T2 → R G L (ⓕ{I}V1.T1) (ⓕ{I}V2.T2)
+               ) → (∀G,L,V,T1,T,T2. ⦃G, L.ⓓV⦄ ⊢ T1 ⬈[h] T → R G (L.ⓓV) T1 T →
+                  ⬆*[1] T2 ≡ T → R G L (+ⓓV.T1) T2
+               ) → (∀G,L,V,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → R G L T1 T2 →
+                  R G L (ⓝV.T1) T2
+               ) → (∀G,L,V1,V2,T. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → R G L V1 V2 →
+                  R G L (ⓝV1.T) V2
+               ) → (∀p,G,L,V1,V2,W1,W2,T1,T2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → ⦃G, L⦄ ⊢ W1 ⬈[h] W2 → ⦃G, L.ⓛW1⦄ ⊢ T1 ⬈[h] T2 →
+                  R G L V1 V2 → R G L W1 W2 → R G (L.ⓛW1) T1 T2 →
+                  R G L (ⓐV1.ⓛ{p}W1.T1) (ⓓ{p}ⓝW2.V2.T2)
+               ) → (∀p,G,L,V1,V,V2,W1,W2,T1,T2. ⦃G, L⦄ ⊢ V1 ⬈[h] V → ⦃G, L⦄ ⊢ W1 ⬈[h] W2 → ⦃G, L.ⓓW1⦄ ⊢ T1 ⬈[h] T2 →
+                  R G L V1 V → R G L W1 W2 → R G (L.ⓓW1) T1 T2 →
+                  ⬆*[1] V ≡ V2 → R G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2)
+               ) →
+               ∀G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → R G L T1 T2.
+#h #R #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #G #L #T1 #T2
+* #c #H elim H -c -G -L -T1 -T2 /3 width=4 by ex_intro/
+qed-.