Section filtered_konig.
Variable X: Type.
Variable Filter: X -> Prop.
Variable R: X->X->Prop.
Hypothesis em: forall P, P \/ ~ P.
Hypothesis  preservation :  forall P P', Filter P -> R P P' -> Filter P'.
(* From the relation R, we derive a, dependently typed relation RR for all elements satyisfying the predicate Filter*)
Record TT :Type:= mkTT {thing: X; prf: Filter thing}.
Inductive RR: TT->TT->Prop:=
| stepstep: forall P x' (stp: R (thing P) x'), RR P (mkTT x' (preservation _ _ (prf P) stp)).

Lemma filtered_to_unfiltered_safe:
forall P,
konig.safe _ RR P ->
konig.safe X R (thing P).