Step
*
of Lemma
new_23_sig_quorum_state_eq1
∀Cmd:ValueAllType. ∀notify,propose:Atom List. ∀f:new_23_sig_headers_type{i:l}(Cmd;notify;propose). ∀es:EO+(Message(f)).
∀e:E. ∀n,r:ℤ.
(new_23_sig_QuorumStateFun(Cmd;notify;propose;f;<n, r>;es;e)
= <rev(mapfilter(λe.(snd(fst(msgval(e))));
λe.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es;e;n;r);
[es-init(es;e);e)))
, rev(mapfilter(λe.(snd(msgval(e)));
λe.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es;e;n;r);
[es-init(es;e);e)))
>
∈ (Cmd List × (Id List)))
BY
{ StartEmlProof }
1
1. Cmd : {T:Type| valueall-type(T)} @i'
2. notify : Atom List@i
3. propose : Atom List@i
4. f : new_23_sig_headers_type{i:l}(Cmd;notify;propose)@i'
5. (f propose) = (ℤ × Cmd) ∈ Type
6. (f notify) = (ℤ × Cmd) ∈ Type
7. (f ``new_23_sig decided``) = (ℤ × Cmd) ∈ Type
8. (f ``new_23_sig retry``) = (ℤ × ℤ × Cmd) ∈ Type
9. (f ``new_23_sig vote``) = (ℤ × ℤ × Cmd × Id) ∈ Type
10. f ∈ Name ⟶ Type
11. es : EO+(Message(f))@i'
12. e : E@i
13. n : ℤ@i
14. r : ℤ@i
⊢ new_23_sig_QuorumStateFun(Cmd;notify;propose;f;<n, r>;es;e)
= <rev(mapfilter(λe.(snd(fst(msgval(e))));
λe.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es;e;n;r);
[es-init(es;e);e)))
, rev(mapfilter(λe.(snd(msgval(e)));
λe.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es;e;n;r);
[es-init(es;e);e)))
>
∈ (Cmd List × (Id List))
Latex:
Latex:
\mforall{}Cmd:ValueAllType. \mforall{}notify,propose:Atom List. \mforall{}f:new\_23\_sig\_headers\_type\{i:l\}(Cmd;notify;propose).
\mforall{}es:EO+(Message(f)). \mforall{}e:E. \mforall{}n,r:\mBbbZ{}.
(new\_23\_sig\_QuorumStateFun(Cmd;notify;propose;f;<n, r>es;e)
= <rev(mapfilter(\mlambda{}e.(snd(fst(msgval(e))));
\mlambda{}e.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es;e;n;r);
[es-init(es;e);e)))
, rev(mapfilter(\mlambda{}e.(snd(msgval(e)));
\mlambda{}e.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es;e;n;r);
[es-init(es;e);e)))
>)
By
Latex:
StartEmlProof
Home
Index