Step * 4 of Lemma parallel-class-program_wf


1. Info Type
2. Type
3. valueall-type(B)
4. EClass(B)
5. EClass(B)
6. Xpr Id ⟶ hdataflow(Info;B)
7. ∀es:EO+(Info). ∀e:E.  (X(e) (snd(Xpr loc(e)*(map(λx.info(x);before(e)))(info(e)))) ∈ bag(B))
8. Ypr Id ⟶ hdataflow(Info;B)
9. ∀es:EO+(Info). ∀e:E.  (Y(e) (snd(Ypr loc(e)*(map(λx.info(x);before(e)))(info(e)))) ∈ bag(B))
10. es EO+(Info)@i'
11. E@i
12. Info@i
13. Info List@i
14. ∀x:Info. ∀ypr,xpr:hdataflow(Info;B).
      (((snd(xpr*(v)(x))) (snd(ypr*(v)(x)))) (snd(xpr || ypr*(v)(x))) ∈ bag(B))@i
15. Info@i
16. x1 Info ⟶ (hdataflow(Info;B) × bag(B))@i
17. x2 Info ⟶ (hdataflow(Info;B) × bag(B))@i
⊢ ((snd(fst((x1 u))*(v)(x))) (snd(fst((x2 u))*(v)(x))))
(snd(fst(let s1,b let X',xs x1 
                      in let Y',ys x2 
                         in let out ⟵ xs ys
                            in <<X', Y'>out> 
           in <mk-hdf(XY,a.let X,Y XY 
                           in let X',xs X(a) 
                              in let Y',ys Y(a) 
                                 in let out ⟵ xs ys
                                    in <<X', Y'>out>;XY.let X,Y XY 
                                                       in hdf-halted(X) ∧b hdf-halted(Y);s1)
              b
              >)*(v)(x)))
∈ bag(B)
BY
((GenApply (-2) THENA Auto)
   THEN (GenApply (-3) THENA Auto)
   THEN DProdsAndUnions
   THEN Reduce 0
   THEN (CallByValueReduceOn ⌜z5 z3⌝ 0 ⋅ THENA MaAuto)
   THEN Reduce 0
   THEN Fold `hdf-parallel` 0
   THEN BackThruSomeHyp) }


Latex:


Latex:

1.  Info  :  Type
2.  B  :  Type
3.  valueall-type(B)
4.  X  :  EClass(B)
5.  Y  :  EClass(B)
6.  Xpr  :  Id  {}\mrightarrow{}  hdataflow(Info;B)
7.  \mforall{}es:EO+(Info).  \mforall{}e:E.    (X(e)  =  (snd(Xpr  loc(e)*(map(\mlambda{}x.info(x);before(e)))(info(e)))))
8.  Ypr  :  Id  {}\mrightarrow{}  hdataflow(Info;B)
9.  \mforall{}es:EO+(Info).  \mforall{}e:E.    (Y(e)  =  (snd(Ypr  loc(e)*(map(\mlambda{}x.info(x);before(e)))(info(e)))))
10.  es  :  EO+(Info)@i'
11.  e  :  E@i
12.  u  :  Info@i
13.  v  :  Info  List@i
14.  \mforall{}x:Info.  \mforall{}ypr,xpr:hdataflow(Info;B).
            (((snd(xpr*(v)(x)))  +  (snd(ypr*(v)(x))))  =  (snd(xpr  ||  ypr*(v)(x))))@i
15.  x  :  Info@i
16.  x1  :  Info  {}\mrightarrow{}  (hdataflow(Info;B)  \mtimes{}  bag(B))@i
17.  x2  :  Info  {}\mrightarrow{}  (hdataflow(Info;B)  \mtimes{}  bag(B))@i
\mvdash{}  ((snd(fst((x1  u))*(v)(x)))  +  (snd(fst((x2  u))*(v)(x))))
=  (snd(fst(let  s1,b  =  let  X',xs  =  x1  u 
                                            in  let  Y',ys  =  x2  u 
                                                  in  let  out  \mleftarrow{}{}  xs  +  ys
                                                        in  <<X',  Y'>,  out> 
                      in  <mk-hdf(XY,a.let  X,Y  =  XY 
                                                      in  let  X',xs  =  X(a) 
                                                            in  let  Y',ys  =  Y(a) 
                                                                  in  let  out  \mleftarrow{}{}  xs  +  ys
                                                                        in  <<X',  Y'>,  out>XY.let  X,Y  =  XY 
                                                                                                              in  hdf-halted(X)  \mwedge{}\msubb{}  hdf-halted(Y);s1)
                            ,  b
                            >)*(v)(x)))


By


Latex:
((GenApply  (-2)  THENA  Auto)
  THEN  (GenApply  (-3)  THENA  Auto)
  THEN  DProdsAndUnions
  THEN  Reduce  0
  THEN  (CallByValueReduceOn  \mkleeneopen{}z5  +  z3\mkleeneclose{}  0  \mcdot{}  THENA  MaAuto)
  THEN  Reduce  0
  THEN  Fold  `hdf-parallel`  0
  THEN  BackThruSomeHyp)




Home Index