Definition assert := { p:pred (K0.knot * KI.other) | boxy expandM p }.
Module Output <: knot_full_variant.KNOT_FULL_OUTPUT with Module KI := Input.
Module KI := Input.
Module K0 := K0.
Definition predicate: Type := assert.

(* Specifications: *)
Lemma boxy_expand_spec: forall (p: pred (K0.knot*KI.other)),
boxy expandM p <->
(fun p: pred (K0.knot*KI.other) =>
forall x y, expandR x y -> proj1_sig p x -> proj1_sig p y) p.
Lemma hered_hereditary : forall (p:K0.knot*KI.other -> Prop),
K0.hered p <->
(hereditary age p /\ (fun p:K0.knot*KI.other -> Prop => forall x y, expandR x y -> p x -> p y) p).