collect_accum(x.num[x];init;a,v.f[a; v];a.P[a]) ==
  
s,v.
   let n := num[v] in
   let i,a,w = s in 
   if n <z i then <i, a, inr 0 >
   if i <z n
     then if P[f[init; v]]
          then <n + 1, init, inl f[init; v] >
          else <n, f[init; v], inr 0 >
          fi 
   if P[f[a; v]] then <i + 1, init, inl f[a; v] >
   else <i, f[a; v], inr 0 >
   fi 
Definitions : 
lambda:
x.A[x], 
callbyvalue: callbyvalue, 
spreadn: spread3, 
lt_int: i <z j, 
ifthenelse: if b then t else f fi , 
add: n + m, 
inl: inl x , 
pair: <a, b>, 
inr: inr x , 
natural_number: $n
FDL editor aliases : 
collect_accum
collect\_accum(x.num[x];init;a,v.f[a;  v];a.P[a])  ==
    \mlambda{}s,v.
      let  n  :=  num[v]  in
      let  i,a,w  =  s  in 
      if  n  <z  i  then  <i,  a,  inr  0  >
      if  i  <z  n
          then  if  P[f[init;  v]]  then  <n  +  1,  init,  inl  f[init;  v]  >  else  <n,  f[init;  v],  inr  0  >  fi 
      if  P[f[a;  v]]  then  <i  +  1,  init,  inl  f[a;  v]  >
      else  <i,  f[a;  v],  inr  0  >
      fi 
Date html generated:
2010_08_27-AM-09_37_39
Last ObjectModification:
2009_12_16-AM-08_39_21
Home
Index