ICML 2026 / NEURO-SYMBOLIC REASONING

Graph of States

Evidence shapes the search.

THE PAPERSolving Abductive Tasks with Large Language Models

ICML 2026 Abductive Reasoning

Solving Abductive Tasks
with Large Language Models

Yu Luo1, Rongchen Gao1, Lu Teng2, Xidao Wen3, Jiamin Jiang1, Qingliang Zhang1, Yongqian Sun1,*, Shenglin Zhang1, Jiasong Feng4, Tong Liu4, Wenjie Zhang4, Dan Pei5

1Nankai University   2Wenzhou Medical University   3Alibaba Cloud   4Lenovo   5Tsinghua University

ICML 2026

43rd International Conference on Machine Learning, Seoul, South Korea

* Corresponding author

Reasoning deficiencies in abductive tasks
Deductive reasoning frameworks can solve static logic problems, but abductive tasks expose evidence fabrication, context drift, failed backtracking, and early stopping.

01 THE PAPER

Abstract

Logical reasoning encompasses deduction, induction, and abduction. However, while Large Language Models (LLMs) have effectively mastered the former two, abductive reasoning remains significantly underexplored. Existing frameworks, predominantly designed for static deductive tasks, fail to generalize to abductive reasoning due to unstructured state representation and lack of explicit state control. Consequently, they are inevitably prone to Evidence Fabrication, Context Drift, Failed Backtracking, and Early Stopping. To bridge this gap, we introduce Graph of States (GoS), a general-purpose neuro-symbolic framework tailored for abductive tasks. GoS grounds multi-agent collaboration in structured belief states, utilizing a causal graph to explicitly encode logical dependencies and a state machine to govern valid reasoning transitions. By dynamically aligning the reasoning focus with these symbolic constraints, our approach transforms aimless, unconstrained exploration into a convergent, directed search. Extensive evaluations on two real-world datasets demonstrate that GoS significantly outperforms all baselines, providing a robust solution for complex abductive tasks. Code repo and all prompts: gaorch85/Graph-of-States.

Project Overview

Abductive Reasoning

GoS focuses on diagnosis-style tasks where agents must explain observed symptoms by searching for hidden causes, rather than simply deriving answers from complete premises.

Failure Modes

The paper identifies four recurring deficiencies in LLM reasoning frameworks: evidence fabrication, context drift, failed backtracking, and early stopping.

Structured Belief State

GoS keeps hypotheses, confidence, supporting evidence, and causal relations in an explicit graph, giving agents a shared state instead of an unstructured conversation history.

State-Guided Search

A state machine controls backtracking, drill-down, and report generation, so agents can revise shallow explanations and investigate more concrete root causes.

02 PROJECT FILM

One Video, and You Know What We Built.

See how Graph of States turns abductive reasoning into a structured, evidence-guided search.

03 THE FRAMEWORK

Method

  1. 01

    Choose a focus

    Select a hypothesis from the current belief state.

  2. 02

    Seek evidence

    Expert agents investigate the focused explanation.

  3. 03

    Update the graph

    Connect observations and revise hypothesis confidence.

  4. 04

    Change direction

    Backtrack, drill down, or report when the state allows it.

Graph of States method overview
The overview shows how central and expert agents update the graph-structured belief state through planning, investigation, and state conversion.

04 FOLLOW THE EVIDENCE

Case Walkthrough

MICROSERVICE FAILURE DIAGNOSIS

The database looks guilty. The evidence says otherwise.

Checkout requests start failing after an order-service release. Follow a diagnosis that tests several explanations, backs out of dead ends, and traces the failure to a missing connection release.

01 / 20Observe

Start with the symptom, not a verdict

1 / 20
HypothesisEvidenceReasoning focus
100%
Current focusCheckout failuresSurface symptom

Loading the belief graph. The complete case is available in the transcript below.

Derive / refineSupportRefuteRuled-out hypothesis

Observation

Checkout starts returning 503s eight minutes after order-service v2.8 is deployed.

Reasoning decision

Record the symptom and time window. A nearby deployment is a lead to investigate, not enough evidence to blame the release.

    Case transcript 20 reasoning snapshots
    1. Start with the symptom, not a verdict Observe

      Checkout starts returning 503s eight minutes after order-service v2.8 is deployed.

      Record the symptom and time window. A nearby deployment is a lead to investigate, not enough evidence to blame the release.

    2. Keep three explanations open Hypothesize

      Checkout depends on order-service, the database, and payment. Each could explain a slow or failed request.

      Create competing hypotheses in one belief state. Start with database overload, but retain payment and order-service as alternatives.

    3. A database wait is only a clue Collect evidence

      An application trace shows a two-second wait to borrow a database connection.

      Attach this observation to both plausible explanations. It may mean a busy database or a problem with the application's own pool; do not treat it as proof of either.

    4. Look beneath database overload Drill down

      The leading hypothesis is still broad: what would make the database slow?

      Refine it into slow SQL and lock contention. Ask for database-side measurements that can distinguish these explanations.

    5. Fast SQL weakens the first branch Collect evidence

      SQL latency is normal: 18 ms at p95. The long application wait happens before a query starts.

      Connect the measurement to slow SQL with a refuting edge. Keep that branch in the graph and test lock contention next.

    6. The second database branch also fails Collect evidence

      There are no blocked sessions, and database CPU is low throughout the failure window.

      Lower belief in both lock contention and database overload. Neither refined explanation fits the evidence; continuing here would repeat a dead end.

    7. Backtrack to a different explanation Backtrack

      Both children of database overload have been weakened by direct measurements.

      Move from depth 2 back to depth 1 and select order-service. Preserve the rejected hypotheses and their evidence so later reasoning does not start the same investigation again.

    8. Locate the wait inside order-service Collect evidence

      Payment latency is normal. The trace places the delay inside order-service's connection-acquisition span.

      Refute payment slowdown and strengthen the order-service branch. The focus now follows measured request timing, not the initial guess.

    9. Separate pool pressure from CPU pressure Drill down

      The fault is local to order-service, but that still does not explain what is failing.

      Add pool exhaustion and CPU pressure as depth-2 hypotheses. Request pool counters and runtime measurements rather than choosing a cause by name.

    10. Confirm the immediate bottleneck Collect evidence

      All 80 connections are checked out. New requests queue, although many database sessions are idle.

      Support pool exhaustion with the observed counters. Distinguish the bottleneck from its cause: a full pool does not yet explain why connections remain borrowed.

    11. Rule out a busy runtime Collect evidence

      CPU usage is 32% and event-loop lag is 4 ms, both within the healthy range.

      Mark CPU pressure as unsupported. Keep the pool as the current focus, with the alternative and its refuting evidence still visible.

    12. Why is the pool full? Drill down

      Pool exhaustion could reflect too little capacity or connections that are never returned.

      Refine the pool hypothesis into two depth-3 explanations. Test the simpler capacity explanation first, without discarding a possible leak.

    13. A workload comparison rejects the easy fix Collect evidence

      Traffic and pool size are unchanged. Under the same load, the previous release peaked at 35 of 80 borrowed connections.

      Lower belief in an undersized pool. Increasing capacity might delay the failure, but the comparison points to changed connection handling instead.

    14. Backtrack instead of adding capacity Backtrack

      The capacity branch does not explain why the same workload worked before the release.

      Return from depth 3 to the depth-2 pool hypothesis. Reconsider its remaining child, using the stored comparison rather than restarting the whole diagnosis.

    15. Follow the remaining pool explanation Drill down

      A connection leak could explain an ever-full pool alongside mostly idle database sessions.

      Select the existing leak hypothesis. Ask whether each successful borrow has a matching return, especially on failed or canceled requests.

    16. Connect the leak to canceled requests Collect evidence

      Only v2.8 shows a growing borrow/return gap after canceled requests. The old release does not under the same test.

      Attach this evidence to the leak hypothesis. It narrows the search to cancellation handling, but a matching code path and reproduction are still needed.

    17. Find the missing cleanup path Drill down

      The new cancellation branch can return after borrowing a connection, before connection.release() runs.

      Create a depth-4 hypothesis: cancellation skips cleanup. Link the code observation to it, then test that path before declaring a root cause.

    18. Reproduce the suspected mechanism Verify

      In isolation, 20 requests canceled after acquisition leave exactly 20 connections checked out.

      The controlled reproduction links this path to retained connections. This is stronger than the earlier correlation between deployment time and failures.

    19. Test a targeted repair Verify

      A finally block guarantees release. The same 20 cancellations now retain zero connections; a matched-load canary recovers.

      Use the repair as another check of the explanation. The change removes the proposed mechanism and the observed bottleneck without enlarging the pool.

    20. Report a cause, not just a symptom Resolve

      Canceled requests bypass cleanup in v2.8, leaking connections until the order-service pool is exhausted and checkout returns 503s.

      Report the evidence-backed path and the verified fix: release the connection in finally. The graph retains the alternatives, two backtracks, and the observations behind the conclusion.

    05 EVALUATION

    Experimental Results

    Results at a Glance

    Selected results from Tables 1 and 3. Match measures agreement with the reference diagnosis; the judge and task are shown separately.

    Medical diagnosis

    39.86%

    Human-judged Match

    Best baseline: 26.09% (Multi/FoT). GoS improves Match by 13.77 percentage points.

    Table 1

    System failure diagnosis

    70.67%

    LLM-judged Match

    Best baseline: 34.00% (Multi/CoT). GoS improves Match by 36.67 percentage points.

    Table 3

    Reported cost

    $0.12 / $0.10

    Per medical / system case

    Average costs reported in the paper's experiments, not current API price estimates.

    Tables 1 and 3

    06 WHERE IT APPLIES

    Possible Deployable Areas

    GoS is designed for long-horizon reasoning tasks where the goal is not to produce a one-shot answer, but to make multiple hypotheses converge through iterative interaction with the environment and accumulating evidence.

    1. Medical diagnosis: A diagnostic agent can maintain competing disease hypotheses, request new tests or observations, and gradually refine the belief state until the evidence supports a reliable diagnosis.
    2. Failure diagnosis: In complex software or distributed systems, GoS can organize possible root-cause hypotheses, drill down into logs, metrics, and traces, and backtrack when a shallow explanation is contradicted.
    3. Criminal investigation: Investigators often reason over incomplete clues, suspects, timelines, and motives. GoS provides a structured way to update hypotheses as new evidence appears and to avoid premature closure.
    4. Scientific discovery: Scientific reasoning repeatedly proposes hypotheses, designs observations or experiments, and revises explanations. GoS can support this process by keeping hypotheses, evidence, and causal relations explicit.

    These domains share the same reasoning pattern: multiple plausible hypotheses, evidence-seeking interaction, controlled state transitions, and final convergence toward the most defensible explanation.

    07 START FROM THE CODE

    Run the Code

    Start with the DiagnosisArena medical diagnosis setup. Prepare the data, API settings, and output paths before launching the script.

    Before running

    1. Use the README's Python 3.12.11 environment and install requirements.txt.
    2. Configure the model and API access, then review the domain, agent, and belief settings in configs/.
    3. Set the data paths and replace the CSV and graph-output paths in main.py with writable local paths.
    Run after setup
    # From the configured repository directory
    python main.py
    

    Output

    The script writes predictions and reports to CSV, saves case logs, and exports the changing belief graph to HTML.

    Repository entry point; local data and model setup are required.

    08 FREQUENTLY ASKED

    Frequently Asked Questions

    What is Graph of States (GoS)?

    Graph of States is a neuro-symbolic framework that solves abductive tasks with large language models, published at ICML 2026. Instead of an unstructured conversation history, it keeps the reasoning state in a structured belief graph of symptoms, hypotheses, evidence, and causal links, and a state machine governs backtracking, drill-down, and reporting.

    What problem does it solve, and how?

    Abductive tasks — explaining observed symptoms by searching for hidden causes — expose four recurring failures in existing LLM reasoning frameworks: evidence fabrication, context drift, failed backtracking, and early stopping. GoS turns aimless exploration into a directed search: the current belief state selects the next reasoning focus, new evidence updates confidences and links, and explicit state transitions decide whether to refine an explanation or abandon it. Frameworks such as chain-of-thought or tree-of-thought search are designed for static deductive problems and lack this explicit state control.

    What was evaluated, and what were the results?

    GoS was evaluated on two real-world diagnosis datasets: medical diagnosis (Table 1) and distributed-system failure diagnosis (Table 3). It reaches 39.86% Human-judged Match on medical diagnosis versus 26.09% for the best baseline (Multi/FoT), and 70.67% LLM-judged Match on system failure diagnosis versus 34.00% (Multi/CoT). The two tasks use different judges, so the two numbers are not directly comparable.

    How can I use it, and what are its limitations?

    The code and all prompts are open at github.com/gaorch85/Graph-of-States under an MIT license, with a Python 3.12 environment and configuration files for both evaluation domains. GoS targets diagnosis-style abductive reasoning; the medical evaluation is a research benchmark and is not evidence of clinical readiness.

    09 CITE THIS WORK

    BibTeX

    @inproceedings{
        luo2026graph,
        title={Graph of States: Solving Abductive Tasks with Large Language Models},
        author={Yu Luo and Rongchen Gao and Lu Teng and Xidao Wen and Jiamin Jiang and Qingliang Zhang and Yongqian Sun and Shenglin Zhang and Jiasong Feng and Tong Liu and Wenjie Zhang and Dan Pei},
        booktitle={Forty-third International Conference on Machine Learning},
        year={2026},
        url={https://openreview.net/forum?id=F6PoIbPAe2}
    }