Part IV · Graphs and AI

Trustworthy AI, One Graph at a Time

Created by

AI systems state false facts with confidence, hide their reasoning, and act without a paper trail. Nearly every working fix for these trust failures is built on the mathematics of this course: after this chapter you will be able to read current research on AI reliability and recognize the graphs doing the work.

The trust problem, drawn as a picture

A large language model (LLM), the kind of system behind chatbots such as ChatGPT and Claude, has a trust problem with several distinct faces. It states false facts fluently and confidently, a failure the field calls hallucination. Its reasoning happens inside billions of numerical weights, where no one can watch it. When it cites sources, the citations often fail to support the claims they are attached to. It learns which things go together, not which things cause which, so its decisions can break the moment circumstances change. And when it acts as an autonomous agent, browsing the web, writing files, and running code on your behalf, it is hard to establish afterwards what it did and whether it was allowed to do it.

Over the last three years, a pattern has emerged in the research aimed at each of these failures. The leading fixes are built on graphs. Not graphs in the everyday sense of bar charts, but graphs in exactly the sense of this course: vertices and edges, paths and trees, directed acyclic graphs, cuts and separators, even lattices. Facts become labeled edges that can be checked one at a time. Reasoning becomes a directed graph whose vertices can be re-verified. An agent's actions become a graph in which "could the secret have leaked?" is a question about directed paths. The inside of the model itself is now being extracted as a weighted graph of cause and effect.

Intuition

A graph is the data structure of accountability. A claim buried in a paragraph, or in a billion model weights, cannot be pointed at. The same claim drawn as an edge between two named vertices can be inspected, tested, traced, or deleted. Whenever you see a trust mechanism for AI, look for the moment something diffuse gets redrawn as vertices and edges: that is the moment verification becomes possible.

One honest warning before we start, and we will return to it at the end. A graph is scaffolding for verification, not a magic fix. Turning an answer into a graph does not make the answer true; it makes the answer checkable, which is a different and more modest thing. Every system in this chapter still depends on the quality of the graph it builds and on someone actually doing the checking.

This chapter visits six research fronts: grounding answers in knowledge graphs, fact-checking output edge by edge, structuring the model's reasoning as a graph, recording provenance, reasoning about causes with directed acyclic graphs, and reading the model's internal circuitry as an attribution graph. Along the way we pick up the auditing of AI agents and a fifty-year-old lattice model of security that has found a second life. Chapter 13 introduced graphs as the substrate of modern AI; Chapter 14 covered retrieval over knowledge graphs in depth. This chapter is about trust.

This section calls the moment something diffuse gets redrawn as vertices and edges the moment verification becomes possible. What does that redrawing actually buy you?

  1. The claim becomes checkable one edge at a time, without thereby becoming true
  2. The claim becomes true, because graphs are mathematical objects
  3. The model's weights are compressed, so the answer arrives faster
  4. Human review is no longer needed once the graph exists
Answer: A. A graph is scaffolding for verification: a claim drawn as an edge can be inspected, tested, or deleted. Option B is the error the section warns against, and option D is its opposite: someone still has to do the checking.

New notation in this chapter

Everything here runs on directed graphs, so most of the new notation is directed vocabulary, plus two imports from neighbouring fields: probability's independence symbol and order theory's lattice operations.

SymbolRead it asMeaningTiny example
\((s, r, o)\)"the triple s, r, o"A fact stored as a directed edge from subject \(s\) to object \(o\), labeled with the relation \(r\).(Canberra, capital_of, Australia).
\(d^+(v)\)"the out-degree of v"The number of edges leaving vertex \(v\) in a directed graph.If \(v\) has edges to \(a\) and \(b\), then \(d^+(v)=2\).
\(d^-(v)\)"the in-degree of v"The number of edges entering vertex \(v\).A merge vertex in a graph of thoughts has \(d^-(v)\ge 2\).
\(\mathrm{Anc}(v)\)"the ancestors of v"All vertices from which a directed path reaches \(v\). (Course-local shorthand, not in Diestel.)In \(a \to b \to c\), \(\mathrm{Anc}(c)=\{a,b\}\).
\(\mathrm{Desc}(v)\)"the descendants of v"All vertices reachable from \(v\) by a directed path. (Course-local shorthand.)In \(a \to b \to c\), \(\mathrm{Desc}(a)=\{b,c\}\).
\(X \to Y\)"X points to Y"; in a causal graph, "X directly causes Y"A directed edge from \(X\) to \(Y\).Season \(\to\) Drownings.
\(X \perp Y \mid Z\)"X is independent of Y given Z"Once \(Z\) is held fixed, learning \(X\) tells you nothing further about \(Y\).IceCream \(\perp\) Drownings \(\mid\) Season.
\(\mathrm{do}(X{=}x)\)"do X equals x"; "set X to x by force"An intervention: delete every edge into \(X\) and fix its value to \(x\).\(\mathrm{do}(\text{IceCream}{=}0)\): ban ice cream.
\(a \le b\)"a is below b" (partial order)An order relation in which some pairs may be incomparable.Public \(\le\) Secret; Read and Secrets incomparable.
\(a \vee b\)"the join of a and b"The least element above both \(a\) and \(b\) in a lattice.Read \(\vee\) Secrets = Top.
\(a \wedge b\)"the meet of a and b"The greatest element below both \(a\) and \(b\) in a lattice.Read \(\wedge\) Secrets = Public.

We freely reuse earlier notation with a one-clause reminder at first use: \(V(G)\) and \(E(G)\) for vertex and edge sets, \(N(v)\) for the neighbourhood of \(v\), and the structural vocabulary of paths, cycles, trees, bipartite graphs, cuts, and separators from Chapter 1 through Chapter 3.

In the notation of this chapter, \(\mathrm{do}(X{=}x)\) tells you to do what to the graph?

  1. Hold \(X\) at the value \(x\) while leaving all of \(X\)'s edges in place
  2. Delete every edge leaving \(X\), then read off the value of \(X\)
  3. Delete every edge entering \(X\) and fix \(X\) to the value \(x\)
  4. Add an edge from \(X\) to every other vertex, then set \(X\) to \(x\)
Answer: C. Setting a variable by force cuts it loose from whatever normally causes it, so the incoming edges go. Option A is observing rather than intervening, and option B deletes the wrong direction: the outgoing edges are exactly what we want to keep and watch.

Grounding: facts as labeled edges

Why do language models hallucinate about facts at all? Because of where their facts live. A model's knowledge is smeared across billions of numerical parameters. There is no address where "the capital of Australia" is stored, no way to update that one fact cleanly, and no mechanism that stops the model from producing a plausible-sounding invention in the same fluent voice it uses for the truth.

Definition — knowledge graph

A knowledge graph is a directed graph whose vertices are entities (people, places, drugs, companies) and whose edges carry relation labels, with parallel edges allowed between the same pair of vertices (a directed multigraph, in the vocabulary of Chapter 1). A single fact is a triple \((s, r, o)\): an edge from subject \(s\) to object \(o\) labeled with relation \(r\). In plain words: a knowledge graph is a database whose rows are arrows, and each arrow states one checkable fact.

The triple (Canberra, capital_of, Australia) is an edge from the vertex Canberra to the vertex Australia, labeled capital_of. A compound fact is a walk. "The capital of the country where the Sydney Opera House stands" is a walk of length two: follow the located_in edge from the Opera House to Australia, then the capital edge from Australia to Canberra. Large public knowledge graphs such as Wikidata and DBpedia store facts about the world in exactly this form[1].

An influential roadmap paper by Pan and colleagues frames the two technologies as complements[1]. Language models are general and fluent but opaque and unreliable about facts. Knowledge graphs are explicit, structured, and auditable but rigid and incomplete. The paper maps three ways to combine them: feed the graph into the model, use the model to build and query the graph, or wire the two together so each checks the other. A survey by Agrawal and colleagues, focused specifically on hallucination, organizes graph-based defenses by where the graph enters the pipeline: during training, during answering (retrieval), or after generation (verification)[2].

Figure 15.1 shows the core idea. An ungrounded model maps a prompt straight to an answer, and the answer hangs in the air: there is no object you can point at to ask "supported by what?". A grounded model consults a knowledge graph, and its answer arrives attached to a path. Every hop of the path is an edge someone can check.

Ungrounded Grounded supported by what? q M a prompt model answer consults located in capital supports q M a O Au Cb prompt model answer Opera House Australia Canberra
Figure 15.1. Ungrounded versus grounded generation. Left: the answer \(a\) has no edge to any evidence, so nothing about it can be checked. Right: the model consults a knowledge graph, and the answer to "capital of the country where the Opera House stands" arrives attached to the length-2 walk Opera House \(\to\) Australia \(\to\) Canberra. Each hop is a checkable edge.

Two concrete systems show the flavor. Microsoft's GraphRAG, the subject of Chapter 14, extracts an entity graph from a document collection, detects communities in it (vertex sets with many internal edges and few edges leaving, the intuition behind the cuts of Chapter 3 and Chapter 6), and answers broad questions from per-community summaries[3]. Think-on-Graph goes further: it makes the model an agent that walks the knowledge graph itself, running a beam search over the graph's edges, keeping the most promising reasoning paths alive at each step, and returning its final answer together with the path that justifies it. Its authors call the property "knowledge traceability": a human expert can look at the returned path and check every hop[4].

In the real world

Real knowledge graphs are not uniform. They are sparse and highly clustered, with heavy-tailed degree distributions: a few hub entities (think of a vertex like United States) have enormous degree while most vertices have few neighbours. This is exactly the contrast with the uniform random graphs of Chapter 11, and it shapes how systems like Think-on-Graph search: a beam search that expands a hub vertex naively drowns in neighbours[1][4].

A grounded system answers "the capital of the country where the Sydney Opera House stands" from a knowledge graph. What object in the graph is the answer attached to?

  1. A single edge labeled capital, running from Opera House to Canberra
  2. A vertex whose label holds the whole question
  3. A spanning tree rooted at the Opera House vertex
  4. A walk of length two: Opera House \(\to\) Australia \(\to\) Canberra
Answer: D. A compound fact is a walk, one labeled edge per hop, and each hop is separately checkable. Option A collapses the two hops into an edge the graph does not contain, which is precisely the shortcut grounding is meant to prevent.

Catching a hallucination edge by edge

Grounding tries to prevent hallucination before it happens. Verification catches it afterwards. The move is the same in both directions: translate prose into edges, because edges can be tested one at a time while a paragraph can only be eyeballed as a whole.

FactKG is a benchmark built for the direction "check a claim against a big trusted graph": 108,000 natural-language claims, each to be verified against a knowledge graph[6]. Its designers deliberately spread the claims across five reasoning types, and every one of them is a graph query you can already name. One-hop: does this single edge exist? Conjunction: do all of these edges exist? Existence: does any edge with this label leave this vertex? Multi-hop: is there a path with these labels? Negation: is this edge absent?

GraphEval flips the direction[5]. Instead of checking against a public graph, it converts the model's own output into a small knowledge graph, then tests each triple of that graph against the context the model was given: is this edge entailed by the source text or not? Because the verdict attaches to individual edges, the system can point at which edge is hallucinated rather than flagging the whole paragraph. The same paper adds GraphCorrect, which repairs the flagged edges and reports that most hallucinations it finds can be fixed in place[5].

Worked example

Suppose a model, given a short article about Australia, writes: "Canberra is the capital of Australia. It is Australia's largest city. It is the seat of the national parliament." Decompose the paragraph into three triples: (Canberra, capital_of, Australia), (Canberra, largest_city_of, Australia), (Canberra, seat_of, Parliament). Check each edge against the article. The first and third are entailed. The second is not: the article says Sydney is the largest city. The paragraph is not "somewhat wrong"; it contains exactly one unsupported edge, and the graph decomposition names it. Figure 15.2 draws the result.

capital of largest city of (not entailed) seat of Cb Au P Canberra Australia Parliament
Figure 15.2. A hallucination located, not just detected. The generated paragraph becomes three labeled edges. Solid edges are entailed by the source text; the dashed edge (Canberra, largest_city_of, Australia) is not. The hallucination is that edge.

In course terms, claim verification is subgraph matching: does the claim graph embed in the trusted graph? One-hop verification is edge membership. Multi-hop verification is the existence of a path with prescribed labels, a constrained cousin of the connectivity questions of Chapter 3. And there is a covering condition hiding here, in the sense of Chapter 2: put the generated claims on one side of a bipartite graph and the retrieved evidence passages on the other, with an edge when a passage supports a claim. "The answer is fully supported" says the support edges cover the claim side.

Common mistake

A missing edge is not a false claim. Knowledge graphs are incomplete, so "no edge found" can mean "false" or merely "not recorded". Verification against a graph gives you unsupported, which justifies suspicion, not refutation. FactKG's negation queries and GraphEval's entailment tests are careful about this distinction; readers of such systems should be too[5][6].

A verifier searches a trusted knowledge graph for the edge a claim asserts and finds no such edge. What does this section say the result establishes?

  1. The claim is refuted: the missing edge proves it false
  2. The claim is unsupported, which justifies suspicion but not refutation, since the graph may simply be incomplete
  3. The claim is confirmed, because only a contradicting edge counts against it
  4. Nothing can be said until the claim is rewritten as a multi-hop path
Answer: B. Knowledge graphs record a fraction of the world, so "no edge found" mixes "false" with "not recorded". Option A is the tempting slide from unsupported to false, and it is the mistake the section flags.

Chains, trees, and graphs of thought

So far the graph has lived outside the model, as a store of facts. The next idea moves it into the model's reasoning process itself, and the progression reads like the opening of Chapter 1: first a path, then a tree, then a directed acyclic graph.

Ask a model to "think step by step" and you get chain-of-thought prompting, introduced by Wei and colleagues: the model writes intermediate reasoning steps before its final answer, and this measurably improves performance on arithmetic, commonsense, and symbolic reasoning tasks[7]. Structurally, a chain of thought is a path. Each thought has one predecessor and one successor. There is no way to consider an alternative and no way to back up from a mistake: one bad step early poisons everything after it.

Tree of Thoughts, by Yao and colleagues, fixes the no-backing-up problem[8]. The model proposes several candidate next thoughts (branching), scores how promising each one looks, and explores the resulting tree with lookahead and backtracking, exactly like a search tree in classical algorithms. On tasks that genuinely require search the gains are dramatic. On the Game of 24 puzzle, where four numbers must be combined with arithmetic to reach 24, GPT-4 with chain-of-thought prompting solved 4% of instances; the tree-based search solved 74%[8].

Graph of Thoughts, by Besta and colleagues, takes the final step: thoughts are vertices, dependencies between thoughts are edges, and the structure is an arbitrary directed graph[9]. The new power is merging. Two lines of reasoning developed independently can be combined into a single thought, which is a vertex with in-degree \(d^-(v)\ge 2\), and a thought can be refined through feedback loops. On a sorting task the authors report 62% higher output quality than tree-of-thoughts alongside a cost reduction of more than 31%[9]: extra edges buy reuse of intermediate work.

Chain (path) Tree Graph (DAG) a b c d backtrack r s t x y z merge u v w m z
Figure 15.3. Three shapes of machine reasoning. A chain of thought is a path \(a \to b \to c \to d\): no alternatives, no recovery. A tree adds branching and backtracking: the run abandons the faded branch through \(t\) and commits to the highlighted path \(r \to s \to y\). A graph of thoughts adds merging: vertex \(m\) has in-degree 2, combining the lines through \(v\) and \(w\) before the answer \(z\).
Common mistake

Backtracking and merging sound similar but live at different levels of the hierarchy. Backtracking only needs a tree. Merging is impossible in a tree: recall from Chapter 1 that a tree on \(n\) vertices has exactly \(n-1\) edges and a unique path between any two vertices. Give a vertex two parents and you create a second route to it, hence a cycle in the underlying undirected graph, and the structure is a tree no longer. Merging is precisely what requires the step from tree of thoughts to graph of thoughts.

Why does this matter for trust, and not just for benchmark scores? Because an explicit reasoning graph is inspectable. You can see exactly which intermediate results fed the final answer, re-verify any single vertex, and after fixing one, re-run only \(\mathrm{Desc}(v)\), the part of the computation downstream of the fix. Deciding what to compute first is a topological ordering of the dependency graph, the directed acyclic graph (DAG for short: a directed graph with no directed cycle) whose existence of a valid order is guaranteed exactly by acyclicity. A hidden chain of activations offers none of this. A drawn graph of thoughts offers all of it.

A run proposes three candidate next thoughts, scores them, abandons two, and later returns to an earlier thought to try a different branch. What is the least structure this needs?

  1. A path
  2. An undirected cycle
  3. A tree
  4. A directed acyclic graph containing a vertex of in-degree 2
Answer: C. Branching into alternatives plus backing up is exactly what a tree adds to a chain. A path (A) holds no alternatives at all, and a merge vertex (D) is more structure than this run uses.

One intermediate thought \(v\) in an explicit reasoning graph turns out to be wrong and is recomputed. Which vertices have to be redone?

  1. \(\mathrm{Desc}(v)\), the thoughts downstream of \(v\)
  2. \(\mathrm{Anc}(v)\), the thoughts that fed \(v\)
  3. Only the vertices adjacent to \(v\)
  4. Every vertex, since a graph has no computation order
Answer: A. Only what depended on \(v\) is affected, and that is its descendant set. The ancestors (B) were computed before \(v\) and are untouched, and a topological order of the acyclic dependency graph tells you the sequence, so option D is unnecessary.

Provenance: the graph behind a citation

A trustworthy answer is not just correct. It is checkably correct, which requires a record of support: this claim rests on that passage, which came from that document, which was retrieved by that query. Such a record is naturally a directed graph.

Definition — provenance graph

A provenance graph of a generation or agent run is a directed acyclic graph whose vertices are typed events and artifacts (a user request, a retrieval, a document, an extracted claim, a tool call, an answer) and which has an edge \(u \to v\) whenever \(u\) was an input to producing \(v\). In plain words: it is the full family tree of the answer, with every ancestor on record.

A typed catalogue card with ruled boxes for a work of art's details, carrying a stamp across the top.
Plate 15.A. A Property Card Art from the Munich Central Collecting Point, where the Allies catalogued art looted during the Second World War. The presumed-owner box reads "France / Botschaft Rothschild / id.acc.to ERR-records", so the owner was traced from the looting agency's own paperwork. Every field under For office use, claim number, file number, movements, is blank. US Army Monuments, Fine Arts and Archives. Wikimedia Commons, public domain.

How badly is this record needed? Gao and colleagues built ALCE, the first benchmark that requires models to generate answers with inline citations and then automatically scores whether the cited passages actually support the cited claims[10]. The sobering headline: even the best model they tested lacked complete citation support roughly half the time on some datasets. In graph terms, the claim-to-source edges that models emit are frequently wrong or missing, so the bipartite claim-source graph (claims on one side, passages on the other, in the sense of Chapter 2) cannot be taken at face value; it has to be measured and repaired.

For full AI agents the stakes rise, because the run involves actions, not just sentences. A 2026 survey by Wang and colleagues argues that "final-answer accuracy alone cannot explain how an output was produced," and reviews execution provenance: recording an agent's entire run, its retrievals, tool calls, memory reads and writes, and intermediate claims, as one typed directed graph[11]. Once the run is a graph, auditing becomes graph analysis, and each audit question is one you can already state precisely. Which evidence is the answer derived from? That is \(\mathrm{Anc}(a)\), the set of vertices with a directed path to the answer vertex \(a\). Did any untrusted input influence a critical action? That asks whether a directed path exists from a tainted vertex to the action vertex. Where did a failure originate? Walk the ancestors of the bad output.

q s1 s2 p1 p2 c1 c2 a user request search trusted page claim search untrusted page claim answer
Figure 15.4. An execution-provenance audit. The evidence basis of the answer is \(\mathrm{Anc}(a)\): every vertex shown. The untrusted page \(p_2\) has a directed path to \(a\) (highlighted), so the answer is tainted. Certifying the opposite ("no untrusted vertex reaches \(a\)") means exhibiting a cut between the untrusted set and \(a\).
Worked example

Read Figure 15.4 as an auditor. Question one: what is the answer based on? Compute \(\mathrm{Anc}(a)\) by walking edges backwards from \(a\): both claims, both pages, both searches, the request. Question two: is the answer clean? Search for a directed path from the untrusted vertex \(p_2\) to \(a\). There is one: \(p_2 \to c_2 \to a\). The audit fails, and the graph shows exactly where: quarantine \(c_2\), regenerate, and only \(\mathrm{Desc}(c_2)\) needs redoing.

A hand-completed printed shipping form from 1853, with a small hand-coloured flag drawn in the left margin.
Plate 15.B. A bill of lading for two barrels shipped from Boston to San Francisco aboard the clipper Carrier Pigeon, signed 21 January 1853. Its printed clause states that four bills of this tenor and date were issued and that once one is accomplished the others stand void: exactly one copy may be acted on. The single-live-record rule predates every digital ledger that enforces it. 1853. Wikimedia Commons, public domain.

The certification direction deserves its own sentence, because it is Menger's theorem wearing work clothes. To prove an answer cannot be tainted, show there is no directed path from any untrusted vertex to the answer; equivalently, exhibit a separator, a set of checked vertices meeting every such path. That every-path-meets-the-cut logic is exactly the connectivity duality you learned in Chapter 3[20].

In a provenance graph, what does an edge \(u \to v\) record?

  1. That \(u\) and \(v\) were produced at the same step of the run
  2. That \(u\) was an input to producing \(v\)
  3. That \(v\) was retrieved before \(u\)
  4. That \(u\) and \(v\) carry the same trust label
Answer: B. Edges point from input to product, which is what makes walking backwards from the answer give its evidence basis and walking forwards give what a repair invalidates. Timing (A, C) is not what the edge asserts.

Causal graphs: surviving change

The trust failures so far were about facts and records. A deeper one is about the difference between correlation and cause. A model trained purely on observed data learns which things go together. Ice-cream sales and drowning deaths rise together every summer; a correlational model happily learns the association, and a decision system built on it might conclude that banning ice cream would save swimmers. What is missing is a way to represent "Season causes both" and to reason about what changes when you intervene. Judea Pearl's framework does exactly this, and its central object is a graph.

Definition — causal DAG and intervention

A causal DAG is a directed acyclic graph whose vertices are variables and whose edge \(X \to Y\) asserts that \(X\) directly causes \(Y\). An intervention \(\mathrm{do}(X{=}x)\) deletes every edge entering \(X\) and fixes \(X\) to the value \(x\). In plain words: the graph records who pushes whom, and intervening means grabbing one variable yourself, which cuts it loose from its usual causes.

The graph-theoretic engine of the framework is d-separation, a purely structural rule that reads independence off the picture. A path between two variables transmits association unless it is blocked. An ordinary vertex on the path blocks it once you condition on that vertex, that is, hold it fixed. A collider, a vertex where both path edges point inward, does the opposite: it blocks the path by default and opens it when conditioned on. Working out which variables to hold fixed, so that all spurious paths between a treatment and an outcome are blocked while the genuine causal paths stay open, is pure path analysis on a DAG. In our example, the path IceCream \(\leftarrow\) Season \(\rightarrow\) Drownings is open, which is why the two correlate; conditioning on Season blocks it, giving IceCream \(\perp\) Drownings \(\mid\) Season ("ice cream is independent of drownings once season is held fixed").

Observe Intervene correlated S I D Season Ice-cream sales Drownings cut force S I D Season Ice-cream sales Drownings unchanged
Figure 15.5. A causal DAG with an intervention. Left: Season \(S\) causes both ice-cream sales \(I\) and drownings \(D\); the open path \(I \leftarrow S \rightarrow D\) makes them correlate. Right: the intervention \(\mathrm{do}(I{=}x)\) deletes the edge \(S \to I\) and sets \(I\) by force. No directed path leaves \(I\) toward \(D\), so drownings do not move. Correlation without a causal path buys you nothing under intervention.
Intuition

d-separation is a directed cousin of the separation you studied in Chapter 3. There, a set \(S\) separates \(A\) from \(B\) when every \(A\)-\(B\) path meets \(S\), and Menger's theorem trades separators for disjoint paths. Here, association flows along paths, and the conditioning set plays the role of the separator, with one twist supplied by edge directions: colliders block on their own and open when touched. Independence certified by a path-blocking argument on a graph should feel like home.

Common mistake

Conditioning always helps, right? No. Conditioning on a collider opens a path that was blocked. If two independent causes both feed an effect and you hold the effect fixed, the causes become correlated in your filtered data. Statistical practice calls this collider bias or selection bias; on the graph it is one orientation check away from being visible.

Two verified research threads connect this machinery to AI trust. Kaddour and colleagues survey causal machine learning: using a causal graph plus equations (a structural causal model) to make models robust to distribution shift, to make generative models controllable by intervention, to make explanations counterfactual ("what would the decision have been had the applicant's income differed?"), and to make fairness claims formally analyzable[13]. And Kıcıman and colleagues tested whether language models can do causal reasoning themselves: GPT-4 reached 97% accuracy on pairwise causal-discovery questions and 92% on counterfactual reasoning benchmarks, far above earlier methods, yet the same paper documents unpredictable failure modes and notes that the models "ignore actual data"[12]. Their proposed synthesis is a division of labor: let the fluent-but-fallible model help human experts draft the causal DAG from domain knowledge, then let the sound-but-narrow graph machinery do the rigorous inference. The graph is the interface between the two kinds of system.

Two variables with no edge between them both point into a third. What happens to the two when you condition on that third variable?

  1. Nothing: conditioning can only block a path, never open one
  2. They stay independent, because a path through such a vertex is open by default
  3. They become independent, which is the usual point of conditioning
  4. They become correlated: conditioning on a collider opens the path it was blocking
Answer: D. A collider blocks its path by default and opens it once held fixed, the reverse of an ordinary vertex. Option B has that default backwards, and options A and C assume conditioning always removes association.

In Figure 15.5 the intervention \(\mathrm{do}(I{=}x)\) forces ice-cream sales, and drownings do not move. Why not?

  1. No directed path leaves \(I\) toward \(D\), so forcing \(I\) sends nothing downstream
  2. The intervention also deletes the edge \(S \to D\)
  3. \(I\) and \(D\) were never correlated in the observed data
  4. Conditioning on \(I\) blocks the path through Season
Answer: A. An intervention propagates only along directed paths out of the variable you seized, and \(I\) has none reaching \(D\). Option B deletes the wrong edge, since only edges entering \(I\) are cut, and option D confuses conditioning with intervening.

Neurosymbolic welds

That division of labor has a name. Neurosymbolic AI combines neural networks, which are good at perception and language but offer no guarantees, with symbolic reasoning, meaning logic, rules, constraint solving, and graph algorithms, which offer guarantees but cannot read raw text or pixels. The trust argument is direct: if the final answer is produced or checked by a symbolic component, you can verify it and prove properties about it, whatever the neural part did internally. The knowledge-graph systems earlier in this chapter are neurosymbolic in spirit: Think-on-Graph is a neural model steering a symbolic search over an explicit graph[4], and the "synergized" category of the Pan roadmap describes designs where neural and graph components check each other[1].

How much of the field aims at trust? A systematic review by Colelough and Regli analyzed 167 peer-reviewed neurosymbolic papers from 2020 to 2024 and sorted them by focus (papers can count in more than one category): 63% work on learning and inference and 44% on knowledge representation, while explainability and trustworthiness sit at only 28%, and meta-cognition, systems that know what they know, at 5%[14]. The authors flag the gap as the field's opportunity: the machinery for verifiable hybrid reasoning exists, but few groups aim it at trust.

For you, the striking fact is how regularly symbolic problems compile to graph problems you have studied. Constraint satisfaction relates to the colouring of Chapter 5: assigning values to variables so that constrained pairs differ is graph colouring, which is why compilers colour interference graphs to allocate registers. Logical entailment over a rule base is reachability in an implication graph. Aligning the entities of a generated answer with the entities of a knowledge graph is a matching problem in a bipartite graph, the territory of Chapter 2. And the lesson of Chapter 12 applies with full force: many hard symbolic problems become tractable when their constraint graphs are tree-like, which is why solvers care intensely about tree-width.

Assigning values to variables so that every constrained pair of variables gets different values is which graph problem from this course?

  1. Bipartite matching
  2. Graph colouring
  3. Finding an Eulerian circuit
  4. Topological ordering
Answer: B. Constrained pairs are edges, and giving adjacent vertices different values is a proper colouring, which is why compilers colour interference graphs. Matching (A) is the entity-alignment problem in this section, not the constraint one.

Watching the agent: action graphs and permission lattices

An AI agent is a model wired to tools: it can browse, write files, run code, send messages. This changes the question from "is the answer right?" to "were the actions safe and authorized?" Three graph structures organize the current answers.

The first we have met: record the whole run as an execution-provenance DAG[11]. Dependency edges answer operational questions directly. What would re-running this step invalidate? \(\mathrm{Desc}(v)\), its descendants. What influenced this dangerous command? \(\mathrm{Anc}(v)\). Is there a valid order to execute pending tasks? Yes exactly when the dependency digraph is acyclic, in which case a topological order exists; a directed cycle among tasks is a deadlock, and cycle detection finds it.

An open two-page spread of a handwritten notebook with an ink diagram of two instruments on the left page.
Plate 15.C. Alexander Graham Bell's laboratory notebook, open at 10 March 1876. The left page sketches and labels the transmitting and receiving instruments, and the sentence recording the call to Watson runs over the fold onto the right. What makes it evidence is what an execution record needs too: dated, in sequence, written while the work happened, and not revised after. Alexander Graham Bell, 1876. Wikimedia Commons, public domain.

The second is runtime rule enforcement. AgentSpec, by Wang, Poskitt, and Sun, to appear at the International Conference on Software Engineering (ICSE) 2026, is a small language for rules of the form trigger, predicate, enforcement, which sit between the agent and the world[15]. Rules watch the stream of proposed actions and block, modify, or demand user confirmation for unsafe ones ("on file-delete outside the workspace: require confirmation"). In effect the rules define which paths through the agent's action space are permitted: a reachability constraint imposed on the action graph before the actions happen, where provenance audits it after.

In the real world

The AgentSpec authors report that their runtime rules prevented over 90% of unsafe executions in code-agent scenarios, with millisecond-scale overhead per decision[15]. The economics matter: a guard that is cheap enough to run on every proposed action can be always on, which is what an audit-after-the-fact can never be.

The third structure is the oldest idea in this chapter. In 1976, Dorothy Denning published a lattice model of secure information flow[16], and fifty years later it fits AI agents as if made for them.

Definition — lattice

A partial order \(\le\) on a set is an order relation in which some pairs may be incomparable. A lattice is a partially ordered set in which every pair \(a, b\) has a least upper bound \(a \vee b\) (the join) and a greatest lower bound \(a \wedge b\) (the meet). Its Hasse diagram is the directed graph with an edge from \(a\) up to \(b\) whenever \(b\) sits immediately above \(a\). In plain words: a lattice is a hierarchy that allows side-by-side branches, drawn as a DAG.

Denning's rule is one sentence: give every security class a place in a lattice, and let information flow only upward. She showed that this single structural condition unifies the security mechanisms of real systems and supports automatic certification of programs[16]. For an AI agent: give the agent a class, give every resource a class, and permit an action exactly when the lattice order allows the flow. The Hasse diagram is a concrete DAG you can draw, audit, and prove things about.

forbidden P R S W T public docs repo read repo write (agent) user secrets full access
Figure 15.6. A permission lattice for a coding agent, drawn as its Hasse diagram. Order runs upward: \(P \le R \le W \le T\) and \(P \le S \le T\), with \(R\) and \(S\) incomparable. The agent's clearance is \(W\) (highlighted). Information may flow only upward, so the dashed arrow from user secrets down toward public output is forbidden: no upward chain runs from \(S\) to \(P\).
Worked example

May the agent in Figure 15.6 read the user's secrets? Reading a resource of class \(c\) is a flow from \(c\) to the agent's class, allowed only when \(c \le W\). Is \(S \le W\)? Follow the Hasse diagram upward from \(S\): you reach \(T\), never \(W\). So \(S\) and \(W\) are incomparable and the read is denied. Note the joins and meets doing quiet work: \(R \vee S = T\) (the only class above both) and \(R \wedge S = P\) (the only class below both), which is what makes this five-element order a lattice.

Certification is once more a cut argument. To certify that an agent with Secret access can never leak to a Public channel, show the information-flow graph contains no directed path from any Secret-classified vertex to any Public-classified sink; equivalently, exhibit a separating set that every such potential path must cross. It is the same Menger-flavored move as the provenance audit[16][20], which is no coincidence: leak-freedom and taint-freedom are both non-reachability claims.

How do runtime rules of the AgentSpec kind differ from an execution-provenance record?

  1. Both act after the run: the rules explain failures, the record stores them
  2. Both act before the run, so the two are interchangeable
  3. The record blocks unsafe actions; the rules reconstruct afterwards what happened
  4. The rules constrain which actions may be taken, before they happen; the record supports auditing afterwards
Answer: D. Rules sit between the agent and the world and can block, modify, or demand confirmation, while provenance is the trail you audit later. Option C swaps the two roles.

In the permission lattice of Figure 15.6 the agent's clearance is repo write \(W\). Which statement is correct?

  1. \(S \le W\), so the agent may read the user's secrets
  2. Every pair of classes in this lattice is comparable
  3. \(S\) and \(W\) are incomparable, so the read of user secrets is denied
  4. \(P\) sits at the top, so information may flow into public docs from anywhere
Answer: C. Following the diagram upward from \(S\) reaches \(T\) and never \(W\), so neither class sits below the other and the flow is not permitted. \(R\) and \(S\) are a second incomparable pair, which is what makes option B false, and \(P\) is the bottom class, not the top.

Opening the model: attribution graphs

Everything so far treats the model as a black box and builds graphs around it. The most direct attack on opacity opens the box: extract the model's own computation, for a specific prompt, as a graph.

Definition — attribution graph

For a fixed prompt and a fixed output token, an attribution graph is a weighted directed acyclic graph whose vertices are the input tokens, interpretable internal features (units of the model's representation, extracted by companion networks called cross-layer transcoders), error terms, and the output; an edge \(u \to v\) carries a weight measuring how much \(u\)'s activation pushed on \(v\)'s. In plain words: it is a wiring diagram of the influences that produced this one answer.

This is the method of Anthropic's circuit-tracing work[17]. The raw graph for a single prompt has millions of edges, so the pipeline prunes it to the small high-impact subgraph a human can actually read, then validates the resulting story by perturbation: artificially suppress a feature and check that the downstream effects the graph predicts actually occur. Pruning has a Chapter 6 flavor: think of influence as a flow from the input vertices to the output sink, and keep the edges whose removal would drop that flow most. And the reason pruning is mandatory rather than cosmetic is a Chapter 4 fact of life: a drawing of a million-edge graph is an unreadable mat of crossings, so interpretability at scale is also a graph-summarization problem.

The companion paper, "On the Biology of a Large Language Model," applies the method to Claude 3.5 Haiku and reads real mechanisms off the graphs[18]. Three findings are worth carrying with you. First, multi-hop reasoning: asked for the capital of the state containing Dallas, the model's graph shows an intermediate Texas feature between the Dallas input and the Austin output, evidence of genuine two-step computation rather than a memorized shortcut. Second, planning: at the start of a line of poetry, features for candidate rhyming words at the line's end are already active, and they shape the words chosen in between. Third, hallucination mechanics: the model carries a default "can't answer" circuit that is suppressed by "known entity" features, and hallucinations occur when that suppression misfires. Notice what the third finding is: a mechanism-level diagnosis of the failure this chapter opened with, and one you could only state with the graph in hand.

Observed circuit Intervention D C T A Dallas capital Texas Austin D C ? Dallas capital Texas off answer changes
Figure 15.7. The two-hop circuit for "the capital of the state containing Dallas," simplified from Anthropic's biology paper[18]. Left: Dallas activates an intermediate Texas feature, which combines with capital to promote Austin: a directed path of length 2 through \(T\). Right: suppressing \(T\) changes the output. The experiment removes a one-vertex separator on the influence pathway and watches the effect vanish, a Chapter 3 argument performed inside a live neural network.

Dwell on the shape of that experiment. The claim "the model computes Dallas \(\to\) Texas \(\to\) Austin" is the claim that the computation contains a directed path of length 2 through an intermediate vertex. The validation deletes the middle vertex and watches the output change: a one-vertex separator argument, in the exact sense of Chapter 3, carried out on the internals of a running model. The interpretability frontier speaks the language of this course with almost no translation.

In the real world

In May 2025, Anthropic open-sourced the circuit-tracing tooling, so attribution graphs can now be generated for open-weight models and explored interactively through the Neuronpedia interface[19]. The graphs you have been reading about are objects you can generate and inspect yourself.

Reading attribution graphs, the biology paper gave a mechanism for hallucination. Which one?

  1. The model has no knowledge graph to consult, so it invents edges
  2. A default "can't answer" circuit is suppressed by "known entity" features, and hallucination follows when that suppression misfires
  3. Pruning deletes the features that would have produced the correct answer
  4. Rhyme-planning features fire at the wrong position in the line
Answer: B. Refusal is the default and familiarity features switch it off; when the switch trips wrongly, a confident invention comes out. Pruning (C) belongs to how humans read the graph, not to the model, and the rhyme features (D) are a separate finding about planning.

What graphs do not fix

This chapter has been enthusiastic, so its last section owes you the other side of the ledger. Graphs make AI checkable. They do not make it correct, and the gap between those two words is where engineering judgment lives.

First, a graph is only as good as its construction, and the graph is often built by the same kind of fallible model it is meant to police. GraphRAG's entity graph is extracted by a language model[3]; GraphEval's triples are extracted by one too[5]. An extraction error becomes a wrong edge, and every downstream verification inherits it. Second, grounding shifts trust rather than eliminating it: an answer traced to a knowledge-graph path is only as trustworthy as the graph's curators, and knowledge graphs are incomplete, sometimes stale, and occasionally wrong. Third, formal guarantees cover only what is modeled. A permission lattice certifies flows in the graph you drew; a side channel you did not draw is invisible to it. AgentSpec blocks the unsafe actions its rules describe, and the authors report over 90% prevention, not 100%[15]. Fourth, causal conclusions are conditional on the DAG being right, and the DAG usually encodes human assumptions; the Kıcıman results show models can help draft it but cannot yet be trusted to certify it[12]. Fifth, attribution graphs explain one prompt at a time, after aggressive pruning; the pruned residue and the error vertices are honest admissions that part of the story is missing[17].

Common mistake

"The answer comes with a graph, so it is trustworthy." No: the graph is where trustworthiness can be established, by someone who checks the edges. A citation nobody reads, a provenance record nobody audits, and a lattice nobody verifies flows against are theater. The graph converts "trust me" into "check me". Someone still has to check.

What you should carry out of this chapter is a translation table. Hallucination control is edge verification. Reasoning structure is the path-tree-DAG hierarchy. Citation quality is a bipartite covering condition. Audit is reachability; safety certification is a cut; scheduling is topological order; intervention is edge deletion; a mechanism claim is a directed path, tested by removing a separator. You built all of these tools in Chapters 1 through 12 on small graphs you could draw by hand. The systems in this chapter apply them, unchanged, to the question of whether machines that talk can be made to answer for what they say. That question is open. The vocabulary it will be settled in is the one you now speak.

An answer arrives with a full provenance graph and a knowledge-graph path attached. What does this section conclude about it?

  1. It is trustworthy, because every claim now has evidence attached
  2. It is untrustworthy, because graphs built by models are always wrong
  3. It is trustworthy exactly when the provenance graph is acyclic
  4. It is checkable; whether it is trustworthy depends on how the graph was built and on someone doing the checking
Answer: D. The graph converts "trust me" into "check me", and the triples or entities in it are often extracted by the same kind of fallible model being policed. Option A is exactly the mistake this section names as theater.

Check your understanding

In a knowledge graph, the triple (Canberra, capital_of, Australia) is best read as which graph object?

  1. An undirected edge between Canberra and Australia whose weight is capital_of
  2. A vertex named capital_of, adjacent to both Canberra and Australia
  3. A directed edge from the vertex Canberra to the vertex Australia, carrying the relation label capital_of
  4. A directed path of length 3 passing through a vertex called capital_of
Answer: C. A triple \((s, r, o)\) is a labeled directed edge: subject to object, with the relation as the edge label. The label is not a weight (A) and not a vertex (B, D); it decorates a single edge.

In a graph of thoughts, a merge step combines two independently developed reasoning lines into one thought. As a vertex \(v\), a merge is characterized by which property?

  1. \(d^-(v) \ge 2\): at least two edges enter \(v\)
  2. \(d^+(v) \ge 2\): at least two edges leave \(v\)
  3. \(d(v) = 1\): \(v\) is a leaf
  4. \(d^-(v) = 0\): no edge enters \(v\)
Answer: A. Merging means two reasoning lines both feed \(v\), so its in-degree is at least 2. Out-degree at least 2 (B) is branching, which trees already allow; in-degree 0 (D) describes a source such as the initial prompt.

How do you read the statement \(X \perp Y \mid Z\)?

  1. \(X\) and \(Y\) are joined by an edge whenever \(Z\) is present
  2. \(X\) causes \(Y\) unless \(Z\) intervenes
  3. The sets \(X\) and \(Y\) partition the set \(Z\)
  4. \(X\) is independent of \(Y\) once \(Z\) is held fixed
Answer: D. The \(\perp\) symbol asserts independence and the bar introduces the conditioning set: given \(Z\), learning \(X\) tells you nothing further about \(Y\). It is a statement about information, not about edges (A) or causal force (B).

In the progression from chain-of-thought to tree-of-thoughts to graph-of-thoughts prompting, which structural capability becomes possible only at the graph-of-thoughts stage, and why is it impossible in a tree?

  1. Backtracking from a failed reasoning step, because paths cannot branch
  2. Merging two independent lines of reasoning into one thought, because a tree vertex cannot have two parents
  3. Evaluating a thought before extending it, because trees have no vertex labels
  4. Producing more than one final answer, because a tree has only one leaf
Answer: B. Merging gives a vertex in-degree 2, which creates a second route to it and hence a cycle in the underlying undirected graph, so the structure is no longer a tree. Backtracking (A) already exists in tree-of-thoughts, evaluation (C) is independent of structure, and trees can have many leaves (D).

GraphEval detects hallucinations by converting a model's answer into knowledge-graph triples and checking each one against the source context. In graph terms, what is the main advantage of this design over scoring the whole answer at once?

  1. Triples make the answer shorter, so checking is faster
  2. Triple graphs are always planar, so they can be drawn without crossings
  3. Knowledge graphs remove the need for a language model entirely
  4. The verdict localizes to individual edges, so the system can point at exactly which asserted fact is unsupported
Answer: D. Each triple is an edge of the claim graph and entailment is tested edge by edge, so a failure names the specific hallucinated fact instead of merely flagging the paragraph. Speed (A) is not the point, planarity (B) is irrelevant, and a model still does the extraction (C).

On the Game of 24 puzzle, GPT-4 solved 4% of instances with chain-of-thought prompting and 74% with tree-of-thoughts. Which structural capabilities, added by the tree, account for the jump?

  1. Branching into alternative next thoughts, with evaluation and backtracking: the task requires search, and a path cannot search
  2. Merging independent reasoning lines into a single vertex of in-degree 2
  3. Grounding every intermediate thought in a public knowledge graph
  4. Removing intermediate steps so the model answers in one shot
Answer: A. A chain commits to one line and cannot recover from a bad early step; the tree explores alternatives with lookahead and backtracking, which is what a search puzzle demands. Merging (B) arrives only with graph-of-thoughts, and neither system involves a knowledge graph (C).

In Denning's lattice model, information may flow only upward in the partial order. An auditor wants to certify that an agent with access to class-Secret data can never leak it to a class-Public output channel. Which demonstration accomplishes this?

  1. Exhibit a spanning tree of the Hasse diagram
  2. Show the Hasse diagram is bipartite
  3. Show the information-flow graph contains no directed path from any Secret-classified vertex to any Public-classified sink, for instance by exhibiting a separating vertex set
  4. Show every vertex of the Hasse diagram has even degree
Answer: C. A leak is a directed path from Secret to Public, so safety is the non-existence of such a path, and a separator meeting every candidate path certifies it, in the spirit of Menger's theorem. Spanning trees (A), bipartiteness (B), and degree parity (D) say nothing about directed reachability.

A causal DAG contains Season \(\to\) IceCreamSales and Season \(\to\) Drownings, with no edge between IceCreamSales and Drownings. The two are correlated in observational data. Which statement describes the graph-based reasoning correctly?

  1. The correlation proves a missing edge; the DAG should be corrected to include IceCreamSales \(\to\) Drownings
  2. The path IceCreamSales \(\leftarrow\) Season \(\to\) Drownings is open and explains the correlation; conditioning on Season blocks it, and intervening on IceCreamSales would not change Drownings
  3. Since the graph is acyclic, no two variables in it can ever be correlated
  4. Conditioning on Season creates the correlation rather than removing it
Answer: B. Season is a common cause, and the path through it transmits association until Season is conditioned on; since no directed path leaves IceCreamSales toward Drownings, forcing ice-cream sales changes nothing downstream. Option D describes collider behavior, and Season is not a collider on this path.

Anthropic's attribution-graph analysis of "the capital of the state containing Dallas" found an intermediate Texas feature between the input and the output Austin, then suppressed that feature and observed the output change. Which pair of course concepts does the experiment most directly instantiate?

  1. An Eulerian circuit, and edge colouring
  2. A perfect matching, and Hall's condition
  3. A directed path of length 2 through an intermediate vertex, and the removal of a separating vertex on that pathway
  4. A Hamilton cycle, and Dirac's degree condition
Answer: C. The finding is a two-edge directed path Dallas \(\to\) Texas \(\to\) Austin, and the intervention deletes the middle vertex to confirm it carries the influence: a one-vertex separator argument. The other pairs name course theorems with no role in this experiment.

In an execution-provenance DAG, an auditor wants the evidence basis of the final answer vertex \(a\): everything that could have influenced it. Which vertex set answers the question?

  1. \(\mathrm{Desc}(a)\): every vertex reachable from \(a\)
  2. \(N(a)\): only the vertices directly joined to \(a\)
  3. The vertices of odd degree in the underlying undirected graph
  4. \(\mathrm{Anc}(a)\): every vertex from which a directed path reaches \(a\)
Answer: D. Influence flows along directed paths into \(a\), so the evidence basis is the full ancestor set, found by walking edges backwards from \(a\). Descendants (A) are what \(a\) influences, and immediate neighbours (B) miss indirect influence through longer paths.

Sources and further reading

  1. S. Pan, L. Luo, Y. Wang, C. Chen, J. Wang, X. Wu, "Unifying Large Language Models and Knowledge Graphs: A Roadmap," IEEE Transactions on Knowledge and Data Engineering (2024). arXiv:2306.08302.
  2. G. Agrawal, T. Kumarage, Z. Alghamdi, H. Liu, "Can Knowledge Graphs Reduce Hallucinations in LLMs?: A Survey," NAACL 2024. arXiv:2311.07914.
  3. D. Edge et al., "From Local to Global: A Graph RAG Approach to Query-Focused Summarization" (2024). arXiv:2404.16130.
  4. J. Sun et al., "Think-on-Graph: Deep and Responsible Reasoning of Large Language Model on Knowledge Graph," ICLR 2024. arXiv:2307.07697.
  5. H. Sansford, N. Richardson, H. Petric Maretic, J. Nait Saada, "GraphEval: A Knowledge-Graph Based LLM Hallucination Evaluation Framework," KiL Workshop at ACM KDD 2024. arXiv:2407.10793.
  6. J. Kim, S. Park, Y. Kwon, Y. Jo, J. Thorne, E. Choi, "FactKG: Fact Verification via Reasoning on Knowledge Graphs," ACL 2023. arXiv:2305.06590.
  7. J. Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" (2022). arXiv:2201.11903.
  8. S. Yao, D. Yu, J. Zhao, I. Shafran, T. L. Griffiths, Y. Cao, K. Narasimhan, "Tree of Thoughts: Deliberate Problem Solving with Large Language Models," NeurIPS 2023. arXiv:2305.10601.
  9. M. Besta et al., "Graph of Thoughts: Solving Elaborate Problems with Large Language Models," AAAI 2024. arXiv:2308.09687.
  10. T. Gao, H. Yen, J. Yu, D. Chen, "Enabling Large Language Models to Generate Text with Citations," EMNLP 2023. arXiv:2305.14627.
  11. Y. Wang et al., "From Agent Traces to Trust: A Survey of Evidence Tracing and Execution Provenance in LLM Agents" (2026). arXiv:2606.04990.
  12. E. Kıcıman, R. Ness, A. Sharma, C. Tan, "Causal Reasoning and Large Language Models: Opening a New Frontier for Causality," Transactions on Machine Learning Research (2024). arXiv:2305.00050.
  13. J. Kaddour, A. Lynch, Q. Liu, M. J. Kusner, R. Silva, "Causal Machine Learning: A Survey and Open Problems" (2022, revised 2026). arXiv:2206.15475.
  14. B. C. Colelough, W. Regli, "Neuro-Symbolic AI in 2024: A Systematic Review" (2025). arXiv:2501.05435.
  15. H. Wang, C. M. Poskitt, J. Sun, "AgentSpec: Customizable Runtime Enforcement for Safe and Reliable LLM Agents," ICSE 2026. arXiv:2503.18666.
  16. D. E. Denning, "A Lattice Model of Secure Information Flow," Communications of the ACM 19(5), 236–243 (1976). Author-hosted PDF.
  17. E. Ameisen, J. Lindsey, A. Pearce, W. Gurnee, N. L. Turner et al., "Circuit Tracing: Revealing Computational Graphs in Language Models," Transformer Circuits Thread, Anthropic (2025). transformer-circuits.pub.
  18. J. Lindsey, W. Gurnee, E. Ameisen, B. Chen, A. Pearce et al., "On the Biology of a Large Language Model," Transformer Circuits Thread, Anthropic (2025). transformer-circuits.pub.
  19. Anthropic, "Open-sourcing circuit tracing tools," Anthropic research blog (2025). anthropic.com/research/open-source-circuit-tracing.
  20. R. Diestel, Graph Theory, 6th ed., Springer GTM 173 (2024), §3.3 (Menger's theorem).