parallel-df-prog2(B;G;dfp1;dfp2) ==
  let C1,S1,s1,F1 = dfp1
  in let C2,S2,s2,F2 = dfp2
     in <B
        , S1?  (S2?)
        , <inl s1 , inl s2 >
        , s,a.
           evalall(let s1,s2 = s 
                   in case s1
                      of inl(s1) =>
                       let s1',out1 = F1 s1 a 
                       in case s2
                          of inl(s2) =>
                           let s2',out2 = F2 s2 a 
                           in <inl <s1', s2', G out1 out2>
                           | inr(x) =>
                           <inl <s1', s2, G out1 {}>
                       | inr(x) =>
                       case s2
                       of inl(s2) =>
                        let s2',out2 = F2 s2 a 
                        in <inl <s1, s2', G {} out2>
                        | inr(x) =>
                        <inr  , {}>)>    



Definitions occuring in Statement :  it: spreadn: spread4 unit: Unit apply: f a lambda: x.A[x] spread: spread def pair: <a, b> product: x:A  B[x] decide: case b of inl(x) =s[x] | inr(y) =t[y] inr: inr x  inl: inl x  union: left + right empty-bag: {} evalall: evalall(t)
Definitions :  spreadn: spread4 product: x:A  B[x] union: left + right unit: Unit lambda: x.A[x] evalall: evalall(t) decide: case b of inl(x) =s[x] | inr(y) =t[y] spread: spread def inl: inl x  apply: f a pair: <a, b> inr: inr x  it: empty-bag: {}
FDL editor aliases :  parallel-df-prog2

parallel-df-prog2(B;G;dfp1;dfp2)  ==
    let  C1,S1,s1,F1  =  dfp1
    in  let  C2,S2,s2,F2  =  dfp2
          in  <B
                ,  S1?  \mtimes{}  (S2?)
                ,  <inl  s1  ,  inl  s2  >
                ,  \mlambda{}s,a.
                      evalall(let  s1,s2  =  s 
                                      in  case  s1
                                            of  inl(s1)  =>
                                              let  s1',out1  =  F1  s1  a 
                                              in  case  s2
                                                    of  inl(s2)  =>
                                                      let  s2',out2  =  F2  s2  a 
                                                      in  <inl  <s1',  s2'>  ,  G  out1  out2>
                                                      |  inr(x)  =>
                                                      <inl  <s1',  s2>  ,  G  out1  \{\}>
                                              |  inr(x)  =>
                                              case  s2
                                              of  inl(s2)  =>
                                                let  s2',out2  =  F2  s2  a 
                                                in  <inl  <s1,  s2'>  ,  G  \{\}  out2>
                                                |  inr(x)  =>
                                                <inr  \mcdot{}  ,  \{\}>)>       


Date html generated: 2011_08_16-AM-09_42_23
Last ObjectModification: 2011_06_02-PM-04_07_44

Home Index