Proof using cti.
start.
eapply candidateEntries_ext; eauto.
repeat find_higher_order_rewrite.
assert (candidateEntries e (nwState net)).
{ update_destruct; rewrite_update; simpl in *.
- find_rewrite_lem update_elections_data_timeout_leaderLogs. eauto.
- eauto. }
unfold candidateEntries in *.
break_exists; break_and.
exists x.
update_destruct; rewrite_update; simpl in *; [|auto].
subst. split.
- assert (H100 := update_elections_data_timeout_cronies x (nwState net x) (eTerm e)).
intuition.
+ find_rewrite. auto.
+ exfalso.
find_apply_lem_hyp wonElection_exists_voter.
break_exists.
find_apply_lem_hyp in_dedup_was_in.
intro_refined_invariant cronies_term_invariant.
eapply_prop_hyp cronies_term In.
simpl in *.
omega.
- find_apply_lem_hyp handleTimeout_type_strong.
break_or_hyp; break_and.
+ repeat find_rewrite. auto.
+ intros. find_rewrite.
exfalso.
find_apply_lem_hyp wonElection_exists_voter.
break_exists.
find_apply_lem_hyp in_dedup_was_in.
intro_refined_invariant cronies_term_invariant.
eapply_prop_hyp cronies_term In.
simpl in *.
omega.
Qed.

(* Specifications: *)
Lemma leaderLogs_candidateEntries_append_entries :
refined_raft_net_invariant_append_entries leaderLogs_candidateEntries.