Ltac start :=
    red; unfold votesWithLog_term_sanity; simpl; intros.Ltac start_update :=
    start;
    repeat find_higher_order_rewrite;
    update_destruct; subst; rewrite_update; [|eauto].

(* Specifications: *)
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' |}.