(*  EXport TFP. Does not seem to work? *)
  Definition F := TF.F.Definition T: Type := Prop.Definition T_bot : T := False.Definition other := TF.other.Module TF := TF'.Module TF_G := TyFunctorProp2TyFunctor(TF).Module Knot_G := Knot(TF_G).Definition knot : Type := Knot_G.knot.Definition predicate := (knot * other) -> Prop.Definition squash : (nat * F predicate) -> knot :=
    Knot_G.squash.Definition unsquash : knot -> (nat * F predicate) :=
    Knot_G.unsquash.Definition ag_knot := Knot_G.ag_knot.Definition approx (n:nat) (p:predicate) : predicate :=
     fun w => level w < n /\ p w.

(* Specifications: *)
Lemma squash_unsquash : forall x, squash (unsquash x) = x.
Lemma unsquash_squash : forall n x', unsquash (squash (n,x')) = (n,fmap F (approx n) x').