Built with
Alectryon, running Coq+SerAPI v8.16.0+0.16.3. Bubbles (
) indicate interactive fragments: hover for details, tap to reveal contents. Use
Ctrl+↑ Ctrl+↓ to navigate,
Ctrl+🖱️ to focus. On Mac, use
⌘ instead of
Ctrl.
From Tealeaves Require Export
Classes.Functor
Classes.Categorical.ContainerFunctor
Classes.Kleisli.Monad
Functors.Early.Subset.
Import Subset.Notations.
Import ContainerFunctor.Notations.
(** * Typeclasses *)
(********************************************************************)
Class ContainerMonad
(T : Type -> Type)
`{Bind T T} `{Return T} `{ToSubset T} :=
{ contm_monad :> Monad T;
contm_hom :> MonadHom T subset (@tosubset T _);
contm_pointwise : forall (A B : Type) (t : T A) (f g : A -> T B),
(forall a, a ∈ t -> f a = g a) -> bind f t = bind g t;
}.
Class ContainerRightModule
(T U : Type -> Type)
`{Bind T T}
`{Bind T U}
`{Return T}
`{ToSubset T}
`{ToSubset U} :=
{ contmod_module :> RightModule T U;
contmod_hom :> ParallelRightModuleHom T subset U subset
(@tosubset T _)
(@tosubset U _);
contmod_pointwise : forall (A B : Type) (t : U A) (f g : A -> T B),
(forall a, a ∈ t -> f a = g a) -> bind f t = bind g t;
}.