consensus-rcvs-to-consensus-events(f;t;v0;L) ==
  list_accum(p,r.let X,Y = p in
                   let b,i,as,vs,v = list_accum(s,r.consensus-accum-num((2 * t)
                                                    + 1;f;s;r);
                                                <ff, 0, [], [], v0>;
                                                Y @ [r]) in
                   <X
                    @ if rcv-vote?(r)
                      then let a,i,v = rcvd-vote(r) in 
                           [consensus-message(a;i + 1;inl <i, v)]
                      else []
                      fi 
                    @ if b
                      then if null(as)
                           then [Archive(v); NextInning]
                           else map(n.NextInning;upto(i - 1 
                                    - ||filter(x.is-inning-event(x);X)||))
                                @ [Archive(v); NextInning]
                           fi 
                      else []
                      fi 
                  , Y @ [r]
                  >;
             <[], []>;
             L)



Definitions :  spread: spread def spreadn: let a,b,c,d,e = u in v[a; b; c; d; e] list_accum: list_accum(x,a.f[x; a];y;l) consensus-accum-num: consensus-accum-num(num;f;s;r) multiply: n * m bfalse: ff rcv-vote?: rcv-vote?(x) spreadn: spread3 rcvd-vote: rcvd-vote(x) consensus-message: consensus-message(b;i;z) add: n + m inl: inl x  ifthenelse: if b then t else f fi  null: null(as) map: map(f;as) upto: upto(n) subtract: n - m natural_number: $n length: ||as|| filter: filter(P;l) lambda: x.A[x] is-inning-event: is-inning-event(x) archive-event: Archive(v) inning-event: NextInning append: as @ bs cons: [car / cdr] pair: <a, b> nil: []
FDL editor aliases :  consensus-rcvs-to-consensus-events

consensus-rcvs-to-consensus-events(f;t;v0;L)  ==
    list\_accum(p,r.let  X,Y  =  p  in
                                      let  b,i,as,vs,v  =  list\_accum(s,r.consensus-accum-num((2  *  t)  +  1;f;s;r);
                                                                                                <ff,  0,  [],  [],  v0>
                                                                                                Y  @  [r])  in
                                      <X
                                        @  if  rcv-vote?(r)
                                            then  let  a,i,v  =  rcvd-vote(r)  in 
                                                      [consensus-message(a;i  +  1;inl  <i,  v>  )]
                                            else  []
                                            fi 
                                        @  if  b
                                            then  if  null(as)
                                                      then  [Archive(v);  NextInning]
                                                      else  map(\mlambda{}n.NextInning;upto(i  -  1  -  ||filter(\mlambda{}x.is-inning-event(x);X)||))
                                                                @  [Archive(v);  NextInning]
                                                      fi 
                                            else  []
                                            fi 
                                    ,  Y  @  [r]
                                    >
                          <[],  []>
                          L)


Date html generated: 2010_08_27-AM-01_03_00
Last ObjectModification: 2009_12_23-PM-03_35_01

Home Index