Step * 1 2 of Lemma hdf-parallel-bind-halt-eq


1. Type
2. Type
3. Type
4. valueall-type(B)
5. valueall-type(C)
6. A@i
7. List@i
8. ∀X1,X2:hdataflow(A;B). ∀X:B ─→ hdataflow(A;C). ∀hdfs1,hdfs2:bag(hdataflow(A;C)).
     hdf-halted(X1 (hdfs1) >>|| 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. B ─→ hdataflow(A;C)@i
12. hdfs1 bag(hdataflow(A;C))@i
13. hdfs2 bag(hdataflow(A;C))@i
⊢ hdf-halted(fst(X1 (hdfs1) >>|| X2 (hdfs2) >>X(u))*(v)) hdf-halted(fst(X1 || X2 (hdfs1 hdfs2) >>X(u))*(v))
BY
(RW (AddrC [2;1;1;1] (UnfoldC `hdf-parallel`)) 0
   THEN RecUnfold `mk-hdf` 0
   THEN Reduce 0
   THEN (BoolCase ⌈hdf-halted(X1 (hdfs1) >>X) ∧b hdf-halted(X2 (hdfs2) >>X)⌉⋅ THENA Auto)) }

1
1. Type
2. Type
3. Type
4. valueall-type(B)
5. valueall-type(C)
6. A@i
7. List@i
8. ∀X1,X2:hdataflow(A;B). ∀X:B ─→ hdataflow(A;C). ∀hdfs1,hdfs2:bag(hdataflow(A;C)).
     hdf-halted(X1 (hdfs1) >>|| 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. B ─→ hdataflow(A;C)@i
12. hdfs1 bag(hdataflow(A;C))@i
13. ↑hdf-halted(X1 (hdfs1) >>X)
14. hdfs2 bag(hdataflow(A;C))@i
15. ↑hdf-halted(X2 (hdfs2) >>X)
⊢ hdf-halted(hdf-halt()*(v)) hdf-halted(fst(X1 || X2 (hdfs1 hdfs2) >>X(u))*(v))

2
1. Type
2. Type
3. Type
4. valueall-type(B)
5. valueall-type(C)
6. A@i
7. List@i
8. ∀X1,X2:hdataflow(A;B). ∀X:B ─→ hdataflow(A;C). ∀hdfs1,hdfs2:bag(hdataflow(A;C)).
     hdf-halted(X1 (hdfs1) >>|| 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. 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))


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
\mvdash{}  hdf-halted(fst(X1  (hdfs1)  >>=  X  ||  X2  (hdfs2)  >>=  X(u))*(v))  =  hdf-halted(fst(X1  ||  X2  (hdfs1  +  hd\000Cfs2)  >>=  X(u))*(v))


By


Latex:
(RW  (AddrC  [2;1;1;1]  (UnfoldC  `hdf-parallel`))  0
  THEN  RecUnfold  `mk-hdf`  0
  THEN  Reduce  0
  THEN  (BoolCase  \mkleeneopen{}hdf-halted(X1  (hdfs1)  >>=  X)  \mwedge{}\msubb{}  hdf-halted(X2  (hdfs2)  >>=  X)\mkleeneclose{}\mcdot{}  THENA  Auto))




Home Index