Proof using.
unfold haveNewEntries.
intros.
do_bool. split.
- auto using not_empty_intro.
- break_match; auto.
apply Bool.negb_true_iff.
do_bool. intuition eauto.
Qed.
Definition lifted_prevLog_leader_sublog (net : network) : Prop :=
forall leader p t leaderId prevLogIndex prevLogTerm entries leaderCommit,
type (snd (nwState net leader)) = Leader ->
In p (nwPackets net) ->
snd (pBody p) = AppendEntries t leaderId prevLogIndex prevLogTerm entries leaderCommit ->
currentTerm (snd (nwState net leader)) = prevLogTerm ->
0 < prevLogIndex ->
0 < prevLogTerm ->
exists ple, eIndex ple = prevLogIndex /\
eTerm ple = prevLogTerm /\
In ple (log (snd (nwState net leader))).

Lemma prevLog_leader_sublog_lifted :
forall net,
msg_refined_raft_intermediate_reachable net ->
lifted_prevLog_leader_sublog net.