Instance Perm_knot : Perm_alg knot :=
Perm_preimage _ _ _ _ unsquash squash squash_unsquash unsquash_squash_join_hom.
Instance Sep_knot: Sep_alg knot :=
Sep_preimage _ _ _  unsquash squash squash_unsquash unsquash_squash_join_hom.

(* Specifications: *)
Lemma core_unsquash : forall x, core x = squash (core (unsquash x)).
Lemma age_join1 :
forall x y z x' : K'.knot,
join x y z ->
age x x' ->
exists y' : K'.knot,
exists z' : K'.knot, join x' y' z' /\ age y y' /\ age z z'.
Lemma age_join2 :
forall x y z z' : K'.knot,
join x y z ->
age z z' ->
exists x' : K'.knot,
exists y' : K'.knot, join x' y' z' /\ age x x' /\ age y y'.
Lemma unage_join1 : forall x x' y' z', join x' y' z' -> age x x' ->
exists y, exists z, join x y z /\ age y y' /\ age z z'.
Lemma unage_join2 :
forall z x' y' z', join x' y' z' -> age z z' ->
exists x, exists y, join x y z /\ age x x' /\ age y y'.
Theorem asa_knot : @Age_alg knot _ K.ageable_knot.
End KnotFullSa.