{ [V:Type]
    A:Id List. W:{a:Id| (a  A)}  List List. L:consensus-event(V;A) List.
    x,y:{a:Id| (a  A)}   (consensus-event(V;A) List). a:{a:Id| (a  A)} .
      ((b:{a:Id| (a  A)} . i:. z:i  V?.
          ((consensus-message(b;i;z)  L)
           let i',est,knw = consensus-accum-state(A;x b) in 
             (i  i')
              case z
               of inl(p) =>
                let j,v = p 
                in (j  dom(est))
                    (k:. (k  dom(est)) supposing ((k < i) and (j < k)))
                    (v = est(j))
                | inr(a) =>
                j:. j  dom(est) supposing j < i))
          (v:V. j:||L||.
               let i,est,knw = consensus-accum-state(A;(x a) @ firstn(j;L)) in 
               ((i  fpf-domain(est)))
                may consider v in inning i based on knowledge (knw) 
               supposing L[j] = Archive(v))
          (x (ts-rel(consensus-ts6(V;A;W))^*) y)) supposing 
         (((y a) = ((x a) @ L)) and 
         (b:{a:Id| (a  A)} . (y b) = (x b) supposing (b = a))) }

{ Proof }



Definitions occuring in Statement :  consensus-ts6: consensus-ts6(V;A;W),  consensus-accum-state: consensus-accum-state(A;L),  consensus-message: consensus-message(b;i;z),  archive-event: Archive(v),  consensus-event: consensus-event(V;A),  cs-knowledge-precondition: may consider v in inning i based on knowledge (s),  fpf-ap: f(x),  fpf-domain: fpf-domain(f),  fpf-dom: x  dom(f),  Id: Id,  select: l[i],  firstn: firstn(n;as),  length: ||as||,  append: as @ bs,  assert: b,  int_seg: {i..j},  nat: ,  spreadn: spread3,  uimplies: b supposing a,  uall: [x:A]. B[x],  infix_ap: x f y,  le: A  B,  all: x:A. B[x],  not: A,  implies: P  Q,  and: P  Q,  unit: Unit,  less_than: a < b,  set: {x:A| B[x]} ,  apply: f a,  function: x:A  B[x],  spread: spread def,  product: x:A  B[x],  decide: case b of inl(x) => s[x] | inr(y) => t[y],  union: left + right,  list: type List,  natural_number: $n,  int: ,  universe: Type,  equal: s = t,  l_member: (x  l),  rel_star: R^*,  int-deq: IntDeq,  ts-rel: ts-rel(ts),  ts-type: ts-type(ts)
Definitions :  and: P  Q,  btrue: tt,  false: False,  prop: ,  member: t  T,  ifthenelse: if b then t else f fi ,  le: A  B,  implies: P  Q,  not: A,  uimplies: b supposing a,  all: x:A. B[x],  bfalse: ff,  or: P  Q,  subtype: S  T,  top: Top,  ycomb: Y,  label: ...$L... t,  ge: i  j ,  lelt: i  j < k,  length: ||as||,  int_seg: {i..j},  iff: P  Q,  rev_implies: P  Q,  true: True,  squash: T,  lt_int: i <z j,  bnot: b,  le_int: i z j,  select: l[i],  guard: {T},  so_lambda: x.t[x],  spreadn: spread3,  cand: A c B,  assert: b,  one-consensus-event: y = x after e@a,  uall: [x:A]. B[x],  nat: ,  bool: ,  unit: Unit,  so_apply: x[s],  sq_type: SQType(T),  it:
Lemmas :  bool_wf,  btrue_wf,  eq_id_self,  archive-event_wf,  length_wf1,  select_wf,  nat_wf,  unit_wf,  nat_properties,  int_seg_wf,  consensus-message_wf,  not_wf,  l_member_wf,  Id_wf,  append_wf,  consensus-event_wf,  eq_id_wf,  ifthenelse_wf,  not_functionality_wrt_uiff,  assert_of_bnot,  eqff_to_assert,  assert-eq-id,  eqtt_to_assert,  uiff_transitivity,  iff_weakening_uiff,  bnot_wf,  assert_wf,  member_append,  le_wf,  length_append,  non_neg_length,  length_cons,  top_wf,  length_wf_nat,  length_nil,  select_append_front,  firstn_append,  select_append_back,  squash_wf,  firstn_all,  cons_member,  append-nil,  fpf_wf,  consensus-accum-state_wf,  fpf-ap_wf,  int_seg_properties,  fpf-trivial-subtype-top,  int-deq_wf,  fpf-dom_wf,  assert_elim,  fpf-join_wf,  not_functionality_wrt_iff,  bool_subtype_base,  subtype_base_sq,  fpf-single-dom,  decidable__assert,  or_functionality_wrt_uiff3,  fpf-single_wf,  fpf-join-dom2,  fpf-join-ap-sq,  append_assoc

\mforall{}[V:Type]
    \mforall{}A:Id  List.  \mforall{}W:\{a:Id|  (a  \mmember{}  A)\}    List  List.  \mforall{}L:consensus-event(V;A)  List.
    \mforall{}x,y:\{a:Id|  (a  \mmember{}  A)\}    {}\mrightarrow{}  (consensus-event(V;A)  List).  \mforall{}a:\{a:Id|  (a  \mmember{}  A)\}  .
        ((\mforall{}b:\{a:Id|  (a  \mmember{}  A)\}  .  \mforall{}i:\mBbbN{}.  \mforall{}z:\mBbbN{}i  \mtimes{}  V?.
                ((consensus-message(b;i;z)  \mmember{}  L)
                {}\mRightarrow{}  let  i',est,knw  =  consensus-accum-state(A;x  b)  in 
                      (i  \mleq{}  i')
                      \mwedge{}  case  z
                          of  inl(p)  =>
                            let  j,v  =  p 
                            in  (\muparrow{}j  \mmember{}  dom(est))  \mwedge{}  (\mforall{}k:\mBbbZ{}.  (\mneg{}\muparrow{}k  \mmember{}  dom(est))  supposing  ((k  <  i)  and  (j  <  k)))  \mwedge{}  (v  =  e\000Cst(j))
                            |  inr(a)  =>
                            \mforall{}j:\mBbbZ{}.  \mneg{}\muparrow{}j  \mmember{}  dom(est)  supposing  j  <  i))
              {}\mRightarrow{}  (\mforall{}v:V.  \mforall{}j:\mBbbN{}||L||.
                          let  i,est,knw  =  consensus-accum-state(A;(x  a)  @  firstn(j;L))  in 
                          (\mneg{}(i  \mmember{}  fpf-domain(est)))  \mwedge{}  may  consider  v  in  inning  i  based  on  knowledge  (knw) 
                          supposing  L[j]  =  Archive(v))
              {}\mRightarrow{}  (x  rel\_star(ts-type(consensus-ts6(V;A;W));  ts-rel(consensus-ts6(V;A;W)))  y))  supposing 
              (((y  a)  =  ((x  a)  @  L))  and 
              (\mforall{}b:\{a:Id|  (a  \mmember{}  A)\}  .  (y  b)  =  (x  b)  supposing  \mneg{}(b  =  a)))


Date html generated: 2011_08_16-AM-10_10_25
Last ObjectModification: 2011_06_18-AM-09_03_19

Home Index