Section GhostLogCorrectProof.
Context {orig_base_params : BaseParams}.
Context {one_node_params : OneNodeParams orig_base_params}.
Context {raft_params : RaftParams orig_base_params}.
Context {rmri : raft_msg_refinement_interface}.
Context {nisi : nextIndex_safety_interface}.
Context {rlmli : refined_log_matching_lemmas_interface}.
Definition lifted_nextIndex_safety net : Prop :=
forall h h',
type (snd (nwState net h)) = Leader ->
pred (getNextIndex (snd (nwState net h)) h') <= maxIndex (log (snd (nwState net h))).
Proof using nisi rmri.
intros.
enough (nextIndex_safety (deghost (mgv_deghost net))) by
(unfold nextIndex_safety, lifted_nextIndex_safety, deghost, mgv_deghost in *;
simpl in *;
repeat break_match; simpl in *; auto).
apply msg_lift_prop_all_the_way; eauto using nextIndex_safety_invariant.
Qed.
Definition lifted_entries_contiguous net :=
forall h,
contiguous_range_exact_lo (log (snd (nwState net h))) 0.
Definition lifted_entries_sorted net :=
forall h,
sorted (log (snd (nwState net h))).

Lemma lifted_entries_contiguous_invariant :
forall (net : @network _ raft_msg_refined_multi_params),
msg_refined_raft_intermediate_reachable net ->
lifted_entries_contiguous net.