[John Baez #6](https://forum.azimuthproject.org/discussion/comment/16420/#Comment_16420) wrote:

> For example, I think the alternative characterization of Galois connections works fine for preorders.

I actually see 4 equivalent definitions of a Galois connection \\(f \dashv g\\) for two preorders \\(\langle A, \sqsubseteq\rangle\\) and \\(\langle B, \preceq\rangle\\):

(1) \\(f(a) \preceq b\\) if and only if \\(a \sqsubseteq g(b)\\)

(2) \\(f\\) and \\(g\\) are mono and \\(f(g(b)) \preceq b\\) and \\(a \sqsubseteq g(f(a))\\)

(3) \\(f\\) is mono and \\(f(g(b)) \preceq b\\) and \\(f(a) \preceq b \Longrightarrow a \sqsubseteq g(b)\\)

(4) \\(g\\) is mono and \\(a \sqsubseteq g(f(a))\\) and \\(a \sqsubseteq g(b) \Longrightarrow f(a) \preceq b\\)

--------------------------------------------

(3) and (4) are based on Owen Biesel's observation.

It looks like these definitions are pretty general - I think you can use them to give alternate ways of programming adjunctions in Haskell.

Let me double check, if this is the case we can maybe make a change to the Haskell `adjunctions` library.

> For example, I think the alternative characterization of Galois connections works fine for preorders.

I actually see 4 equivalent definitions of a Galois connection \\(f \dashv g\\) for two preorders \\(\langle A, \sqsubseteq\rangle\\) and \\(\langle B, \preceq\rangle\\):

(1) \\(f(a) \preceq b\\) if and only if \\(a \sqsubseteq g(b)\\)

(2) \\(f\\) and \\(g\\) are mono and \\(f(g(b)) \preceq b\\) and \\(a \sqsubseteq g(f(a))\\)

(3) \\(f\\) is mono and \\(f(g(b)) \preceq b\\) and \\(f(a) \preceq b \Longrightarrow a \sqsubseteq g(b)\\)

(4) \\(g\\) is mono and \\(a \sqsubseteq g(f(a))\\) and \\(a \sqsubseteq g(b) \Longrightarrow f(a) \preceq b\\)

--------------------------------------------

(3) and (4) are based on Owen Biesel's observation.

It looks like these definitions are pretty general - I think you can use them to give alternate ways of programming adjunctions in Haskell.

Let me double check, if this is the case we can maybe make a change to the Haskell `adjunctions` library.