Proof using.
intros.
unfold cacheApplyEntry, applyEntry in *.
repeat break_match; subst; repeat find_inversion; do_bool;
simpl in *; auto; congruence.
Qed.

Lemma cacheApplyEntry_stateMachine_no_apply :
forall st e os st' id o,
cacheApplyEntry st e = (os, st') ->
getLastId st (eClient e) = Some (id, o) ->
eId e <= id ->
stateMachine st' = stateMachine st.