Ltac start :=
    repeat match goal with
             | [ H : _ |- _ ] =>
               rewrite update_fun_comm with (f := fst) in H
             | [ H : _ |- _ ] =>
               rewrite update_fun_comm with (f := snd) in H
             | [ H : _ |- _ ] =>
               rewrite update_fun_comm with (f := leaderLogs) in H
           end;
  rewrite update_fun_comm with (f := snd);
  simpl in *;
  match goal with
    | [ H : context [ type ] |- _ ] =>
      rewrite update_fun_comm in H;
        rewrite update_nop_ext' in H by auto
  end;
  match goal with
    | [ H : context [ currentTerm ] |- _ ] =>
      rewrite update_fun_comm in H;
        rewrite update_nop_ext' in H by auto
  end.

Lemma leaderLogs_candidate_entries_rvr : forall net, leaderLogs_candidateEntries net -> votes_correct net -> cronies_correct net -> forall p h t ll e, In (t, ll) (leaderLogs (fst (nwState net h))) -> In e ll -> In p (nwPackets net) -> pBody p = RequestVoteReply (eTerm e) true -> currentTerm (snd (nwState net (pDst p))) = eTerm e -> wonElection (dedup name_eq_dec (pSrc p :: votesReceived (snd (nwState net (pDst p))))) = true -> type (snd (nwState net (pDst p))) <> Candidate.