Step
*
of Lemma
pv11_p1_ldr_active2
∀Cmd:ValueAllType. ∀f:pv11_p1_headers_type{i:l}(Cmd). ∀es:EO+(Message(f)). ∀e:E. ∀ldrs_uid:Id ─→ ℤ.
∀v:pv11_p1_Ballot_Num() × 𝔹 × ((ℤ × Cmd) List).
  (v ∈ pv11_p1_LeaderState(Cmd;ldrs_uid;f)(e)
  
⇒ let bnum,active,proposals1 = v in 
     (↑active)
     
⇒ (↓∃e':E
           ∃pvals:(pv11_p1_Ballot_Num() × ℤ × Cmd) List
            ∃proposals:(ℤ × Cmd) List
             ∃b:𝔹
              ((e' <loc e)
              ∧ <bnum, pvals> ∈ pv11_p1_adopted'base(Cmd;f)(e')
              ∧ <bnum, b, proposals> ∈ pv11_p1_LeaderState(Cmd;ldrs_uid;f)(e'))))
BY
{ MemoryInvariant' }
1
1. Cmd : {T:Type| valueall-type(T)} @i'
2. f : pv11_p1_headers_type{i:l}(Cmd)@i'
3. (f [decision]) = (ℤ × Cmd) ∈ Type
4. (f [propose]) = (ℤ × Cmd) ∈ Type
5. (f ``pv11_p1 adopted``) = (pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List)) ∈ Type
6. (f ``pv11_p1 preempted``) = pv11_p1_Ballot_Num() ∈ Type
7. (f ``pv11_p1 p2b``) = (Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num()) ∈ Type
8. (f ``pv11_p1 p2a``) = (Id × pv11_p1_Ballot_Num() × ℤ × Cmd) ∈ Type
9. (f ``pv11_p1 p1b``)
= (Id × pv11_p1_Ballot_Num() × pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List))
∈ Type
10. (f ``pv11_p1 p1a``) = (Id × pv11_p1_Ballot_Num()) ∈ Type
11. f ∈ Name ─→ Type
12. es : EO+(Message(f))@i'
13. e : E@i
14. ldrs_uid : Id ─→ ℤ@i
15. v1 : pv11_p1_Ballot_Num()@i
16. v3 : 𝔹@i
17. v4 : (ℤ × Cmd) List@i
18. <v1, v3, v4> ∈
     Memory-loc-class(pv11_p1_on_propose(Cmd) + pv11_p1_when_adopted(Cmd;ldrs_uid) + ...;λloc.{pv11_p1_init_leader(Cmd) 
                                                                                               loc};... (+) ...)(e)
19. x1 : pv11_p1_Ballot_Num()@i'
20. x2 : (pv11_p1_Ballot_Num() × ℤ × Cmd) List@i'
21. e' : E@i'
22. s1 : pv11_p1_Ballot_Num()@i'
23. s3 : 𝔹@i'
24. s4 : (ℤ × Cmd) List@i'
25. (e' <loc e)@i'
26. inr (inl <x1, x2>)  ∈ pv11_p1_propose'base(Cmd;f) (+) pv11_p1_adopted'base(Cmd;f) (+) pv11_p1_preempted'base(Cmd;f)(\000Ce')@i'
27. <s1, s3, s4> ∈
     Memory-loc-class(pv11_p1_on_propose(Cmd) + pv11_p1_when_adopted(Cmd;ldrs_uid) + ...;λloc.{pv11_p1_init_leader(Cmd) 
                                                                                               loc};... (+) ...)(e')@i'
28. (↑s3)
⇒ (↓∃e':E
      ∃pvals:(pv11_p1_Ballot_Num() × ℤ × Cmd) List
       ∃proposals:(ℤ × Cmd) List
        ∃b:𝔹
         ((e' <loc e)
         ∧ <s1, pvals> ∈ pv11_p1_adopted'base(Cmd;f)(e')
         ∧ <s1, b, proposals> ∈ pv11_p1_LeaderState(Cmd;ldrs_uid;f)(e')))@i'
29. x1 = s1 ∈ pv11_p1_Ballot_Num()
⊢ ↓∃e':E
    ∃pvals:(pv11_p1_Ballot_Num() × ℤ × Cmd) List
     ∃proposals:(ℤ × Cmd) List
      ∃b:𝔹
       ((e' <loc e)
       ∧ <s1, pvals> ∈ pv11_p1_adopted'base(Cmd;f)(e')
       ∧ <s1, b, proposals> ∈ pv11_p1_LeaderState(Cmd;ldrs_uid;f)(e'))
Latex:
Latex:
\mforall{}Cmd:ValueAllType.  \mforall{}f:pv11\_p1\_headers\_type\{i:l\}(Cmd).  \mforall{}es:EO+(Message(f)).  \mforall{}e:E.  \mforall{}ldrs$_\mbackslash{}ff7\000Cbuid}$:Id  {}\mrightarrow{}  \mBbbZ{}.
\mforall{}v:pv11\_p1\_Ballot\_Num()  \mtimes{}  \mBbbB{}  \mtimes{}  ((\mBbbZ{}  \mtimes{}  Cmd)  List).
    (v  \mmember{}  pv11\_p1\_LeaderState(Cmd;ldrs$_{uid}$;f)(e)
    {}\mRightarrow{}  let  bnum,active,proposals1  =  v  in 
          (\muparrow{}active)
          {}\mRightarrow{}  (\mdownarrow{}\mexists{}e':E
                      \mexists{}pvals:(pv11\_p1\_Ballot\_Num()  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd)  List
                        \mexists{}proposals:(\mBbbZ{}  \mtimes{}  Cmd)  List
                          \mexists{}b:\mBbbB{}
                            ((e'  <loc  e)
                            \mwedge{}  <bnum,  pvals>  \mmember{}  pv11\_p1\_adopted'base(Cmd;f)(e')
                            \mwedge{}  <bnum,  b,  proposals>  \mmember{}  pv11\_p1\_LeaderState(Cmd;ldrs$_{uid}$;f)(e\000C'))))
By
Latex:
MemoryInvariant'
Home
Index