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/reducibility/cpr_ltpss_dx.ma".
16 include "basic_2/computation/cprs_tpss.ma".
18 (* CONTEXT-SENSITIVE PARALLEL COMPUTATION ON TERMS **************************)
20 (* Properties concerning dx partial unfold on local environments ************)
22 lemma cprs_ltpss_dx_conf: ∀L1,T,U1. L1 ⊢ T ➡* U1 →
23 ∀L2,d,e. L1 ▶* [d, e] L2 →
24 ∃∃U2. L2 ⊢ T ➡* U2 & L2 ⊢ U1 ▶* [d, e] U2.
25 #L1 #T #U1 #H @(cprs_ind … H) -U1 /2 width=3/
26 #T1 #U1 #_ #HTU1 #IHT1 #L2 #d #e #HL12
27 elim (IHT1 … HL12) -IHT1 #U #HTU #HT1U
28 elim (ltpss_dx_cpr_conf … HTU1 … HL12) -L1 #U0 #HT1U0 #HU10
29 elim (cpr_tpss_conf … HT1U0 … HT1U) -T1 #U2 #HU02 #HU2
30 lapply (tpss_trans_eq … HU10 HU02) -U0 /3 width=3/
33 lemma cprs_ltpss_dx_tpss_conf: ∀L1,T1,U1. L1 ⊢ T1 ➡* U1 →
34 ∀L2,d,e. L1 ▶* [d, e] L2 →
35 ∀T2. L2 ⊢ T1 ▶* [d, e] T2 →
36 ∃∃U2. L2 ⊢ T2 ➡* U2 & L2 ⊢ U1 ▶* [d, e] U2.
37 #L1 #T1 #U1 #HTU1 #L2 #d #e #HL12 #T2 #HT12
38 elim (cprs_ltpss_dx_conf … HTU1 … HL12) -L1 #U #HT1U #HU1
39 elim (cprs_tpss_conf … HT1U … HT12) -T1 #T #HUT #HT2
40 lapply (tpss_trans_eq … HU1 HUT) -U /2 width=3/
43 lemma cprs_ltpss_dx_tpss2_conf: ∀L1,T1,U1. L1 ⊢ T1 ➡* U1 →
44 ∀L2,d,e. L1 ▶* [d, e] L2 →
45 ∀T2. L2 ⊢ T1 ▶* [d, e] T2 →
46 ∀U2. L2 ⊢ U1 ▶* [d, e] U2 →
47 ∃∃U. L2 ⊢ T2 ➡* U & L2 ⊢ U2 ▶* [d, e] U.
48 #L1 #T1 #U1 #HTU1 #L2 #d #e #HL12 #T2 #HT12 #U2 #HU12
49 elim (cprs_ltpss_dx_tpss_conf … HTU1 … HL12 … HT12) -L1 -T1 #U #HT2U #HU1
50 elim (tpss_conf_eq … HU12 … HU1) -U1 #U0 #HU20 #HU0
51 lapply (cprs_tpss_trans … HT2U … HU0) -U /2 width=3/