Section SpecLemmas.
Context {orig_base_params : BaseParams}.
Context {one_node_params : OneNodeParams orig_base_params}.
Context {raft_params : RaftParams orig_base_params}.
Proof using.
intros. unfold handleRequestVote, advanceCurrentTerm in *.
repeat break_match; tuple_inversion; simpl in *; intuition; try discriminate;
try solve [exfalso; do_bool; lia].
Qed.
Proof using.
unfold handleRequestVote.
intros.
repeat break_match; repeat find_inversion; intuition idtac.
- simpl in *. discriminate.
- unfold advanceCurrentTerm in *.
break_if; simpl in *; do_bool; intuition.
Qed.

Lemma handleRequestVoteReply_term_votedFor_cases :
forall me st src t v st',
handleRequestVoteReply me st src t v = st' ->
(currentTerm st' = currentTerm st /\
votedFor st' = votedFor st) \/
(currentTerm st < currentTerm st' /\
votedFor st' = None).