Proof using.
unfold raft_net_invariant_append_entries, nextIndex_safety.
simpl.
intros.
repeat find_higher_order_rewrite.
update_destruct_simplify.
- eauto using nextIndex_safety_preserved, handleAppendEntries_nextIndex_preserved.
- auto.
Qed.

(* Specifications: *)
Lemma handleAppendEntriesReply_nextIndex :
forall h st st' m t es res h',
handleAppendEntriesReply h st h' t es res = (st', m) ->
type st' = Leader ->
type st = Leader /\
((nextIndex st' = nextIndex st \/
(res = true /\
currentTerm st = t /\
nextIndex st' =
(assoc_set name_eq_dec (nextIndex st) h'
(Nat.max (getNextIndex st h') (S (maxIndex es)))))) \/
(res = false /\
currentTerm st = t /\
nextIndex st' =
(assoc_set name_eq_dec (nextIndex st) h'
(pred (getNextIndex st h'))))).