Require Export VerdiRaft.RefinementCommonDefinitions.
Local Arguments update {_} {_} _ _ _ _ _ : simpl never.
Section CommonTheorems.
Context {orig_base_params : BaseParams}.
Context {one_node_params : OneNodeParams orig_base_params}.
Context {raft_params : RaftParams orig_base_params}.
Context {cci : cronies_correct_interface}.
Context {vci : votes_correct_interface}.

(* Specifications: *)
Lemma candidateEntries_wonElection :
forall (net : network (params := raft_refined_multi_params))  e h,
one_vote_per_term net ->
cronies_votes net ->
votes_received_cronies net ->
candidateEntries e (nwState net) ->
currentTerm (snd (nwState net h)) = eTerm e ->
wonElection (dedup name_eq_dec (votesReceived (snd (nwState net h)))) = true ->
type (snd (nwState net h)) <> Candidate.