Step * 6 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. Unit@i
17. x1 Info ⟶ (hdataflow(Info;B) × bag(B))@i
⊢ (snd(fst((x1 u))*(v)(x)))
(snd(fst(let s1,b let Y',ys x1 
                      in let out ⟵ ys
                         in <<inr ⋅ 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 (-1) THENA Auto)
   THEN DProdsAndUnions
   THEN Reduce 0
   THEN (CallByValueReduceOn ⌜z2⌝ 0 ⋅ THENA MaAuto)
   THEN Reduce 0
   THEN Folds ``hdf-halt hdf-parallel`` 0
   THEN (InstHyp [⌜x⌝;⌜z1⌝;⌜hdf-halt()⌝(-7)⋅ THENA Auto)
   THEN (RWW "iterate-hdf-halt" (-1)⋅ THENA Auto)
   THEN RepUR ``hdf-halt hdf-ap`` (-1)
   THEN Fold `hdf-ap` (-1)
   THEN Fold `hdf-halt` (-1)
   THEN Auto) }


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.  y  :  Unit@i
17.  x1  :  Info  {}\mrightarrow{}  (hdataflow(Info;B)  \mtimes{}  bag(B))@i
\mvdash{}  (snd(fst((x1  u))*(v)(x)))
=  (snd(fst(let  s1,b  =  let  Y',ys  =  x1  u 
                                            in  let  out  \mleftarrow{}{}  ys
                                                  in  <<inr  \mcdot{}  ,  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  (-1)  THENA  Auto)
  THEN  DProdsAndUnions
  THEN  Reduce  0
  THEN  (CallByValueReduceOn  \mkleeneopen{}z2\mkleeneclose{}  0  \mcdot{}  THENA  MaAuto)
  THEN  Reduce  0
  THEN  Folds  ``hdf-halt  hdf-parallel``  0
  THEN  (InstHyp  [\mkleeneopen{}x\mkleeneclose{};\mkleeneopen{}z1\mkleeneclose{};\mkleeneopen{}hdf-halt()\mkleeneclose{}]  (-7)\mcdot{}  THENA  Auto)
  THEN  (RWW  "iterate-hdf-halt"  (-1)\mcdot{}  THENA  Auto)
  THEN  RepUR  ``hdf-halt  hdf-ap``  (-1)
  THEN  Fold  `hdf-ap`  (-1)
  THEN  Fold  `hdf-halt`  (-1)
  THEN  Auto)




Home Index