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.Kleisli.ContainerMonad
Classes.Kleisli.TraversableMonad
Classes.Kleisli.Theory.TraversableFunctor
Classes.Kleisli.Theory.ContainerMonad.Import Monoid.Notations.Import Applicative.Notations.Import TraversableFunctor.Notations.Import TraversableMonad.Notations.Import ContainerFunctor.Notations.Import Subset.Notations.#[local] Generalizable VariablesU T G A B C ϕ M.#[local] Arguments ret T%function_scope {Return} {A}%type_scope _.Import Kleisli.TraversableMonad.DerivedInstances.(** * Theory of Traversable Monads *)(**********************************************************************)Sectiontraversable_monad_theory.Context
`{ret_inst: Return T}
`{Map_T_inst: Map T}
`{Traverse_T_inst: Traverse T}
`{Bind_T_inst: Bind T T}
`{Bindt_T_inst: Bindt T T}
`{ToSubset_T_inst: ToSubset T}
`{! Compat_Map_Bindt T T}
`{! Compat_Traverse_Bindt T T}
`{! Compat_Bind_Bindt T T}
`{! Compat_ToSubset_Traverse T}.Context
`{Map_U_inst: Map U}
`{Traverse_U_inst: Traverse U}
`{Bind_U_inst: Bind T U}
`{Bindt_U_inst: Bindt T U}
`{ToSubset_U_inst: ToSubset U}
`{! Compat_Map_Bindt T U}
`{! Compat_Traverse_Bindt T U}
`{! Compat_Bind_Bindt T U}
`{! Compat_ToSubset_Traverse U}.Context
`{Monad_inst: ! TraversableMonad T}
`{Module_inst: ! TraversableRightPreModule T U}.(** ** <<mapReduce>> on Traversble Monads *)(********************************************************************)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M
forall (B : Type) (g : B -> M) (A : Type)
(f : A -> G (T B)),
map (mapReduce g) ∘ bindt f =
mapReduce (map (mapReduce g) ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M
forall (B : Type) (g : B -> M) (A : Type)
(f : A -> G (T B)),
map (mapReduce g) ∘ bindt f =
mapReduce (map (mapReduce g) ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
bindt (map (bindt (id ∘ g)) ∘ f) =
bindt (id ∘ map (bindt (id ∘ g)) ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
Map_compose G (const M) =
(fun (XY : Type) (_ : X -> Y) => id)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
Mult_compose G (const M) = Mult_const
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
Map_compose G (const M) =
(fun (XY : Type) (_ : X -> Y) => id)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type f': A' -> B'
Map_compose G (const M) A' B' f' = id
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type f': A' -> B'
map (map f') = id
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type f': A' -> B'
map id = id
nowrewrite (fun_map_id (F := G)).
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B)
Mult_compose G (const M) = Mult_const
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type a: (G ∘ const M) A' b: (G ∘ const M) B'
Mult_compose G (const M) A' B' (a, b) =
Mult_const A' B' (a, b)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type a: (G ∘ const M) A' b: (G ∘ const M) B'
map mult (fst (a, b) ⊗ snd (a, b)) = a ● b
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type a: G (const M A') b: G (const M B')
map mult (fst (a, b) ⊗ snd (a, b)) = a ● b
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type a, b: G M
map mult (fst (a, b) ⊗ snd (a, b)) = a ● b
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U G: Type -> Type Map_G: Map G Pure_G: Pure G Mult_G: Mult G H: Applicative G M: Type op: Monoid_op M unit0: Monoid_unit M H0: Monoid M B: Type g: B -> M A: Type f: A -> G (T B) A', B': Type a, b: G M
map mult (a ⊗ b) = a ● b
reflexivity.Qed.
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (B : Type) (g : B -> M) (A : Type)
(f : A -> T B),
mapReduce g ∘ bind f = mapReduce (mapReduce g ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (B : Type) (g : B -> M) (A : Type)
(f : A -> T B),
mapReduce g ∘ bind f = mapReduce (mapReduce g ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: B -> M A: Type f: A -> T B
mapReduce g ∘ bind f = mapReduce (mapReduce g ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: B -> M A: Type f: A -> T B
traverse g ∘ bind f = traverse (traverse g ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: B -> M A: Type f: A -> T B
bindt (traverse g ∘ f) = traverse (traverse g ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: B -> M A: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M B: Type g: B -> M A: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (A : Type) (f : A -> M),
mapReduce f ∘ ret T = f
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M
forall (A : Type) (f : A -> M),
mapReduce f ∘ ret T = f
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: A -> M
mapReduce f ∘ ret T = f
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: A -> M
traverse f ∘ ret T = f
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: A -> M
bindt (map (ret T) ∘ f) ∘ ret T = f
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U M: Type op: Monoid_op M unit0: Monoid_unit M H: Monoid M A: Type f: A -> M
map (ret T) ∘ f = f
reflexivity.Qed.(** ** <<tolist>> on Traversable Monads *)(********************************************************************)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forallA : Type, tolist ∘ ret T = ret list
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forallA : Type, tolist ∘ ret T = ret list
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type
tolist ∘ ret T = ret list
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type
mapReduce (ret list) ∘ ret T = ret list
nowrewrite mapReduce_ret.Qed.
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (AB : Type) (f : A -> T B),
tolist ∘ bind f = bind (tolist ∘ f) ∘ tolist
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (AB : Type) (f : A -> T B),
tolist ∘ bind f = bind (tolist ∘ f) ∘ tolist
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
tolist ∘ bind f = bind (tolist ∘ f) ∘ tolist
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
reflexivity.Qed.(** ** <<tosubset>> on Traversable Monads *)(********************************************************************)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forallA : Type, tosubset ∘ ret T = ret subset
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forallA : Type, tosubset ∘ ret T = ret subset
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type
tosubset ∘ ret T = ret subset
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type
mapReduce (ret subset) ∘ ret T = ret subset
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type
ret subset = ret subset
reflexivity.Qed.
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (AB : Type) (f : A -> T B),
tosubset ∘ bind f = bind (tosubset ∘ f) ∘ tosubset
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (AB : Type) (f : A -> T B),
tosubset ∘ bind f = bind (tosubset ∘ f) ∘ tosubset
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B
reflexivity.Qed.(** ** <<element_of>> on Traversable Monads *)(********************************************************************)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (A : Type) (a : A),
element_of a ∘ ret T = {{a}}
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (A : Type) (a : A),
element_of a ∘ ret T = {{a}}
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type a: A
element_of a ∘ ret T = {{a}}
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type a, a': A
(element_of a ∘ ret T) a' = {{a}} a'
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type a, a': A
tosubset (ret T a') a = {{a}} a'
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type a, a': A
(tosubset ∘ ret T) a' a = {{a}} a'
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type a, a': A
ret subset a' a = {{a}} a'
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A: Type a, a': A
(a' = a) = (a = a')
now propext.Qed.
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (AB : Type) (f : A -> T B) (b : B),
element_of b ∘ bind f =
mapReduce (mapReduce {{b}} ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U
forall (AB : Type) (f : A -> T B) (b : B),
element_of b ∘ bind f =
mapReduce (mapReduce {{b}} ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B b: B
element_of b ∘ bind f =
mapReduce (mapReduce {{b}} ∘ f)
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B b: B
T: Type -> Type ret_inst: Return T Map_T_inst: Map T Traverse_T_inst: Traverse T Bind_T_inst: Bind T T Bindt_T_inst: Bindt T T ToSubset_T_inst: ToSubset T Compat_Map_Bindt0: Compat_Map_Bindt T T Compat_Traverse_Bindt0: Compat_Traverse_Bindt T T Compat_Bind_Bindt0: Compat_Bind_Bindt T T Compat_ToSubset_Traverse0: Compat_ToSubset_Traverse T U: Type -> Type Map_U_inst: Map U Traverse_U_inst: Traverse U Bind_U_inst: Bind T U Bindt_U_inst: Bindt T U ToSubset_U_inst: ToSubset U Compat_Map_Bindt1: Compat_Map_Bindt T U Compat_Traverse_Bindt1: Compat_Traverse_Bindt T U Compat_Bind_Bindt1: Compat_Bind_Bindt T U Compat_ToSubset_Traverse1: Compat_ToSubset_Traverse U Monad_inst: TraversableMonad T Module_inst: TraversableRightPreModule T U A, B: Type f: A -> T B b: B