Local Arguments update {_} {_} {_} _ _ _ _ : simpl never.
Section CausalOrderPreserved.
Context {orig_base_params : BaseParams}.
Context {one_node_params : OneNodeParams orig_base_params}.
Context {raft_params : RaftParams orig_base_params}.
Context {oiai : output_implies_applied_interface}.
Context {aiii : applied_implies_input_interface}.
Context {aemi : applied_entries_monotonic_interface}.
Section inner.
Variable client : clientId.
Variable id : nat.
Variable client' : clientId.
Variable id' : nat.

Lemma output_before_input_not_key_in_input_trace :
forall tr tr' s s',
~ output_before_input client id client' id' tr ->
step_failure s s' tr' ->
output_before_input client id client' id' (tr ++ tr') ->
~ exists i, in_input_trace client' id' i (tr ++ tr').