Ltac ctsc_start :=
    red; unfold leaderLogs_currentTerm_sanity_candidate; simpl; intros.Ltac ctsc_start_update :=
    ctsc_start;
    repeat find_higher_order_rewrite; update_destruct; rewrite_update; [|eauto].

(* Specifications: *)
Lemma leaderLogs_currentTerm_sanity_candidate_unchanged : forall net st' h gd d ps', leaderLogs_currentTerm_sanity_candidate 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)) -> (type d = type (snd (nwState net h)) \/ type d <> Candidate) -> leaderLogs_currentTerm_sanity_candidate {| nwPackets := ps'; nwState := st' |}.