Okay: I've told you what a Galois connection is. But now it's time to explain why they matter. This will take much longer - and be much more fun.

Galois connections do something really cool: they tell you _the best possible way to recover data that can't be recovered_.

More precisely, they tell you _the best approximation to reversing a computation that can't be reversed._

Someone hands you the output of some computation, and asks you what the input was. Sometimes there's a unique right answer. But sometimes there's more than one answer, or none! That's when your job gets hard. In fact, impossible! But don't let that stop you.

Suppose we have a function between sets, \\(f : A \to B\\) . We say a function \\(g: B \to A \\) is the **inverse** of \\(f\\) if

\[ g(f(a)) = a \textrm{ for all } a \in A \quad \textrm{ and } \quad f(g(b)) = b \textrm{ for all } b \in B \]

Another equivalent way to say this is that

\[ f(a) = b \textrm{ if and only if } a = g(b) \]

for all \\(a \in A\\) and \\(b \in B\\).

So, the idea is that \\(g\\) undoes \\(f\\). For example, if \\(A = B = \mathbb{R}\\) is the set of real numbers, and \\(f\\) doubles every number, then \\(f\\) has an inverse \\(g\\), which halves every number.

But what if \\(A = B = \mathbb{N}\\) is the set of _natural_ numbers, and \\(f\\) doubles every natural number. This function has no inverse!

So, if I say "\\(2a = 4\\); tell me \\(a\\)" you can say \\(a = 2\\). But if I say "\\(2a = 3\\); tell me \\(a\\)" you're stuck.

But you can still try to give me a "best approximation" to the nonexistent natural number \\(a\\) with \\(2 a = 3\\).

"Best" in what sense? We could look for the number \\(a\\) that makes \\(2a\\) as close as possible to 3. There are two equally good options: \\(a = 1\\) and \\(a = 2\\). Here we are using the usual distance function, or [metric](https://en.wikipedia.org/wiki/Metric_(mathematics)), on \\(\mathbb{N}\\), which says that the distance between \\(x\\) and \\(y\\) is \\(|x-y|\\).

But we're not talking about distance functions in this class now! We're talking about _preorders_. Can we define a "best approximation" using just the relation \\(\le\\) on \\(\mathbb{N}\\)?

Yes! But we can do it in two ways!

**Best approximation from below.** Find the largest possible \\(a \in \mathbb{N}\\) such that \\(2a \le 3\\). Answer: \\(a = 1\\).

**Best approximation from above.** Find the smallest possible \\(a \in \mathbb{N}\\) such that \\(3 \le 2a\\). Answer: \\(a = 2\\).

Okay, now work this out more generally:

**Puzzle 14.** Find the function \\(g : \mathbb{N} \to \mathbb{N}\\) such that \\(g(b) \\) is the largest possible natural number \\(a\\) with \\(2a \le b\\).

**Puzzle 15.** Find the function \\(g : \mathbb{N} \to \mathbb{N}\\) such that \\(g(b)\\) is the smallest possible natural number \\(a\\) with \\(b \le 2a\\).

Now think about [Lecture 4](https://forum.azimuthproject.org/discussion/1828/lecture-4-chapter-1-galois-connections) and the puzzles there! I'll copy them here with notation that better matches what I'm using now:

**Puzzle 12.** Find a right adjoint for the function \\(f: \mathbb{N} \to \mathbb{N}\\) that doubles natural numbers: that is, a function \\(g : \mathbb{N} \to \mathbb{N}\\) with

\[ f(a) \le b \textrm{ if and only if } a \le g(b) \]

for all \\(a,b \in \mathbb{N}\\).

**Puzzle 13.** Find a left adjoint for the same function \\(f\\): that is, a function \\(g : \mathbb{N} \to \mathbb{N}\\) with

\[ g(b) \le a \textrm{ if and only if } b \le f(a) \]

Next:

**Puzzle 16.** What's going on here? What's the pattern you see, and why is it working this way?

**[To read other lectures go here.](http://www.azimuthproject.org/azimuth/show/Applied+Category+Theory#Course)**

Galois connections do something really cool: they tell you _the best possible way to recover data that can't be recovered_.

More precisely, they tell you _the best approximation to reversing a computation that can't be reversed._

Someone hands you the output of some computation, and asks you what the input was. Sometimes there's a unique right answer. But sometimes there's more than one answer, or none! That's when your job gets hard. In fact, impossible! But don't let that stop you.

Suppose we have a function between sets, \\(f : A \to B\\) . We say a function \\(g: B \to A \\) is the **inverse** of \\(f\\) if

\[ g(f(a)) = a \textrm{ for all } a \in A \quad \textrm{ and } \quad f(g(b)) = b \textrm{ for all } b \in B \]

Another equivalent way to say this is that

\[ f(a) = b \textrm{ if and only if } a = g(b) \]

for all \\(a \in A\\) and \\(b \in B\\).

So, the idea is that \\(g\\) undoes \\(f\\). For example, if \\(A = B = \mathbb{R}\\) is the set of real numbers, and \\(f\\) doubles every number, then \\(f\\) has an inverse \\(g\\), which halves every number.

But what if \\(A = B = \mathbb{N}\\) is the set of _natural_ numbers, and \\(f\\) doubles every natural number. This function has no inverse!

So, if I say "\\(2a = 4\\); tell me \\(a\\)" you can say \\(a = 2\\). But if I say "\\(2a = 3\\); tell me \\(a\\)" you're stuck.

But you can still try to give me a "best approximation" to the nonexistent natural number \\(a\\) with \\(2 a = 3\\).

"Best" in what sense? We could look for the number \\(a\\) that makes \\(2a\\) as close as possible to 3. There are two equally good options: \\(a = 1\\) and \\(a = 2\\). Here we are using the usual distance function, or [metric](https://en.wikipedia.org/wiki/Metric_(mathematics)), on \\(\mathbb{N}\\), which says that the distance between \\(x\\) and \\(y\\) is \\(|x-y|\\).

But we're not talking about distance functions in this class now! We're talking about _preorders_. Can we define a "best approximation" using just the relation \\(\le\\) on \\(\mathbb{N}\\)?

Yes! But we can do it in two ways!

**Best approximation from below.** Find the largest possible \\(a \in \mathbb{N}\\) such that \\(2a \le 3\\). Answer: \\(a = 1\\).

**Best approximation from above.** Find the smallest possible \\(a \in \mathbb{N}\\) such that \\(3 \le 2a\\). Answer: \\(a = 2\\).

Okay, now work this out more generally:

**Puzzle 14.** Find the function \\(g : \mathbb{N} \to \mathbb{N}\\) such that \\(g(b) \\) is the largest possible natural number \\(a\\) with \\(2a \le b\\).

**Puzzle 15.** Find the function \\(g : \mathbb{N} \to \mathbb{N}\\) such that \\(g(b)\\) is the smallest possible natural number \\(a\\) with \\(b \le 2a\\).

Now think about [Lecture 4](https://forum.azimuthproject.org/discussion/1828/lecture-4-chapter-1-galois-connections) and the puzzles there! I'll copy them here with notation that better matches what I'm using now:

**Puzzle 12.** Find a right adjoint for the function \\(f: \mathbb{N} \to \mathbb{N}\\) that doubles natural numbers: that is, a function \\(g : \mathbb{N} \to \mathbb{N}\\) with

\[ f(a) \le b \textrm{ if and only if } a \le g(b) \]

for all \\(a,b \in \mathbb{N}\\).

**Puzzle 13.** Find a left adjoint for the same function \\(f\\): that is, a function \\(g : \mathbb{N} \to \mathbb{N}\\) with

\[ g(b) \le a \textrm{ if and only if } b \le f(a) \]

Next:

**Puzzle 16.** What's going on here? What's the pattern you see, and why is it working this way?

**[To read other lectures go here.](http://www.azimuthproject.org/azimuth/show/Applied+Category+Theory#Course)**