Alice: "If Bob is lying, Charlie is lying!"
Bob: "If Charlie is lying, Alice is lying!"
Charlie: "If Alice is lying, Bob is lying!"
Who is/are lying? How do you prove it using a truth table?
Alice: "If Bob is lying, Charlie is lying!"
Bob: "If Charlie is lying, Alice is lying!"
Charlie: "If Alice is lying, Bob is lying!"
Who is/are lying? How do you prove it using a truth table?
I agree that the truth table is an overkill to solve such symmetrical puzzle, but as OP requested, here it is:
The truth table could look something like this:
Consider:
A - Alice
B - Bob
C - Charlie
a - what Alice said which is "B = 0 -> C = 0"
b - what Bob said which is "C = 0 -> A = 0"
c - what Charlie said which is "A = 0 -> B = 0"
P - is that situation possible which is "A = a and B = b and C = c"
By the laws of mathematical logic: if the first part of an implication is false, then the implication as a whole is true.
A B C a b c P 0 0 0 1 1 1 0 - 3 liars - not possible 0 0 1 0 1 1 0 - 2 liars - not possible 0 1 0 1 1 0 0 - 2 liars - not possible 1 0 0 1 0 1 0 - 2 liars - not possible 1 1 0 1 0 1 0 - 1 liar - not possible 0 1 1 1 1 0 0 - 1 liar - not possible 1 0 1 0 1 1 0 - 1 liar - not possible 1 1 1 1 1 1 1 - 0 liars - possible
Which can be summarized by:
The only possible solution would be that all of the friends tell the truth.
Suppose Alice is lying. Then Bob is lying and Charlie is telling the truth. But Bob lying implies that Charlie is lying and Alice is telling the truth. This is a contradiction, so the initial supposition is false, so Alice told the truth.
By symmetry, everyone told the truth.
Edit after receiving a down-vote: Perhaps my argument is unclear? So here is a more explicit argument, following the above deduction that Alice told the truth. Then Alice's statement is true: that if Bob is lying, Charlie is lying.
Suppose that Bob is lying. Then Charlie is lying. But Charlie's statement is a hypothetical whose precondition is the false statement "Alice is lying". So it's true. This contradicts the supposition that Charlie is lying.
Therefore Bob is telling the truth. Then his statement is true: that if Charlie is lying, Alice is lying. But we know that Alice is not lying. Therefore Charlie is telling the truth. To summarise, all three are telling the truth.
If you want a truth table, here's one. The first three columns make suppositions as to who tells the truth and who lies. "A's s" (etc) mean whether Alice's (etc) statement is a truth or a lie based on those suppositions. "#" indicates a contradiction.
A B C | A's s B's s C's s
------+------------------
t t t | t t t
t t l | t l# t#
t l t | l# t# t
t l l | t l t#
l t t | t# t l#
l t l | t# t l
l l t | l t# t
l l l | t# t# t#
First, let's make logical statements.
A: Alice is telling the truth
B: Bob is telling the truth
C: Charlie is telling the truth
Next, let's convert the talk into logic.
Alice: "If Bob is lying, Charlie is lying!": A -> (B -> C)
Bob: "If Charlie is lying, Alice is lying!": B -> (C -> A)
Charlie: "If Alice is lying, Bob is lying!": C -> (A -> B)
Truth Table:
A | B | C | A -> (B -> C) | B -> (C -> A) | C -> (A -> B)
--+---+---+---------------+---------------+---------------
T | T | T | T | T | T # Works
T | T | F | F | T | T
T | F | T | T | T | F
T | F | F | T | T | T # Works
F | T | T | T | F | T
F | T | F | T | T | T # Works
F | F | T | T | T | T # Works
F | F | F | T | T | T # Doesn't work because of contradiction
Since everyone is saying almost the same thing, logically the truth table is unnecessary. Assume that three identical people are sitting in a circle and saying this, the only logical outcome is that they cannot all be lying at the same time. Thus out of all possibilities (2^3 = 8), all lies cannot be, rest are all possible.
Change the data into logical conditions and make rules:
1 = Truth
0 = Liar
A(1) : If B=0 => C=0 (i.e. if A is truthful, then if B is a liar so is C)
B(1) : If C=0 => A=0
C(1) : If A=0 => B=0
A(0) : If B=0 => C=1
B(0) : If C=0 => A=1
C(0) : If A=0 => B=1
Actual Truth Table:
A B C
1 1 1 : Works, everyone is telling the truth, no "If liar" clauses invoked.
1 1 0 : Doesn't work. B(1) with C=0 means A is a liar, which conflicts.
1 0 1 : Doesn't work.
0 1 1 : Doesn't work.
1 0 0 : Works, A(1) with B=0 means C=0. B(0) means A=1 (B is a liar, A is truthful). C(0) doesn't matter.
0 1 0 : Works
0 0 1 : Works
0 0 0 : Doesn't work. If everyone is a liar then they must all tell the truth.
So...
Either everyone is telling the truth or there are exactly two liars.