> **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}
\]