Personal tools

User:Michiexile/MATH198/Lecture 8

From HaskellWiki

Jump to: navigation, search



1 Algebras over monads

We recall from the last lecture the definition of an Eilenberg-Moore algebra over a monad T = (T,η,μ):

Definition An algebra over a monad T in a category C (a T-algebra) is a morphism \alpha\in C(TA, A), such that the diagrams below both commute:

EilenbergMooreUnity.png EilenbergMooreAssociativity.png

While a monad corresponds to the imposition of some structure on the objects in a category, an algebra over that monad corresponds to some evaluation of that structure.

1.1 Example: monoids

Let T be the Kleene star monad - the one we get from the adjunction of free and forgetful functors between Monoids and Sets. Then a T-algebra on a set A is equivalent to a monoid structure on A.

Indeed, if we have a monoid structure on A, given by m:A^2\to A and u:1\to A, we can construct a T-algebra by

α([]) = u
\alpha([a_1,a_2,\dots,a_n]) = m(a_1,\alpha([a_2,\dots,a_n]))

This gives us, indeed, a T < math > − algebrastructureon < math > A. Associativity and unity follows from the corresponding properties in the monoid.

On the other hand, if we have a T-algebra structure on A, we can construct a monoid structure by setting

u = α([])
m(a,b) = α([a,b])

It is clear that associativity of m follows from the associativity of α, and unitality of u follows from the unitality of α.

(((potential headache: shouldn't η show up more? Instead of the empty list, maybe?)))

1.2 Example: Vector spaces

We have free and forgetful functors

Set \to^{free} k-Vect \to^{forgetful} Set

forming an adjoint pair; where the free functor takes a set S and returns the vector space with basis S; while the forgetful functor takes a vector space and returns the set of all its elements.

The composition of these yields a monad T in Set taking a set S to the set of all formal linear combinations of elements in S. The monad multiplication takes formal linear combinations of formal linear combinations and multiplies them out:

3(2v + 5w) − 5(3v + 2w) = 6v + 15w − 15v − 10w = − 9v + 5w

A T-algebra is a map \alpha: TA\to A that acts like a vector space in the sense that \alpha(\sum\alpha_i(\sum\beta_jv_j)) = \alpha(\sum\alpha_i\beta_jv_j).

We can define \lambda\cdot v = \alpha(\lambda v) and v + w = α(v + w). The operations thus defined are associative, distributive, commutative, and everything else we could wish for in order to define a vector space - precisely because the operations inside TA are, and α is associative.

The moral behind these examples is that using monads and monad algebras, we have significant power in defining and studying algebraic structures with categorical and algebraic tools. This paradigm ties in closely with the theory of operads - which has its origins in topology, but has come to good use within certain branches of universal algebra.

An (non-symmetric) operad is a graded set O = \bigoplus_i O_i equipped with composition operations \circ_i: O_n\oplus O_m\to O_{n+m-1} that obey certain unity and associativity conditions. As it turns out, non-symmetric operads correspond to the summands in a monad with polynomial underlying functor, and from a non-symmetric operad we can construct a corresponding monad.

The designator non-symmetric floats in this text o avoid dealing with the slightly more general theory of symmetric operads - which allow us to resort the input arguments, thus including the symmetrizer of a symmetric monoidal category in the entire definition.

To read more about these correspondences, I can recommend you start with: the blog posts Monads in Mathematics here: [1]

2 Algebras over endofunctors

Suppose we started out with an endofunctor that is not the underlying functor of a monad - or an endofunctor for which we don't want to settle on a monadic structure. We can still do a lot of the Eilenberg-Moore machinery on this endofunctor - but we don't get quite the power of algebraic specification that monads offer us. At the core, here, lies the lack of associativity for a generic endofunctor - and algebras over endofunctors, once defined, will correspond to non-associative correspondences to their monadic counterparts.

Definition For an endofunctor P:C\to C, we define a P-algebra to be an arrow \alpha\in C(PA,A).

A homomorphism of P-algebras \alpha\to\beta is some arrow f:A\to B such that the diagram below commutes:


This homomorphism definition does not need much work to apply to the monadic case as well.

2.1 Example: Groups

A group is a set G with operations u: 1\to G, i: G\to G, m: G\times G\to G, such that u is a unit for m, m is associative, and i is an inverse.

Ignoring for a moment the properties, the theory of groups is captured by these three maps, or by a diagram


3 Homework

  1. Find a monad whose algebras are associative algebras: vector spaces with a binary, associative, unitary operation (multiplication) defined on them. Factorize the monad into a free/forgetful adjoint pair.
  2. Find an endofunctor of Hask whose initial object describes trees that are either binary of ternary at each point, carrying values from some A in the leaves.
  3. Write an implementation of the monad of vector spaces in Haskell. If this is tricky, restrict the domain of the monad to, say, a 3-element set, and implement the specific example of a 3-dimensional vector space as a monad. Hint: [2] has written about this approach.