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/notation/relations/dpredstar_7.ma".
16 include "basic_2/static/da.ma".
17 include "basic_2/computation/cprs.ma".
19 (* STRATIFIED DECOMPOSED PARALLEL COMPUTATION ON TERMS **********************)
21 definition scpds: ∀h. sd h → nat → relation4 genv lenv term term ≝
23 ∃∃T,d1. d2 ≤ d1 & ⦃G, L⦄ ⊢ T1 ▪[h, o] d1 & ⦃G, L⦄ ⊢ T1 •*[h, d2] T & ⦃G, L⦄ ⊢ T ➡* T2.
25 interpretation "stratified decomposed parallel computation (term)"
26 'DPRedStar h o d G L T1 T2 = (scpds h o d G L T1 T2).
28 (* Basic properties *********************************************************)
30 lemma sta_cprs_scpds: ∀h,o,G,L,T1,T,T2,d. ⦃G, L⦄ ⊢ T1 ▪[h, o] d+1 → ⦃G, L⦄ ⊢ T1 •*[h, 1] T →
31 ⦃G, L⦄ ⊢ T ➡* T2 → ⦃G, L⦄ ⊢ T1 •*➡*[h, o, 1] T2.
32 /2 width=6 by ex4_2_intro/ qed.
34 lemma lstas_scpds: ∀h,o,G,L,T1,T2,d1. ⦃G, L⦄ ⊢ T1 ▪[h, o] d1 →
35 ∀d2. d2 ≤ d1 → ⦃G, L⦄ ⊢ T1 •*[h, d2] T2 → ⦃G, L⦄ ⊢ T1 •*➡*[h, o, d2] T2.
36 /2 width=6 by ex4_2_intro/ qed.
38 lemma scpds_strap1: ∀h,o,G,L,T1,T,T2,d.
39 ⦃G, L⦄ ⊢ T1 •*➡*[h, o, d] T → ⦃G, L⦄ ⊢ T ➡ T2 → ⦃G, L⦄ ⊢ T1 •*➡*[h, o, d] T2.
40 #h #o #G #L #T1 #T #T2 #d * /3 width=8 by cprs_strap1, ex4_2_intro/
43 (* Basic forward lemmas *****************************************************)
45 lemma scpds_fwd_cprs: ∀h,o,G,L,T1,T2. ⦃G, L⦄ ⊢ T1 •*➡*[h, o, 0] T2 →
47 #h #o #G #L #T1 #T2 * /3 width=3 by cprs_strap2, lstas_cpr/