# Illusion Of Thinking

> Evaluate reasoning model capabilities by analyzing three complexity-dependent behavioral regimes and identifying fundamental limitations in symbolic manipulation rather than computational budgets.

- Skill: `adu2021/illusion-of-thinking` (Agent Skill)
- Install (CLI): `npx skillmds@latest add adu2021/illusion-of-thinking`
- Raw SKILL.md: https://api.skillmd.com/api/skills/adu2021/illusion-of-thinking/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: adu2021 (https://skillmd.com/u/adu2021)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/adu2021/illusion-of-thinking

---


# The Illusion of Thinking

## Core Concept

Large Reasoning Models (LRMs) demonstrate impressive benchmark performance, but this research challenges whether improvements reflect genuine reasoning or sophisticated pattern matching. Using algorithmically-structured puzzles with controllable difficulty, the authors reveal three complexity-dependent behavioral regimes where models fundamentally fail to generalize beyond training distributions.

## Architecture Overview

- **Four puzzle environments**: Tower of Hanoi, Checker Jumping, River Crossing, Blocks World enable fine-grained complexity control
- **Reasoning trace analysis**: Extract intermediate solutions and thinking patterns from extended traces
- **Comparative evaluation**: Match reasoning/non-reasoning model pairs with equivalent inference compute budgets
- **Sequential validation**: Custom simulators verify each move step-by-step

## Implementation

### Step 1: Design Controllable Puzzle Environment

Create puzzle environments with adjustable parameters:

```python
class PuzzleEnvironment:
    def __init__(self, puzzle_type: str, complexity_level: int):
        self.puzzle_type = puzzle_type
        self.complexity = complexity_level
        self.state = self.initialize_state()

    def initialize_state(self) -> dict:
        """Generate puzzle state with controlled difficulty."""
        if self.puzzle_type == "tower_of_hanoi":
            return {"disks": self.complexity, "pegs": [[], [], []]}
        elif self.puzzle_type == "checker_jumping":
            return {"board": self._create_board(self.complexity)}

    def validate_move(self, action: tuple) -> bool:
        """Verify move legality using domain-specific rules."""
        return self._apply_transition(action) is not None

    def get_optimal_steps(self) -> int:
        """Return theoretical minimum steps for complexity level."""
        return self._compute_lower_bound()
```

### Step 2: Extract Thinking Traces and Patterns

Analyze reasoning behavior across complexity regimes:

```python
class ThinkingAnalyzer:
    def extract_trace_features(self, thinking_text: str,
                               final_answer: str) -> dict:
        """Extract patterns from extended reasoning traces."""
        features = {
            "token_count": len(thinking_text.split()),
            "solution_discovery_point": self._find_first_solution(thinking_text),
            "error_recovery_attempts": self._count_recoveries(thinking_text),
            "fixation_patterns": self._detect_fixation(thinking_text),
            "correctness": self._validate_answer(final_answer)
        }
        return features

    def identify_regime(self, features: dict,
                       complexity: int) -> str:
        """Classify behavior into three regimes."""
        if features["correctness"] and complexity < self.low_threshold:
            return "LOW_COMPLEXITY"
        elif features["correctness"] and complexity < self.medium_threshold:
            return "MEDIUM_COMPLEXITY"
        else:
            return "HIGH_COMPLEXITY_COLLAPSE"
```

### Step 3: Implement Comparative Evaluation

Test reasoning vs non-reasoning models under equivalent budgets:

```python
def run_comparative_test(model_reasoning, model_baseline,
                        puzzle_env: PuzzleEnvironment,
                        max_tokens: int = 512) -> dict:
    """Compare performance with matched computational budgets."""

    # Get reasoning model output
    reasoning_output = model_reasoning.generate(
        puzzle_env.to_prompt(),
        max_tokens=max_tokens,
        thinking_budget=max_tokens // 2
    )

    # Get baseline output with equivalent token budget
    baseline_output = model_baseline.generate(
        puzzle_env.to_prompt(),
        max_tokens=max_tokens
    )

    return {
        "reasoning_correct": validate_solution(reasoning_output),
        "baseline_correct": validate_solution(baseline_output),
        "reasoning_tokens": reasoning_output.token_count,
        "reasoning_effort_trajectory": extract_effort_curve(
            reasoning_output.thinking_trace
        )
    }
```

## Practical Guidance

**Key Finding**: Models allocate more thinking initially, then counterintuitively reduce effort approaching collapse points—despite adequate remaining budget. This suggests the failure is not computational but rooted in fundamental symbolic manipulation limitations.

**Experimental Design Tips**:
- Use "clean" puzzles without data contamination from benchmark training
- Analyze reasoning traces at intermediate steps, not just final answers
- Test algorithms in explicit form; lack of improvement indicates symbolic weakness not search difficulty
- Check for non-monotonic patterns where harder instances fail earlier despite requiring longer solutions

**When to Apply**: Use this framework to rigorously evaluate claims about reasoning capability improvements, especially when benchmarks may suffer from data leakage or distribution shift.

## Reference

The work employs three behavioral regimes:
1. **Low complexity**: Standard LLMs match or exceed reasoning models
2. **Medium complexity**: Reasoning models show advantages from extended thinking
3. **High complexity**: Both models collapse completely, revealing fundamental limitations

The "reasoning effort paradox" indicates models reduce thinking as problems become intractable—counterintuitive behavior suggesting training dynamics rather than genuine search limitations.

