Proof using.
intros tr.
pose proof list_destruct_last _ tr.
intuition.
- subst. destruct tr'; discriminate.
- break_exists. subst.
rewrite inputs_1_app in *.
simpl in *.
find_apply_lem_hyp app_inj_tail. intuition eauto.
Qed.

(* Specifications: *)
Lemma step_1_snoc_inv :
forall st st' tr t,
step_1_star st st' (tr ++ [t]) ->
exists st2,
step_1_star st st2 tr /\
step_1 st2 st' [t].