Module Type KNOT_FULL.
Declare Module KI: KNOT_INPUT__MIXVARIANT_HERED_T_OTH_REL.
Declare Module KO: KNOT_FULL_OUTPUT with Module KI := KI.
Definition knot : Type := KO.K0.knot.
Definition ageable_knot : ageable knot := KO.K0.ageable_knot.
Existing Instance ageable_knot.
Definition predicate: Type := KO.predicate.
Parameter squash : (nat * F predicate) -> knot.
Parameter unsquash : knot -> (nat * F predicate).
Parameter approx : nat -> predicate -> predicate.
Definition knot_rel (k1 k2:knot) :=
let (n,f) := unsquash k1 in
let (n',f') := unsquash k2 in
n = n' /\ KI.Rel predicate f f'.

Axiom knot_rel_spec: forall k1 k2: knot,
knot_rel k1 k2 = KO.K0.knot_rel k1 k2.