Step
*
1
2
2
of Lemma
hdf-parallel-bind-halt-eq
1. A : Type
2. B : Type
3. C : Type
4. valueall-type(B)
5. valueall-type(C)
6. u : A@i
7. v : A List@i
8. ∀X1,X2:hdataflow(A;B). ∀X:B ─→ hdataflow(A;C). ∀hdfs1,hdfs2:bag(hdataflow(A;C)).
     hdf-halted(X1 (hdfs1) >>= X || X2 (hdfs2) >>= X*(v)) = hdf-halted(X1 || X2 (hdfs1 + hdfs2) >>= X*(v))@i
9. X1 : hdataflow(A;B)@i
10. X2 : hdataflow(A;B)@i
11. X : B ─→ hdataflow(A;C)@i
12. hdfs1 : bag(hdataflow(A;C))@i
13. hdfs2 : bag(hdataflow(A;C))@i
14. ¬((↑hdf-halted(X1 (hdfs1) >>= X)) ∧ (↑hdf-halted(X2 (hdfs2) >>= X)))
⊢ hdf-halted(fst(hdf-run(λa.let s1,b = let X',xs = X1 (hdfs1) >>= X(a) 
                                       in let Y',ys = X2 (hdfs2) >>= X(a) 
                                          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
                               >)(u))*(v)) 
= hdf-halted(fst(X1 || X2 (hdfs1 + hdfs2) >>= X(u))*(v))
BY
{ ((RWO "hdf-ap-run" 0 THENA Auto) THEN Reduce 0) }
1
1. A : Type
2. B : Type
3. C : Type
4. valueall-type(B)
5. valueall-type(C)
6. u : A@i
7. v : A List@i
8. ∀X1,X2:hdataflow(A;B). ∀X:B ─→ hdataflow(A;C). ∀hdfs1,hdfs2:bag(hdataflow(A;C)).
     hdf-halted(X1 (hdfs1) >>= X || X2 (hdfs2) >>= X*(v)) = hdf-halted(X1 || X2 (hdfs1 + hdfs2) >>= X*(v))@i
9. X1 : hdataflow(A;B)@i
10. X2 : hdataflow(A;B)@i
11. X : B ─→ hdataflow(A;C)@i
12. hdfs1 : bag(hdataflow(A;C))@i
13. hdfs2 : bag(hdataflow(A;C))@i
14. ¬((↑hdf-halted(X1 (hdfs1) >>= X)) ∧ (↑hdf-halted(X2 (hdfs2) >>= X)))
⊢ hdf-halted(fst(let s1,b = let X',xs = X1 (hdfs1) >>= X(u) 
                            in let Y',ys = X2 (hdfs2) >>= X(u) 
                               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)) 
= hdf-halted(fst(X1 || X2 (hdfs1 + hdfs2) >>= X(u))*(v))
Latex:
Latex:
1.  A  :  Type
2.  B  :  Type
3.  C  :  Type
4.  valueall-type(B)
5.  valueall-type(C)
6.  u  :  A@i
7.  v  :  A  List@i
8.  \mforall{}X1,X2:hdataflow(A;B).  \mforall{}X:B  {}\mrightarrow{}  hdataflow(A;C).  \mforall{}hdfs1,hdfs2:bag(hdataflow(A;C)).
          hdf-halted(X1  (hdfs1)  >>=  X  ||  X2  (hdfs2)  >>=  X*(v))  =  hdf-halted(X1  ||  X2  (hdfs1  +  hdfs2)  >>=  \000CX*(v))@i
9.  X1  :  hdataflow(A;B)@i
10.  X2  :  hdataflow(A;B)@i
11.  X  :  B  {}\mrightarrow{}  hdataflow(A;C)@i
12.  hdfs1  :  bag(hdataflow(A;C))@i
13.  hdfs2  :  bag(hdataflow(A;C))@i
14.  \mneg{}((\muparrow{}hdf-halted(X1  (hdfs1)  >>=  X))  \mwedge{}  (\muparrow{}hdf-halted(X2  (hdfs2)  >>=  X)))
\mvdash{}  hdf-halted(fst(hdf-run(\mlambda{}a.let  s1,b  =  let  X',xs  =  X1  (hdfs1)  >>=  X(a) 
                                                                              in  let  Y',ys  =  X2  (hdfs2)  >>=  X(a) 
                                                                                    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
                                                              >)(u))*(v)) 
=  hdf-halted(fst(X1  ||  X2  (hdfs1  +  hdfs2)  >>=  X(u))*(v))
By
Latex:
((RWO  "hdf-ap-run"  0  THENA  Auto)  THEN  Reduce  0)
Home
Index