Step
*
3
1
of Lemma
hdf-union-ap
1. A : Type
2. B : Type
3. C : Type
4. Y : hdataflow(A;C)
5. a : A
6. valueall-type(C)
7. valueall-type(B)
8. x : A ─→ (hdataflow(A;B) × bag(B))@i
9. z1 : hdataflow(A;B)@i
10. ¬↑hdf-halted(z1)
11. z2 : bag(B)@i
12. (x a) = <z1, z2> ∈ (hdataflow(A;B) × bag(B))@i
13. ↑hdf-halted(Y)
14. ff ∈ 𝔹
15. a1 : A@i
⊢ let s1,b = let X',xs = z1(a1) 
             in let out ←─ bag-map(λx.(inl x);xs) + {}
                in <<X', inr ⋅ >, 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 ←─ bag-map(λx.(inl x);xs) + bag-map(λx.(inr x );ys)
                           in <<X', Y'>, out>XY.let X,Y = XY 
                                              in hdf-halted(X) ∧b hdf-halted(Y);s1)
     , b
     > ∈ hdataflow(A;B + C) × bag(B + C)
BY
{ (GenConclAtAddr [2;1;1]
   THEN D -2
   THEN Reduce 0
   THEN (GenConclAtAddrType ⌈bag(B + C)⌉ [2;1;1]⋅ THENA Auto)
   THEN (CallByValueReduceOn ⌈v⌉ 0⋅ THENA Auto)
   THEN Reduce 0
   THEN MemCD
   THEN Try (Complete (Auto))) }
1
.....subterm..... T:t
1:n
1. A : Type
2. B : Type
3. C : Type
4. Y : hdataflow(A;C)
5. a : A
6. valueall-type(C)
7. valueall-type(B)
8. x : A ─→ (hdataflow(A;B) × bag(B))@i
9. z1 : hdataflow(A;B)@i
10. ¬↑hdf-halted(z1)
11. z2 : bag(B)@i
12. (x a) = <z1, z2> ∈ (hdataflow(A;B) × bag(B))@i
13. ↑hdf-halted(Y)
14. ff ∈ 𝔹
15. a1 : A@i
16. v1 : hdataflow(A;B)@i
17. v2 : bag(B)@i
18. z1(a1) = <v1, v2> ∈ (hdataflow(A;B) × bag(B))@i
19. v : bag(B + C)@i
20. (bag-map(λx.(inl x);v2) + {}) = v ∈ bag(B + C)@i
⊢ mk-hdf(XY,a.let X,Y = XY 
              in let X',xs = X(a) 
                 in let Y',ys = Y(a) 
                    in let out ←─ bag-map(λx.(inl x);xs) + bag-map(λx.(inr x );ys)
                       in <<X', Y'>, out>XY.let X,Y = XY 
                                          in hdf-halted(X) ∧b hdf-halted(Y);<v1, inr ⋅ >) ∈ hdataflow(A;B + C)
Latex:
1.  A  :  Type
2.  B  :  Type
3.  C  :  Type
4.  Y  :  hdataflow(A;C)
5.  a  :  A
6.  valueall-type(C)
7.  valueall-type(B)
8.  x  :  A  {}\mrightarrow{}  (hdataflow(A;B)  \mtimes{}  bag(B))@i
9.  z1  :  hdataflow(A;B)@i
10.  \mneg{}\muparrow{}hdf-halted(z1)
11.  z2  :  bag(B)@i
12.  (x  a)  =  <z1,  z2>@i
13.  \muparrow{}hdf-halted(Y)
14.  ff  \mmember{}  \mBbbB{}
15.  a1  :  A@i
\mvdash{}  let  s1,b  =  let  X',xs  =  z1(a1) 
                          in  let  out  \mleftarrow{}{}  bag-map(\mlambda{}x.(inl  x);xs)  +  \{\}
                                in  <<X',  inr  \mcdot{}  >,  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{}{}  bag-map(\mlambda{}x.(inl  x);xs)  +  bag-map(\mlambda{}x.(inr  x  );ys)
                                                      in  <<X',  Y'>,  out>XY.let  X,Y  =  XY 
                                                                                            in  hdf-halted(X)  \mwedge{}\msubb{}  hdf-halted(Y);s1)
          ,  b
          >  \mmember{}  hdataflow(A;B  +  C)  \mtimes{}  bag(B  +  C)
By
(GenConclAtAddr  [2;1;1]
  THEN  D  -2
  THEN  Reduce  0
  THEN  (GenConclAtAddrType  \mkleeneopen{}bag(B  +  C)\mkleeneclose{}  [2;1;1]\mcdot{}  THENA  Auto)
  THEN  (CallByValueReduceOn  \mkleeneopen{}v\mkleeneclose{}  0\mcdot{}  THENA  Auto)
  THEN  Reduce  0
  THEN  MemCD
  THEN  Try  (Complete  (Auto)))
Home
Index