Section CroniesTermProof.
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}.
Proof using.
intros. unfold handleClientRequest in *.
break_match; find_inversion; intuition.
Qed.
Proof using.
unfold refined_raft_net_invariant_client_request, cronies_term,
update_elections_data_client_request in *.
intros. subst. simpl in *. repeat find_higher_order_rewrite.
update_destruct; subst; rewrite_update; eauto.
simpl in *. find_apply_lem_hyp handleClientRequest_spec.
repeat find_rewrite.
repeat break_match; simpl in *; eauto.
Qed.
(*   H : handleTimeout h' (snd (nwState net h')) = (out, d, l) In h0 (cronies (update_elections_data_timeout h' (nwState net h')) t) *)

Lemma handleTimeout_spec :
forall h st out st' l t h',
handleTimeout h (snd st) = (out, st', l) ->
In h' (cronies (update_elections_data_timeout h st) t) ->
(currentTerm (snd st) <= currentTerm st' /\
(In h' (cronies (fst st) t) \/
t = currentTerm st')).