Definition squash_unsquash := K.squash_unsquash.Definition unsquash_squash := K.unsquash_squash.Definition knot_age1 := K.knot_age1.Definition knot_level := K.knot_level.Definition knot_rel (k1 k2:knot) :=
    let (n,f) := unsquash k1 in
    let (n',f') := unsquash k2 in
    n = n' /\ KI.Rel assert f f'.

(* Specifications: *)
Lemma expandM_spec : forall k k' o o', expandM (k,o) (k',o') = (K.knot_rel k k' /\ KI.ORel o o').
Lemma unsquash_inj : forall k1 k2, unsquash k1 = unsquash k2 -> k1 = k2.
Lemma squash_surj : forall k, exists n, exists Fp, squash (n, Fp) = k.
Lemma unsquash_approx : forall k n Fp, unsquash k = (n, Fp) -> Fp = fmap KI.F (approx n) Fp.
Lemma pred_ext : forall (p1 p2: assert), (forall x, proj1_sig p1 x = proj1_sig p2 x) -> p1 = p2.
Lemma approx_spec': forall n p ko, proj1_sig (approx n p) ko = if (le_gt_dec n (level (fst ko))) then False else proj1_sig p ko.
Lemma approx_approx1 : forall m n, approx n = approx n oo approx (m+n).
Lemma approx_approx2 : forall m n, approx n = approx (m+n) oo approx n.