📈 GH Trending Explorer 🎲 Surprise me

← all repos

Badtheorylabs / interference-search

git clone https://github.com/Badtheorylabs/interference-search.git v1.2.0 · 19d ago

Reason over explicit states, many branches at once: merge duplicates, cancel dead ends, advance together.

+0
stars, 24h · #31,303
+~0
stars, 7 days · #31,778
+181
stars, 30 days · #2,750
181
★ total
11
forks · 0 open issues

Star history (as recorded here)

2026-10-20 · 181 ★ 2026-10-22 · 181 ★
LanguagePython
LicenseApache-2.0
Created2026-09-25 (27d ago)
Last push19d ago
Watchers1
OwnerOrganization

Links

README excerpt
# Interference Search
Language models reason in a line. They write one token after another into a single transcript, and when a step goes wrong they rewind in text and try again. Interference Search reasons over explicit states instead. Every live branch expands at once, the environment executes the moves, branches that land on the same state merge into one, a small trained judge drops the ones that can no longer reach the goal, and the survivors advance together one level at a time.
The name comes from quantum search, where wrong paths cancel each other out. The method itself is classical and claims no quantum speedup.
This repository has the code, the trained judge, every raw result and the research log, failed experiments included. The paper is `paper/PAPER.pdf`, also on badtheorylabs.com. `paper/CLAIMS.md` maps each number in it to the file and command that produced it.
The 30-second video shows Qwen3-1.7B thinking in text next to Interference Search on the same problem.
## Why Countdown
Countdown gives you a few numbers and a target and asks for an expression that uses every number once. The arithmetic is easy. Each step combines two small numbers, and in the search arms the environment does that arithmetic, not the model. The hard part is choosing which two numbers to combine, with which operation, in which order. Four numbers give about 570 complete move sequences per problem on average; six give 831,176, and after two moves more than 80% of them already run through a state that can't reach the target.
That choice is what a linear reasoner spends its tokens on, and it's the part this method changes. When Qwen3-1.7B failed, it wasn't getting sums wrong. In the first experiment, 45% of its failed attempts repeated an expression it had already ruled out itself. And on one problem it wrote the correct answer at token 1,313 and never committed to it. Countdown also has an exact solver, so every state can be labelled alive or dead without an LLM grading it. Stream of Search and APR use it to study search in language models for the same reasons.
## Results
Everything here ran on one Apple M2 laptop with 16 GB of memory. All runs are one seed.
**Countdown**, 30 hard four-number problems (no single operation lands within 25 of the target, and at most two solutions exist):
| System | Solved | Sequential steps |
|---|---|---|
| Qwen3-1.7B thinking in text, 1,500 generated tokens | 3 / 30 | one token at a time |
| The trained judge in one line of thought, 200 judged positions | 21 / 30 | 7.9 on the problems it solves |
| Interference Search, same judge, same 200 judged positions | 30 / 30 | 3 |
With 1,500 judged positions the single line also solves all 30, but it takes 23.7 sequential steps on average against 3.
The search takes about 5 ms per problem on the CPU and the model thinking in text takes about 21 seconds. Those are different systems: the fast one uses the environment to list moves and a 100k-parameter judge to rank them, and never runs the