# Two Truths and a Lie: a logic puzzle

I'm crafting an answer to the game Two Truths and a Lie: each person playing the game says three statements (usually about themselves, though I'm ignoring that requirement for this), two of which are true, and one of which is false. I think I've got three statements for which there is exactly one consistent solution to which statement is false. Here they are:

1. Either this statement is false and #2 is true, or this statement and #3 are both true.
2. If this statement is true, then #1 is false and #3 is true.
3. It is false that the preceding two statements are both true.

I believe there is only one correct solution, (i.e. exactly one of the statements must be false and the others true to maintain consistency) but I'd like to make sure. :)

I don't believe there's a correct solution.

First, regarding statement 2:

Without even looking at the other statements, statement 2 can't be false because of Curry's paradox. Since every statement in your problem must be true or false, it must be true.

Next, regarding statement 1:

Since we already established statement 2 to be true, statement 1 must be false. But this means the clause "this statement is false and #2 is true" is true, so statement 1 must be true. This is a contradiction and the puzzle is thus unsolvable.

Finally, regarding statement 3:

Doesn't matter. There wouldn't be a solution no matter what statement 3 said.

• I don't think this is a case of Curry's Paradox, (thanks for the link!) but let me check my discrete math textbook just in case. rot13(lbh nffhzr ahzore gjb gb or snyfr, ubj vf gung n pbagenqvpgvba?) – Ashton Wiersdorf Jun 25 '20 at 6:04
• @AshtonWiersdorf rot13(Jurer qb V nffhzr ahzore gjb gb or snyfr?) – Joseph Sible-Reinstate Monica Jun 25 '20 at 6:09
• You are correct—this does have a problem. I forgot that you can rewrite P → Q as ¬ P ∨ Q, so it is indeed always true. Thank you so much for catching that! – Ashton Wiersdorf Jun 25 '20 at 6:21
• Wow. Yup. Curry's Paradox exactly. You are correct on all accounts. 👏 Any suggestions on how to fix it so it's still tricky? – Ashton Wiersdorf Jun 25 '20 at 6:31
• @AshtonWiersdorf: It isn't tricky in the first place. #1 gives you all the information you need to solve the puzzle without even reading the other 2 statements. But perhaps statement 2 can just say: "#1 is false and #3 is true" – musefan Jun 25 '20 at 12:06

This puzzle does work, the solution is that Statement 2 is the lie.

For my explanation, I will write like one would write boolean expresions in java. If I wrote "1" that means "1 is true". Same idea with "2" or "3". "!" means not, so "!1" means "1 is not true". "&&" means "and", "||" means "or". Parenthesis work like in math. "if(x){y}" means "if x is true, y must be true" "==" means "is equal to" (I hope that was obvious...), this is not java but "--->" means "simplifies to". Also "und" means "undefined"

Translating the problem to java gives the following:
Statement 1: ((!1 && 2) || (1 && 3)) == 1
Statement 2: if(2){!1 && 3} == 2 Statement 3: !(1 && 2) == 3 Game rules: if(1 && 2){!3}, if(1 && 3){!2}, if(2 && 3){!1}, if(!3){1 && 2}, if(!2){1 && 3}, if(!1){2 && 3}

The best strategy is to assume each statement is false and use proof by contradiction to see if it works out or not.

Step 1: Assume Statement 1 is false:

Because of game rules, 2 && 3
Lets falsify statment 1: (!1 && 2) || (1 && 3) == 1
(!1 && 2) || (1 && 3) == false
---> (true && true)||(false && true) == false
---> true || false == false
---> true == false This is clearly impossible so !1 == und. 1 must be true.

Step 2: Assume Statement 3 is false (I'm skipping 2 for a reason):

Because of game rules, 1 && 2
Lets falsify statment 3: !(1 && 2) == 3 !(1 && 2) == false
---> 1 || 2 == true; This is because of some law that I forgot the name of, but if you work it out its true. I'll give the first comment with the name of the law a shoutout, thanks in advance.
true || true = true; substituted 1 and 2 because of game rules
This obviously checks out, but before saying 3 can be false, we must check if 1 and 2 can be true. I have already proven that 1 must be true. Can two be true?
if(2){!1 && 3} == true
und && 3 == true
1 cannot be true, so 2 can't be true either. Therefore, 3 must be true.

Step 3: Assume Statement 2 is false:

Because of game rules, 1 && 3
Lets falsify statment 2: if(2){!1 && 3} == 2
if(2){!1 && 3 == true} == false ---> if(2){und && 3 == true} == false ---> if(2){und == true} == false This clearly works as undefined can never equal true. 2 must be false.

All this work finally shows that:

The only possible solution is that Statement 2 is the lie, and Statements 1 & 3 are both true.

This was a great puzzle. I actually switched my answer 7 times in the more fun puzzle solve "Is it possible to use these three statments in a two truths and a lie?" when compared to "Which statment is a lie?" Thanks for the great puzzle, I had a lot of fun solving it!

• accidentally hit post... give me a sec to write my explanation. – Ankit Jun 25 '20 at 3:20
• I don't think this is right, because rot13(fgngrzrag gjb orvat snyfr yrnqf gb pbagenqvpgvba). – Joseph Sible-Reinstate Monica Jun 25 '20 at 5:08
• This is the answer I was going for, but on further reflection, @JosephSible-ReinstateMonica's answer is the correct one, I believe. I'll rewrite this. Bit of a meta question: what's the best way to submit edits? Should I close this question and open another? Or just add UPDATE at the bottom and let you guys update your answers? (I'm new to this bit of SE) – Ashton Wiersdorf Jun 25 '20 at 6:22
• @AshtonWiersdorf I think it is better if you create a new question. – justhalf Jun 25 '20 at 8:58
• @justhalf Rather than "undefined", perhaps it should say "There is as yet insufficient data for a meaningful answer" – Chronocidal Jun 25 '20 at 12:16