Corollary SsafeN_ksafe: forall n st,
      SsafeN n (@P_init st) -> forall U, valid st U -> ksafe st U n.

(* Specifications: *)
Lemma ksafe_SsafeN': forall n P, (forall st U, st \In P -> valid st U -> ksafe st U n) -> SsafeN n P.
Lemma ksafe_SsafeN: forall st_init, (forall U, valid st_init U) -> forall n, (forall U, ksafe st_init U n) -> SsafeN n (@P_init st_init).
Lemma Ssafe_safe': forall P, Ssafe P -> forall st U, st \In P -> valid st U -> safe st U.
Lemma Ssafe_safe: forall st_init, (forall U, valid st_init U) -> Ssafe (@P_init st_init) -> forall U, safe st_init U.
Lemma SsafeN_Ssafe: (forall P: Prop, P \/ ~ P) -> forall P, (forall P, finite (SST_step P)) -> (forall n, SsafeN n P) -> Ssafe P.
Lemma finite_Ssafe_safe': (forall P : Prop, P \/ ~ P) -> (forall P : ST -> Prop, finite P -> finite (SST_step P)) -> forall P, (finite P) -> ( forall n : nat, safeN (ST -> Prop) SST_step n P) -> Ssafe P.
Lemma finite_Ssafe_safe: (forall P : Prop, P \/ ~ P) -> (forall P : ST -> Prop, finite P -> finite (SST_step P)) -> forall st, ( forall n : nat, safeN (ST -> Prop) SST_step n (@P_init st)) -> Ssafe (@P_init st).