Proof using.
intros.
unfold candidateEntries in *.
break_exists.  break_and.
exists x.
split; update_destruct; subst; rewrite_update; auto; simpl.
+ rewrite update_elections_data_requestVote_cronies_same. auto.
+ intros.
match goal with
| [ |- context [advanceCurrentTerm ?st ?t] ] =>
pose proof advanceCurrentTerm_same_or_type_follower st t
end.
intuition; try congruence.
repeat find_rewrite. auto.
Qed.

(* Specifications: *)
Lemma handleRequestVote_preserves_candidateEntries :
forall net h h' t lli llt d e m,
handleRequestVote h (snd (nwState net h)) t h' lli llt = (d, m) ->
candidateEntries e (nwState net) ->
candidateEntries e (update name_eq_dec (nwState net) h
(update_elections_data_requestVote
h h' t h' lli llt (nwState net h), d)).