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

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