Step
*
of Lemma
rsc4-votes-consistent
[Cmd:ValueAllType]. 
[cmdeq:EqDecider(Cmd)]. 
[locs,clients:bag(Id)]. 
[coeff,flrs:
]. 
[es:EO'].
  ((StandardAssumptions(rsc4_Main) es)
  
 (
e1,e2:E. 
n,i:
. 
x,y,z:Id. 
c1,c2:Cmd.
        (<y, make-Msg(``rsc4 vote``;
 
 
 
 Cmd 
 Id;<<<n, i>, c1>, x>)> 
 rsc4_Main(e1)
        
 <z, make-Msg(``rsc4 vote``;
 
 
 
 Cmd 
 Id;<<<n, i>, c2>, x>)> 
 rsc4_Main(e2)
        
 (c1 = c2))))
BY
{ (Unfold `vatype` 0
   THEN (UnivCD THENA MaAuto)
   THEN (RWO "rsc4-vote" (-2) THENA Auto)
   THEN (RWO "rsc4-vote" (-1) THENA Auto)
   THEN SquashExRepD
   THEN All DSet
   THEN All (\h. Try (Fold `rsc4_ReplicaState` h))) }
1
1. Cmd : Type
2. valueall-type(Cmd)
3. cmdeq : EqDecider(Cmd)
4. locs : bag(Id)
5. clients : bag(Id)
6. coeff : 
7. flrs : 
8. es : EO'
9. StandardAssumptions(rsc4_Main) es
10. e1 : E
11. e2 : E
12. n : 
13. i : 
14. x : Id
15. y : Id
16. z : Id
17. c1 : Cmd
18. c2 : Cmd
19. loc(e1) 
 locs
20. y 
 locs
21. x = loc(e1)
22. e3 : E
23. e3 
loc e1 
24. a3 : 
25. b4 : 
 List
26. <a3, b4> 
 rsc4_ReplicaState(Cmd)(e3)
27. (a3 < n) 
 (n 
 b4)
28. b3 : Cmd
29. ((e1 = e3) 
 (c1 = b3) 
 (i = 0))
 ((
e2:{e2:E| e2 
loc e1 } 
      (((
b4:
. (b4 
 Memory-class(rsc4_update_round(Cmd) n;rsc4_init() 0;rsc4_RoundInfo(Cmd))(e2) 
 (b4 < i)))
      
 (<<n, i>, c1> 
 Base(``rsc4 retry``;
 
 
 
 Cmd)(e2)
        
 (
b5:Id. <<<n, i>, c1>, b5> 
 Base(``rsc4 vote``;
 
 
 
 Cmd 
 Id)(e2))))
      
 (e1 = e2)))
  
 (no rsc4_Notify(Cmd;clients) n between e3 and e1))
30. True
31. <n, b3> 
 Base([propose];
 
 Cmd)(e3)
 (
b1:
. 
b3@0:Id. <<<n, b1>, b3>, b3@0> 
 Base(``rsc4 vote``;
 
 
 
 Cmd 
 Id)(e3))
32. loc(e2) 
 locs
33. z 
 locs
34. x = loc(e2)
35. e' : E
36. e' 
loc e2 
37. a2 : 
38. b2 : 
 List
39. <a2, b2> 
 rsc4_ReplicaState(Cmd)(e')
40. (a2 < n) 
 (n 
 b2)
41. b : Cmd
42. ((e2 = e') 
 (c2 = b) 
 (i = 0))
 ((
e1:{e1:E| e1 
loc e2 } 
      (((
b4:
. (b4 
 Memory-class(rsc4_update_round(Cmd) n;rsc4_init() 0;rsc4_RoundInfo(Cmd))(e1) 
 (b4 < i)))
      
 (<<n, i>, c2> 
 Base(``rsc4 retry``;
 
 
 
 Cmd)(e1)
        
 (
b5:Id. <<<n, i>, c2>, b5> 
 Base(``rsc4 vote``;
 
 
 
 Cmd 
 Id)(e1))))
      
 (e2 = e1)))
  
 (no rsc4_Notify(Cmd;clients) n between e' and e2))
43. True
44. <n, b> 
 Base([propose];
 
 Cmd)(e')
 (
b1:
. 
b3:Id. <<<n, b1>, b>, b3> 
 Base(``rsc4 vote``;
 
 
 
 Cmd 
 Id)(e'))
 c1 = c2
\mforall{}[Cmd:ValueAllType].  \mforall{}[cmdeq:EqDecider(Cmd)].  \mforall{}[locs,clients:bag(Id)].  \mforall{}[coeff,flrs:\mBbbZ{}].  \mforall{}[es:EO'].
    ((StandardAssumptions(rsc4\_Main)  es)
    {}\mRightarrow{}  (\mforall{}e1,e2:E.  \mforall{}n,i:\mBbbZ{}.  \mforall{}x,y,z:Id.  \mforall{}c1,c2:Cmd.
                (<y,  make-Msg(``rsc4  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id;<<<n,  i>,  c1>,  x>)>  \mmember{}  rsc4\_Main(e1)
                {}\mRightarrow{}  <z,  make-Msg(``rsc4  vote``;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id;<<<n,  i>,  c2>,  x>)>  \mmember{}  rsc4\_Main(e2)
                {}\mRightarrow{}  (c1  =  c2))))
By
(Unfold  `vatype`  0
  THEN  (UnivCD  THENA  MaAuto)
  THEN  (RWO  "rsc4-vote"  (-2)  THENA  Auto)
  THEN  (RWO  "rsc4-vote"  (-1)  THENA  Auto)
  THEN  SquashExRepD
  THEN  All  DSet\mcdot{}
  THEN  All  (\mbackslash{}h.  Try  (Fold  `rsc4\_ReplicaState`  h)))
Home
Index