Definition possible_image {X Y} (STEP:X-> Y-> X (*-> Y*) -> Prop) (valid: X -> Y -> Prop)  st st' U:= valid st U /\ (* exists U',  *) STEP st U st' (* U' *).Definition finite_on_x {X Y} (A:X->Y->Prop):=
    exists n (f: nat -> X), forall x y, A x y -> exists i, (i < n) /\ f i = x.

Lemma ksafe_safe': (forall P: Prop, P \/ ~ P) -> forall (propositional_extentionality: True), forall (branches_finitely_on_the_state: forall x : ST, @finite_on_x _ _ (possible_image (fun x y x' => exists y', STEP x y x' y') valid x)), forall st, (forall n U, valid st U -> ksafe st U n) -> (forall U, valid st U -> safe st U).