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.

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.