Runs Z3 on SMT-LIB2 constraints to check for satisfiability, returning models or unsat cores with full audit logging.

Install

mkdir -p .claude/skills/solve && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/19297" && unzip -o skill.zip -d .claude/skills/solve && rm skill.zip

Installs to .claude/skills/solve

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Check satisfiability of SMT-LIB2 formulas using Z3. Returns sat/unsat with models or unsat cores. Logs every invocation to z3agent.db for auditability.
151 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Check satisfiability of SMT-LIB2 formulas
  • Extract satisfying assignments for satisfiable formulas
  • Retrieve unsat cores from invalid constraints
  • Log solver invocations to a database for auditability
  • Execute Z3 solver via string input or file path

How it works

The skill pipes an SMT-LIB2 formula to the Z3 solver and records the execution details in a local database. It then parses the solver output to return the satisfiability status and associated data.

Inputs & outputs

You give it
SMT-LIB2 formula string or .smt2 file path
You get back
sat, unsat, unknown, or timeout status with model or unsat core

When to use solve

  • Verify logical constraints in code
  • Find models for satisfiable logic problems
  • Extract unsat cores from invalid constraints

About this skill

Given an SMT-LIB2 formula (or a set of constraints described in natural language), determine whether the formula is satisfiable. If sat, extract a satisfying assignment. If unsat and tracking labels are present, extract the unsat core.

Step 1: Prepare the formula

Action: Convert the input to valid SMT-LIB2. If the input is natural language, use the encode skill first.

Expectation: A syntactically valid SMT-LIB2 formula ending with (check-sat) and either (get-model) or (get-unsat-core) as appropriate.

Result: If valid SMT-LIB2 is ready, proceed to Step 2. If encoding is needed, run encode first and return here.

Step 2: Run Z3

Action: Invoke solve.py with the formula string or file path.

Expectation: The script pipes the formula to z3 -in, logs the run to .z3-agent/z3agent.db, and prints the result.

Result: Output is one of sat, unsat, unknown, or timeout. Proceed to Step 3 to interpret.

python3 scripts/solve.py --formula "(declare-const x Int)(assert (> x 0))(check-sat)(get-model)"

For file input:

python3 scripts/solve.py --file problem.smt2

With debug tracing:

python3 scripts/solve.py --file problem.smt2 --debug

Step 3: Interpret the output

Action: Parse the Z3 output to determine satisfiability and extract any model or unsat core.

Expectation: sat with a model, unsat optionally with a core, unknown, or timeout.

Result: On sat: report the model to the user. On unsat: report the core if available. On unknown/timeout: try simplify or increase the timeout.

Parameters

ParameterTypeRequiredDefaultDescription
formulastringnoSMT-LIB2 formula as a string
filepathnopath to an .smt2 file
timeoutintno30seconds before killing z3
z3pathnoautoexplicit path to z3 binary
debugflagnooffprint z3 command, stdin, stdout, stderr, timing
dbpathno.z3-agent/z3agent.dbpath to the logging database

Either formula or file must be provided.

When not to use it

  • When the input is natural language without prior encoding
  • When the formula results in unknown or timeout states without simplification

Prerequisites

Z3 binarypython3

Limitations

  • Requires either a formula string or a file path
  • Default timeout is 30 seconds

How it compares

Unlike manual solver execution, this skill automates the logging of every invocation to a specific database for audit purposes.

Compared to similar skills

solve side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
solve (this skill)04moReviewIntermediate
python-repl64moReviewBeginner
compare-cpython-versions17moReviewAdvanced
prove04moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry