A very special island is inhabited only by knights and knaves. Knights always tell the truth, and knaves always lie. You meet three inhabitants: Alice, Rex and Bob, where

  • Alice tells you that "Rex is a knave".
  • Rex tells you that "it's false that Bob is a knave".
  • Bob claims, "I am a knight or Alice is a knight."

So who is a knight and who is a knave?


3 Answers 3


The solution can be found by looking at each statement and what they imply:

Alice - "Rex is a knave"

This implies that Alice and Rex are of different types, as either Alice is a knight and rex is a knave, or Alice is a knave and Rex is not.

Rex - "It's false that Bob is a knave"

This implies that Rex and Bob are of the same type, as Rex is essentially calling bob a knight. If Rex were a knight, so would bob, and if Rex were a knave, so would bob.

Bob - "I am a knight or Alice is a knight."

This once again leads to 2 situation, either Bob is a knight, which would mean that Alice is a knave, or Bob is a knave, making Alice also a Knave.

From Alice's and Rex's remarks we can see that we have 2 situations

a) A - knight, R - knave, B - knave


b) A - knave, R - knight, B - knight.

However, according to Bob's statement:

if Bob were a knave, Alice would also be a knave. Thus, the only situation consistent with all the remarks is situation b.

Therefore, the answer is that:

Alice is a knave, and Rex and Bob are knights.

  • $\begingroup$ Thank you. I would like to say that i understand it now but after trying to put it into python truth table i run into a problem. Where am i going wrong here? "((A and not R) or (not A and R) and (R or B) or (not R and B) and (B or A) or (not B or not A))" $\endgroup$
    – Milan
    Oct 5, 2019 at 19:26
  • $\begingroup$ I believe you have mixed up the second and third statements. The second statement should be (R and B) or (not R and not B), and the third statement should be (A or B) or (not A and not B). I believe those should work? $\endgroup$
    – Surma
    Oct 6, 2019 at 15:08

Let's start with Bob

  • If Bob is Knight => Alice is Knave => Rex is Knight

  • If Bob is Knave => Alice is Knave => Rex is Knight

Rex is Knight so Bob is Knight
So Alice, Rex and Bob are Knave, Knight, Knight


Since it is given that being knight is being truthful and being knave is being a liar, I convert the dialogues of the three characters, it becomes as follows:

Alice : Rex is lying.

Rex : Not true that Bob is lying.

Bob : I speak truth or Alice speak truth.

If Bob is lying, then by his sentence he and Alice both speak truth. And if Alice speak truth then by her sentence, Rex is lying. But Rex says that it is not true that Bob is lying which implies Bob speaks truth. But it is contradictory to our assumption that Bob is lying. Hence Bob speaks truth.

Bob being true implies that Rex is also true because Rex asserts that Bob is true so Rex has to be true. But Alice says Rex is lying. So Alice is surely lying.


Alice is liar, Rex is truthful, Bob is truthful

According to the question, Truthful = Knight and Liar = Knave

Alice is Knave, Rex is Knight, Bob is Knight


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.