Nuprl Lemma : rsc4-retry

[Cmd:ValueAllType]. [clients:bag(Id)]. [cmdeq:EqDecider(Cmd)]. [coeff,flrs:]. [locs:bag(Id)]. [es:EO']. [e:E].
[i:Id]. [k,k1:]. [v:Cmd].
  (<i, make-Msg(``rsc4 retry``;    Cmd;<<k, k1>, v>)>  rsc4_Main(e)
   loc(e)  locs
       (i = loc(e))
       (e':{e':E| e' loc e } 
           a:
            (((a2:
                 b2: List
                  (<a2, b2>  Memory-class(rsc4_update_replica(Cmd);rsc4_init() <0, []>;rsc4_Proposal(Cmd))(e')
                   ((a2 < a)  (a  b2))))
             (b:Cmd
                (<a, b>  Base([propose];  Cmd)(e')
                 (b1:. b3:Id. <<<a, b1>, b>, b3>  Base(``rsc4 vote``;    Cmd  Id)(e')))))
             (((b1:
                    ((k1 = (b1 + 1))
                     (b2:Cmd
                        b3:Id
                         (<<<k, b1>, b2>, b3>  Base(``rsc4 vote``;    Cmd  Id)(e)
                          (a2:Cmd List
                             ((((||a2|| = (coeff * flrs))
                              (((fst(poss-maj(cmdeq;[b2 / a2];b2))) = ((coeff * flrs) + 1))))
                              (v = (snd(poss-maj(cmdeq;[b2 / a2];b2)))))
                              (b4:Id List
                                 (<a2, b4>  Memory-class(rsc4_add_to_quorum(Cmd) <a, 0>;rsc4_init() 
                                                                                         <[], []>;rsc4_vote'base(Cmd))(
                                             e)
                                  ((rsc4_newvote(Cmd) <a, 0> <<<k, b1>, b2>, b3> <a2, b4>))))))))))
                 ((no rsc4_Quorum(Cmd;cmdeq;coeff;flrs) <a, 0> between e' and e)))
                 ((e1:{e1:E| e1 loc e } 
                      b:
                       ((((b4:
                             (b4  Memory-class(rsc4_update_round(Cmd) a;rsc4_init() 0;rsc4_RoundInfo(Cmd))(e1)
                              (b4 < b)))
                        (b1:Cmd
                           (<<a, b>, b1>  Base(``rsc4 retry``;    Cmd)(e1)
                            (b5:Id. <<<a, b>, b1>, b5>  Base(``rsc4 vote``;    Cmd  Id)(e1)))))
                        (b1:
                            ((k1 = (b1 + 1))
                             (b2:Cmd
                                b3:Id
                                 (<<<k, b1>, b2>, b3>  Base(``rsc4 vote``;    Cmd  Id)(e)
                                  (a2:Cmd List
                                     ((((||a2|| = (coeff * flrs))
                                      (((fst(poss-maj(cmdeq;[b2 / a2];b2))) = ((coeff * flrs) + 1))))
                                      (v = (snd(poss-maj(cmdeq;[b2 / a2];b2)))))
                                      (b4:Id List
                                         (<a2, b4>  Memory-class(rsc4_add_to_quorum(Cmd) 
                                                                  <a, b>;rsc4_init() <[], []>;rsc4_vote'base(Cmd))(e)
                                          ((rsc4_newvote(Cmd) <a, b> <<<k, b1>, b2>, b3> <a2, b4>)))))))))))
                        ((no rsc4_Quorum(Cmd;cmdeq;coeff;flrs) <a, b> between e1 and e))))
                   (no rsc4_Notify(Cmd;clients) a between e' and e))))))


Proof




Definitions occuring in Statement :  rsc4_main: rsc4_Main,  rsc4_update_replica: rsc4_update_replica(Cmd),  rsc4_Proposal: rsc4_Proposal(Cmd),  rsc4_Notify: rsc4_Notify(Cmd;clients),  rsc4_update_round: rsc4_update_round(Cmd),  rsc4_RoundInfo: rsc4_RoundInfo(Cmd),  rsc4_Quorum: rsc4_Quorum(Cmd;cmdeq;coeff;flrs),  rsc4_add_to_quorum: rsc4_add_to_quorum(Cmd),  rsc4_newvote: rsc4_newvote(Cmd),  rsc4_init: rsc4_init(),  rsc4_vote'base: rsc4_vote'base(Cmd),  Memory-class: Memory-class(f;init;X),  make-Msg: make-Msg(hdr;typ;val),  base-headers-msg-val: Base(hdr;typ),  Message: Message,  no-classrel-in-interval: (no X between start and e),  classrel: v  X(e),  eo-forward: eo.e,  event-ordering+: EO+(Info),  es-le: e loc e' ,  es-loc: loc(e),  es-E: E,  Id: Id,  length: ||as||,  assert: b,  sq_or: a  b,  uall: [x:A]. B[x],  pi1: fst(t),  pi2: snd(t),  exists: x:A. B[x],  iff: P  Q,  not: A,  squash: T,  or: P  Q,  and: P  Q,  less_than: a < b,  set: {x:A| B[x]} ,  apply: f a,  pair: <a, b>,  product: x:A  B[x],  cons: [car / cdr],  nil: [],  list: type List,  multiply: n * m,  add: n + m,  natural_number: $n,  int: ,  token: "$token",  equal: s = t,  l_member: (x  l),  poss-maj: poss-maj(eq;L;x),  deq: EqDecider(T),  bag-member: x  bs,  bag: bag(T),  vatype: ValueAllType
Definitions :  bfalse: ff,  btrue: tt,  eq_atom: x =a y,  atom-deq: AtomDeq,  band: p  q,  list-deq: list-deq(eq),  name-deq: NameDeq,  ifthenelse: if b then t else f fi ,  name_eq: name_eq(x;y),  assert: b,  false: False,  uiff: uiff(P;Q),  guard: {T},  sq_or: a  b,  top: Top,  name: Name,  subtype: S  T,  prop: ,  rev_implies: P  Q,  true: True,  so_lambda: x.t[x],  implies: P  Q,  cand: A c B,  all: x:A. B[x],  member: t  T,  or: P  Q,  exists: x:A. B[x],  squash: T,  bag-member: x  bs,  and: P  Q,  classrel: v  X(e),  iff: P  Q,  vatype: ValueAllType,  uall: [x:A]. B[x],  pi2: snd(t),  pi1: fst(t),  rev_uimplies: rev_uimplies(P;Q),  uimplies: b supposing a,  nat: ,  sq_stable: SqStable(P),  so_apply: x[s]
Lemmas :  Id-valueall-type,  assert-name_eq,  msg-body_wf,  msg-type_wf,  msg-header_wf,  eo-forward-base-classrel,  make-Msg-equal,  eo-forward-loc,  subtype_rel_set,  squash_false,  and_false_r,  rsc4_decided'base_wf,  rsc4_decision_wf,  concat-lifting-loc-1_wf,  simple-loc-comb-1_wf,  and_false_l,  or_false_l,  sq_or_simp,  trivial-eq,  exists-elim,  squash_squash,  and_true_l,  true_wf,  or_false_r,  false_wf,  squash_equal,  squash_and,  deq_wf,  rsc4_Notify_wf,  rsc4_RoundInfo_wf,  rsc4_update_round_wf,  eo-forward-E-subtype,  event-ordering+_wf,  rsc4_Quorum_wf,  no-classrel-in-interval_wf,  rsc4_newvote_wf,  assert_wf,  decidable__es-le,  sq_stable_from_decidable,  member-eo-forward-E,  eo-forward_wf,  rsc4_vote'base_wf,  rsc4_add_to_quorum_wf,  pi2_wf,  nat_wf,  poss-maj_wf,  pi1_wf_top,  equal_wf,  not_wf,  length_wf,  base-headers-msg-val_wf,  sq_or_wf,  l_member_wf,  less_than_wf,  or_wf,  rsc4_Proposal_wf,  bag_wf,  rsc4_init_wf,  rsc4_update_replica_wf,  Memory-class_wf,  es-le_wf,  es-E_wf,  exists_wf,  squash_wf,  event-ordering+_inc,  es-loc_wf,  bag-member_wf,  rsc4_main_wf,  Id_wf,  Message_wf,  classrel_wf,  make-Msg_wf,  valueall-type_wf,  sq_stable__valueall-type,  int-valueall-type,  product-valueall-type,  rsc4-ilf

\mforall{}[Cmd:ValueAllType].  \mforall{}[clients:bag(Id)].  \mforall{}[cmdeq:EqDecider(Cmd)].  \mforall{}[coeff,flrs:\mBbbZ{}].  \mforall{}[locs:bag(Id)].
\mforall{}[es:EO'].  \mforall{}[e:E].  \mforall{}[i:Id].  \mforall{}[k,k1:\mBbbZ{}].  \mforall{}[v:Cmd].
    (<i,  make-Msg(``rsc4  retry``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd;<<k,  k1>,  v>)>  \mmember{}  rsc4\_Main(e)
    \mLeftarrow{}{}\mRightarrow{}  loc(e)  \mdownarrow{}\mmember{}  locs
            \mwedge{}  (i  =  loc(e))
            \mwedge{}  (\mdownarrow{}\mexists{}e':\{e':E|  e'  \mleq{}loc  e  \} 
                      \mexists{}a:\mBbbZ{}
                        (((\mdownarrow{}\mexists{}a2:\mBbbZ{}
                                  \mexists{}b2:\mBbbZ{}  List
                                    (<a2,  b2>  \mmember{}  Memory-class(rsc4\_update\_replica(Cmd);rsc4\_init() 
                                                                                                                                        ɘ,  []>rsc4\_Proposal(Cmd))(e')
                                    \mwedge{}  ((a2  <  a)  \mvee{}  (a  \mmember{}  b2))))
                        \mwedge{}  (\mexists{}b:Cmd
                                (<a,  b>  \mmember{}  Base([propose];\mBbbZ{}  \mtimes{}  Cmd)(e')
                                \mdownarrow{}\mvee{}  (\mexists{}b1:\mBbbZ{}.  \mexists{}b3:Id.  <<<a,  b1>,  b>,  b3>  \mmember{}  Base(``rsc4  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e')))))
                        \mwedge{}  (\mdownarrow{}((\mdownarrow{}\mexists{}b1:\mBbbZ{}
                                        ((k1  =  (b1  +  1))
                                        \mwedge{}  (\mexists{}b2:Cmd
                                                \mexists{}b3:Id
                                                  (<<<k,  b1>,  b2>,  b3>  \mmember{}  Base(``rsc4  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e)
                                                  \mwedge{}  (\mexists{}a2:Cmd  List
                                                          ((((||a2||  =  (coeff  *  flrs))
                                                          \mwedge{}  (\mneg{}((fst(poss-maj(cmdeq;[b2  /  a2];b2)))  =  ((coeff  *  flrs)  +  1))))
                                                          \mwedge{}  (v  =  (snd(poss-maj(cmdeq;[b2  /  a2];b2)))))
                                                          \mwedge{}  (\mexists{}b4:Id  List
                                                                  (<a2,  b4>  \mmember{}  Memory-class(rsc4\_add\_to\_quorum(Cmd) 
                                                                                                                    <a,  0>rsc4\_init() 
                                                                                                                                  <[],  []>rsc4\_vote'base(Cmd))(e)
                                                                  \mwedge{}  (\muparrow{}(rsc4\_newvote(Cmd)  <a,  0>  <<<k,  b1>,  b2>,  b3> 
                                                                            <a2,  b4>))))))))))
                                \mwedge{}  (\mdownarrow{}(no  rsc4\_Quorum(Cmd;cmdeq;coeff;flrs)  <a,  0>  between  e'  and  e)))
                                \mvee{}  ((\mdownarrow{}\mexists{}e1:\{e1:E|  e1  \mleq{}loc  e  \} 
                                            \mexists{}b:\mBbbZ{}
                                              ((((\mdownarrow{}\mexists{}b4:\mBbbZ{}
                                                          (b4  \mmember{}  Memory-class(rsc4\_update\_round(Cmd)  a;rsc4\_init() 
                                                                                                                                                  0;rsc4\_RoundInfo(Cmd))(e1)
                                                          \mwedge{}  (b4  <  b)))
                                              \mwedge{}  (\mexists{}b1:Cmd
                                                      (<<a,  b>,  b1>  \mmember{}  Base(``rsc4  retry``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd)(e1)
                                                      \mdownarrow{}\mvee{}  (\mexists{}b5:Id
                                                                <<<a,  b>,  b1>,  b5>  \mmember{}  Base(``rsc4  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e1)))))
                                              \mwedge{}  (\mdownarrow{}\mexists{}b1:\mBbbZ{}
                                                        ((k1  =  (b1  +  1))
                                                        \mwedge{}  (\mexists{}b2:Cmd
                                                                \mexists{}b3:Id
                                                                  (<<<k,  b1>,  b2>,  b3>  \mmember{}  Base(``rsc4  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e)
                                                                  \mwedge{}  (\mexists{}a2:Cmd  List
                                                                          ((((||a2||  =  (coeff  *  flrs))
                                                                          \mwedge{}  (\mneg{}((fst(poss-maj(cmdeq;[b2  /  a2];b2)))
                                                                              =  ((coeff  *  flrs)  +  1))))
                                                                          \mwedge{}  (v  =  (snd(poss-maj(cmdeq;[b2  /  a2];b2)))))
                                                                          \mwedge{}  (\mexists{}b4:Id  List
                                                                                  (<a2,  b4>  \mmember{}
                                                                                      Memory-class(rsc4\_add\_to\_quorum(Cmd) 
                                                                                                                <a,  b>rsc4\_init() 
                                                                                                                              <[],  []>rsc4\_vote'base(Cmd))(e)
                                                                                  \mwedge{}  (\muparrow{}(rsc4\_newvote(Cmd)  <a,  b>  <<<k,  b1>,  b2>,  b3> 
                                                                                            <a2,  b4>)))))))))))
                                              \mwedge{}  (\mdownarrow{}(no  rsc4\_Quorum(Cmd;cmdeq;coeff;flrs)  <a,  b>  between  e1  and  e))))
                                    \mwedge{}  (no  rsc4\_Notify(Cmd;clients)  a  between  e'  and  e))))))


Date html generated: 2012_02_20-PM-04_57_07
Last ObjectModification: 2012_02_02-PM-02_16_19

Home Index