]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lsubr.ma
lfsx_drops completed
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / rt_computation / csx_lsubr.ma
index 00683b0fc2de5f52640785f3a93c06ea6f0db484..694ce6b3c2b9c9d770a5cae80fcca62f40de1f1a 100644 (file)
@@ -44,3 +44,21 @@ qed-.
 (* Basic_1: was just: sn3_beta *)
 lemma csx_appl_beta: ∀h,o,p,G,L,V,W,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓓ{p}ⓝW.V.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV.ⓛ{p}W.T⦄.
 /2 width=3 by csx_appl_beta_aux/ qed.
+
+(* Advanced forward lemmas **************************************************)
+
+fact csx_fwd_bind_dx_unit_aux: ∀h,o,G,L,U. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃U⦄ →
+                               ∀p,I,J,V,T. U = ⓑ{p,I}V.T → ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+#h #o #G #L #U #H elim H -H #U0 #_ #IH #p #I #J #V #T #H destruct
+@csx_intro #T2 #HLT2 #HT2
+@(IH (ⓑ{p,I}V.T2)) -IH /2 width=4 by cpx_bind_unit/ -HLT2
+#H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+qed-.
+
+lemma csx_fwd_bind_dx_unit: ∀h,o,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓑ{p,I}V.T⦄ →
+                            ∀J. ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+/2 width=6 by csx_fwd_bind_dx_unit_aux/ qed-.
+
+lemma csx_fwd_bind_unit: ∀h,o,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓑ{p,I}V.T⦄ →
+                         ∀J. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ ∧ ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+/3 width=4 by csx_fwd_pair_sn, csx_fwd_bind_dx_unit, conj/ qed-.