Module Type TY_FUNCTOR.
Parameter F : Type -> Type.
Instance Fs : forall {A}, Setoid A -> Setoid (F A).
Parameter fmap : forall `{As:Setoid A} `{Bs:Setoid B}, Mor As Bs -> Mor (Fs As) (Fs Bs).

Axiom fmap_id : forall `{As:Setoid A}, fmap (idM As) == idM (Fs As).
Axiom fmap_comp : forall `{As:Setoid A} `{Bs:Setoid B} `{Cs:Setoid C}
(f:Mor Bs Cs) (g:Mor As Bs),
fmap f oo fmap g == fmap (f oo g).