This repository contains the source code for Project Manas, an AI solver developed for the ARC Prize 2025, a Kaggle competition focused on Artificial General Intelligence (AGI).
The Abstraction and Reasoning Corpus (ARC) is a benchmark designed to test an AI's ability to acquire new skills and solve novel problems from a handful of examples. This project aims to tackle the ARC challenge by moving beyond conventional machine learning models and instead focusing on program synthesis—the automatic generation of computer programs from high-level specifications.
The core of this solver is an engine that attempts to deduce the underlying logic of a puzzle and express that logic as a simple program.
This solver is built on the belief that true abstract reasoning, as required by ARC, is not a task of statistical pattern matching but of algorithmic inference. Instead of training a large neural network on thousands of examples, this solver analyzes the structure of each puzzle and searches for a sequence of logical steps that transforms the input into the desired output.
The approach is composed of three main components:
-
Perception Module (The "Eyes"): This component analyzes a raw puzzle grid and identifies distinct objects, their properties (color, size, shape), and their positions. It turns unstructured pixel data into a structured, symbolic representation.
-
Domain-Specific Language (DSL) (The "Hands"): This is a powerful library of fundamental operations that can be performed on the grid or the objects within it. The DSL includes functions for moving, recoloring, rotating, flipping, and deleting objects and the grid itself.
-
Program Synthesis Engine (The "Brain"): This is the reasoning core of the solver. It uses a Breadth-First Search (BFS) algorithm to explore combinations of DSL functions, searching for a sequence (a "program") that successfully solves all the training examples for a given task.
For each puzzle, the solver follows a distinct process:
- Analyze: It first looks at the training pairs to understand the task.
- Generate Candidates: It creates a list of plausible transformations using its DSL.
- Search: The BFS engine searches for a sequence of these transformations (e.g., "rotate the grid 90 degrees, then move the largest object down by 2 spaces") that consistently solves all training pairs.
- Validate: The identified program must work for every single training example.
- Predict: If a valid program is found, the solver applies that exact sequence of steps to the test grids to generate the final predictions. If no solution is found within the search limits, it defaults to submitting the original input grid.
This project is designed to be run as a self-contained Kaggle Notebook.
- Navigate to the ARC Prize 2025 competition on Kaggle.
- Upload the
Project-Abstraction.ipynb
notebook. - Commit and run the notebook, then submit the generated
submission.json
file.
This project is licensed under the Creative Commons Attribution 4.0 International License. See the LICENSE file for details. This is in accordance with the open-sourcing requirements for prize-eligible submissions in the ARC Prize 2025 competition.
If you reference this project, please cite the original competition:
Francois Chollet, Mike Knoop, Greg Kamradt, Walter Reade, and Addison Howard. ARC Prize 2025. [https://kaggle.com/competitions/arc-prize-2025](https://kaggle.com/competitions/arc-prize-2025), 2025. Kaggle.