Proof using.
intros. unfold true_in_reachable, reachable in *.
intros. break_exists.
match goal with H : refl_trans_1n_trace _ _ _ _ |- _ => induction H end;
intuition eauto.
match goal with H : P _ -> _ |- _ => apply H end;
intros; break_exists;
match goal with H : forall _ _ _, step _ _ _ -> _ |- _ => eapply H end;
eauto; eexists; econstructor; eauto.
Qed.

(* Specifications: *)
Theorem inductive_invariant_true_in_reachable :
forall step init P,
inductive_invariant step init P ->
true_in_reachable step init P.