{ [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