> **Puzzle 190.** What does it mean, exactly, to make \$$\mathbf{Bool}\$$ into a \$$\mathbf{Bool}\$$-enriched category? Can you see how to do this by defining
>
> $\mathbf{Bool}(x,y) = x \multimap y$
>
> for all \$$x,y \in \mathbf{Bool}\$$, where \$$\multimap\$$ is defined to be 'implication' as above?

Let's recall the definition John gave in [Lecture 29](https://forum.azimuthproject.org/discussion/2121/lecture-29-chapter-2-enriched-categories):

> **Definition.** A **\$$\mathcal{V}\$$-enriched category** \$$\mathcal{X}\$$ consists of two parts, satisfying two properties. First:
>
> 1. one specifies a set \$$\mathrm{Ob}(\mathcal{X})\$$, elements of which are called **objects**;
>
> 2. for every two objects \$$x,y\$$, one specifies an element \$$\mathcal{X}(x,y)\$$ of \$$\mathcal{V}\$$.
>
> Then:
>
> a) for every object \$$x\in\text{Ob}(\mathcal{X})\$$ we require that
>
> $I\leq\mathcal{X}(x,x) .$
>
> b) for every three objects \$$x,y,z\in\mathrm{Ob}(\mathcal{X})\$$, we require that
>
> $\mathcal{X}(x,y)\otimes\mathcal{X}(y,z)\leq\mathcal{X}(x,z).$

We want

$\mathcal{X}(a,b) := a \multimap_{\mathbf{Bool}} b$

Let's go through the parts of the definition.

1. The objects are specified by \$$\mathrm{Ob}(\multimap_{\mathbf{Bool}}) = \\{ \text{true}, \text{false} \\} \$$
2. The behavior of \$$a \multimap_{\mathbf{Bool}} b\$$ is specified by its [*truth table*](https://en.wikipedia.org/wiki/Material_conditional#Truth_table) below.

$\begin{array}{|c|c|c|} \hline a & b &a \multimap b\\\\ \hline \text{true}&\text{true}&\text{true}\\\\ \hline \mathbf{true}&\mathbf{false} &\mathbf{false}\\\\ \hline \text{false}&\text{true} &\text{true}\\\\ \hline \text{false}&\text{false} &\text{true}\\\\ \hline \end{array}$

Now we need to verify the two laws, (a) and (b), hold.

(a) We need \$$I \le \mathcal{X}(x,x)\$$, ie \$$\text{true} \leq x \multimap x\$$, for all x. But as we can see from the truth table, \$$x \multimap x = \text{true}\$$ holds for \$$x = \text{true}\$$ and \$$x = \text{false}\$$.

(b) We need to check \$$x \multimap y \wedge y \multimap z \leq x \multimap z\$$. We can show this using another truth table, enumerating all of the possible values. We just need to check that the last two columns, and verify that \$$x \multimap y \wedge y \multimap z \leq x \multimap z\$$, remembering that \$$\text{false} \le \text{true}\$$.

$\begin{array}{|c|c|c|c|c|c|c|c|} \hline x & y & z & x \multimap y & y \multimap z & x \multimap y \wedge y \multimap z & x \multimap z \\\\ \hline \text{true}&\text{true}&\text{true} &\text{true} &\text{true} &\mathbf{true} & \mathbf{true} \\\\ \hline \text{true}&\text{true}&\text{false}&\text{true} &\text{false}&\mathbf{false}&\mathbf{false}\\\\ \hline \text{true}&\text{false}&\text{true}&\text{false} &\text{true}&\mathbf{false}&\mathbf{true}\\\\ \hline \text{true}&\text{false}&\text{false}&\text{false} &\text{true}&\mathbf{false}&\mathbf{false}\\\\ \hline \text{false}&\text{true}&\text{true} &\text{true} &\text{true} &\mathbf{true} & \mathbf{true} \\\\ \hline \text{false}&\text{true}&\text{false}&\text{true} &\text{false}&\mathbf{false}&\mathbf{true}\\\\ \hline \text{false}&\text{false}&\text{true}&\text{true} &\text{true}&\mathbf{true}&\mathbf{true}\\\\ \hline \text{false}&\text{false}&\text{false}&\text{true} &\text{true}&\mathbf{true}&\mathbf{true}\\\\ \hline \end{array}$