Research log Small Model Experimentation
GitHub

Qwen3.5-4B: Does the Structure-Proposal Wall Exist in Language?

Great at following rules, blind at finding them

The one idea you need

Picture a stack of secret decoder rings, each swapping made-up words a fixed way. Handed the right ring, the model decodes flawlessly. But shown only a few finished translations and asked which rings produced them, it must play detective and infer the hidden rule. That detective step is the wall.

The question

Can a small model figure out a hidden rule just by watching a few worked examples, the way it can follow a rule it is handed directly?

What we found

No. Handed the rule outright, the model applies it correctly 86% of the time. Asked to infer that same one-step rule from worked examples, it scores 0% — below even the roughly 6% that pure guessing would earn. Letting it reason step by step lifts inference only to a coin-flip 50%, still short of the 75% it reaches simply executing. It runs rules; it does not discover them.

Why it matters

If your system needs a small model to find the rule behind examples, expect failure — even where it flawlessly applies that rule once stated. State rules explicitly; if it must infer, budget thinking and verify, since inferred rules come out wrong about half the time.

Applying a rule it is handed86%correct on the simplest one-step rule, no thinking
Inferring the rule from examples0%same rule, single pass — below even guessing
Pure guessingabout 6%the chance baseline, roughly 1 in 16
Inference once allowed to think0% → 50%only a coin flip, and still error-prone
On this page
  1. Results at a glance
  2. Overview
  3. Report
    1. Motivation
    2. Method
    3. Result
    4. Implication (C37 + C38 together)
    5. Honest scope & caveats
    6. Artifact Manifest
  4. Experiment log
  5. Figures
  6. Reproduce
  7. Related

Results at a glance 2

Following a handed rule versus figuring it out, with and without thinking

How to read

Four bars show accuracy on the simplest one-step rule; taller is better. The left two apply a rule the model was handed (first without thinking, then with); the right two infer the rule from examples (without, then with thinking).

0%25%50%75%100%application (execute given rule) no-thinkapplication (execute given rule) …86%application thinkapplication think75%INDUCTION (infer rule) no-thinkINDUCTION (infer rule) no-think0%INDUCTION thinkINDUCTION think50%

Takeaway → The apply bars tower over the infer bars; inference sits flat at zero without thinking and reaches only a coin flip with it — running rules is easy, discovering them is not.

Data table
conditionaccuracy at depth-1 (guess baseline 0.06; C37 simulation = 0.99)
application (execute given rule) no-think86%
application think75%
INDUCTION (infer rule) no-think0%
INDUCTION think50%

Numbers from

Technical framing

Does the structure-PROPOSAL wall exist in language? YES -- the model executes a given rule (0.86) but cannot induce one (0.00) — Complement to C37 (the model SIMULATES multi-step reasoning in language perfectly). This tests whether the C32/C36 structure-PROPOSAL wall persists in language: relational-composition INDUCTION (R=4 made-up relations = random bijections over made-up entities, hidden depth-D rule; infer which relations compose from examples + apply to a new query). Critical control (review): an application-only arm (rule GIVEN) -- this multi-relation substrate is harder to EXECUTE than C37's chains, so induction failure is meaningful only where application is easy. RESULT: clean forward-pass dissociation at depth-1 (where application IS easy, 0.86): the model EXECUTES a given rule (0.86) but CANNOT INFER one from examples (0.00 = chance). Induction is at chance no-think at all depths. Thinking only PARTIALLY rescues induction (0.50 at depth-1, budget 4096, no truncation -- reasoning correct but error-prone), still far below application (0.75) and C37's simulation (0.99). So the model is an EXECUTOR, not an INDUCER, in language as in formal domains -- corroborating C32/C36 as a cross-modality law. C37+C38: the compositional wall has TWO components that dissociate by modality -- SIMULATION is modality-dependent (formal walls, language does not), PROPOSAL/INDUCTION is modality-general (hard in both). Caveat: this substrate's application degrades at depth 2+, so induction is cleanly isolable only at depth-1.

Inferring a rule stays at chance no matter how simple

How to read

The horizontal axis is rule depth — how many secret rings must be chained; the vertical axis is single-pass accuracy, higher is better. The upper line applies a rule the model was handed; the lower line infers the rule from examples.

0%25%50%75%100%1234application (execute given rule), no-thinkapplication (exec…INDUCTION (infer rule), no-thinkINDUCTION (infer …

Takeaway → The inference line hugs the floor at every depth; applying a given rule starts high then sags as chaining more rings strains the model — inference never leaves the ground.

Data table
rule depth (relations to compose)application (execute given rule), no-thinkINDUCTION (infer rule), no-think
186%0%
228%4%
346%8%
412%2%

Numbers from

Technical framing

Induction is at CHANCE at all depths in a forward pass; application is easy at depth-1 (degrades deeper on this multi-relation substrate) — No-think forward-pass accuracy by rule depth. INDUCTION (infer the hidden rule from examples) sits at chance (~0.06) at every depth -- the model cannot infer a rule in a single forward pass, even a depth-1 rule (identify which of 4 relations fits the examples). APPLICATION (execute a GIVEN rule) is easy at depth-1 (0.86) but degrades at depth 2+ (0.28-0.46) because chaining 2-3 full-16-entry bijection lookups is hard for the small model without thinking. The clean induction-vs-application dissociation is at depth-1 (0.00 vs 0.86); deeper, the multi-relation application confound prevents clean isolation, but induction is already floored at chance.

In the author’s words from the Overview · “Results”

Clean forward-pass dissociation at depth-1: application (execute given rule) 0.86 vs INDUCTION (infer rule) 0.00. Induction at chance no-think all depths; think only half-rescues (0.50 at d1). The model is an EXECUTOR, not an INDUCER, in language as in formal domains. See reports/report.md, analysis/language_proposal_wall.png.

Overview

Research Program

  • Program: benchmark_generalization / structured_execution_and_compilers
  • Question (complement to C37): C37 showed the model SIMULATES multi-step reasoning in language. Does the C32/C36 structure-PROPOSAL (rule-INDUCTION) wall also persist in language?

Setup

  • Relational-composition INDUCTION: R=4 made-up relations (random bijections over ~16 made-up entities), hidden depth-D rule; give KB + examples + a query start NOT in examples -> infer which relations compose + apply. Min-depth-verified, uniqueness-pinned. Application-only control (rule GIVEN) = the ceiling. no-think + think (budget 4096, truncation-checked).

Run

python scripts/eval_proposal.py --render {ling,app,formal} --depths 1 2 3 4 [--think] then python scripts/analyze.py.

Results

Clean forward-pass dissociation at depth-1: application (execute given rule) 0.86 vs INDUCTION (infer rule) 0.00. Induction at chance no-think all depths; think only half-rescues (0.50 at d1). The model is an EXECUTOR, not an INDUCER, in language as in formal domains. See reports/report.md, analysis/language_proposal_wall.png.

Interpretation

C37+C38: the compositional wall's two components dissociate by modality -- SIMULATION is modality-dependent (formal walls, language does not), PROPOSAL/INDUCTION is modality-general (hard in both).

Knowledgebase Update

  • Claim ledger: C38

Artifacts

  • scripts/reasoning_proposal.py (induction substrate, application-only control), scripts/eval_proposal.py, scripts/analyze.py, scripts/reasoning_family.py
  • runs/prop_*.json, runs/verdict.json, analysis/language_proposal_wall.png, reports/{report,design_review}.md

Report

Rendered from reports/report.md

Motivation

C37 showed the model SIMULATES multi-step reasoning in language near-perfectly (no depth-3 wall). But that tests C13-style simulation, not the C32/C36 structure-proposal wall. This asks the complementary question: can the model induce a hidden compositional rule from examples in language, or does the proposal wall persist even in its native domain?

Method

Relational-composition induction: R=4 made-up relations (each a random bijection over ~16 made-up entities); a hidden depth-D rule = a fixed sequence of D relations. Give the full relation KB + k examples (start → answer applying the hidden rule) + a query start not among the example starts → the model must infer which relations compose and apply. Min-depth-verified (reject shorter-equivalent rules), uniqueness-pinned (examples uniquely determine the rule), contamination-free. Critical control (review-mandated): an application-only arm (rule GIVEN explicitly) — this multi-relation substrate is harder to execute than C37's chains, so induction failure is meaningful only where application is easy. Renderings linguistic-symbolic (primary); no-think + think (budget 4096, truncation-checked).

Result

conditiond1d2d3d4
application (execute given rule), no-think0.860.280.460.12
application, think0.75
INDUCTION (infer rule), no-think0.000.040.080.02
INDUCTION, think (budget 4096, no truncation)0.50

(guess baseline ≈ 0.06; C37 linguistic simulation = 0.99 no-think at depth-3.)

  • Clean forward-pass dissociation at depth-1 (where application is easy, so induction is isolable): the model executes a given relational rule (0.86) but cannot infer one from examples (0.00 = chance) in a single forward pass. Induction is at chance no-think at all depths.
  • Thinking only partially rescues induction (0.00 → 0.50 at depth-1, budget 4096, verified no truncation — the reasoning is correct but error-prone), still far below application (0.75 with think) and far below C37's linguistic simulation (0.99).
  • So the model is an executor, not an inducer, in language as in formal domains — corroborating C32/C36 (value-computer, not structure-proposer) as a cross-modality property.

Implication (C37 + C38 together)

The compositional wall has two components that dissociate by modality:

  • Simulation / execution is modality-dependent — the formal wall (depth-3, C13C36) vanishes in language (C37).
  • Proposal / induction is modality-general — hard in both formal (C32/C36) and language (this) — the deeper, more fundamental limit.

The model reasons multi-step in language, but it does not induce rules. The structure-proposal wall is the one part of the whole arc that holds even in the model's native domain.

Honest scope & caveats

  • This multi-relation substrate's application itself degrades at depth 2+ (0.28/0.46/0.12 — the small model struggles to chain 2–3 full-bijection lookups no-think), so induction is cleanly isolable only at depth-1; but induction is already at chance there. Deeper induction was not cleanly measured (application confound + very slow think runs).
  • Think depths 2–4 not completed (budget-4096 think is ~35 min/condition); d1 think (0.50) is the clean think point. Single seed; n=24–50.
  • Formal-dict rendering (code-mode confound, C37) not used as primary; linguistic-symbolic is primary.

Artifact Manifest

See reports/artifact_manifest.yaml.

Experiment log 1

Show the running log (1 entry)

Scaffold

Created as a new experiment scaffold.

Figures 1

language proposal wall
language proposal wall · analysis/

Reproduce

Smoke test

python scripts/eval_proposal.py --render app --n-per-depth 12 --depths 1 2 3

Full run

eval_proposal.py --render {app,ling} --depths 1 2 3 4 [--think, budget 4096, batch 8]; analyze.py

Run steps are documented inside the experiment folder (README and scripts).

Browse the experiment folder on GitHub ↗