Smullyan's liars normally lie about everything in every statement, so an official Smullyan liar would not agree that there is one liar and one truthteller, that there is one safe door and one unsafe door, and so on.
I just watched the original scene, and the two goblins seem to agree with each other about all of that stuff! How confusing.
For that matter, if either of them are perfect at their jobs, they are oracles, and could retire by attempting to say something about out the first, second, third, etc. digit of tomorrow's winning lottery number. If they're imperfect at their jobs, then they aren't actually "always" anything.
I might have phrased that confusingly when I said that they lie about everything in every statement. I should probably have said that they are never allowed to make any statement that they believe is true.
Then you do get information once you know someone always lies (and has a correct worldmodel) because you know to update the opposite direction. I don't know the impact on these puzzles.
Then the definition becomes kinda-contradictory: The entity would sometimes tell the truth, because that would be the best choice to divert and ruin your model.
So "always lies in a simple way" would become more like "always unhelpful in a superintelligently evil way."
It says this in the very beginning.
In the movie the goblins themselves are explaining their own behavior, which is not very helpful if you take them fully literally.
I can post the solution in 24h. Have fun! ^^
* Is the coin-flip outcome hidden, or can the player learn a correlation between heads/tails and different reactions? Is the coin flip itself hidden, or are the other two flipping simultaneous decoy coins?
* Are the truth/falsehood goblins aware of the outcome of the coin flip? If they are unaware, what rule governs their behavior towards that ambiguity? Can the liar tell the truth by accident?
* Are the three questions posed to the group simultaneously, or do you have to target your question to a specific goblin for a single boolean result?
The two questions to ask are "Are you the lying coin flipper?" and "Are you the honest coin flipper?". These are answered as (NO, YES, NO) and (NO, YES, YES), respectively, by the (honest, lying, coin flipper) goblins.
In the best case we identify a non-flipper goblin on the first try (depending on which question we choose to ask) and then we can assign all three identities with just another question. In the worst case, we need to ask the same question to a second goblin in order to identify a non-flipper goblin, and then the other question to one of the two unidentified ones.
This or similar was the solution, but I don't believe the solution works. A false proposition implies any proposition--"if (impossible scenario) then what would someone say" can be truthfully answered with either yes or no.
But this won't work in the context of the puzzle as stated. The puzzle here requires you to ask about what a goblin will say; your puzzle can't allow that because such a question cannot in the general case be answered yes/no.
// Knight, tells the truth
K(a) { return a }
// Knave, lies
k(a) { return !a }
// Joker, flips a coin
J(a) { return random(true, false) }
We can craft a question that will make the Knights and Knaves always return the truth. This could be "What would you answer if you were asked if $goblin is the $role?". This question will be noted Q(recipient,goblin,role), and here's what it returns depending if the recipient is a Knight, Knave or Joker. $goblin is $role | K | K(K) | k | k(k) | J | J(J) |
T | T | T | F | T |T/F| T/F |
F | F | F | T | F |T/F| T/F |
If we didn't have the Joker and wanted to determine the two goblins roles, it would be as easy as asking this question to one of the two goblins.Now we add the Joker, but we also can ask two more questions. We need to use those two questions to determine who is the joker, so we can discard him and use our last question to discriminate the two remaining goblins.
The 3 goblins will be noted G1, G2, and G3.
Let's ask Q(G1,G2,J).
Two possibilities:
1. The answer is "Yes" (true), either G1 is the Joker or G2 is the Joker. -> G3 is not the Joker.
2. The answer is "No" (false), either G1 is the Joker or G2 is not the Joker. -> G2 is not the Joker.
Now that we know at least one goblin who is not the Joker (whether they are G2 or G3, I'll call them ¬J), we can ask them the question, this time about the first goblin. Q(¬J,G1,J) 1. The answer is "Yes", G1 is the Joker, the other two are not. 2. The answer is "No", the remaining goblin is the Joker.
I now know who is the Joker, meaning the other two goblins are either a Knight or a Knave.
Ask Q(¬J1,¬J2,K) and you'll know who is the Knight and who is the Knave.
In summary, the scenarios are as follows:
Q1 | Q2 | Q3 | G1 | G2 | G3 |
Q(G1,G2,J) | Q(G3,G1,J) | Q(G3,G2,K) | J | K | k |
Q(G1,G2,J) | Q(G3,G1,J) | ¬Q(G3,G2,K) | J | k | K |
Q(G1,G2,J) | ¬Q(G3,G1,J) | Q(G3,G1,K) | K | J | k |
Q(G1,G2,J) | ¬Q(G3,G1,J) | ¬Q(G3,G1,K) | k | J | K |
¬Q(G1,G2,J) | Q(G2,G1,J) | Q(G2,G3,K) | J | k | K |
¬Q(G1,G2,J) | Q(G2,G1,J) | ¬Q(G2,G3,K) | J | K | k |
¬Q(G1,G2,J) | ¬Q(G2,G1,J) | Q(G2,G1,K) | K | k | J |
¬Q(G1,G2,J) | ¬Q(G2,G1,J) | ¬Q(G2,G1,K) | k | K | J |
PS: If we assume that "What would you answer if you were asked if $goblin is the $role?" is forbidden because the Joker cannot know in advance what he would answer if they were asked if any goblin is any role, since it depends on their coin-flip, meaning that they wouldn't know what is the truth and what is the lie, and thus they cannot lie or tell the truth reliably, we can switch the question for "If you were asked if you were the truth-teller, or if you were asked if $goblin was the $role, would your answer to both questions be the same and always the same?".The sane human and insane vampire always tell the truth, even though it's not the vampire's intent to tell the truth. Meanwhile, the insane human always makes false statements though their intent is to tell the truth (and they do, they tell you what they believe to be true).
For example, they believe "the sky is red", "the sky is yellow", "the sky is green"...
Also, they believe "I am sane" but also "I am insane and 1+1=3". (Or "George Washington is dead" but also "George Washington is still alive and 1+1=3".)
I don't think Smullyan ever had the insane people try to reason from their infinite store of false beliefs (as opposed to just knowing individual isolated false assertions). That could have made the puzzles much more confusing because they might conclude true beliefs as well as false ones, although maybe they also always get immediately confused about the results of their reasoning process and invert it?
Like, insane humans in the Transylvania puzzles believe "I am sane" but they also believe "I am insane and 1+1=3"; if they could perform the valid logical inference from the conjunct they could also then conclude "I am insane" alongside "I am sane". This would make the puzzles less interesting, because then insane humans could assert anything!
They can conclude that directly; "I am insane and I am sane" is another false belief that they already have.
The more obvious solution that the postscript hints at is the question "what would you say if I asked you whether [this door] leads to the castle?". Here, we immediately cancel out the influence of whatever goblin we're speaking to, and we get the right answer, whereas in the movie's solution we immediately incorporate the influence of the lying goblin and get the wrong answer.
But the movie's solution is better for the movie, because "what would you say if I asked you X?" is a normal English way to ask "X", and in this case, where the two questions are different, the audience is guaranteed to be confused.
Very clever. If the goblin is lying, the double negation cancels out. If the goblin is telling the truth, the truth remains unchanged.
Personally, I didn't find the article very clarifying. Instead, I like to think of the goblins A and B as functions that take in the truth value of a statement and output an answer.
One goblin's function yields the boolean not of the result, and the other passes it through unchanged. You don't know which goblin has which functions, so the two ways to get a reliable answer out are:
A(A(question))
A(B(question))
The former is your answer here, which does the double negation. The latter is the answer in the movie where you pass it through both goblins which means the answer will reliably have its truth value flipped exactly once.The nice thing about the latter solution is that it scales up to more goblins and an arbitrary ratio of liars. Let's say there are four goblins, Ann, Ben, Cat, and Dan. Two always lie and two always tell the truth. You can ask "Would Ann say that Ben would say that Cat would say that Dan would say that door 1 leads to the castle?" In other words:
A(B(C(D(question))))
In this case, the answer tells you if door 1 is correct because there are an even number of liars so the negations cancel out. If the number of liars is odd, you flip the result.> In this case, the answer tells you if door 1 is correct because there are an even number of liars so the negations cancel out. If the number of liars is odd, you flip the result.
That's worse scaling than the alternative approach, not better scaling. You need to increase the size of your question every time the number of goblins increases. But "what would you say if I asked you whether [this door] leads to the castle?" shows perfect scaling; it works without changes no matter how many goblins there are. It also isn't necessary to know how many of the goblins are liars.
I was thinking that if there are multiple goblins, asking a question that only relates to one of them doesn't give you enough information to determine which goblins are liars. But you don't actually need to know that. You just need the truth value of the final answer.
The part I enjoyed the most in the book was "The Empuzzlement of Gödel's Theorems" that uses a twist with Knights and Knaves.
https://www.goodreads.com/book/show/53232141-games-for-your-...