Lemma quorum_preserved: forall (st st' : name -> electionsData * raft_data) (t0 : term) (ll : list entry) (leader : name), (forall h t leader log, In (t, leader, log) (votesWithLog (fst (st h))) -> In (t, leader, log) (votesWithLog (fst (st' h)))) -> (exists quorum : list name, NoDup quorum /\ length quorum > div2 (length nodes) /\ (forall h : name, In h quorum -> exists log : list entry, moreUpToDate (maxTerm ll) (maxIndex ll) (maxTerm log) (maxIndex log) = true /\ In (t0, leader, log) (votesWithLog (fst (st h))))) -> exists quorum : list name, NoDup quorum /\ length quorum > div2 (length nodes) /\ (forall h : name, In h quorum -> exists log : list entry, moreUpToDate (maxTerm ll) (maxIndex ll) (maxTerm log) (maxIndex log) = true /\ In (t0, leader, log) (votesWithLog (fst (st' h)))).