Proof using.
unfold inputs_m.
intros. simpl.
repeat break_match; repeat find_inversion; auto; try discriminate.
Qed.
Definition no_output_at_backup {A} x := forall y, snd x = @inr A _ y ->
fst x = Primary \/
match y with
| [] => True
| [ReadResponse _] => True
| _ => False
end.
Definition no_output_at_backup_trace {A} tr := (forall x, In x tr -> @no_output_at_backup A x).

(* Specifications: *)
Lemma NOABT_tail :
forall A x y,
@no_output_at_backup_trace A (x :: y) ->
no_output_at_backup_trace y.