Proof using.
start.
eapply candidateEntries_ext; eauto.
repeat find_higher_order_rewrite.
update_destruct; rewrite_update.
- simpl in *.
find_rewrite_lem update_elections_data_appendEntries_leaderLogs.
assert (candidateEntries e (nwState net)) by eauto.
unfold candidateEntries in *.
break_exists. break_and.
exists x.
update_destruct; rewrite_update; [|auto].
simpl. subst. rewrite update_elections_data_appendEntries_cronies.
split; [auto|].
find_apply_lem_hyp handleAppendEntries_type_term.
break_or_hyp; break_and.
* repeat find_rewrite. auto.
* unfold not. intros. find_rewrite. discriminate.
- assert (candidateEntries e (nwState net)) by eauto.
unfold candidateEntries in *.
break_exists. break_and.
exists x.
update_destruct; rewrite_update; [|auto].
simpl. subst. rewrite update_elections_data_appendEntries_cronies.
split; [auto|].
find_apply_lem_hyp handleAppendEntries_type_term.
break_or_hyp; break_and.
* repeat find_rewrite. auto.
* unfold not. intros. find_rewrite. discriminate.
Qed.

(* Specifications: *)
Lemma leaderLogs_candidateEntries_append_entries_reply :
refined_raft_net_invariant_append_entries_reply leaderLogs_candidateEntries.