Theoretical explorations of Active Inference approaches to the ARC-AGI Challenge. These are experimental ideas requiring empirical validation on the full ARC benchmark.
This repository explores how Active Inference (Bayesian belief updating) can serve as a unifying principle for abstract reasoning, applied to the ARC-AGI Challenge.
The central idea: multiple cognitive frameworks -- curiosity-driven exploration, stability analysis, workspace attention, and program synthesis -- can be viewed as components of a single Active Inference process.
ARC_explorations/
├── README.md
├── LICENSE
├── requirements.txt
├── UNIFIED_SYSTEM_OVERVIEW.md
│
├── unified_solver/ # Primary: Unified Active Inference Solver
│ ├── arc_active_inference_solver.py
│ ├── arc_loader.py
│ ├── examples.py
│ ├── README.md
│ ├── DESIGN.md
│ └── IMPLEMENTATION_SUMMARY.md
│
├── solvers/ # Modular experimental solvers
│ ├── curiosity_solver/ # Curiosity-driven active inference
│ ├── graph_pendulum/ # Stability-aware dynamical system
│ └── generative_solver/ # Typed rule grammar + program synthesis
│
├── docs/ # Theoretical documentation
│ └── theory/
│ ├── curiosity/ # Curiosity-driven neurosymbolic framework
│ ├── dynamical_systems/ # Graph pendulum / dynamical systems
│ ├── workspace/ # Cognitive workspace theory
│ └── generative/ # Generative task discovery
│
├── data/ # Sample ARC tasks
│ └── arc_samples/training/
│
└── tests/ # Test files
├── test_curiosity_solver.py
└── test_generative_solver.py
The unified solver combines ideas from five theoretical frameworks into a single Active Inference architecture. It uses Bayesian belief updating over a DSL of transformation hypotheses, guided by curiosity signals and stability filtering.
See unified_solver/README.md for details.
Three standalone solvers, each exploring a different theoretical angle:
-
Curiosity Solver (
solvers/curiosity_solver/) -- Bayesian belief updating with curiosity signals (information gain, epistemic uncertainty, learning progress) and hierarchical reasoning. -
Graph Pendulum Solver (
solvers/graph_pendulum/) -- Models reasoning as a dynamical system with stability analysis, basin discovery, and chaos filtering. -
Generative Solver (
solvers/generative_solver/) -- Typed rule grammar (TRG) for program synthesis with active inference-based belief updates.
The solvers are grounded in five theoretical frameworks, documented in docs/theory/:
- Curiosity-Driven Neurosymbolic Framework -- Information gain, Bayesian surprise, learning progress
- Global Workspace Theory -- Limited capacity attention, hypothesis broadcasting
- Graph Pendulum / Dynamical Systems -- Stability analysis, Lyapunov indicators, basin discovery
- Probabilistic Program Spaces -- Continuous belief dynamics, information geometry
- Generative Task Discovery -- Typed DSL, compositional transformations, program synthesis
pip install numpy
# Run a basic example
cd unified_solver
python examples.py 1from unified_solver.arc_active_inference_solver import ARCActiveInferenceSolver, ARCTask, Grid
task = ARCTask(
train_pairs=[
(Grid([[1,2],[3,4]]), Grid([[2,1],[4,3]])),
(Grid([[5,6],[7,8]]), Grid([[6,5],[8,7]])),
],
test_input=Grid([[9,0],[1,2]])
)
solver = ARCActiveInferenceSolver()
predictions = solver.solve(task, verbose=True)- Python 3.7+
- NumPy (core dependency)
- Optional: SciPy, scikit-learn, matplotlib (for graph pendulum solver)
This is a research exploration, not a production solver. Key caveats:
- The solvers have been tested on small synthetic examples only
- No validation has been performed on the full ARC-AGI benchmark
- The theoretical frameworks are speculative and require empirical testing
- Performance on the actual ARC challenge is unknown
MIT License. See LICENSE.
- ARC-AGI Challenge by Francois Chollet
- Active Inference framework by Karl Friston