It looks like you're new here. If you want to get involved, click one of these buttons!

- All Categories 2.2K
- Programming with Categories Course 21
- Exercises - Programming with Categories Course 15
- Applied Category Theory Course 341
- Applied Category Theory Seminar 4
- Exercises - Applied Category Theory Course 149
- Discussion Groups 50
- How to Use MathJax 15
- Chat 487
- Azimuth Code Project 108
- News and Information 147
- Azimuth Blog 149
- Azimuth Forum 29
- Azimuth Project 189
- - Strategy 108
- - Conventions and Policies 21
- - Questions 43
- Azimuth Wiki 711
- - Latest Changes 701
- - - Action 14
- - - Biodiversity 8
- - - Books 2
- - - Carbon 9
- - - Computational methods 38
- - - Climate 53
- - - Earth science 23
- - - Ecology 43
- - - Energy 29
- - - Experiments 30
- - - Geoengineering 0
- - - Mathematical methods 69
- - - Meta 9
- - - Methodology 16
- - - Natural resources 7
- - - Oceans 4
- - - Organizations 34
- - - People 6
- - - Publishing 4
- - - Reports 3
- - - Software 21
- - - Statistical methods 2
- - - Sustainability 4
- - - Things to do 2
- - - Visualisation 1
- General 41

Options

I'm going to end my lectures on Chapter 2 now, since my plan is to spend three weeks on each chapter, and I'm eager to tell you about *categories* - the subject of the next chapter!

There are a few loose ends I'd like to tie up, though.

One is a trick for building \(\mathrm{Cost}\)-categories from pictures like this:

This is called a **\(\mathbf{Cost}\)-weighted graph** since it's a graph with edges labeled by costs. You can think of the vertices of the graph as cities, and the edges as ways to get from one city to another. Each of these ways has a cost.

Here's how we build a \(\mathrm{Cost}\)-category \(\mathcal{X}\) from this data. We take \(\mathrm{Ob}(\mathcal{X})\), the set of objects of \(\mathcal{X}\), to be the the set of vertices of our graph. For each pair of vertices \(x,y\) we then need to choose a cost \(\mathcal{X}(x,y)\). To do this, we find the cost of the cheapest path from \(x\) to \(y\). Here a "path" is a sequence of edges in our graph, each starting where the last one ended. The "cost" of a path is the sum of the costs of all the edges in this path.

For example, in the picture above there are exactly two paths from \(B\) to \(C\). One goes from \(B\) to \(A\) to \(C\) and its cost is \(2 + 3 = 5\). The other goes from \(B\) to \(D\) to \(C\) and its cost is \(5 + 6 = 11\). So,

$$ \mathcal{X}(B, C) = 5 . $$ All this should be familiar if you often travel, paying fares for planes, trains, buses and taxis. The nice thing is that this recipe really obeys the two rules of a \(\mathrm{Cost}\)-category! We have

$$ \mathcal{X}(x,x) = 0 $$ since to get from \(x\) to itself we can always use the path with no edges, which has cost \(0\). We also have the triangle inequality

$$ \mathcal{X}(x,z) \le \mathcal{X}(x,y) + \mathcal{X}(y,z) $$
since *one* way to get from \(x\) to \(z\) is to take the cheapest path from \(x\) to \(y\) and then the cheapest path from \(y\) to \(z\).

I'm being quick and sloppy here, but you can see more details in Section 2.3.3 of the book.

**Puzzle 93.** How should we define \(\mathcal{X}(x,y)\) when there is no path from \(x\) to \(y\)? How can we define \(\mathcal{X}(x,y)\), more rigorously than I've done, yet also very simply, so that this case is not an "exception"?

We can generalize this whole story, replacing \(\mathbf{Cost}\) by any unital commutative quantale. These are a very nice kind of symmetric monoidal poset - another example is our friend \(\mathbf{Bool}\). You can read about them in Section 2.5 of the book. When \(\mathcal{V}\) is one of these, you can build a \(\mathcal{V}\)-category from any \(\mathcal{V}\)-weighted graph, and the book gives a nice algorithm for doing it.

One other loose end involves maps between enriched categories. I explained last time what a map between two \(\mathcal{V}\)-categories is like - it's called a \(\mathcal{V}\)-functor. But I didn't tell you how to map a \(\mathcal{V}\)-category to a \(\mathcal{W}\)-category! You can only do this when we have a map from \(\mathcal{V}\) to \(\mathcal{W}\).

This involves a beautiful trick called **change of base**.

**Puzzle 94.** Suppose \(\mathcal{V}\) and \(\mathcal{W}\) are monoidal posets and \(f: \mathcal{V} \to \mathcal{W}\) is a monoidal monotone. Suppose \(\mathcal{X}\) is a \(\mathcal{V}\)-category. Show how to construct a \(\mathcal{W}\)-category \(\mathcal{X}_f\) with the same objects as \(\mathcal{X}\) and

$$ \mathcal{X}_f(x,x') = f(\mathcal{X}(x,x')) $$ for all objects \(x,x'\). Hint: follow your nose, don't do anything fancy.

Once you've done this, you can map your \(\mathcal{V}\)-category \(\mathcal{X}\) to a \(\mathcal{W}\)-category \(\mathcal{Y}\). First you use change of base to turn \(\mathcal{X}\) into a \(\mathcal{W}\)-category \(\mathcal{X}_f\), and then you pick a \(\mathcal{W}\)-functor

$$ F : \mathcal{X}_f \to \mathcal{Y} .$$ In short: first you move \(\mathcal{X}\) to the world where \(\mathcal{Y}\) lives, and then it can talk to \(\mathcal{Y}\)!

To understand the usefulness of this, you need to see examples. I'll get you started here:

**Puzzle 95.** Show that there is a monoidal monotone \(f : \mathbf{Cost} \to \mathbf{Bool} \) sending \(\infty\) to \(\texttt{false}\) everything else to \(\texttt{true}\). In economics, this means "if the cost of something is infinite, nobody can do it - otherwise it's possible, at least if you're rich enough".

**Puzzle 96.** Take this \(\mathbf{Cost}\)-graph

turn it into a \(\mathbf{Cost}\)-category \(\mathcal{X}\), and then use change of base to create the \(\mathbf{Bool}\)-category \(\mathcal{X}_f\). Describe \(\mathcal{X}_f\) in detail and also say what it means in terms of travel routes!

I also feel bad because I didn't get as deep into some applications as I'd like - for example, Tobias Fritz's theorems justifying the use of *real numbers* to measure the value of resources in some cases (but not in others). I'd be happy to talk about them in our discussions, though! You can get started by reading these blog articles:

Tobias Fritz, Resource convertibility (part 1),

*Azimuth*, 7 April 2015.Tobias Fritz, Resource convertibility (part 2),

*Azimuth*, 10 April 2015.Tobias Fritz, Resource convertibility (part 3),

*Azimuth*, 13 April 2015.

## Comments

If there is no path from \(x\) to \(y\), then we could view it as being the case that no matter how long we take, we will

get from from \(x\) to \(y\), i.e.\(\mathcal{X}(x,y) = \infty\).never`>**Puzzle 93.** How should we define \\(\mathcal{X}(x,y)\\) when there is no path from \\(x\\) to \\(y\\)? How can we define \\(\mathcal{X}(x,y)\\), more rigorously than I've done, yet also very simply, so that this case is not an "exception"? If there is no path from \\(x\\) to \\(y\\), then we could view it as being the case that no matter how long we take, we will ***never*** get from from \\(x\\) to \\(y\\), i.e.\\(\mathcal{X}(x,y) = \infty\\).`

That's the right answer! And that's one reason it's so nice to have \(\infty\) in our set of "costs" (or "times").

So, I invite others to answer the second part of the question! I was very sloppy about the definition of \(\mathcal{X}(x,y)\). If we do it carefully, the answer "\(\infty\)" should pop out in this case

automatically, without any special extra rule.`That's the right answer! And that's one reason it's so nice to have \\(\infty\\) in our set of "costs" (or "times"). So, I invite others to answer the second part of the question! I was very sloppy about the definition of \\(\mathcal{X}(x,y)\\). If we do it carefully, the answer "\\(\infty\\)" should pop out in this case _automatically_, without any special extra rule.`

John:

Unless we're working in \(\mathbb{Z}/10\mathbb{Z}\), I think that should equal 11!

`John: > The other goes from B to D to C and its cost is 5+6=1 Unless we're working in \\(\mathbb{Z}/10\mathbb{Z}\\), I think that should equal 11!`

We should take \(\mathcal{X}(x, y)\) to be the meet -- the greatest lower bound -- over all paths in the graph from \(x\) to \(y\). When there are no such paths, every value is a lower bound of this set, so we just take the greatest -- in this case, that's \(\infty\).

More generally:

\[ \mathcal{X}(x, y) = \bigwedge \left\{ \bigotimes p \mid p \text{ is a path from } x \text{ to } y \right\} \]

`> So, I invite others to answer the second part of the question! I was very sloppy about the definition of \\(\mathcal{X}(x,y)\\). If we do it carefully, the answer "\\(\infty\\)" should pop out in this case _automatically_, without any special extra rule. We should take \\(\mathcal{X}(x, y)\\) to be the meet -- the greatest lower bound -- over all paths in the graph from \\(x\\) to \\(y\\). When there are no such paths, every value is a lower bound of this set, so we just take the greatest -- in this case, that's \\(\infty\\). More generally: \\[ \mathcal{X}(x, y) = \bigwedge \left\\{ \bigotimes p \mid p \text{ is a path from } x \text{ to } y \right\\} \\]`

Jonathan - right! Defining \(\mathcal{X}(x,y)\) in terms of a

meetis also useful in the case when there areinfinitely manypaths from \(x\) to \(y\). As long as our symmetric monoidal preorder has all meets, we're fine. And a "quantale" has all meets.Here's how I'd give the formula. In category theory, a

graphis a set \(V\) ofverticesand a set \(E\) ofedges, together with maps \(s,t : E \to V\) giving the source and target (starting-point and ending-point) of each edge. Given a graph, apathfrom a vertex \(x\) to a vertex \(y\) is a finite sequence of edges \((e_1, \dots, e_n)\) with$$ s(e_1) = x, \quad t(e_1) = s(e_2), \quad \dots, \quad t(e_{n-1}) = s(e_n), \quad t(e_n) = y. $$ For any symmetric monoidal poset \(\mathcal{V}\), a

\(\mathcal{V}\)-weighted graphis a graph together with a map$$ \ell: E \to \mathcal{V} $$ assigning each edge an element of \(\mathcal{V}\). We define the

lengthof a path \(p = (e_1, \dots, e_n)\) in a \(\mathcal{V}\)-weighted graph to be$$ L(p) = \ell(e_1) \otimes \cdots \otimes \ell(e_n) .$$ Then we define

$$ \mathcal{X}(x,y) = \bigwedge \{ L(p) : \; p \textrm{ is a path from } x \textrm{ to } y \} .$$ This will exist if \(\mathcal{V}\) has all meets.

Puzzle 97.Under what conditions on \(\mathcal{V}\) will this construction of \(\mathcal{X}(x,y) \) give a \(\mathcal{V}\)-category?A unital commutative quantale will do the job, but it's more fun to check the two \(\mathcal{V}\)-category axioms and see what will make them work.

`Jonathan - right! Defining \\(\mathcal{X}(x,y)\\) in terms of a _meet_ is also useful in the case when there are _infinitely many_ paths from \\(x\\) to \\(y\\). As long as our symmetric monoidal preorder has all meets, we're fine. And a "quantale" has all meets. Here's how I'd give the formula. In category theory, a **graph** is a set \\(V\\) of **vertices** and a set \\(E\\) of **edges**, together with maps \\(s,t : E \to V\\) giving the source and target (starting-point and ending-point) of each edge. Given a graph, a **path** from a vertex \\(x\\) to a vertex \\(y\\) is a finite sequence of edges \\((e_1, \dots, e_n)\\) with \[ s(e_1) = x, \quad t(e_1) = s(e_2), \quad \dots, \quad t(e_{n-1}) = s(e_n), \quad t(e_n) = y. \] For any symmetric monoidal poset \\(\mathcal{V}\\), a **\\(\mathcal{V}\\)-weighted graph** is a graph together with a map \[ \ell: E \to \mathcal{V} \] assigning each edge an element of \\(\mathcal{V}\\). We define the **length** of a path \\(p = (e_1, \dots, e_n)\\) in a \\(\mathcal{V}\\)-weighted graph to be \[ L(p) = \ell(e_1) \otimes \cdots \otimes \ell(e_n) .\] Then we define \[ \mathcal{X}(x,y) = \bigwedge \\{ L(p) : \; p \textrm{ is a path from } x \textrm{ to } y \\} .\] This will exist if \\(\mathcal{V}\\) has all meets. **Puzzle 97.** Under what conditions on \\(\mathcal{V}\\) will this construction of \\(\mathcal{X}(x,y) \\) give a \\(\mathcal{V}\\)-category? A unital commutative quantale will do the job, but it's more fun to check the two \\(\mathcal{V}\\)-category axioms and see what will make them work.`

The greast lower bound of a \(\mathrm{Cost}\)-category has a name: \(\mathrm{min}\).

So to take Jonathan Castello's example above, I would modify it to give,

\[ \mathcal{X}(x, y) = \mathrm{min}\left\{\mathcal{d}(p) \mid p \text{ is a path from } x \text{ to } y \right\} \]

where \(\mathcal{d}(p) \) is a distance function on the path \(p\).

`The greast lower bound of a \\(\mathrm{Cost}\\)-category has a name: \\(\mathrm{min}\\). So to take Jonathan Castello's example above, I would modify it to give, \\[ \mathcal{X}(x, y) = \mathrm{min}\left\\{\mathcal{d}(p) \mid p \text{ is a path from } x \text{ to } y \right\\} \\] where \\(\mathcal{d}(p) \\) is a distance function on the path \\(p\\).`

Jonathan wrote:

Since \(\mathbb{Z}/10\mathbb{Z}\) is only a monoidal preorder if we use the discrete preordering, I'd better fix that!

`Jonathan wrote: > Unless we're working in \\(\mathbb{Z}/10\mathbb{Z}\\), I think that should equal 11! Since \\(\mathbb{Z}/10\mathbb{Z}\\) is only a monoidal preorder if we use the discrete preordering, I'd better fix that! <img src = "http://math.ucr.edu/home/baez/emoticons/tongue2.gif">`

Let \(f: \mathbf{Cost} \to \mathbf{Bool}\) be the function, \[ f(c) := [c > \infty], \]

then if \(c = \infty\), \([\infty > \infty] = \texttt{false} \) and \(\texttt{true}\) otherwise.

It is monoidal monotone because for all \( c \in \mathbf{Cost} \), \[ \begin{align} \texttt{true} = I_\mathbf{Bool} \\ \implies f(I_\mathbf{Cost}) \\ = f(d(c,c)) \\ = f(0) \\ = [0 > \infty], \end{align} \]

and for every \( c_1,c_2,c_3 \in \mathbf{Cost} \), \[ \begin{align} [d(c_1,c_2) > \infty] \wedge [d(c_2,c_3) > \infty] = f(d(c_1,c_2)) \wedge f(d(c_2,c_3)) \\ \implies f(d(c_1,c_2)+d(c_2,c_3)) \\ \implies f(d(c_1,c_3)) \\ = [d(c_1,c_3) > \infty] . \end{align} \]

`>**Puzzle 95.** Show that there is a monoidal monotone \\(f : \mathbf{Cost} \to \mathbf{Bool} \\) sending \\(\infty\\) to \\(\texttt{false}\\) everything else to \\(\texttt{true}\\). In economics, this means "if the cost of something is infinite, nobody can do it - otherwise it's possible, at least if you're rich enough". Let \\(f: \mathbf{Cost} \to \mathbf{Bool}\\) be the function, \\[ f(c) := [c > \infty], \\] then if \\(c = \infty\\), \\([\infty > \infty] = \texttt{false} \\) and \\(\texttt{true}\\) otherwise. It is monoidal monotone because for all \\( c \in \mathbf{Cost} \\), \\[ \begin{align} \texttt{true} = I_\mathbf{Bool} \\\\ \implies f(I_\mathbf{Cost}) \\\\ = f(d(c,c)) \\\\ = f(0) \\\\ = [0 > \infty], \end{align} \\] and for every \\( c_1,c_2,c_3 \in \mathbf{Cost} \\), \\[ \begin{align} [d(c_1,c_2) > \infty] \wedge [d(c_2,c_3) > \infty] = f(d(c_1,c_2)) \wedge f(d(c_2,c_3)) \\\\ \implies f(d(c_1,c_2)+d(c_2,c_3)) \\\\ \implies f(d(c_1,c_3)) \\\\ = [d(c_1,c_3) > \infty] . \end{align} \\]`

Keith - nice! Just one nitpick: I think you mean to use \(f(c) = [c \lt \infty]\), not \([c \gt \infty]\)... unless you are playing a sneaky trick and defining \(\lt\) to mean the usual \(\gt\). Of course, this is all very confusing, given the strange way we are making \(\mathbf{Cost}\) into a poset.

`Keith - nice! Just one nitpick: I think you mean to use \\(f(c) = [c \lt \infty]\\), not \\([c \gt \infty]\\)... unless you are playing a sneaky trick and defining \\(\lt\\) to mean the usual \\(\gt\\). Of course, this is all very confusing, given the strange way we are making \\(\mathbf{Cost}\\) into a poset.`

Oh wait, I missed that.

Yes, I want numbers

less thaninfinity. Numbers greater than infinity don't exist.Edit: Actually, I

domean to use \(f(c) = [c \lt \infty]\), since if \(c\) is finite, then \(f(c) = [c \lt \infty] = \texttt{true}\), and \(f(\infty) = [\infty \lt \infty] = \texttt{false}\).Keep in mind, \([x < y]\) is shorthand for \(\neg[x \geq y]\).

`Oh wait, I missed that. Yes, I want numbers **less than** infinity. Numbers greater than infinity don't exist. Edit: Actually, I *do* mean to use \\(f(c) = [c \lt \infty]\\), since if \\(c\\) is finite, then \\(f(c) = [c \lt \infty] = \texttt{true}\\), and \\(f(\infty) = [\infty \lt \infty] = \texttt{false}\\). Keep in mind, \\([x < y]\\) is shorthand for \\(\neg[x \geq y]\\).`

Dealing with \(\mathbf{Bool}\)-categories is like learning left and right all over again, but for every \(\mathbf{Bool}\)-category.

`Dealing with \\(\mathbf{Bool}\\)-categories is like learning left and right all over again, but for every \\(\mathbf{Bool}\\)-category.`

Category theory involves a lot of tricky arrow reversal tricks! It can be amusing if you just accept that there's no getting around it. Otherwise it's annoying.

`Category theory involves a lot of tricky arrow reversal tricks! It can be amusing if you just accept that there's no getting around it. Otherwise it's annoying.`

A quantale, with commutativity, \[ \begin{align} x\star \left (\bigvee_{i \in I} y_i \right) = \bigvee_{i \in I}(x \star y_i) \\ = \bigvee_{i \in I} (y_i \star x) \\ = \left (\bigvee_{i \in I} y_i \right ) \star x, \end{align} \] is a lot like the higher-order function \(\mathrm{map}\),

\[ \begin{align} \mathrm{map}(f,\{x_1,x_2,x_3,\cdots,x_n\} ) \\ = \{f(x_1),f(x_2),f(x_3),\cdots,f(x_n)\} \end{align} \]

except it's

nicerin that it's commutative.`A quantale, with commutativity, \\[ \begin{align} x\star \left (\bigvee_{i \in I} y_i \right) = \bigvee_{i \in I}(x \star y_i) \\\\ = \bigvee_{i \in I} (y_i \star x) \\\\ = \left (\bigvee_{i \in I} y_i \right ) \star x, \end{align} \\] is a lot like the higher-order function [\\(\mathrm{map}\\)](https://en.wikipedia.org/wiki/Map_(higher-order_function)), \\[ \begin{align} \mathrm{map}(f,\\{x_1,x_2,x_3,\cdots,x_n\\} ) \\\\ = \\{f(x_1),f(x_2),f(x_3),\cdots,f(x_n)\\} \end{align} \\] except it's *nicer* in that it's commutative.`

Another take on the same theme of reachability and cheapest-paths on graphs, and hacker-friendly, can be found in Stephen Dolan's Fun With Semirings (slides, paper). He describes the adjacency (or edge-cost) matrix of a graph. If it has boolean-valued entries (i.e., in the boolean semiring), the sum of its powers solves reachability. If the values are in the tropical semiring (min, +), the same sum of powers gives the cost of cheapest paths! (and changing (min, +) for (max, +) the most expensive ones). The matrix multiplication in the paper corresponds the one in section 2.5 of the book, where semirings are generalized to quantales ("A unital quantale is an idempotent semiring under join and multiplication", and both the boolean and tropical semiring here are idempotent).

Would it be correct to say that a resuorce theory sprung from a weighted graph as in the top post would have the limitation of single-ingredient, single-product boxes that the meringue pie chart doesn't verify?

`Another take on the same theme of reachability and cheapest-paths on graphs, and hacker-friendly, can be found in Stephen Dolan's Fun With Semirings ([slides](http://www.cl.cam.ac.uk/~sd601/papers/semirings-slides.pdf), [paper](https://www.cl.cam.ac.uk/~sd601/papers/semirings.pdf)). He describes the adjacency (or edge-cost) matrix of a graph. If it has boolean-valued entries (i.e., in the boolean semiring), the sum of its powers solves reachability. If the values are in the tropical semiring (min, +), the same sum of powers gives the cost of cheapest paths! (and changing (min, +) for (max, +) the most expensive ones). The matrix multiplication in the paper corresponds the one in section 2.5 of the book, where semirings are generalized to quantales ("A unital [quantale](https://en.wikipedia.org/wiki/Quantale) is an idempotent semiring under join and multiplication", and both the boolean and tropical semiring here are idempotent). Would it be correct to say that a resuorce theory sprung from a weighted graph as in the top post would have the limitation of single-ingredient, single-product boxes that the meringue pie chart doesn't verify?`

Jesus - yes, this sum of powers algorithm is one thing I wish I'd had time to explain. Luckily it's nicely explained in

Seven Sketches.Yes, that's another thing I didn't have time to get into. To understand multiple-input, multiple-output processes where each process has a cost (or time) we should use PERT charts or - more or less equivalently I think - timed Petri nets. I believe these give rise not to mere \(\mathcal{V}\)-categories but "symmetric monoidal \(\mathcal{V}\)-categories". However, I don't know of anybody who has developed the theory here yet in a systematic way. I think I could do it pretty quickly, but since I'm only allowing myself 3 weeks on each chapter I decided this would eat up too much of our limited time!

But that's one good thing about this course: it's giving me idea for more research projects.

`Jesus - yes, this sum of powers algorithm is one thing I wish I'd had time to explain. Luckily it's nicely explained in _[Seven Sketches](http://math.mit.edu/~dspivak/teaching/sp18/7Sketches.pdf)_. > Would it be correct to say that a resuorce theory sprung from a weighted graph as in the top post would have the limitation of single-ingredient, single-product boxes that the meringue pie chart doesn't verify? Yes, that's another thing I didn't have time to get into. To understand multiple-input, multiple-output processes where each process has a cost (or time) we should use PERT charts or - more or less equivalently I think - timed Petri nets. I believe these give rise not to mere \\(\mathcal{V}\\)-categories but "symmetric monoidal \\(\mathcal{V}\\)-categories". However, I don't know of anybody who has developed the theory here yet in a systematic way. I think I could do it pretty quickly, but since I'm only allowing myself 3 weeks on each chapter I decided this would eat up too much of our limited time! But that's one good thing about this course: it's giving me idea for more research projects.`

For those who are into the sort of stuff described by Jesus, here's another puzzle.

Start with the adjacency matrix of a graph and take matrix powers in the usual sense. In other words, consider the entries to live in the semiring \((\mathbb{N},+,\cdot)\). Then it's well-known that the \(n\)-th power is the matrix whose \((i,j)\)-entry counts

the number of pathsfrom the \(i\)th vertex to the \(j\)th vertex of length \(n\). So is there a way to phrase this in terms of enriched category theory as well?As a warm-up to this question, let me thus pose:

Puzzle TF4:We know that we can keep track ofwhether it's possibleto get from one vertex to another using a \(\mathbf{Bool}\)-enriched category; we can also keep track ofhow many steps it takesusing a \(\mathbf{Cost}\)-enriched category. Can we also keep track ofhow many paths there areusing an enriched category? In which monoidal poset would we have to enrich? And can we do this in such a way that we count paths of length \(n\) separately for each \(n\)?`For those who are into the sort of stuff described by Jesus, here's another puzzle. Start with the adjacency matrix of a graph and take matrix powers in the usual sense. In other words, consider the entries to live in the semiring \\((\mathbb{N},+,\cdot)\\). Then it's well-known that the \\(n\\)-th power is the matrix whose \\((i,j)\\)-entry counts *the number of paths* from the \\(i\\)th vertex to the \\(j\\)th vertex of length \\(n\\). So is there a way to phrase this in terms of enriched category theory as well? As a warm-up to this question, let me thus pose: **Puzzle TF4:** We know that we can keep track of *whether it's possible* to get from one vertex to another using a \\(\mathbf{Bool}\\)-enriched category; we can also keep track of *how many steps it takes* using a \\(\mathbf{Cost}\\)-enriched category. Can we also keep track of *how many paths there are* using an enriched category? In which monoidal poset would we have to enrich? And can we do this in such a way that we count paths of length \\(n\\) separately for each \\(n\\)?`

Keith, I had some trouble following your solution to puzzle 95, because I'm a tad confused about how you defined \(d\). Could you please expand on this? From the current exposition, it seems that \(d : \mathbf{Cost} \times \mathbf{Cost} \to \mathbf{Cost}\); is that right?

`Keith, I had some trouble following your [solution to puzzle 95](https://forum.azimuthproject.org/discussion/comment/18634/#Comment_18634), because I'm a tad confused about how you defined \\(d\\). Could you please expand on this? From the current exposition, it seems that \\(d : \mathbf{Cost} \times \mathbf{Cost} \to \mathbf{Cost}\\); is that right?`

Yes. \(d\) is the distance metric of whatever \(\mathbf{Cost}\)-category we happen to be working in (let's call it \(\mathcal{C}\)). It must satisfy the equations,

\[ 0 \geq d(x,x), \text{ for all } x\in Ob(\mathcal{C}), \\ d(x,y) + d(y,z) \geq d(x,z), \text{ for all } x,y,z \in Ob(\mathcal{C}), \\ \text{where } Ob(\mathcal{C}) = [0,\infty]. \]

`Yes. \\(d\\) is the distance metric of whatever \\(\mathbf{Cost}\\)-category we happen to be working in (let's call it \\(\mathcal{C}\\)). It must satisfy the equations, \\[ 0 \geq d(x,x), \text{ for all } x\in Ob(\mathcal{C}), \\\\ d(x,y) + d(y,z) \geq d(x,z), \text{ for all } x,y,z \in Ob(\mathcal{C}), \\\\ \text{where } Ob(\mathcal{C}) = [0,\infty]. \\]`

Question, how do we define a \(\mathbf{Cost}\)-category that uses units?

For instance, if you're traveling around the US, and you're picking various destinations, you don't want a

numberwhen considering various hotels, you want theprice(usually in US dollars).`Question, how do we define a \\(\mathbf{Cost}\\)-category that uses units? For instance, if you're traveling around the US, and you're picking various destinations, you don't want a *number* when considering various hotels, you want the *price* (usually in US dollars).`

Keith, thanks for the explanation, but I'm failing to see where does the \(\mathbf{Cost}\)-category come into play in puzzle 95. As far as I understood, we need to prove that \(f\) is a mapping between two monoidal preorders; why do we need enriched categories to prove that \(f\) is a monoidal monotone? Or did I misunderstand the problem statement?

`Keith, thanks for [the explanation](https://forum.azimuthproject.org/discussion/comment/18657/#Comment_18657), but I'm failing to see where does the \\(\mathbf{Cost}\\)-category come into play in puzzle 95. As far as I understood, we need to prove that \\(f\\) is a mapping between two monoidal preorders; why do we need enriched categories to prove that \\(f\\) is a monoidal monotone? Or did I misunderstand the problem statement?`

That would answer

Puzzle 94.In fact, trying answering

Puzzle 94.(Hint: Check Page 56 of the book)

`That would answer **Puzzle 94**. In fact, trying answering **Puzzle 94**. (Hint: Check Page 56 of the book)`

Here's another loose end that I thought might be worth tying up – why are we insisting on

symmetricmonoidal preorders? The reason for this is in section 2.4.3 of Seven Sketches, and in particular exercise 2.52 – we need symmetry in order to define theproductof two \(\mathcal{V}\)-enriched categories:Suppose \(\mathcal{X}\) and \(\mathcal{Y}\) are \(\mathcal{V}\)-enriched categories.

Define \(\mathcal{X} \times \mathcal{Y}\) by

\[\textrm{Ob}(\mathcal{X} \times \mathcal{Y}) = Ob(\mathcal{X}) \times Ob(\mathcal{Y})\]

and

\[(\mathcal{X} \times \mathcal{Y})(\langle x_0, y_0\rangle, \langle x_1, y_1\rangle) = \mathcal{X}(x_0, x_1) \otimes \mathcal{Y}(y_0, y_1)\]

Checking the unit law holds:

\[(\mathcal{X} \times \mathcal{Y})(\langle x, y\rangle, \langle x, y\rangle) = \mathcal{X}(x, x) \otimes \mathcal{Y}(y, y) \geq I \otimes I = I\]

Checking the composition law holds:

\[(\mathcal{X} \times \mathcal{Y})(\langle x_0, y_0\rangle, \langle x_1, y_1\rangle) \otimes (\mathcal{X} \times \mathcal{Y})(\langle x_1, y_1\rangle, \langle x_2, y_2\rangle)\]

\[= \mathcal{X}(x_0, x_1) \otimes \mathcal{Y}(y_0, y_1) \otimes \mathcal{X}(x_1, x_2) \otimes \mathcal{Y}(y_1, y_2)\]

(we now use symmetry to swap round the middle two terms)

\[\leq \mathcal{X}(x_0, x_1) \otimes \mathcal{X}(x_1, x_2) \otimes \mathcal{Y}(y_0, y_1) \otimes \mathcal{Y}(y_1, y_2)\]

\[\leq \mathcal{X}(x_0, x_2) \otimes \mathcal{Y}(y_0, y_2)\]

\[= (\mathcal{X} \times \mathcal{Y})(\langle x_0, y_0\rangle, \langle x_2, y_2\rangle)\]

So \(\mathcal{X} \times \mathcal{Y}\) is itself a \(\mathcal{V}\)-enriched category.

`Here's another loose end that I thought might be worth tying up – why are we insisting on *symmetric* monoidal preorders? The reason for this is in section 2.4.3 of Seven Sketches, and in particular exercise 2.52 – we need symmetry in order to define the *product* of two \\(\mathcal{V}\\)-enriched categories: Suppose \\(\mathcal{X}\\) and \\(\mathcal{Y}\\) are \\(\mathcal{V}\\)-enriched categories. Define \\(\mathcal{X} \times \mathcal{Y}\\) by \\[\textrm{Ob}(\mathcal{X} \times \mathcal{Y}) = Ob(\mathcal{X}) \times Ob(\mathcal{Y})\\] and \\[(\mathcal{X} \times \mathcal{Y})(\langle x_0, y_0\rangle, \langle x_1, y_1\rangle) = \mathcal{X}(x_0, x_1) \otimes \mathcal{Y}(y_0, y_1)\\] Checking the unit law holds: \\[(\mathcal{X} \times \mathcal{Y})(\langle x, y\rangle, \langle x, y\rangle) = \mathcal{X}(x, x) \otimes \mathcal{Y}(y, y) \geq I \otimes I = I\\] Checking the composition law holds: \\[(\mathcal{X} \times \mathcal{Y})(\langle x_0, y_0\rangle, \langle x_1, y_1\rangle) \otimes (\mathcal{X} \times \mathcal{Y})(\langle x_1, y_1\rangle, \langle x_2, y_2\rangle)\\] \\[= \mathcal{X}(x_0, x_1) \otimes \mathcal{Y}(y_0, y_1) \otimes \mathcal{X}(x_1, x_2) \otimes \mathcal{Y}(y_1, y_2)\\] (we now use symmetry to swap round the middle two terms) \\[\leq \mathcal{X}(x_0, x_1) \otimes \mathcal{X}(x_1, x_2) \otimes \mathcal{Y}(y_0, y_1) \otimes \mathcal{Y}(y_1, y_2)\\] \\[\leq \mathcal{X}(x_0, x_2) \otimes \mathcal{Y}(y_0, y_2)\\] \\[= (\mathcal{X} \times \mathcal{Y})(\langle x_0, y_0\rangle, \langle x_2, y_2\rangle)\\] So \\(\mathcal{X} \times \mathcal{Y}\\) is itself a \\(\mathcal{V}\\)-enriched category.`

This reminds me of the fact that if \(M\) is an ordinary monoid, then the multiplication function \(M\times M\to M\) isn't a monoid homomorphism unless \(M\) is commutative. Is that just a coincidence, or is there something deeper connecting both of these ideas?

`This reminds me of the fact that if \\(M\\) is an ordinary monoid, then the multiplication function \\(M\times M\to M\\) isn't a monoid homomorphism unless \\(M\\) is commutative. Is that just a coincidence, or is there something deeper connecting both of these ideas?`

Can't we reduce \(\mathcal{V}\)-functors to changes-of-base, mainly a change-of-base between a \(\mathcal{V}\)-category and itself?

`Can't we reduce \\(\mathcal{V}\\)-functors to changes-of-base, mainly a change-of-base between a \\(\mathcal{V}\\)-category and itself?`

Ah, that makes the "Periodic Table" of n,k categories make more sense.

`Ah, that makes the "Periodic Table" of n,k categories make more sense.`

Owen wrote:

Category theorists have a slick way to express the fact you're mentioning, and a bit more:

a monoid in the category of monoids is exactly the same as a commutative monoid.The proof is called the 'Eckmann-Hilton argument', and it was first used to note that

a group in the category of groups is exactly the same as an abelian group.It admits lots of generalizations. It's

relatedto the fact that Anindya mentioned:the category of categories enriched over a symmetric monoidal preorder is itself monoidal. But the relation is a bit elusive.It becomes slightly clearer (?) if we push the Eckmann-Hilton argument up one level, and also replace preorders by categories. Then we have these nice facts:

A monoid in the category of monoidal categories is a braided monoidal category.

The category of \(\mathcal{V}\)-enriched categories is monoidal if \(\mathcal{V}\) is a braided monoidal category.

These statements are closely connected. But I can't quite put my finger on the connection.

I could go on, listing more facts that illustrate this connection, but this is probably enough for now!

`<img width = "150" src = "http://math.ucr.edu/home/baez/mathematical/warning_sign.jpg"> Owen wrote: > This reminds me of the fact that if \\(M\\) is an ordinary monoid, then the multiplication function \\(M\times M\to M\\) isn't a monoid homomorphism unless \\(M\\) is commutative. Is that just a coincidence, or is there something deeper connecting both of these ideas? Category theorists have a slick way to express the fact you're mentioning, and a bit more: _a monoid in the category of monoids is exactly the same as a commutative monoid._ The proof is called the ['Eckmann-Hilton argument'](https://en.wikipedia.org/wiki/Eckmann%E2%80%93Hilton_argument#Remarks_2), and it was first used to note that _a group in the category of groups is exactly the same as an abelian group_. It admits lots of generalizations. It's _related_ to the fact that Anindya mentioned: _the category of categories enriched over a symmetric monoidal preorder is itself monoidal_. But the relation is a bit elusive. It becomes slightly clearer (?) if we push the Eckmann-Hilton argument up one level, and also replace preorders by categories. Then we have these nice facts: 1. A monoid in the category of monoidal categories is a braided monoidal category. 2. The category of \\(\mathcal{V}\\)-enriched categories is monoidal if \\(\mathcal{V}\\) is a braided monoidal category. These statements are closely connected. But I can't quite put my finger on the connection. I could go on, listing more facts that illustrate this connection, but this is probably enough for now!`

Keith wrote:

No, you're making a classic level slip here. There's

no such thingas change-of-base between a \(\mathcal{V}\)-category and itself! Change-of-base is not a kind of map between \(\mathcal{V}\)-categories.It's great that you made this mistake, because everybody does it. Please think about this! It's easy to get confused... but it's very important to get unconfused.

It's like "a function from an element of a set to itself."

There's

no such thingas a function from an element of a set to itself. A function \(f: X \to Y\) goes betweensets\(X\) and \(Y\). If \(X = Y\) this function maymapan element \(x \in X\) to itself: \(f(x) = x\). But it's still a function from \(X\) to \(X\), not a function from \(x\) to \(x\).Similarly, there's

no such thingas a change-of-base from a \(\mathcal{V}\)-category to itself. Change-of-base turns \(\mathcal{V}\)-categories into \(\mathcal{W}\)-categories, so it's a functor \(\Phi: \mathcal{V}\mathrm{Cat}\to \mathcal{W}\mathrm{Cat} \). If \(\mathcal{V} = \mathcal{W}\) this functor maymapa \(\mathcal{V}\)-category \(\mathcal{C}\) to itself: \(\Phi(\mathcal{C}) = \mathcal{C}\). But it's still a functor from \(\mathcal{V}\mathrm{Cat}\) to \(\mathcal{V}\mathrm{Cat}\), not an enriched functor from \(\mathcal{C}\) to \(\mathcal{C}\).This is why change-of-base and enriched functors are both crucial, indispensable concepts.

I've been through this confusion myself a couple of times! It only takes 8 hours of agony to figure out what's going on.

Let me review the whole story:

First I told you about enriched functors between \(\mathcal{V}\)-categories. They're called \(\mathcal{V}\)-functors.

Then I told you about enriched functors from a \(\mathcal{V}\)-category to a \(\mathcal{W}\)-category. But these only makes sense when you first have a trick for turning \(\mathcal{V}\)-categories into \(\mathcal{W}\)-categories. This trick is "change of base".

Suppose \(\mathcal{V}\) and \(\mathcal{W}\) are monoidal posets and \(f: \mathcal{V} \to \mathcal{W}\) is a monoidal monotone. Suppose \(\mathcal{X}\) is a \(\mathcal{V}\)-category. Then there's a \(\mathcal{W}\)-category \(\Phi(\mathcal{X})\) with the same objects as \(\mathcal{X}\) and

$$ \Phi(\mathcal{X})(x,x') = f(\mathcal{X}(x,x')). $$ This trick, \(\Phi\), is called

change of base.Once you've got change of base, you can get an enriched functor from a \(\mathcal{V}\)-category \(\mathcal{X}\) to a \(\mathcal{W}\)-category \(\mathcal{Y}\). First you use change of base to turn \(\mathcal{X}\) into a \(\mathcal{W}\)-category \(\Phi(\mathcal{X})\). Then you pick a \(\mathcal{W}\)-functor

$$ F : \Phi(\mathcal{X}) \to \mathcal{Y} .$$ In short:

first you move \(\mathcal{X}\) to the world where \(\mathcal{Y}\) lives, and then it can talk to \(\mathcal{Y}\).`Keith wrote: > Can't we reduce \\(\mathcal{V}\\)-functors to changes-of-base, mainly a change-of-base between a \\(\mathcal{V}\\)-category and itself? No, you're making a classic level slip here. There's _no such thing_ as change-of-base between a \\(\mathcal{V}\\)-category and itself! Change-of-base is not a kind of map between \\(\mathcal{V}\\)-categories. It's great that you made this mistake, because everybody does it. Please think about this! It's easy to get confused... but it's very important to get unconfused. It's like "a function from an element of a set to itself." There's _no such thing_ as a function from an element of a set to itself. A function \\(f: X \to Y\\) goes between _sets_ \\(X\\) and \\(Y\\). If \\(X = Y\\) this function may _map_ an element \\(x \in X\\) to itself: \\(f(x) = x\\). But it's still a function from \\(X\\) to \\(X\\), not a function from \\(x\\) to \\(x\\). Similarly, there's _no such thing_ as a change-of-base from a \\(\mathcal{V}\\)-category to itself. Change-of-base turns \\(\mathcal{V}\\)-categories into \\(\mathcal{W}\\)-categories, so it's a functor \\(\Phi: \mathcal{V}\mathrm{Cat}\to \mathcal{W}\mathrm{Cat} \\). If \\(\mathcal{V} = \mathcal{W}\\) this functor may _map_ a \\(\mathcal{V}\\)-category \\(\mathcal{C}\\) to itself: \\(\Phi(\mathcal{C}) = \mathcal{C}\\). But it's still a functor from \\(\mathcal{V}\mathrm{Cat}\\) to \\(\mathcal{V}\mathrm{Cat}\\), not an enriched functor from \\(\mathcal{C}\\) to \\(\mathcal{C}\\). This is why change-of-base and enriched functors are both crucial, indispensable concepts. I've been through this confusion myself a couple of times! It only takes 8 hours of agony to figure out what's going on. <center><img src = "http://math.ucr.edu/home/baez/emoticons/spiral_eyes.gif"></center> Let me review the whole story: First I told you about enriched functors between \\(\mathcal{V}\\)-categories. They're called \\(\mathcal{V}\\)-functors. Then I told you about enriched functors from a \\(\mathcal{V}\\)-category to a \\(\mathcal{W}\\)-category. But these only makes sense when you first have a trick for turning \\(\mathcal{V}\\)-categories into \\(\mathcal{W}\\)-categories. This trick is "change of base". Suppose \\(\mathcal{V}\\) and \\(\mathcal{W}\\) are monoidal posets and \\(f: \mathcal{V} \to \mathcal{W}\\) is a monoidal monotone. Suppose \\(\mathcal{X}\\) is a \\(\mathcal{V}\\)-category. Then there's a \\(\mathcal{W}\\)-category \\(\Phi(\mathcal{X})\\) with the same objects as \\(\mathcal{X}\\) and \[ \Phi(\mathcal{X})(x,x') = f(\mathcal{X}(x,x')). \] This trick, \\(\Phi\\), is called **change of base**. Once you've got change of base, you can get an enriched functor from a \\(\mathcal{V}\\)-category \\(\mathcal{X}\\) to a \\(\mathcal{W}\\)-category \\(\mathcal{Y}\\). First you use change of base to turn \\(\mathcal{X}\\) into a \\(\mathcal{W}\\)-category \\(\Phi(\mathcal{X})\\). Then you pick a \\(\mathcal{W}\\)-functor \[ F : \Phi(\mathcal{X}) \to \mathcal{Y} .\] In short: _first you move \\(\mathcal{X}\\) to the world where \\(\mathcal{Y}\\) lives, and then it can talk to \\(\mathcal{Y}\\)_.`

@John – thanks for that, I remember proving that Eckmann-Hilton result about two binary operations on the same set in an exercise many years ago, but I had no idea about its significance or that it had a name!

I was thinking that the "swap round the middle two terms" line in that proof reminded me of how you prove that \(f + g\) is a homomorphism given homomorphisms \(f\) and \(g\) of Abelian groups (or commutative monoids more generally):

\[(f + g)(x + y) = f(x + y) + g(x + y) = fx + fy + gx +gy = fx +gx +fy + gy = (f + g)x + (f + g)y\]

It strikes me that the Eckmann-Hilton argument might be some kind of converse to this, but I can't quite see how.

`@John – thanks for that, I remember proving that Eckmann-Hilton result about two binary operations on the same set in an exercise many years ago, but I had no idea about its significance or that it had a name! I was thinking that the "swap round the middle two terms" line in that proof reminded me of how you prove that \\(f + g\\) is a homomorphism given homomorphisms \\(f\\) and \\(g\\) of Abelian groups (or commutative monoids more generally): \\[(f + g)(x + y) = f(x + y) + g(x + y) = fx + fy + gx +gy = fx +gx +fy + gy = (f + g)x + (f + g)y\\] It strikes me that the Eckmann-Hilton argument might be some kind of converse to this, but I can't quite see how.`

Anindya - yes, the Eckmann-Hilton argument is a converse. I strongly urge you to prove it yourself, because it's delightful. I suggest proving this:

Eckmann–Hilton Theorem.If \(M\) is a monoid with multiplication \(\cdot : M \times M \to M\), and \(\cdot : M \times M \to M\) is a homomorphism of monoids, then \(M\) is commutative.Here I'm making \(M \times \) into a monoid in the obvious way, with multiplication

\[ (a,b) \cdot (c,d) = (a \cdot c , b \cdot d).\]

You can prove it for groups if you feel more comfortable with them, but I recommend proving it for monoids instead of groups because inverses are not used in the argument. As far as I know, the identity element of the monoid

doesplay an essential role in the argument!This is one of the most satisfying short proofs I know.

`Anindya - yes, the Eckmann-Hilton argument is a converse. I strongly urge you to prove it yourself, because it's delightful. I suggest proving this: **Eckmann–Hilton Theorem.** If \\(M\\) is a monoid with multiplication \\(\cdot : M \times M \to M\\), and \\(\cdot : M \times M \to M\\) is a homomorphism of monoids, then \\(M\\) is commutative. Here I'm making \\(M \times \\) into a monoid in the obvious way, with multiplication \\[ (a,b) \cdot (c,d) = (a \cdot c , b \cdot d).\\] You can prove it for groups if you feel more comfortable with them, but I recommend proving it for monoids instead of groups because inverses are not used in the argument. As far as I know, the identity element of the monoid _does_ play an essential role in the argument! This is one of the most satisfying short proofs I know.`

\(\textrm{dot} : M \times M \rightarrow M\) is a homomorphism

\(\iff \textrm{dot}((a, b)\cdot(c, d)) = \textrm{dot}(a, b)\cdot\textrm{dot}(c, d)\)

\(\iff \textrm{dot}(a\cdot c, b\cdot d) = \textrm{dot}(a, b)\cdot\textrm{dot}(c, d)\)

\(\iff (a\cdot c)\cdot (b\cdot d) = (a\cdot b)\cdot (c\cdot d)\)

Set \(a = d = 1\), then \(c\cdot d = (1\cdot c)\cdot (d\cdot 1) = (1\cdot d)\cdot (c\cdot 1) = d\cdot c\)

OK I'm now thinking – a monoid is a category with one object, and a monoid homomorphism is a functor between monoids-as-categories. So can we generalise this to say something about categories-with-perhaps-many-objects when composition is functorial in some sense?

`\\(\textrm{dot} : M \times M \rightarrow M\\) is a homomorphism \\(\iff \textrm{dot}((a, b)\cdot(c, d)) = \textrm{dot}(a, b)\cdot\textrm{dot}(c, d)\\) \\(\iff \textrm{dot}(a\cdot c, b\cdot d) = \textrm{dot}(a, b)\cdot\textrm{dot}(c, d)\\) \\(\iff (a\cdot c)\cdot (b\cdot d) = (a\cdot b)\cdot (c\cdot d)\\) Set \\(a = d = 1\\), then \\(c\cdot d = (1\cdot c)\cdot (d\cdot 1) = (1\cdot d)\cdot (c\cdot 1) = d\cdot c\\) OK I'm now thinking – a monoid is a category with one object, and a monoid homomorphism is a functor between monoids-as-categories. So can we generalise this to say something about categories-with-perhaps-many-objects when composition is functorial in some sense?`

Yes, that's the proof, Anindya! Isn't it cute? You can see why identity elements are important: it doesn't work for mere semigroups.

I don't think there's a generalization to categories in the direction you're suggesting. The really nice generalizations to categories work a bit differently. You can read about them in my paper Higher-dimensional algebra and topological quantum field theory.

Even if you don't want to read the paper, look at the picture at the top of page 25, and then the picture below that! This reveals the topological underpinnings of the Eckmann-Hilton argument.

One of the first spinoffs of this viewpoint is:

and then

See, it goes on for one more step when we categorify it! This eventually leads to the "periodic table of \(n\)-categories", which is one of the main subjects of my paper.

`Yes, that's the proof, Anindya! Isn't it cute? You can see why identity elements are important: it doesn't work for mere semigroups. <img width = "150" src = "http://math.ucr.edu/home/baez/mathematical/warning_sign.jpg"> I don't think there's a generalization to categories in the direction you're suggesting. The really nice generalizations to categories work a bit differently. You can read about them in my paper [Higher-dimensional algebra and topological quantum field theory](https://arxiv.org/pdf/q-alg/9503002.pdf). Even if you don't want to read the paper, look at the picture at the top of page 25, and then the picture below that! This reveals the topological underpinnings of the Eckmann-Hilton argument. One of the first spinoffs of this viewpoint is: * A monoidal category in the 2-category of monoidal categories is a braided monoidal category. and then * A monoidal category in the 2-category of braided monoidal categories is a symmetric monoidal category. See, it goes on for one more step when we categorify it! This eventually leads to the "periodic table of \\(n\\)-categories", which is one of the main subjects of my paper.`

cheers – will take a look at that

`cheers – will take a look at that`

In my ongoing attempts to catch up with the class, I've just finished Chapter 2! As I did with Chapter 1, I've made a series of picture posts to help me get better intuition for the material.

The full index of picture posts is at my wiki page. If you spot any errors or conceptual misunderstandings, I hope you'll let me know.

For those who read my Chapter 1 posts in May, there have been a few changes.

Update:18 JuneThe two forward images- For some reason I had a lot of trouble with these concepts. I've fixed some errors that were in my first version.New: 18 JuneComputing adjoints- A visual interpretation of John's formulas from Lecture 6.New: 18 JunePicture proof that left adjoints preserve joins- The proof of this fact dances back and forth between sets, joins, and adjunctions, so it's a bit hard to follow. I put the building blocks in picture form, and show how to glue them together in a "picture proof." It turned out quite pretty!Here are the new posts for Chapter 2. Go to the index page for links.

Picture proof that oplax left adjoint means lax right adjoint- Another proof built up from picture fragments, to help keep track of all the properties involved.Posets are subsets of a total order- I wanted to verify that you can always put a poset in some linear order, so that I could do so in later pictures. This post has little bearing on Chapter 2 concepts.Visualizing product orders- Chapter 2 makes heavy use of order products, so I wanted a visual reference to help my intuition.Monoidal total orders- I start with the simplest case for my first pictures of how monoidal products work. I quickly discover that I have no idea how to represent associativity visually.Monoidal partial orders- Poset products are harder to draw, but in a very simple case I can manage to make a picture and learn a few things. I remain stumped about the question of freedom in choosing the monoidal unit.Adjunction plots- As I was working on this chapter, I realized that the behavior of an adjunction can be drawn in function plot form, not just in sets-and-arrows form. This gave me an interesting new perspective on the Chapter 1 material.Many products: abstract- Most of chapter two involves binary relations. I decided to put them all in product form to make it easier to spot the similarities and differences. Topics are: monoids, monoidal preorders, enriched categories, and closed preorders.Many products: Cost- UsingCostas a concrete example lets me draw more helpful pictures of the various products. At the end, I combine several of the ideas above into a big 3D "adjunction plot" that captures most of the behavior of theCostclosed preorder.`In my ongoing attempts to catch up with the class, I've just finished Chapter 2! As I did with Chapter 1, I've made a series of picture posts to help me get better intuition for the material. The [full index](http://www.azimuthproject.org/azimuth/show/Pete+Morcos) of picture posts is at my wiki page. If you spot any errors or conceptual misunderstandings, I hope you'll let me know. For those who read my Chapter 1 posts in May, there have been a few changes. 1. *Update:18 June* **The two forward images** - For some reason I had a lot of trouble with these concepts. I've fixed some errors that were in my first version. 1. *New: 18 June* **Computing adjoints** - A visual interpretation of John's formulas from Lecture 6. 1. *New: 18 June* **Picture proof that left adjoints preserve joins** - The proof of this fact dances back and forth between sets, joins, and adjunctions, so it's a bit hard to follow. I put the building blocks in picture form, and show how to glue them together in a "picture proof." It turned out quite pretty! Here are the new posts for Chapter 2. Go to the index page for links. 1. **Picture proof that oplax left adjoint means lax right adjoint** - Another proof built up from picture fragments, to help keep track of all the properties involved. 1. **Posets are subsets of a total order** - I wanted to verify that you can always put a poset in some linear order, so that I could do so in later pictures. This post has little bearing on Chapter 2 concepts. 1. **Visualizing product orders** - Chapter 2 makes heavy use of order products, so I wanted a visual reference to help my intuition. 1. **Monoidal total orders** - I start with the simplest case for my first pictures of how monoidal products work. I quickly discover that I have no idea how to represent associativity visually. 1. **Monoidal partial orders** - Poset products are harder to draw, but in a very simple case I can manage to make a picture and learn a few things. I remain stumped about the question of freedom in choosing the monoidal unit. 1. **Adjunction plots** - As I was working on this chapter, I realized that the behavior of an adjunction can be drawn in function plot form, not just in sets-and-arrows form. This gave me an interesting new perspective on the Chapter 1 material. 1. **Many products: abstract** - Most of chapter two involves binary relations. I decided to put them all in product form to make it easier to spot the similarities and differences. Topics are: monoids, monoidal preorders, enriched categories, and closed preorders. 1. **Many products: Cost** - Using **Cost** as a concrete example lets me draw more helpful pictures of the various products. At the end, I combine several of the ideas above into a big 3D "adjunction plot" that captures most of the behavior of the **Cost** closed preorder.`

Thanks for all these pictures, Pete! I've been too busy struggling to keep up production of my own lectures to spend enough time talking about your contributions.

`Thanks for all these pictures, Pete! I've been too busy struggling to keep up production of my own lectures to spend enough time talking about your contributions.`

Yeah, thank you Pete. Maybe at the end of this Pete could gather them up and make them into a book.

Edit: Or at least give them a nice home somewhere online.

`Yeah, thank you Pete. Maybe at the end of this Pete could gather them up and make them into a book. Edit: Or at least give them a nice home somewhere online.`