1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 include "basic_2/reduction/cpx.ma".
17 (* CONTEXT-SENSITIVE EXTENDED PARALLEL REDUCTION FOR TERMS ******************)
19 include "basic_2/substitution/lpss_ldrop.ma".
20 include "basic_2/substitution/fsups.ma".
22 lemma fsup_cpss_trans: ∀L1,L2,T1,T2. ⦃L1, T1⦄ ⊃ ⦃L2, T2⦄ → ∀U2. L2 ⊢ T2 ▶* U2 →
23 ∃∃U1. L1 ⊢ T1 ▶* U1 & ⦃L1, U1⦄ ⊃ ⦃L2, U2⦄.
24 #L1 #L2 #T1 #T2 #H elim H -L1 -L2 -T1 -T2 [2: * ] [1,2,3,4,5: /3 width=5/ ]
27 elim (lift_total U2 0 1) #W2 #HUW2
28 @(ex2_intro … W2) /2 width=7/
29 @(fsup_ldrop … L1 … HUW2) /2 width=1/
31 @(ex2_intro … (#0)) /2 width=7/
33 | #L1 #K1 #K2 #T1 #T2 #U1 #d #e #HLK1 #HTU1 #_ #IHT12 #U2 #HTU2
34 elim (IHT12 … HTU2) -IHT12 -HTU2 #T #HT1 #HT2
35 elim (lift_total T d e) #U #HTU
36 lapply (cpss_lift … HT1 … HLK1 … HTU1 … HTU) -HT1 -HTU1 /3 width=11/
43 include "basic_2/relocation/lift_lift.ma".
44 include "basic_2/substitution/fsups.ma".
47 lemma fsup_ssta_trans: ∀h,g,L1,L2,T1,T2. ⦃L1, T1⦄ ⊃ ⦃L2, T2⦄ →
48 ∀U2,l. ⦃h, L2⦄ ⊢ T2 •[g] ⦃l+1, U2⦄ →
49 ∃∃L,U1. ⦃h, L1⦄ ⊢ T1 ➡[g] U1 & ⦃L1, U1⦄ ⊃* ⦃L2, U2⦄.
52 lemma fsup_ssta_trans: ∀h,g,L1,L2,T1,T2. ⦃L1, T1⦄ ⊃ ⦃L2, T2⦄ →
53 ∀U2,l. ⦃h, L2⦄ ⊢ T2 •[g] ⦃l+1, U2⦄ →
54 ∃∃U1. ⦃h, L1⦄ ⊢ T1 ➡[g] U1 & ⦃L1, U1⦄ ⊃ ⦃L2, U2⦄.
55 #h #g #L1 #L2 #T1 #T2 #H elim H -L1 -L2 -T1 -T2
57 elim (lift_total U2 0 1) #W2 #HUW2
59 [ @(ex2_intro … W2) [ @(cpx_ssta … l) @(ssta_ldef … H) //
60 | @(fsups_ldrop … L1 … HUW2) /2 width=1/
63 | #a #I #L1 #V1 #T1 #U2 #l #HT1
64 @(ex2_intro … (ⓑ{a,I}V1.U2)) /2 width=1/