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 unfiltered_to_filtered_safeN:
forall n P,
konig.safeN X R n (thing P) ->
konig.safeN _ RR n P.