Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input.
Module KI := Input.
Module K0 := K0.
Definition predicate : Type := pred (K0.knot * KI.other).
Definition pkp: bijection predicate K0.predicate :=
bij_sym (sig_sig_iff_bij hered_hereditary).
End Output.
Module K := knot_full_variant.KnotFull(Input)(Output).
Definition knot := K.knot.
Definition ageable_knot := K.ageable_knot.
Definition squash: (nat * KI.F (pred (knot*KI.other))) -> knot := K.squash.
Definition unsquash: knot -> (nat * KI.F (pred (knot*KI.other))) := K.unsquash.
Definition approx: nat -> pred (knot*KI.other) -> pred (knot*KI.other) :=
K.approx.

(* Specifications: *)
Lemma approx_spec : forall n p k,
approx n p k = (level (fst k) < n /\ p k).