Nuprl Lemma : rsc5-ilf

([Cmd:ValueAllType]. [es:EO']. [e:E].
   v:    Cmd  Id. {v  rsc5_vote'base(Cmd)(e)  v  Base(``rsc5 vote``;    Cmd  Id)(e)})
 ([a:]. [es:EO']. [e:E].  {  rsc5_Halt() a(e)  a  Base(``rsc5 decided``;)(e)})
 ([b,a:]. [locs:bag(Id)]. [flrs,coeff:]. [clients:bag(Id)]. [Cmd:ValueAllType]. [cmdeq:EqDecider(Cmd)].
   [es:EO']. [e:E]. [i:Id]. [m:Message].
     {<i, m rsc5_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs) <a, b>(e)
      a1,b1:
           b2:Cmd
            b3:Id
             (<<<a1, b1>, b2>, b3 Base(``rsc5 vote``;    Cmd  Id)(e)
              ((a2:
                  b4:Cmd
                   (((((fst((rsc5_possmajstep(Cmd;cmdeq) (inl <a2, b4) b2))) = ((coeff * flrs) + 1))
                    (((m = make-Msg(``rsc5 decided``;;a1))  i  locs)
                        ((m = make-Msg([notify];  Cmd;<a1, snd((rsc5_possmajstep(Cmd;cmdeq) (inl <a2, b4) b2))>))
                          i  clients)))
                    ((((fst((rsc5_possmajstep(Cmd;cmdeq) (inl <a2, b4) b2))) = ((coeff * flrs) + 1)))
                      (i = loc(e))
                      (m
                       = make-Msg(``rsc5 retry``;    Cmd;<<a1, b1 + 1>
                         , snd((rsc5_possmajstep(Cmd;cmdeq) (inl <a2, b4) b2))
                         >))))
                    (b5:Id List
                       ((<inl <a2, b4, b5 Memory-class(rsc5_add_to_quorum(Cmd;cmdeq) 
                                                            <a, b>;rsc5_init() <inr  , []>;rsc5_vote'base(Cmd))(e)
                        (||b5|| = (coeff * flrs)))
                        ((rsc5_newvote(Cmd) <a, b> <<<a1, b1>, b2>, b3> <inl <a2, b4, b5>))))))
                (((((fst((rsc5_possmajstep(Cmd;cmdeq) (inr  ) b2))) = ((coeff * flrs) + 1))
                  (((m = make-Msg(``rsc5 decided``;;a1))  i  locs)
                      ((m = make-Msg([notify];  Cmd;<a1, snd((rsc5_possmajstep(Cmd;cmdeq) (inr  ) b2))>))
                        i  clients)))
                  ((((fst((rsc5_possmajstep(Cmd;cmdeq) (inr  ) b2))) = ((coeff * flrs) + 1)))
                    (i = loc(e))
                    (m
                     = make-Msg(``rsc5 retry``;    Cmd;<<a1, b1 + 1>
                       , snd((rsc5_possmajstep(Cmd;cmdeq) (inr  ) b2))
                       >))))
                  (b4:Id List
                     ((<inr  , b4 Memory-class(rsc5_add_to_quorum(Cmd;cmdeq) 
                                                   <a, b>;rsc5_init() <inr  , []>;rsc5_vote'base(Cmd))(e)
                      (||b4|| = (coeff * flrs)))
                      ((rsc5_newvote(Cmd) <a, b> <<<a1, b1>, b2>, b3> <inr  , b4>)))))))})
 ([Cmd:ValueAllType]. [es:EO']. [e:E].
     v:    Cmd
       {v  rsc5_RoundInfo(Cmd)(e)
        v  Base(``rsc5 retry``;    Cmd)(e)
            (a,b:
                b1:Cmd
                 ((v = <<a, b>, b1>)  (b2:Id. <<<a, b>, b1>, b2 Base(``rsc5 vote``;    Cmd  Id)(e))))})
 ([Cmd:ValueAllType]. [es:EO']. [e:E].
     v:  Cmd
       {v  rsc5_Proposal(Cmd)(e)
        v  Base([propose];  Cmd)(e)
            (a,b:
                b1:Cmd. ((v = <a, b1>)  (b2:Id. <<<a, b>, b1>, b2 Base(``rsc5 vote``;    Cmd  Id)(e))))})
 ([Cmd:ValueAllType]. [clients:bag(Id)]. [cmdeq:EqDecider(Cmd)]. [coeff,flrs:]. [locs:bag(Id)]. [es:EO'].
   [e:E]. [i:Id]. [m:Message].
     {<i, m rsc5_main(Cmd;clients;cmdeq;coeff;flrs;locs)(e)
      loc(e)  locs
          (e':{e':E| e' loc e } 
              a:
               ((b:Cmd
                  ((<a, b Base([propose];  Cmd)(e')
                   (b1:. b3:Id. <<<a, b1>, b>, b3 Base(``rsc5 vote``;    Cmd  Id)(e')))
                   ((((i  locs  (m = make-Msg(``rsc5 vote``;    Cmd  Id;<<<a, 0>, b>, loc(e)>)))  (e = e'))
                     ((no rsc5_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs) <a, 0between e' and e)
                       <i, m {rsc5_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs) <a, 0>}(e)))
                     ((no rsc5_Halt() a between e' and e)  (e1:{e1:E| e1 loc ... } . ...)))))
                ...))})


Proof not projected




Definitions occuring in Statement :  rsc5_update_replica: rsc5_update_replica(Cmd) rsc5_Proposal: rsc5_Proposal(Cmd) rsc5_Halt: rsc5_Halt() rsc5_update_round: rsc5_update_round(Cmd) rsc5_RoundInfo: rsc5_RoundInfo(Cmd) rsc5_Quorum: rsc5_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs) rsc5_add_to_quorum: rsc5_add_to_quorum(Cmd;cmdeq) rsc5_possmajstep: rsc5_possmajstep(Cmd;cmdeq) rsc5_newvote: rsc5_newvote(Cmd) rsc5_vote'base: rsc5_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 it: uall: [x:A]. B[x] guard: {T} pi1: fst(t) pi2: snd(t) all: x:A. B[x] exists: x:A. B[x] iff: P  Q not: A squash: T or: P  Q and: P  Q unit: Unit less_than: a < b set: {x:A| B[x]}  apply: f a pair: <a, b> product: x:A  B[x] inr: inr x  inl: inl x  union: left + right 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) deq: EqDecider(T) bag-member: x  bs bag: bag(T) vatype: ValueAllType
Definitions :  rsc5_main: rsc5_main(Cmd;clients;cmdeq;coeff;flrs;locs) rsc5_Replica: rsc5_Replica(Cmd;clients;cmdeq;coeff;flrs;locs) rsc5_Voter: rsc5_Voter(Cmd;clients;cmdeq;coeff;flrs;locs) rsc5_NewVoters: rsc5_NewVoters(Cmd) rsc5_NewRounds: rsc5_NewRounds(Cmd) rsc5_Round: rsc5_Round(Cmd;clients;cmdeq;coeff;flrs;locs) rsc5_NewRoundsState: rsc5_NewRoundsState(Cmd) rsc5_when_new_round: rsc5_when_new_round(Cmd) rsc5_vote'broadcast: rsc5_vote'broadcast(Cmd) uiff: uiff(P;Q) rsc5_ReplicaState: rsc5_ReplicaState(Cmd) rsc5_when_new_proposal: rsc5_when_new_proposal(Cmd) rsc5_Proposal: rsc5_Proposal(Cmd) rsc5_vote2prop: rsc5_vote2prop(Cmd) rsc5_propose'base: rsc5_propose'base(Cmd) rsc5_RoundInfo: rsc5_RoundInfo(Cmd) rsc5_vote2retry: rsc5_vote2retry(Cmd) rsc5_retry'base: rsc5_retry'base(Cmd) rsc5_Quorum: rsc5_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs) rsc5_QuorumState: rsc5_QuorumState(Cmd;cmdeq) rsc5_when_quorum: rsc5_when_quorum(Cmd;clients;cmdeq;coeff;flrs;locs) rsc5_roundout: rsc5_roundout(Cmd;clients;cmdeq;coeff;flrs;locs) so_lambda: x y.t[x; y] exposed-bfalse: exposed-bfalse rsc5_notify'broadcast: rsc5_notify'broadcast(Cmd) rsc5_decided'broadcast: rsc5_decided'broadcast() subtype: S  T rsc5_retry'send: rsc5_retry'send(Cmd) sq_or: a  b outl: outl(x) isl: isl(x) top: Top rsc5_newvote: rsc5_newvote(Cmd) rsc5_possmajstep: rsc5_possmajstep(Cmd;cmdeq) rsc5_Halt: rsc5_Halt() rsc5_decided'base: rsc5_decided'base() bfalse: ff btrue: tt ifthenelse: if b then t else f fi  or: P  Q so_lambda: x.t[x] exists: x:A. B[x] cand: A c B rsc5_vote'base: rsc5_vote'base(Cmd) true: True squash: T bag-member: x  bs rev_implies: P  Q implies: P  Q name: Name prop: member: t  T classrel: v  X(e) iff: P  Q guard: {T} all: x:A. B[x] vatype: ValueAllType uall: [x:A]. B[x] and: P  Q so_apply: x[s1;s2] pi2: snd(t) pi1: fst(t) sq_stable: SqStable(P) bool: unit: Unit uimplies: b supposing a rev_uimplies: rev_uimplies(P;Q) so_apply: x[s] it:
Lemmas :  classrel-at eo-forward-forward2 eclass_wf eo-forward-le subtype_rel_self subtype_rel_sets bind-class-rel-weak until-classrel es-le-loc eo-forward-no-prior-classrel once-classrel-weak eo-forward-first2 eo-forward-loc send-once-loc-classrel sq_or_sq_or and_functionality_wrt_uiff eo-forward-base-classrel squash-bag-member assert_of_le_int assert_of_band bnot_of_lt_int bnot_thru_bor assert_functionality_wrt_uiff le_wf and_wf le_int_wf not_functionality_wrt_iff assert-deq-member assert_of_lt_int assert_of_bor iff_weakening_uiff and_functionality_wrt_iff squash_sq_or rsc5_main_wf rsc5_Replica_wf class-at_wf rsc5_Voter_wf rsc5_NewVoters_wf es-interface-subtype_rel2 rsc5_NewRounds_wf bind-class_wf until-class_wf rsc5_Round_wf rsc5_NewRoundsState_wf rsc5_when_new_round_wf once-class_wf send-once-loc-class_wf rsc5_vote'broadcast_wf subtype_rel_set rsc5_ReplicaState_wf rsc5_when_new_proposal_wf lt_int_wf bor_wf l_member_wf less_than_wf rsc5_update_replica_wf rsc5_update_round_wf decidable__es-le es-le_wf sq_stable_from_decidable member-eo-forward-E no-classrel-in-interval_wf eo-forward_wf eo-forward-E-subtype Id-valueall-type rsc5_Proposal_wf rsc5_vote2prop_wf rsc5_propose'base_wf parallel-classrel-weak sq_or_squash3 rsc5_RoundInfo_wf rsc5_vote2retry_wf rsc5_retry'base_wf parallel-class_wf simple-loc-comb-2-concat-classrel-weak exists-unit exists-union assert_of_bnot eqff_to_assert eqtt_to_assert uiff_transitivity spread_wf exists-product1 pair-eta bag-member-append bag-member-map sq_or_squash squash_true and_true_l deq_wf rsc5_Quorum_wf rsc5_QuorumState_wf rsc5_when_quorum_wf concat-lifting-loc-2_wf simple-loc-comb-2_wf rsc5_notify'broadcast_wf rsc5_decided'broadcast_wf bag-append_wf rsc5_retry'send_wf bag-map_wf id-deq_wf deq-member_wf bnot_wf product-deq_wf band_wf length_wf rsc5_init_wf rsc5_add_to_quorum_wf Memory-class_wf es-loc_wf sq_or_wf pi2_wf make-Msg_wf sq_stable__valueall-type product-valueall-type int-valueall-type top_wf pi1_wf_top simple-loc-comb-1-concat-classrel-weak bag-member-empty-weak bag-member-single-weak bool_wf bag-member-ifthenelse and_false_r trivial-eq not_functionality_wrt_uiff safe-assert-deq and_functionality_wrt_uiff2 or_functionality_wrt_iff ifthenelse-prop not_wf assert_wf iff_transitivity or_false_r equal_wf exists-elim squash_equal squash-classrel squash_and and_true_r rsc5_Halt_wf rsc5_decided'base_wf concat-lifting-loc-1_wf simple-loc-comb-1_wf empty-bag_wf single-bag_wf bag_wf bag-member_wf it_wf unit_wf2 int-deq_wf eqof_wf ifthenelse_wf or_wf exists_wf squash_wf true_wf valueall-type_wf event-ordering+_wf event-ordering+_inc es-E_wf false_wf rsc5_vote'base_wf base-headers-msg-val_wf Id_wf Message_wf classrel_wf

(\mforall{}[Cmd:ValueAllType].  \mforall{}[es:EO'].  \mforall{}[e:E].
      \mforall{}v:\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id
          \{v  \mmember{}  rsc5\_vote'base(Cmd)(e)  \mLeftarrow{}{}\mRightarrow{}  v  \mmember{}  Base(``rsc5  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e)\})
\mwedge{}  (\mforall{}[a:\mBbbZ{}].  \mforall{}[es:EO'].  \mforall{}[e:E].    \{\mcdot{}  \mmember{}  rsc5\_Halt()  a(e)  \mLeftarrow{}{}\mRightarrow{}  a  \mmember{}  Base(``rsc5  decided``;\mBbbZ{})(e)\})
\mwedge{}  (\mforall{}[b,a:\mBbbZ{}].  \mforall{}[locs:bag(Id)].  \mforall{}[flrs,coeff:\mBbbZ{}].  \mforall{}[clients:bag(Id)].  \mforall{}[Cmd:ValueAllType].
      \mforall{}[cmdeq:EqDecider(Cmd)].  \mforall{}[es:EO'].  \mforall{}[e:E].  \mforall{}[i:Id].  \mforall{}[m:Message].
          \{<i,  m>  \mmember{}  rsc5\_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs)  <a,  b>(e)
          \mLeftarrow{}{}\mRightarrow{}  \mdownarrow{}\mexists{}a1,b1:\mBbbZ{}
                      \mexists{}b2:Cmd
                        \mexists{}b3:Id
                          (<<<a1,  b1>,  b2>,  b3>  \mmember{}  Base(``rsc5  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e)
                          \mwedge{}  ((\mexists{}a2:\mBbbZ{}
                                    \mexists{}b4:Cmd
                                      (((((fst((rsc5\_possmajstep(Cmd;cmdeq)  (inl  <a2,  b4>  )  b2)))
                                      =  ((coeff  *  flrs)  +  1))
                                      \mwedge{}  (\mdownarrow{}((m  =  make-Msg(``rsc5  decided``;\mBbbZ{};a1))  \mwedge{}  i  \mdownarrow{}\mmember{}  locs)
                                              \mvee{}  ((m
                                                  =  make-Msg([notify];\mBbbZ{}  \mtimes{}  Cmd;<a1
                                                      ,  snd((rsc5\_possmajstep(Cmd;cmdeq)  (inl  <a2,  b4>  )  b2))
                                                      >))
                                                  \mwedge{}  i  \mdownarrow{}\mmember{}  clients)))
                                      \mvee{}  ((\mneg{}((fst((rsc5\_possmajstep(Cmd;cmdeq)  (inl  <a2,  b4>  )  b2)))
                                            =  ((coeff  *  flrs)  +  1)))
                                          \mwedge{}  (i  =  loc(e))
                                          \mwedge{}  (m
                                              =  make-Msg(``rsc5  retry``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd;<<a1,  b1  +  1>
                                                  ,  snd((rsc5\_possmajstep(Cmd;cmdeq)  (inl  <a2,  b4>  )  b2))
                                                  >))))
                                      \mwedge{}  (\mexists{}b5:Id  List
                                              ((<inl  <a2,  b4>  ,  b5>  \mmember{}
                                                    Memory-class(rsc5\_add\_to\_quorum(Cmd;cmdeq) 
                                                                              <a,  b>rsc5\_init()  <inr  \mcdot{}  ,  []>rsc5\_vote'base(Cmd))(e)
                                              \mwedge{}  (||b5||  =  (coeff  *  flrs)))
                                              \mwedge{}  (\muparrow{}(rsc5\_newvote(Cmd)  <a,  b>  <<<a1,  b1>,  b2>,  b3>  <inl  <a2,  b4>  ,  b5>))))))
                              \mvee{}  (((((fst((rsc5\_possmajstep(Cmd;cmdeq)  (inr  \mcdot{}  )  b2)))  =  ((coeff  *  flrs)  +  1))
                                  \mwedge{}  (\mdownarrow{}((m  =  make-Msg(``rsc5  decided``;\mBbbZ{};a1))  \mwedge{}  i  \mdownarrow{}\mmember{}  locs)
                                          \mvee{}  ((m
                                              =  make-Msg([notify];\mBbbZ{}  \mtimes{}  Cmd;<a1
                                                  ,  snd((rsc5\_possmajstep(Cmd;cmdeq)  (inr  \mcdot{}  )  b2))
                                                  >))
                                              \mwedge{}  i  \mdownarrow{}\mmember{}  clients)))
                                  \mvee{}  ((\mneg{}((fst((rsc5\_possmajstep(Cmd;cmdeq)  (inr  \mcdot{}  )  b2)))  =  ((coeff  *  flrs)  +  1)))
                                      \mwedge{}  (i  =  loc(e))
                                      \mwedge{}  (m
                                          =  make-Msg(``rsc5  retry``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd;<<a1,  b1  +  1>
                                              ,  snd((rsc5\_possmajstep(Cmd;cmdeq)  (inr  \mcdot{}  )  b2))
                                              >))))
                                  \mwedge{}  (\mexists{}b4:Id  List
                                          ((<inr  \mcdot{}  ,  b4>  \mmember{}  Memory-class(rsc5\_add\_to\_quorum(Cmd;cmdeq) 
                                                                                                      <a,  b>rsc5\_init() 
                                                                                                                    <inr  \mcdot{}  ,  []>rsc5\_vote'base(Cmd))(e)
                                          \mwedge{}  (||b4||  =  (coeff  *  flrs)))
                                          \mwedge{}  (\muparrow{}(rsc5\_newvote(Cmd)  <a,  b>  <<<a1,  b1>,  b2>,  b3>  <inr  \mcdot{}  ,  b4>)))))))\})
\mwedge{}  (\mforall{}[Cmd:ValueAllType].  \mforall{}[es:EO'].  \mforall{}[e:E].
          \mforall{}v:\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd
              \{v  \mmember{}  rsc5\_RoundInfo(Cmd)(e)
              \mLeftarrow{}{}\mRightarrow{}  v  \mmember{}  Base(``rsc5  retry``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd)(e)
                      \mdownarrow{}\mvee{}  (\mexists{}a,b:\mBbbZ{}
                                \mexists{}b1:Cmd
                                  ((v  =  <<a,  b>,  b1>)
                                  \mwedge{}  (\mexists{}b2:Id.  <<<a,  b>,  b1>,  b2>  \mmember{}  Base(``rsc5  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e))))\})
\mwedge{}  (\mforall{}[Cmd:ValueAllType].  \mforall{}[es:EO'].  \mforall{}[e:E].
          \mforall{}v:\mBbbZ{}  \mtimes{}  Cmd
              \{v  \mmember{}  rsc5\_Proposal(Cmd)(e)
              \mLeftarrow{}{}\mRightarrow{}  v  \mmember{}  Base([propose];\mBbbZ{}  \mtimes{}  Cmd)(e)
                      \mdownarrow{}\mvee{}  (\mexists{}a,b:\mBbbZ{}
                                \mexists{}b1:Cmd
                                  ((v  =  <a,  b1>)
                                  \mwedge{}  (\mexists{}b2:Id.  <<<a,  b>,  b1>,  b2>  \mmember{}  Base(``rsc5  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e))))\})
\mwedge{}  (\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{}[m:Message].
          \{<i,  m>  \mmember{}  rsc5\_main(Cmd;clients;cmdeq;coeff;flrs;locs)(e)
          \mLeftarrow{}{}\mRightarrow{}  loc(e)  \mdownarrow{}\mmember{}  locs
                  \mwedge{}  (\mdownarrow{}\mexists{}e':\{e':E|  e'  \mleq{}loc  e  \} 
                            \mexists{}a:\mBbbZ{}
                              ((\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(``rsc5  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)(e')))
                                    \mwedge{}  ((((i  \mdownarrow{}\mmember{}  locs
                                        \mwedge{}  (m  =  make-Msg(``rsc5  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id;<<<a,  0>,  b>,  loc(e)>)))
                                        \mwedge{}  (e  =  e'))
                                        \mvee{}  ((no  rsc5\_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs)  <a,  0>  between  e'  and  e)
                                            \mwedge{}  <i,  m>  \mmember{}  \{rsc5\_Quorum(Cmd;clients;cmdeq;coeff;flrs;locs)  <a,  0>\}(e)))
                                        \mdownarrow{}\mvee{}  ((no  rsc5\_Halt()  a  between  e'  and  e)  \mwedge{}  (\mdownarrow{}\mexists{}e1:\{e1:E|  e1  \mleq{}loc  ...  \}  .  ...)))))
                              \mwedge{}  ...))\})


Date html generated: 2012_02_20-PM-05_11_18
Last ObjectModification: 2012_02_02-PM-02_20_35

Home Index