delay-df-program(dfp) ==
  let C,S,s,F = dfp
  in <C
     , S?  bag(C)
     , <inl s , {}>
     , s,a.
        evalall(let hs,buf = s 
                in case hs
                   of inl(s1) =>
                    let hs',out = F s1 a 
                    in let buf' = if 0 <z bag-size(out) then out else buf fi  in
                           <if (isl(hs'))  (bag-size(buf') = 0)
                            then inr  
                            else inl <hs', buf'
                            fi 
                           , buf
                           >
                    | inr(x) =>
                    <inl s , buf>)>  



Definitions occuring in Statement :  isl: isl(x) eq_int: (i = j) band: p  q bnot: b lt_int: i <z j ifthenelse: if b then t else f fi  let: let 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 natural_number: $n bag-size: bag-size(bs) empty-bag: {} bag: bag(T) evalall: evalall(t)
Definitions :  spreadn: spread4 product: x:A  B[x] union: left + right unit: Unit bag: bag(T) empty-bag: {} lambda: x.A[x] evalall: evalall(t) decide: case b of inl(x) =s[x] | inr(y) =t[y] spread: spread def apply: f a let: let lt_int: i <z j ifthenelse: if b then t else f fi  band: p  q bnot: b isl: isl(x) eq_int: (i = j) bag-size: bag-size(bs) natural_number: $n inr: inr x  it: pair: <a, b> inl: inl x 
FDL editor aliases :  delay-df-program

delay-df-program(dfp)  ==
    let  C,S,s,F  =  dfp
    in  <C
          ,  S?  \mtimes{}  bag(C)
          ,  <inl  s  ,  \{\}>
          ,  \mlambda{}s,a.
                evalall(let  hs,buf  =  s 
                                in  case  hs
                                      of  inl(s1)  =>
                                        let  hs',out  =  F  s1  a 
                                        in  let  buf'  =  if  0  <z  bag-size(out)  then  out  else  buf  fi    in
                                                      <if  (\mneg{}\msubb{}isl(hs'))  \mwedge{}\msubb{}  (bag-size(buf')  =\msubz{}  0)
                                                        then  inr  \mcdot{} 
                                                        else  inl  <hs',  buf'> 
                                                        fi 
                                                      ,  buf
                                                      >
                                        |  inr(x)  =>
                                        <inl  s  ,  buf>)>   


Date html generated: 2011_08_16-AM-09_47_38
Last ObjectModification: 2011_06_03-PM-12_19_11

Home Index