Skip to main content

solve

Check satisfiability of SMT-LIB2 formulas using Z3. Returns sat/unsat with models or unsat cores. Logs every invocation to z3agent.db for auditability.

来源信息

仓库
Z3Prover/z3
最近来源活动
2026年3月11日 21:53
检测到的 SKILL.md 语言
英语
星标
12,924
Forks
1,729

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
solve
description
Check satisfiability of SMT-LIB2 formulas using Z3. Returns sat/unsat with models or unsat cores. Logs every invocation to z3agent.db for auditability.
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. ```bash python3 scripts/solve.py --formula "(declare-const x Int)(assert (> x 0))(check-sat)(get-model)" ``` For file input: ```bash python3 scripts/solve.py --file problem.smt2 ``` With debug tracing: ```bash 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 | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | formula | string | no | | SMT-LIB2 formula as a string | | file | path | no | | path to an .smt2 file | | timeout | int | no | 30 | seconds before killing z3 | | z3 | path | no | auto | explicit path to z3 binary | | debug | flag | no | off | print z3 command, stdin, stdout, stderr, timing | | db | path | no | .z3-agent/z3agent.db | path to the logging database | Either `formula` or `file` must be provided.
在 GitHub 查看