3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-04 01:15:15 +00:00
z3/.github/skills/optimize/SKILL.md
Angelica Moreira d349b93d1d Add Copilot skill architecture with 10 skills, 2 agents, and shared infra
Introduce .github/skills/ with solve, prove, optimize, simplify,
encode, explain, benchmark, memory-safety, static-analysis, and
deeptest skills. Each skill follows a SKILL.md + scripts/ pattern
with Python scripts backed by a shared SQLite logging library
(z3db.py). Two orchestrator agents (z3-solver, z3-verifier) route
requests to the appropriate skills.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-11 17:41:29 +00:00

1.7 KiB

name description
optimize Solve constrained optimization problems using Z3. Supports minimization and maximization of objective functions over integer, real, and bitvector domains.

Given a set of constraints and an objective function, find the optimal value. Z3 supports both hard constraints (must hold) and soft constraints (weighted preferences), as well as lexicographic multi-objective optimization.

Step 1: Formulate the problem

The formula uses the (minimize ...) or (maximize ...) directives followed by (check-sat) and (get-model).

Example: minimize x + y subject to x >= 1, y >= 2, x + y <= 10:

(declare-const x Int)
(declare-const y Int)
(assert (>= x 1))
(assert (>= y 2))
(assert (<= (+ x y) 10))
(minimize (+ x y))
(check-sat)
(get-model)

Step 2: Run the optimizer

python3 scripts/optimize.py --file scheduling.smt2
python3 scripts/optimize.py --formula "<inline smt-lib2>" --debug

Step 3: Interpret the output

  • sat with a model: the optimal assignment satisfying all constraints.
  • unsat: the constraints are contradictory; no feasible solution exists.
  • unknown or timeout: Z3 could not determine optimality.

The script prints the objective value and the satisfying assignment.

Parameters

Parameter Type Required Default Description
formula string no SMT-LIB2 formula with minimize/maximize
file path no path to .smt2 file
timeout int no 60 seconds
z3 path no auto path to z3 binary
debug flag no off verbose tracing
db path no .z3-agent/z3agent.db logging database