Section VotesWithLogTermSanity.
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}.
Ltac start :=
red; unfold votesWithLog_term_sanity; simpl; intros.
Ltac start_update :=
start;
repeat find_higher_order_rewrite;
update_destruct; subst; rewrite_update; [|eauto].

Lemma votesWithLog_term_sanity_cases :
forall net st' ps' h gd d,
votesWithLog_term_sanity net ->
(forall h' : Net.name, st' h' = update name_eq_dec (nwState net) h (gd, d) h') ->
(forall t' h' l',
In (t', h', l') (votesWithLog gd) ->
In (t', h', l') (votesWithLog (fst (nwState net h))) \/
(t' = currentTerm d /\ l' = log d)) ->
currentTerm d >= currentTerm (snd (nwState net h)) ->
votesWithLog_term_sanity {| nwPackets := ps'; nwState := st' |}.