]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_2A/etc/cpr/cprs_ltpss_dx.etc
milestone update in ground_2 and basic_2A
[helm.git] / matita / matita / contribs / lambdadelta / basic_2A / etc / cpr / cprs_ltpss_dx.etc
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 include "basic_2/reducibility/cpr_ltpss_dx.ma".
16 include "basic_2/computation/cprs_tpss.ma".
17
18 (* CONTEXT-SENSITIVE PARALLEL COMPUTATION ON TERMS **************************)
19
20 (* Properties concerning dx partial unfold on local environments ************)
21
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/
31 qed-.
32
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/
41 qed-.
42
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/
52 qed-.