(* * Copyright (c) 2009-2010, Andrew Appel, Robert Dockins and Aquinas Hobor. * *)
(* Knots with all the bells and whistles *)
Local Open Scope nat_scope.
Module Type TY_FUNCTOR_FULL.
Parameter F : Type -> Type -> Type.
Parameter bimap : forall A B C D, (A -> B) -> (C -> D) -> F B C -> F A D.
Arguments bimap [A B C D] _ _ _.

Axiom bimap_comp : forall A B C D E F (f:B -> C) (g:A -> B) (s:F -> E) (t:E -> D),
bimap s f oo bimap t g = bimap (t oo s) (f oo g).