X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_computation%2Fjsx.ma;h=a318423b5b1ab82ccd979a4a90b1cd5a498e7888;hp=685ff2a369facfe57b60b680c1a4adde330634ec;hb=bd53c4e895203eb049e75434f638f26b5a161a2b;hpb=3b7b8afcb429a60d716d5226a5b6ab0d003228b1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma index 685ff2a36..a318423b5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma @@ -23,9 +23,9 @@ include "basic_2/rt_computation/rsx.ma". inductive jsx (h) (G): relation lenv ≝ | jsx_atom: jsx h G (⋆) (⋆) | jsx_bind: ∀I,K1,K2. jsx h G K1 K2 → - jsx h G (K1.ⓘ{I}) (K2.ⓘ{I}) + jsx h G (K1.ⓘ[I]) (K2.ⓘ[I]) | jsx_pair: ∀I,K1,K2,V. jsx h G K1 K2 → - G ⊢ ⬈*[h,V] 𝐒⦃K2⦄ → jsx h G (K1.ⓑ{I}V) (K2.ⓧ) + G ⊢ ⬈*[h,V] 𝐒❪K2❫ → jsx h G (K1.ⓑ[I]V) (K2.ⓧ) . interpretation @@ -48,9 +48,9 @@ lemma jsx_inv_atom_sn (h) (G): ∀L2. G ⊢ ⋆ ⊒[h] L2 → L2 = ⋆. fact jsx_inv_bind_sn_aux (h) (G): ∀L1,L2. G ⊢ L1 ⊒[h] L2 → - ∀I,K1. L1 = K1.ⓘ{I} → - ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ{I} - | ∃∃J,K2,V. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*[h,V] 𝐒⦃K2⦄ & I = BPair J V & L2 = K2.ⓧ. + ∀I,K1. L1 = K1.ⓘ[I] → + ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ[I] + | ∃∃J,K2,V. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*[h,V] 𝐒❪K2❫ & I = BPair J V & L2 = K2.ⓧ. #h #G #L1 #L2 * -L1 -L2 [ #J #L1 #H destruct | #I #K1 #K2 #HK12 #J #L1 #H destruct /3 width=3 by ex2_intro, or_introl/ @@ -59,18 +59,18 @@ fact jsx_inv_bind_sn_aux (h) (G): qed-. lemma jsx_inv_bind_sn (h) (G): - ∀I,K1,L2. G ⊢ K1.ⓘ{I} ⊒[h] L2 → - ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ{I} - | ∃∃J,K2,V. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*[h,V] 𝐒⦃K2⦄ & I = BPair J V & L2 = K2.ⓧ. + ∀I,K1,L2. G ⊢ K1.ⓘ[I] ⊒[h] L2 → + ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ[I] + | ∃∃J,K2,V. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*[h,V] 𝐒❪K2❫ & I = BPair J V & L2 = K2.ⓧ. /2 width=3 by jsx_inv_bind_sn_aux/ qed-. (* Advanced inversion lemmas ************************************************) (* Basic_2A1: uses: lcosx_inv_pair *) lemma jsx_inv_pair_sn (h) (G): - ∀I,K1,L2,V. G ⊢ K1.ⓑ{I}V ⊒[h] L2 → - ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓑ{I}V - | ∃∃K2. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*[h,V] 𝐒⦃K2⦄ & L2 = K2.ⓧ. + ∀I,K1,L2,V. G ⊢ K1.ⓑ[I]V ⊒[h] L2 → + ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓑ[I]V + | ∃∃K2. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*[h,V] 𝐒❪K2❫ & L2 = K2.ⓧ. #h #G #I #K1 #L2 #V #H elim (jsx_inv_bind_sn … H) -H * [ /3 width=3 by ex2_intro, or_introl/ | #J #K2 #X #HK12 #HX #H1 #H2 destruct /3 width=4 by ex3_intro, or_intror/ @@ -87,8 +87,8 @@ qed-. (* Advanced forward lemmas **************************************************) lemma jsx_fwd_bind_sn (h) (G): - ∀I1,K1,L2. G ⊢ K1.ⓘ{I1} ⊒[h] L2 → - ∃∃I2,K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ{I2}. + ∀I1,K1,L2. G ⊢ K1.ⓘ[I1] ⊒[h] L2 → + ∃∃I2,K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ[I2]. #h #G #I1 #K1 #L2 #H elim (jsx_inv_bind_sn … H) -H * /2 width=4 by ex2_2_intro/ qed-.