CtrlK
BlogDocsLog inGet started
Tessl Logo

simplify

Reduce formula complexity using Z3 tactic chains. Supports configurable tactic pipelines for boolean, arithmetic, and bitvector simplification.

69

Quality

83%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Given a formula, apply a sequence of Z3 tactics to produce an equivalent but simpler form. This is useful for understanding what Z3 sees after preprocessing, debugging tactic selection, and reducing formula size before solving.

Step 1: Choose tactics

Action: Select a tactic chain from the available Z3 tactics based on the formula's theory.

Expectation: A comma-separated list of tactic names suitable for the formula domain.

Result: If unsure, use the default chain: simplify,propagate-values,ctx-simplify. For bitvector formulas, add bit-blast. Proceed to Step 2.

TacticWhat it does
simplifyconstant folding, algebraic identities
propagate-valuessubstitute known equalities
ctx-simplifycontext-dependent simplification
elim-uncnstrremove unconstrained variables
solve-eqsGaussian elimination
bit-blastreduce bitvectors to booleans
tseitin-cnfconvert to CNF
aigand-inverter graph reduction

Step 2: Run simplification

Action: Invoke simplify.py with the formula and optional tactic chain.

Expectation: The script applies each tactic in sequence and prints the simplified formula. A run entry is logged to z3agent.db.

Result: If the output is simpler, pass it to solve or prove. If unchanged, try a different tactic chain.

python3 scripts/simplify.py --formula "(assert (and (> x 0) (> x 0)))" --vars "x:Int"
python3 scripts/simplify.py --file formula.smt2 --tactics "simplify,propagate-values,ctx-simplify"
python3 scripts/simplify.py --file formula.smt2 --debug

Without --tactics, the script applies the default chain: simplify, propagate-values, ctx-simplify.

Step 3: Interpret the output

Action: Read the simplified formula output in SMT-LIB2 syntax.

Expectation: One or more (assert ...) blocks representing equivalent subgoals.

Result: A smaller formula indicates successful reduction. Pass the result to solve, prove, or optimize as needed.

Parameters

ParameterTypeRequiredDefaultDescription
formulastringnoSMT-LIB2 formula to simplify
varsstringnovariable declarations as "name:sort" pairs
filepathnopath to .smt2 file
tacticsstringnosimplify,propagate-values,ctx-simplifycomma-separated tactic names
timeoutintno30seconds
z3pathnoautopath to z3 binary
debugflagnooffverbose tracing
dbpathno.z3-agent/z3agent.dblogging database
Repository
Z3Prover/z3
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.