This one is actually quite fun. We’re not going to use any “logic” in the traditional sense and in doing so use a method that I think makes the result fall out naturally.

A liar who always lies says, “all my hats are green.”

Before we get to the question being asked about this statement let’s formalize it. Define a set โ„ (hats) which is the set of all hats in the universe. Now define a set ๐•ƒ (liar’s) which is the set of hats owned in some sense by the liar. Define a set โ„‚ (colors) containing seven elements ROYGBIV.

Good, now how to we know what color a hat is? Posit the existence of a function f: โ„ โ†ฆ โ„‚ which maps every hat to a color. Let’s prove to ourselves that such a function could exist by giving an example. Represent colors as wavelengths w. Unless a physicist breaks down the door like The Kool-Aid man as I’m writing this we’re going to say that w โˆˆ โ„. Define f as follows: arbitrarily choose distinct wavelength numbers to represent each element in โ„‚. If those choices match the human perception of the colors then so be it, it doesn’t affect the result either way. Then measure the average wavelength w coming off the hat h and define f(h) to be the color in โ„‚ whose chosen wavelength is closest to w.

Since the wavelengths are distinct and real numbers the measured wavelength must either have a single color it’s closest to or be equidistant to exactly two colors. If that’s the case then we arbitrarily choose color that corresponds to the smaller wavelength number. And we’re done, we can now tell you what color your hat is.

So in this universe we’ve constructed, the statement made by the liar is as follows.

โˆ€ h โˆˆ ๐•ƒ โŠ† โ„ : f(h) = GREEN

Let’s state this in a different way. Define a function F: ๐’ซ(โ„) โ†ฆ ๐’ซ(โ„‚) where ๐’ซ denotes the power set. We’re basically making a function that doesn’t take hats but sets of hats. If you have a hat h1 such that f(h1) = GREEN and a hat h2 such that f(h2) = RED then F({h1, h2}) = {GREEN, RED}. And this new function is great because it has an inverse. Fโปยน({GREEN}) is defined and equals the set of all hats in โ„ such that โˆ€ h โˆˆ Fโปยน({GREEN}) : f(h) = GREEN. This means that another way to phrase the liar’s statement is as follows.

๐•ƒ โŠ† Fโปยน({GREEN})

Great! That means that since the liar is a liar who lies that the true statement is as follows.

๐•ƒ โŠ„ Fโปยน({GREEN})

Man that was easy. One simple negation. Onto the question that’s being asked of us. What can we say about the set ๐•ƒ?

Can ๐•ƒ be the empty set? Well โˆ… is a subset of every set so if ๐•ƒ = โˆ… then ๐•ƒ โŠ† Fโปยน({GREEN}) which we just established is false. Nice! So ๐•ƒ has at least one element in it. If all the elements in ๐•ƒ map to GREEN then we hit that same contradiction again so at least one of the elements in ๐•ƒ must not map to GREEN.

Okay back to English: the liar has at least one hat, and at least one hat that isn’t green. โ—ป