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.
Existing Instance ag_knot.
Existing Instance ag_prod.
Definition approx (n:nat) (p:predicate) : predicate :=
fun w => level w < n /\ p w.

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