Section LeaderLogsPreserved.
Context {orig_base_params : BaseParams}.
Context {one_node_params : OneNodeParams orig_base_params}.
Context {raft_params : RaftParams orig_base_params}.
Context {rri : raft_refinement_interface}.
Context {llli : logs_leaderLogs_interface}.
Context {lltsi : leaderLogs_term_sanity_interface}.
Context {llcei : leaderLogs_candidate_entries_interface}.
Context {ollpti : one_leaderLog_per_term_interface}.
Context {vci : votes_correct_interface}.
Context {cci : cronies_correct_interface}.
Proof using.
unfold update_elections_data_client_request in *.
intros. repeat break_match; repeat find_inversion; auto.
Qed.
Proof using.
unfold update_elections_data_timeout.
intros.
repeat break_match; simpl in *; auto.
Qed.
Proof using.
intros.
unfold update_elections_data_appendEntries.
repeat break_match; subst; simpl in *; auto.
Qed.
Proof using.
unfold update_elections_data_requestVote.
intros.
repeat break_match; auto.
Qed.
Proof using.
unfold update_elections_data_requestVoteReply.
intros.
repeat break_match; auto.
simpl in *. intuition.
Qed.

Lemma update_elections_data_requestVoteReply_leaderLogs' :
forall h h' t  st t' ll' r,
In (t', ll') (leaderLogs (update_elections_data_requestVoteReply h h' t r st)) ->
In (t', ll') (leaderLogs (fst st))
\/ (r = true
/\ t = currentTerm (snd st)
/\ ll' = log (snd st)
/\ t' = currentTerm (snd st)
/\ type (snd st) = Candidate
/\ wonElection (dedup name_eq_dec (h' :: votesReceived (snd st))) = true).