Proof using.
unfold inductive. intros.
induction H1; auto.
forwards; eauto.
Qed.
Definition inductive_invariant (step : step_relation) (init : A) (P : A -> Prop) :=
P init /\ inductive step P.
Definition reachable step init a :=
exists out, refl_trans_1n_trace step init a out.
Definition true_in_reachable step init (P : A -> Prop) :=
forall a,
reachable step init a ->
P a.

(* Specifications: *)
Theorem true_in_reachable_reqs :
forall (step : step_relation) init (P : A -> Prop),
(P init) ->
(forall a a' out,
step a a' out ->
reachable step init a ->
P a ->
P a') ->
true_in_reachable step init P.