Suppose you have a set \\(X\\) of resources and a way of combining them, which I'll write as \\(+\\). Suppose each resource has a price, which is a real number. Then we get a function
\[ f : X \to \mathbb{R} \]
assigning each resource its price. Often we have
\[ f(x) + f(x') = f(x + x') \]
and this makes pricing very simple: to compute the price of a bunch of resources you just add up their prices.
On the other hand, there are sometimes sales where you can buy the first few items of some kind at a discount, but to keep you from buying too many, the price per item goes up when you buy more. In this case we have
\[ f(x) + f(x') \le f(x + x') .\]
The whole costs more than than sum of its parts!
More commonly are discounts on buying goods in bulk, to encourage you to buy more. For example, "the second gallon of milk is half-price". In this case we have
\[ f(x) + f(x') \ge f(x + x') .\]
Now the whole costs _less_ than the sum of its parts! For more, see:
* Wikipedia, [Economies of scale](https://en.wikipedia.org/wiki/Economies_of_scale).
Now, [last time](https://forum.azimuthproject.org/discussion/2095/lecture-26-chapter-2-monoidal-monotones/p1) I showered you with free goods you hadn't asked for: various flavors of "monoidal monotones". These are maps between monoidal preorders that behave in various ways. This was not abstraction for its own sake. Among other things, they can be used to model the three situations I just described. The first situation, where \\( f(x) + f(x') = f(x + x')\\), happens when \\(f\\) is "strict monoidal". The second, where \\(f(x) + f(x') \le f(x + x')\\), happens when \\(f\\) is "lax monoidal". And the third, where \\( f(x) + f(x') \ge f(x + x')\\), happens when \\(f\\) is "oplax monoidal".
But these different flavors also tend to show up when we have [Galois connections](https://forum.azimuthproject.org/discussion/1828/lecture-4-chapter-1-galois-connections/p1) - that is, monotone functions with adjoints. Last time we looked at the function
\[ i : \mathbb{Z} \to \mathbb{R} \]
which sends each integer to itself, _regarded as a real number_. This is strict monoidal monotone with respect to addition. In particular,
\[ i(x) + i(x') = i(x + x') .\]
This function \\(i\\) has a right adjoint
\[ \lfloor \cdot \rfloor : \mathbb{R} \to \mathbb{Z} , \]
the **[floor function](https://en.wikipedia.org/wiki/Floor_and_ceiling_functions)**, which is lax monoidal monotone. In particular,
\[ \lfloor x \rfloor + \lfloor x' \rfloor \le \lfloor x + x' \rfloor .\]
For example, \\( \lfloor 0.7 \rfloor + \lfloor 0.4 \rfloor = 0 \\) is less than \\( \lfloor 0.7 + 0.4 \rfloor = 1 \\). On the other hand, \\(i\\) has a left adjoint
\[ \lceil \cdot \rceil : \mathbb{R} \to \mathbb{Z} , \]
the **[ceiling function](https://en.wikipedia.org/wiki/Floor_and_ceiling_functions)**, which is oplax monoidal monotone. In particular,
\[ \lceil x \rceil + \lceil x' \rceil \ge \lceil x + x' \rceil .\]
For example, \\( \lceil 0.7 \rceil + \lceil 0.2 \rceil = 2 \\) is greater than \\( \lceil 0.7 + 0.2 \rceil= 1 \\).
So, your prices at the grocery store would be lax monoidal if the clerk rounded your bill down to the nearest dollar... but oplax monoidal if the clerk rounded it up!
Is this a coincidence, this relation between right/left adjoints and lax/oplax monoidal monotones? No! In fact there's a very general, beautiful pattern at work here.
In everything that follows, \\(X\\) and \\(Y\\) will be monoidal preorders. I'll use the same symbols for \\(\le\\), \\(\otimes\\) and \\(I\\) in both \\(X\\) and \\(Y\\). This reduces clutter, and the context makes everything unambiguous. Remember that a monotone map \\(f : X \to Y\\) is a **strict** monoidal monotone if
\[ f(x) \otimes f(x) = f(x \otimes x') \textrm{ and } I = f(I). \]
It's a **lax** monoidal monotone if
\[ f(x) \otimes f(x) \le f(x \otimes x') \textrm{ and } I \le f(I), \]
and it's an **oplax** monoidal monotone if
\[ f(x) \otimes f(x) \ge f(x \otimes x') \textrm{ and } I \ge f(I). \]
**Theorem.** Suppose \\(f : X \to Y\\) is a strict monoidal monotone and \\(g: Y \to X\\) is a right adjoint of \\(f\\). Then \\(g\\) is a lax monoidal monotone.
**Proof.** Since \\(g\\) is a right adjoint of \\(f\\) it is, by definition, a monotone function. Thus, to show \\(g\\) is a lax monoidal monotone, we only need to prove a couple of inequalities. The first of these is
\[ g(y) \otimes g(y') \le g(y \otimes y') \]
for all \\(y,y' \in Y\\). Since \\(g\\) is a right adjoint of \\(f\\), this is equivalent to
\[ f(g(y) \otimes g(y')) \le y \otimes y'. \]
So, let's show this!
Since \\(f\\) is strict monoidal we have
\[ f(g(y) \otimes g(y')) = f(g(y)) \, \otimes \, f(g(y')) .\]
Since \\(g\\) is a right adjoint of \\(f\\) we have
\[ f(g(y)) \le y \textrm{ if and only if } g(y) \le g(y) \]
and the latter is true so indeed we have \\(f(g(y)) \le y\\), and by the same logic \\(f(g(y')) \le y'\\). By the monoidal preorder law this implies
\[ f(g(y)) \, \otimes \, f(g(y')) \le y \otimes y'. \]
Putting all the pieces together we get
\[ f(g(y) \otimes g(y')) \; = \; f(g(y)) \, \otimes\, f(g(y')) \; \le \; y \otimes y' \]
which is what we needed to show.
The second inequality we need to prove is
\[ 1 \le g(1) .\]
Since \\(g\\) is a right adjoint of \\(f\\) this is equivalent to \\(f(1) \le 1\\), and since \\(f\\) is strict monoidal we actually have \\(f(1) = 1 \\). So, we're done! \\( \qquad \blacksquare \\)
This theorem has a partner, whose proof is very similar: just turn around a lot of inequalities!
**Theorem.** Suppose \\(g: Y \to X\\) is a strict monoidal monotone and \\(f: X \to Y\\) is a left adjoint of \\(g\\). Then \\(f\\) is an oplax monoidal monotone.
But even better, both these theorems are special cases of a beautifully symmetrical super-theorem, which is proved in basically the same way!
**Theorem.** Suppose the monotone function \\(f: X \to Y\\) is a left adjoint to the monotone function \\(g: Y \to X\\). Then \\(f\\) is an oplax monoidal if and only if \\(g\\) is a lax monoidal.
You can see that this implies the other two results, because a strict monoidal monotone is both lax and oplax. (In fact, a bit more generally, any monotone function that's both lax and oplax monoidal is called a **strong** monoidal monotone. So, in our first two theorems today, we could have replaced the word "strict" by "strong", and they'd still be true.)
**Puzzle 83.** Prove the super-theorem, preferably without "cheating" and looking at the proof of the earlier one. The trick, as so often in math, is simply to write down the facts you're given, and also the facts you want to prove, and play around with the former until you get the latter.
**[To read other lectures go here.](http://www.azimuthproject.org/azimuth/show/Applied+Category+Theory#Chapter_2)**