Definition MonadFunctor: Functor.Definition a_monad_isa_functor T (x: M T): func MonadFunctor T := x.Definition C (s: Set): Set := s.(* type ctor *)

  Definition bind A B (x: C A) (y: A -> C B): C B := y x.Definition ret (A: Set) (x: A): C A := x.Definition M: Monad.Coercion id_isa_monad A (a: C A): M A := a.

(* Specifications: *)
Lemma ext: extMonad M.