]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_main.ma
csx on the way ...
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / rt_computation / csx_main.ma
1 (*
2 lemma csx_tdeq_trans: ∀h,o,G,L,T1. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃T1⦄ →
3                       ∀T2. T1 ≡[h, o] T2 → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃T2⦄.
4 #h #o #G #L #T1 #H @(csx_ind … H) -H #T #HT #IH #T2 #HT2
5 @csx_intro #T0 #HT20 #HnT20      
6
7 lemma csx_tdeq_trans: ∀h,o,T1,T2. T1 ≡[h, o] T2 →  
8                       ∀G,L. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃T1⦄ → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃T2⦄.
9 #h #o #T1 #T2 #H elim H -T1 -T2 //
10 [ #s1 #s2 #d #Hs1 #Hs2 #G #L #H
11 | #I #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #G #L #H   
12
13 lemma csx_cpx_trans: ∀h,o,G,L,T1. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃T1⦄ →
14                      ∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃T2⦄.
15 #h #o #G #L #T1 #H @(csx_ind … H) -T1 #T1 #HT1 #IHT1 #T2 #HLT12
16 elim (tdeq_dec h o T1 T2) #HT12 /3 width=4 by/ -IHT1 -HLT12
17 qed-.
18
19 (* Basic_1: was just: sn3_cast *)
20 lemma csx_cast: ∀h,o,G,L,W. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃W →
21                 ∀T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃T → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐒⦃ⓝW.T.
22 #h #o #G #L #W #HW @(csx_ind … HW) -W #W #HW #IHW #T #HT @(csx_ind … HT) -T #T #HT #IHT
23 @csx_intro #X #H1 #H2
24 elim (cpx_inv_cast1 … H1) -H1
25 [ * #W0 #T0 #HLW0 #HLT0 #H destruct
26   elim (eq_false_inv_tpair_sn … H2) -H2
27   [ /3 width=3 by csx_cpx_trans/
28   | -HLW0 * #H destruct /3 width=1 by/
29   ]
30 |2,3: /3 width=3 by csx_cpx_trans/
31 ]
32 qed.
33
34 *)