Proof using one_node_params.
intros. eapply pigeon with (l := nodes).
- apply name_eq_dec.
- intros. apply (@all_names_nodes _ multi_params).
- intros. apply (@all_names_nodes _ multi_params).
- apply (@no_dup_nodes _ multi_params).
- assumption.
- assumption.
- apply div2_correct; assumption.
Qed.

(* two different hosts cannot both have the same term in their leader logs *)
Lemma contradiction_case :
forall (net : network ) t ll ll' (h h' : name) (p : packet (params := refined_multi_params (multi_params := multi_params))) t0 v xs ys,
refined_raft_intermediate_reachable net ->
pBody p = RequestVoteReply (raft_params := raft_params) t0 v ->
nwPackets net = xs ++ p :: ys ->
In (t, ll) (leaderLogs (fst (nwState net h))) ->
In (t, ll') (leaderLogs (update_elections_data_requestVoteReply (pDst p) (pSrc p) t0 v (nwState net (pDst p)))) ->
pDst p = h' ->
pDst p <> h ->
False.