Skip to main content
update for comment thread
Source Link
Cireo
  • 421
  • 2
  • 7
  1. By the laws of the land

We know that the gadget g(is_knight, predicate_is_true) must construct statements that are true for Knights and false for Knaves, if they are to say them.

  1. Anybody can use it to say P or !P, regardless of if they are a knight or a knave (their "alignment").

Thus each combination below must be speakable.

g(true, true) == true
g(true, false) == true
g(false, true) == false
g(false, false) == false

  1. You cannot determine if P is true or false, even if you know the speaker's alignment.

We already know this, since g(x, true) == g(x, false) above.

  1. You cannot determine the speaker's alignment, even if you know the value of P.

We have the second half already from g(x, true) == g(x, false) above, P has no impact on the statement. Since we require g(x, *) to not disclose any new information about x, it must either be always true, always false, or a statement about x.

However, since we already require g(true, *) == true and g(false, *) == false, it cannot be constant, and is forced to be g(x) = x.

Putting this all together the only statements are ones ...

... that ignore P altogether (either by omitting it, or rendering it tautology), andultimately reduce to x, e.g. I am a knight, I am not a knave, I tell the truth. The statement must ignore P altogether either by: omitting it, which might fail condition 1; rendering it tautology with P or !P, P or true. If we want a satisfying answer that uses P once in a meaningful way, we seem to be out of luck by design.

  1. By the laws of the land

We know that the gadget g(is_knight, predicate_is_true) must construct statements that are true for Knights and false for Knaves, if they are to say them.

  1. Anybody can use it to say P or !P, regardless of if they are a knight or a knave (their "alignment").

Thus each combination below must be speakable.

g(true, true) == true
g(true, false) == true
g(false, true) == false
g(false, false) == false

  1. You cannot determine if P is true or false, even if you know the speaker's alignment.

We already know this, since g(x, true) == g(x, false) above.

  1. You cannot determine the speaker's alignment, even if you know the value of P.

We have the second half already from g(x, true) == g(x, false) above, P has no impact on the statement. Since we require g(x, *) to not disclose any new information about x, it must either be always true, always false, or a statement about x.

However, since we already require g(true, *) == true and g(false, *) == false, it cannot be constant, and is forced to be g(x) = x.

Putting this all together the only statements are ones ...

... that ignore P altogether (either by omitting it, or rendering it tautology), and reduce to x, e.g. I am a knight, I am not a knave, I tell the truth. If we want a satisfying answer that uses P once in a meaningful way, we seem to be out of luck by design.

  1. By the laws of the land

We know that the gadget g(is_knight, predicate_is_true) must construct statements that are true for Knights and false for Knaves, if they are to say them.

  1. Anybody can use it to say P or !P, regardless of if they are a knight or a knave (their "alignment").

Thus each combination below must be speakable.

g(true, true) == true
g(true, false) == true
g(false, true) == false
g(false, false) == false

  1. You cannot determine if P is true or false, even if you know the speaker's alignment.

We already know this, since g(x, true) == g(x, false) above.

  1. You cannot determine the speaker's alignment, even if you know the value of P.

We have the second half already from g(x, true) == g(x, false) above, P has no impact on the statement. Since we require g(x, *) to not disclose any new information about x, it must either be always true, always false, or a statement about x.

However, since we already require g(true, *) == true and g(false, *) == false, it cannot be constant, and is forced to be g(x) = x.

Putting this all together the only statements are ones ...

.. that ultimately reduce to x, e.g. I am a knight, I am not a knave, I tell the truth. The statement must ignore P altogether either by: omitting it, which might fail condition 1; rendering it tautology with P or !P, P or true. If we want a satisfying answer that uses P once in a meaningful way, we seem to be out of luck by design.

Source Link
Cireo
  • 421
  • 2
  • 7

  1. By the laws of the land

We know that the gadget g(is_knight, predicate_is_true) must construct statements that are true for Knights and false for Knaves, if they are to say them.

  1. Anybody can use it to say P or !P, regardless of if they are a knight or a knave (their "alignment").

Thus each combination below must be speakable.

g(true, true) == true
g(true, false) == true
g(false, true) == false
g(false, false) == false

  1. You cannot determine if P is true or false, even if you know the speaker's alignment.

We already know this, since g(x, true) == g(x, false) above.

  1. You cannot determine the speaker's alignment, even if you know the value of P.

We have the second half already from g(x, true) == g(x, false) above, P has no impact on the statement. Since we require g(x, *) to not disclose any new information about x, it must either be always true, always false, or a statement about x.

However, since we already require g(true, *) == true and g(false, *) == false, it cannot be constant, and is forced to be g(x) = x.

Putting this all together the only statements are ones ...

... that ignore P altogether (either by omitting it, or rendering it tautology), and reduce to x, e.g. I am a knight, I am not a knave, I tell the truth. If we want a satisfying answer that uses P once in a meaningful way, we seem to be out of luck by design.