Step * 4 1 of Lemma hdf-union-ap


1. Type
2. Type
3. Type
4. A
5. valueall-type(C)
6. valueall-type(B)
7. A ─→ (hdataflow(A;B) × bag(B))@i
8. z1 hdataflow(A;B)@i
9. z2 bag(B)@i
10. (x a) = <z1, z2> ∈ (hdataflow(A;B) × bag(B))@i
11. x1 A ─→ (hdataflow(A;C) × bag(C))@i
12. z3 hdataflow(A;C)@i
13. ¬((↑hdf-halted(z1)) ∧ (↑hdf-halted(z3)))
14. z4 bag(C)@i
15. (x1 a) = <z3, z4> ∈ (hdataflow(A;C) × bag(C))@i
16. bag(B C)@i
17. (bag-map(λx.(inl x);z2) bag-map(λx.(inr );z4)) b ∈ bag(B C)@i
18. ff ∈ 𝔹
19. a1 A@i
⊢ let s1,b let X',xs z1(a1) 
             in let Y',ys z3(a1) 
                in let out ←─ bag-map(λx.(inl x);xs) bag-map(λx.(inr );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 ←─ bag-map(λx.(inl x);xs) bag-map(λx.(inr );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
(RepeatFor ((GenConclAtAddr [2;1;1] THEN -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) }

1
.....subterm..... T:t
1:n
1. Type
2. Type
3. Type
4. A
5. valueall-type(C)
6. valueall-type(B)
7. A ─→ (hdataflow(A;B) × bag(B))@i
8. z1 hdataflow(A;B)@i
9. z2 bag(B)@i
10. (x a) = <z1, z2> ∈ (hdataflow(A;B) × bag(B))@i
11. x1 A ─→ (hdataflow(A;C) × bag(C))@i
12. z3 hdataflow(A;C)@i
13. ¬((↑hdf-halted(z1)) ∧ (↑hdf-halted(z3)))
14. z4 bag(C)@i
15. (x1 a) = <z3, z4> ∈ (hdataflow(A;C) × bag(C))@i
16. bag(B C)@i
17. (bag-map(λx.(inl x);z2) bag-map(λx.(inr );z4)) b ∈ bag(B C)@i
18. ff ∈ 𝔹
19. a1 A@i
20. v1 hdataflow(A;B)@i
21. v2 bag(B)@i
22. z1(a1) = <v1, v2> ∈ (hdataflow(A;B) × bag(B))@i
23. v3 hdataflow(A;C)@i
24. v4 bag(C)@i
25. z3(a1) = <v3, v4> ∈ (hdataflow(A;C) × bag(C))@i
26. bag(B C)@i
27. (bag-map(λx.(inl x);v2) bag-map(λx.(inr );v4)) 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 );ys)
                       in <<X', Y'>out>;XY.let X,Y XY 
                                          in hdf-halted(X) ∧b hdf-halted(Y);<v1, v3>) ∈ hdataflow(A;B C)

2
.....subterm..... T:t
2:n
1. Type
2. Type
3. Type
4. A
5. valueall-type(C)
6. valueall-type(B)
7. A ─→ (hdataflow(A;B) × bag(B))@i
8. z1 hdataflow(A;B)@i
9. z2 bag(B)@i
10. (x a) = <z1, z2> ∈ (hdataflow(A;B) × bag(B))@i
11. x1 A ─→ (hdataflow(A;C) × bag(C))@i
12. z3 hdataflow(A;C)@i
13. ¬((↑hdf-halted(z1)) ∧ (↑hdf-halted(z3)))
14. z4 bag(C)@i
15. (x1 a) = <z3, z4> ∈ (hdataflow(A;C) × bag(C))@i
16. bag(B C)@i
17. (bag-map(λx.(inl x);z2) bag-map(λx.(inr );z4)) b ∈ bag(B C)@i
18. ff ∈ 𝔹
19. a1 A@i
20. v1 hdataflow(A;B)@i
21. v2 bag(B)@i
22. z1(a1) = <v1, v2> ∈ (hdataflow(A;B) × bag(B))@i
23. v3 hdataflow(A;C)@i
24. v4 bag(C)@i
25. z3(a1) = <v3, v4> ∈ (hdataflow(A;C) × bag(C))@i
26. bag(B C)@i
27. (bag-map(λx.(inl x);v2) bag-map(λx.(inr );v4)) v ∈ bag(B C)@i
⊢ v ∈ bag(B C)


Latex:



1.  A  :  Type
2.  B  :  Type
3.  C  :  Type
4.  a  :  A
5.  valueall-type(C)
6.  valueall-type(B)
7.  x  :  A  {}\mrightarrow{}  (hdataflow(A;B)  \mtimes{}  bag(B))@i
8.  z1  :  hdataflow(A;B)@i
9.  z2  :  bag(B)@i
10.  (x  a)  =  <z1,  z2>@i
11.  x1  :  A  {}\mrightarrow{}  (hdataflow(A;C)  \mtimes{}  bag(C))@i
12.  z3  :  hdataflow(A;C)@i
13.  \mneg{}((\muparrow{}hdf-halted(z1))  \mwedge{}  (\muparrow{}hdf-halted(z3)))
14.  z4  :  bag(C)@i
15.  (x1  a)  =  <z3,  z4>@i
16.  b  :  bag(B  +  C)@i
17.  (bag-map(\mlambda{}x.(inl  x);z2)  +  bag-map(\mlambda{}x.(inr  x  );z4))  =  b@i
18.  ff  \mmember{}  \mBbbB{}
19.  a1  :  A@i
\mvdash{}  let  s1,b  =  let  X',xs  =  z1(a1) 
                          in  let  Y',ys  =  z3(a1) 
                                in  let  out  \mleftarrow{}{}  bag-map(\mlambda{}x.(inl  x);xs)  +  bag-map(\mlambda{}x.(inr  x  );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{}{}  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

(RepeatFor  2  ((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)




Home Index