A riddle is a system of Boolean equations
Encode truth-teller as 1 and liar as 0. A speaker is consistent exactly when the truth value of their sentence equals their own role bit.
SX(R) = RX
The lab checks S_X(R) = R_X for every speaker X. This is why guessing roles independently is not enough: all equations share the same role vector R and must hold at once.
Each sentence is a Boolean function of the complete role assignment.
A contradiction eliminates an entire possible world
Assume a role assignment, evaluate every sentence, and compare each result with its speaker's role.
SX(R) ≠ RX ⇒ reject R
One mismatch is sufficient to reject that complete assignment. Dynamic hints use exactly this method: they identify an assumption and the speaker equation that makes its branch impossible.
Proof by contradiction does not say a world feels unlikely; it demonstrates that the world cannot satisfy the rules.
Solvable is not enough: the answer must be unique
A puzzle may be consistent yet still have several valid role assignments.
|{R : ∀X, SX(R)=RX}| = 1
Every generated riddle is exhaustively checked before display. The generator accepts it only when exactly one possible world survives all speaker equations.
The green world is the sole model of the complete logical system.
Strong clues remove many worlds
A useful sentence divides the current candidates; a weak sentence may be true or false in nearly all of them.
candidates: 2n → … → 1
The hint engine selects the unapplied speaker equation that removes the most current worlds. This is a small information-gain strategy: reduce uncertainty without jumping directly to the answer.
Candidate counts shrink as informative equations are applied.
Self-reference is not automatically a useful clue
“I tell the truth” agrees with either role: a truth-teller says it truly, while a liar says it falsely. It contributes no new information.
SX(R) = RX
“I am lying” is worse under strict Knight/Knave rules: neither role can state it consistently. The generator excludes both patterns and uses relational claims that constrain other participants.
One self-claim is a tautological identity; the other creates an unsatisfiable equation.