Proof using.
intros.
red. exists e.
intuition.
- red. auto.
- unfold applied_entries in *. break_match.
+ find_apply_lem_hyp in_rev.
find_apply_lem_hyp removeAfterIndex_in.
eauto.
+ simpl in *. intuition.
Qed.

Theorem raft_linearizable' :
forall failed net tr,
input_correct tr ->
step_failure_star step_failure_init (failed, net) tr ->
exists l tr1 st,
equivalent _ (import tr) l /\
exported (get_input tr) (get_output tr) l tr1 /\
step_1_star init st tr1.