From Eternity’s thread:
I already knew that xor(x xor(y z)) was another way to write xor(x, y, z), but I used the approach that Eternity used with English xor and tried:
(x^y^z)v(x^~y^~z)v(~x^y^~z)v(~x^~y^z)
In english: all of them true or x true or y true or z true. So all possible odd combinations of inputs. This makes it easy to see what inputs it will allow and still be true. I used the truth table generator to save me time making a big truth table for this when I just wanted to check if it did give the right outputs, and it does: