(* 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}.(* 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}.(* 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}.(* 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)).Inductive RR: TT->TT->Prop:=
  | stepstep: forall P x' (stp: R (thing P) x'), RR P (mkTT x' (preservation _ _ (prf P) stp)).

(* Specifications: *)
Lemma filtered_to_unfiltered_safe: forall P, konig.safe _ RR P -> konig.safe X R (thing P).
Lemma unfiltered_to_filtered_safeN: forall n P, konig.safeN X R n (thing P) -> konig.safeN _ RR n P.