collect_accm(v.P[v];v.num[v]) ==
  s,v.
   let n := num[v] in
   let i,vs,w = s in 
   if n <z i then <i, vs, inr 0 >
   if i <z n then if P[[v]] then <n + 1, [], inl [v] > else <n, [v], inr 0 > fi 
   if P[vs @ [v]] then <i + 1, [], inl (vs @ [v]) >
   else <i, vs @ [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> append: as @ bs cons: [car / cdr] nil: [] inr: inr x  natural_number: $n
FDL editor aliases :  collect_accm

collect\_accm(v.P[v];v.num[v])  ==
    \mlambda{}s,v.
      let  n  :=  num[v]  in
      let  i,vs,w  =  s  in 
      if  n  <z  i  then  <i,  vs,  inr  0  >
      if  i  <z  n  then  if  P[[v]]  then  <n  +  1,  [],  inl  [v]  >  else  <n,  [v],  inr  0  >  fi 
      if  P[vs  @  [v]]  then  <i  +  1,  [],  inl  (vs  @  [v])  >
      else  <i,  vs  @  [v],  inr  0  >
      fi 


Date html generated: 2010_08_27-AM-09_37_15
Last ObjectModification: 2009_12_16-AM-08_38_32

Home Index