Section VotesVotesWithLogCorrespond.
Context {orig_base_params : BaseParams}.
Context {one_node_params : OneNodeParams orig_base_params}.
Context {raft_params : RaftParams orig_base_params}.
Context {rri : raft_refinement_interface}.

Lemma votes_votesWithLog_correspond_cases :
forall net h gd d ps' st',
votes_votesWithLog_correspond net ->
(forall h' : Net.name, st' h' = update name_eq_dec (nwState net) h (gd, d) h') ->
(votes gd = votes (fst (nwState net h)) /\  (* unchanged *)
votesWithLog gd = votesWithLog (fst (nwState net h))) \/
(exists t n l,  (* add entry *)
votes gd = (t, n) :: votes (fst (nwState net h)) /\
votesWithLog gd = (t, n, l) :: votesWithLog (fst (nwState net h))) ->
votes_votesWithLog_correspond {| nwPackets := ps'; nwState := st' |}.