Proof using ctgli rri.
intros.
apply refined_raft_net_invariant; auto.
- term_sanity_start; contradiction.
- term_sanity_unchanged update_elections_data_client_request_leaderLogs.
- term_sanity_unchanged update_elections_data_timeout_leaderLogs.
- term_sanity_unchanged update_elections_data_appendEntries_leaderLogs.
- term_sanity_unchanged.
- term_sanity_unchanged leaderLogs_update_elections_data_requestVote.
- apply leaderLogs_term_sanity_request_vote_reply.
- term_sanity_break_update.
- term_sanity_break_update.
- term_sanity_start; find_reverse_higher_order_rewrite; eauto.
- term_sanity_break_update.
Qed.
Ltac currentTerm_sanity_start :=
red; unfold leaderLogs_currentTerm_sanity; simpl; intros.
Ltac currentTerm_sanity_start_update :=
currentTerm_sanity_start;
repeat find_higher_order_rewrite; update_destruct; rewrite_update; [|eauto].

(* Specifications: *)
Lemma leaderLogs_currentTerm_sanity_unchanged :
forall net st' h gd d ps',
leaderLogs_currentTerm_sanity net ->
(forall h' : Net.name, st' h' = update name_eq_dec (nwState net) h (gd, d) h') ->
leaderLogs gd = leaderLogs (fst (nwState net h)) ->
currentTerm d >= currentTerm (snd (nwState net h)) ->
leaderLogs_currentTerm_sanity {| nwPackets := ps'; nwState := st' |}.