Solver

Simplify and validate Faebryk constraint systems built from Parameters, Literals, and Expressions.

3.6k|225|Updated Dec 19, 2023
One-click install
npx skills add https://github.com/atopile/atopile --skill solver
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: Solver
Source: https://github.com/atopile/atopile/tree/main/.claude/skills/solver
Command: npx skills add https://github.com/atopile/atopile --skill solver

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

The Solver module is the heart of atopile's parameter subsystem, providing symbolic simplification and validation of constraint systems built from Parameters, Literals, and Expressions. It enforces core invariants during mutation to ensure graphs remain correct and learnable.

Core Features & Use Cases

  • Symbolic manipulation of parameters, literal sets, and expressions to produce canonical, deduplicated forms.
  • Invariant-driven mutation: safe graph transformations that preserve semantics while enabling debugging and extension.
  • Debug tooling and hands-on workflows for solver development and testing within the Faebryk ecosystem.

Quick Start

Create a minimal test graph and run DefaultSolver().simplify(g=..., tg=...) to inspect the resulting mutation_map and invariants in action.

Frequently Asked Questions about Solver

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I symbolically solve and validate parameter constraints in Faebryk?

To symbolically solve and validate constraints, the Faebryk solver simplifies systems built from parameters, literal sets, and expressions to produce canonical, deduplicated forms while enforcing invariants during mutation.

What are invariants during mutation in a symbolic solver pipeline?

Invariants during mutation are safety rules that preserve semantics during graph transformations. The solver enforces these invariants to ensure parameter and expression graphs remain correct and learnable.

How do I debug a Faebryk solver pipeline using a minimal test graph?

You can debug the solver pipeline by creating a minimal test graph and running DefaultSolver().simplify(g=..., tg=...) to inspect the resulting mutation_map and observe invariants in action.

Do I need to understand the DefaultSolver and Mutator to use this solver?

Yes, working with this solver requires understanding the DefaultSolver, Mutator, and core data structures for parameters, literals, and expression graphs to effectively reason about canonical forms.

What is the best way to deduplicate expression graphs in a constraint system?

The best way to deduplicate expression graphs is using symbolic manipulation through the solver, which applies invariant-driven mutation to safely transform graphs into canonical, deduplicated forms.