How to read the self-reference diagrams

Brian Mills · October 2026

Every diagram is read in two passes: first what the sentences say, then what happens when you try to make them true or false. This guide covers both, in the order you would do them.

The legend

The language has eight marks for what a sentence says, six for the reasoning, and a verdict layer drawn on top. Each has one look and one meaning, and no two marks share a look.

Eight marks say what a sentence says; the rest show what followsPass 1 marks: what the sentences saySentence boundary. Read it as S := whatever is inside. The letter at the top left is the sentence’s name.SSentenceA named piece of language. Everything inside the box is what it says.Quoted sentence. Q’s words are part of S’s wording, but S says something about Q only if one of S’s claims points at Q’s outline.SQQuoted sentenceA box inside a box: part of the outer wording, not asserted by it.Claim. Read as the predicate followed by its roles, for example IsTrue(bearer: S). Every role must be filled exactly once.IsTrueClaimDark blue capsule naming what is claimed, such as Falling or IsTrue.Thing. Something that can fill a role, like Snow in Falling(thing that falls: Snow).SnowThingSomething a claim can be about.Role arrow. Its label names the role in plain words, such as “thing that falls” or “bearer”; whatever sits at the arrowhead fills it. Every arrow leaving a claim is labelled, including arrows that land on a sentence.thing that fallsRole arrowGrey arrow from a claim. The label names the role; the arrowhead shows who fills it.Reference. The arrowhead lands on a box’s outline, so the role is filled by that whole sentence, not by anything inside it.BReferenceArrowhead on a box outline: the claim is about that whole sentence.Level-crossing reference. The target box encloses the arrow’s own starting point, so the sentence is talking about itself or about a sentence it is part of. This is Hofstadter’s strange loop.SLevel-crossing referenceThick blue: about a sentence that contains it, such as itself.Negation enclosure (Peirce’s cut). Read as not( … ) around everything inside, taken together.notNegation enclosureRed dashed: read as not, applied to everything inside it together.Pass 2 marks: what follows if you assume a valueValue ports. Not part of what the sentence says: they are assumptions you can make about it, used only in Pass 2.TFValue portsOn every box: green T means this sentence is true, orange F that it is false.Implication arrow. Worked out from the content: from a T port, what the content requires when it holds; from an F port, what it requires when it fails. Follow the arrows to play out an assumption.Implication arrowMagenta: if the port it leaves holds, the port it reaches must hold.World panel: the model. It lists which plain facts hold. Each fact sits in its own box with two ports, holds and doesn’t hold, and the world closes one of them.WorldWorld panelGrey panel listing which plain facts hold: the model every verdict is read against.Closed port. The value of a fact that the world rules out. A trace that reaches it has contradicted the world, so the assumption it started from is ruled out.doesn’t holdClosed portA fact’s holds or doesn’t hold port that the world rules out. Reaching it rules out your assumption.Both junction. A T port of a sentence that says several things joined by and runs to this dot; every branch must hold.Both junctionFilled dot: every branch must hold. Used where a sentence says this and that.One-of junction. An F port of an and, or a T port of an or, runs to this ring. Blocked branches drop out; if one is left it is forced; if none, the value is ruled out.One-of junctionHollow ring: at least one branch must hold. If only one branch is open, it is forced.Part numbers: each part of a sentence that says several things gets a small circled number, and every junction branch carries the number of the part it stands for.12Part numbersOn each part of a sentence, and on each junction branch that stands for that part.Verdict layer: what stands out, computed from the arrowsContradiction loop: a set of ports that all reach each other and contains both ports of some sentence. Standard term: a strongly connected component containing x and not-x. This is a paradox.Contradiction loopThick red loop on a red patch: both values of a sentence on one loop. A paradox.Self-supporting loop: a loop through only one value of a sentence. It holds that value up and causes no trouble.Self-supporting loopGreen dashed loop through one value: harmless; it holds that value up.Ruled-out value: the port leads to its own opposite or to a closed port, so that value cannot hold.TRuled-out valueCrossed-out port: this value leads to its own opposite or to a closed port.Depends on a paradox: the sentence is in no contradiction loop itself, but its arrows lead into one.SDepends on a paradoxLightly tinted box: in no loop itself, but its arrows lead into one.Verdict badges, one per sentence, for the world shown: true, false, either, paradox, or depends on a paradox.trueparadoxVerdict badgesOn each sentence: true, false, either, paradox, or depends on a paradox.Faint arrow: an arrow that is on no highlighted loop and on no path that rules a value out. Hover it to read it.Faint arrowAn arrow that decides nothing. Hover it to read it.
Legend: every mark and what it means. Hover a row for more detail.

The first eight are all you need to read what a sentence says. The rest are added on top to show what follows from assuming a sentence is true or false, and where the paradoxes are. Removing them never changes what any sentence says.

Pass 1: what the sentences say

Pass 1 turns the drawing back into words. Ignore the T and F ports and the magenta arrows completely: they never change what a sentence says.

  1. Find the sentences. Every solid grey box with a letter at its top left is a sentence, named by that letter. A box drawn inside another box is a sentence quoted inside the outer one. It is part of the outer sentence's wording, but the outer sentence says something about it only if an arrow points at it.
  2. Read each box's inside. Everything inside a box, apart from boxes nested in it, is what that sentence says. Things placed side by side are joined by "and".
  3. Read each red dashed enclosure as "not". It denies everything inside it, taken together.
  4. Read each dark blue capsule as a claim. The capsule names a relation, such as Falling or IsTrue. Each grey arrow leaving it is labelled with a role, and its arrowhead shows who fills that role.
  5. Check where arrowheads land. An arrowhead on a small rounded box points at a thing, such as Snow. An arrowhead on a sentence box's outline points at that whole sentence. A thick bright blue arrow lands on a box that contains the arrow's own starting point: the sentence is talking about itself, or about a sentence it is part of.

Worked on the liar. There is one box, S. Inside it is a red enclosure, and inside that an IsTrue capsule. The capsule's arrow, labelled bearer, lands on S's own outline and is drawn thick blue. Reading from the inside out: IsTrue with S as bearer is "S is true"; wrapped in not, it becomes "S is not true". So S says of itself that it is not true:

S := \neg\,\mathrm{IsTrue}(\text{bearer}: S)

If two people following these steps could arrive at different readings, the diagram is drawn wrongly. The language treats that as an error in the drawing, never as ambiguity in the sentence.

Pass 2: what the self-reference does

Pass 2 asks what happens if you assume a sentence is true, or false, and play it out. The answer is drawn on the same diagram with two extra marks.

Value ports. Each sentence box has two small circles on its bottom edge. The green T port means "this sentence is true"; the orange F port means "this sentence is false". They are the places your reasoning can be.

Magenta arrows. Each one reads "if this, then that". They are worked out from what the sentence says, so you can check any arrow yourself:

The World panel. A claim about a plain fact, like Falling(thing that falls: Snow), points at a fact in the grey World panel below the sentences. The panel is the model: it says which facts hold. Each fact sits in its own box showing the claim, with two ports on top labelled holds and doesn’t hold. They work like a sentence’s T and F ports, and the world closes one of them, drawn grey and crossed through. Change the world and the verdict of a sentence that mentions a fact can change. Sentences that are only about other sentences, like the liar, get the same verdict in every world.

How to follow them. Put your finger on a port: that is what you are assuming. Follow its magenta arrow to the next port, then that port's arrow, and keep going. Each arrow is one step of "if it's true, then it's false, but if it's false, then...".

What you can find. Every trace ends in one of three shapes:

You see It means
Your trace reaches the opposite port of the sentence you started with, or a closed port That assumption defeats itself, so that value is ruled out
A sentence's T port leads round to its own F port, and the F port leads back round to T Both values are ruled out: a contradiction loop, and the reasoning never settles
Your trace only ever returns to ports that agree with your assumption Nothing rules that value out

The overall verdict. Check each sentence in turn:

Result for the sentences Verdict Standard term
Some sentence has both values ruled out Contradiction loop: no consistent answer Paradox
Every sentence has exactly one value ruled out Exactly one consistent answer: the values left standing No standard term
No contradiction, and some sentence has neither value ruled out More than one consistent answer Underdetermined

You rarely need to trace by hand. The diagrams draw the verdict for you. A paradox shows as a thick red loop on a red patch, with a red paradox badge on each sentence involved. A harmless loop that holds one value up is green and dashed. Ruled-out values are crossed out, and a sentence that leads into someone else's paradox is lightly tinted with a depends on a paradox badge. Arrows that decide nothing are drawn faint. Every sentence carries a verdict badge: true, false, either, paradox, or depends on a paradox.

Junctions for and and or. When a sentence says two things joined by and, its T port's arrow runs to a filled dot labelled both: every branch must hold. Its F port's arrow runs to a hollow ring labelled one of: at least one branch must hold. At a one-of ring, branches that hit a closed port or the opposite of your assumption drop out. If one branch is left, it is forced; if none are left, the assumption is ruled out; if several are left, try each in turn, and if every one fails the assumption is ruled out. Each part of the sentence carries a small circled number, and so does each branch, so you can see which part a branch stands for. Example 7 in the spec shows why this matters: "The present king of France is not bald" gives two different diagrams depending on whether the "not" covers both parts or only the second.

Self-reference is not the same as trouble. Grey and blue arrows that lead back to where they started show that self-reference exists; that is a reference cycle. Magenta arrows show whether it causes trouble. The truth-teller has a reference cycle but no contradiction loop: its T port leads only to itself, and so does its F port.

Worked walkthrough: Example 5b

Example 5b is the hardest case so far: two reference cycles, and the answer is still a single consistent one. Here are both passes, step by step.

Example 5b: Q true and S false are ruled out, leaving Q false and S true5b. Reads back as S := ¬IsTrue(bearer: Q) and Q := IsTrue(bearer: Q) ∧ IsTrue(bearer: S).5b · The statement “this statement is true and S is true” is falseVerdict for S: true. S false is ruled out.trueSnotIsTruebearerVerdict for Q: false. Q true is ruled out.falseQIsTrueandIsTruebearerbearer, lands on SQ true. Ruled out: both of Q’s claims must hold, so S is true, which leads to Q false.Q false. Stands: Q being false already makes its content false.S true. Stands: it leads to Q false, and nothing clashes.S false. Ruled out: it leads to Q true, and then to S true.TFTFBoth junction: Q’s content says two things joined by and, so if Q is true both must hold.bothIf Q is true, both of its claims must hold.First branch: Q’s second claim, S is true.If S is false, then Q is true: S’s content must fail.If S is true, then Q is false: S’s content must hold.Second branch, Q’s first claim, Q is true: a self-supporting loop.1221Q true needs both claims, so S true, which leads to Q false: ruled out. S false leads to Q true, then S true: ruled out.
Example 5b. Hover a port or arrow to see the step it stands for.

Pass 1. There are two sentences. S is the outer box, and Q is quoted inside it.

  1. Inside S, outside Q, is a red enclosure holding an IsTrue capsule whose arrow lands on Q's outline. So S says "Q is not true".
  2. Inside Q are two IsTrue capsules side by side, so Q says two things joined by "and". One arrow lands on Q's own outline, the other on S's outline. Both are thick blue, because both point at a box that contains them. So Q says "Q is true and S is true".
S := \neg\,\mathrm{IsTrue}(\text{bearer}: Q) \qquad Q := \mathrm{IsTrue}(\text{bearer}: Q) \wedge \mathrm{IsTrue}(\text{bearer}: S)

Pass 2. Try each of the four ports.

  1. Assume Q is true. Q's content must hold, so both its claims are forced: an arrow back to Q's own T port, which adds nothing, and an arrow to S's T port. From S true, S's content must hold, so Q is not true: an arrow to Q's F port. The trace started at Q true and reached Q false, so Q true is ruled out.
  2. Assume S is false. S's content must fail, so Q is true: an arrow to Q's T port, which leads on to S's T port as in step 1. The trace started at S false and reached S true, so S false is ruled out.
  3. Assume Q is false. No arrow leaves this port. Q being false already makes "Q is true and S is true" false, so nothing more is forced and nothing clashes.
  4. Assume S is true. The arrow leads to Q's F port, and from there nothing more is forced. No clash.

Verdict. Each sentence has exactly one value ruled out, so there is exactly one consistent answer: Q false, S true. You can check it against Pass 1. S says Q is not true, and Q is false, so S is right. Q says "Q is true and S is true", which is false, matching Q being false.

To watch this happen, open Example 5b in the stepper and tap Q's T port.

Common misreadings

Most reading mistakes come from treating two different marks as the same thing. These are the ones to watch for.

Misreading Correct reading
All arrows mean roughly "points to" There are three kinds. Grey arrows are roles in a claim. Thick blue arrows are references to a sentence that contains them. Magenta arrows are reasoning about truth values, not part of what anything says. Only grey and blue count in Pass 1.
A box inside a box is part of what the outer sentence claims A nested box is quoted, not asserted. The outer sentence says something about it only through a capsule whose arrow lands on it.
The F port is the same as a red "not" enclosure The red enclosure is part of what the sentence says. The F port is an assumption you make about the sentence. "This statement is false" has a red enclosure in its content and still has both a T and an F port.
A reference cycle means paradox A reference cycle only means self-reference exists. The truth-teller has one and is not a paradox.
Any loop of magenta arrows means paradox Paradox needs a loop through both ports of one sentence, drawn red. A loop through only one port, as in the truth-teller, is drawn green and dashed: the assumption is self-consistent.
No arrow from a port means it is ruled out No arrow means nothing further is forced. A value is ruled out only when a trace reaches its opposite port or a closed port.
Layout carries meaning Where boxes sit and how lines bend never change a reading. Only what is inside what, and where arrowheads land, matter.

Terms

The diagrams use the clearest name for each idea; the standard term from the literature is given beside it.

Name used here Standard term Meaning
Sentence Sentence A named piece of language, drawn as a box
Content Proposition What a sentence says, drawn inside its box
Bearer Truth-bearer The sentence an IsTrue claim is about
Role name Thematic role The part a participant plays, in plain words, such as "thing that falls"
Negation enclosure Cut (Peirce) Red dashed enclosure; denies what is inside
Reference cycle Cycle in the reference graph Grey and blue arrows that lead back to the starting sentence
Level-crossing reference Hofstadter's strange loop A reference to a sentence that contains it
World Model, or interpretation Which plain facts hold, drawn as the World panel
Value port Literal, in an implication graph "This sentence is true" or "this sentence is false"
Closed port No standard term A fact's value that the world rules out
Implication arrow Edge of an implication graph If the first port holds, the second must
Ruled out Refuted A value whose trace reaches its own opposite, or a closed port
Consistent answer Fixed point (Kripke), or satisfying assignment True or false for every sentence, agreeing with what each one says, in the given world
Contingent Contingent A sentence whose verdict depends on the world
Contradiction loop Paradox Both values of some sentence are ruled out
More than one consistent answer Underdetermined Several answers fit and nothing picks one

Limits and where to go next

Version 0.1 handles sentences built from things, claims, "and" and "not". Four kinds of sentence cannot be drawn faithfully yet:

For the rules in full, see the spec. To practise, open the Self-reference stepper, tap a port, and follow the arrows one at a time.