Proof using.
unfold inductive_invariant, true_in_reachable, reachable, inductive in *. intros.
break_exists.
match goal with H : refl_trans_1n_trace _ _ _ _ |- _ => induction H end;
intuition eauto.
Qed.
Inductive refl_trans_n1_trace (step : step_relation) : step_relation :=
| RTn1TBase : forall x, refl_trans_n1_trace step x x []
| RTn1TStep : forall x x' x'' cs cs',
refl_trans_n1_trace step x x' cs ->
step x' x'' cs' ->
refl_trans_n1_trace step x x'' (cs ++ cs').

(* Specifications: *)
Lemma RTn1_step :
forall (step : step_relation) x y z l l',
step x y l ->
refl_trans_n1_trace step y z l' ->
refl_trans_n1_trace step x z (l ++ l').