Skip to main content

encode

Translate constraint problems into SMT-LIB2 or Z3 Python API code. Handles common problem classes including scheduling, graph coloring, arithmetic puzzles, and verification conditions.

소스 정보

저장소
Z3Prover/z3
최근 소스 활동
2026년 3월 11일 21:53
감지된 SKILL.md 언어
영어
스타
12,886
포크
1,725

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
encode
description
Translate constraint problems into SMT-LIB2 or Z3 Python API code. Handles common problem classes including scheduling, graph coloring, arithmetic puzzles, and verification conditions.
Given a problem description (natural language, pseudocode, or a partial formulation), produce a complete, syntactically valid SMT-LIB2 encoding or Z3 Python script. The encoding should declare all variables, assert all constraints, and include the appropriate check-sat / get-model commands. # Step 1: Identify the problem class Action: Determine the SMT theory and variable sorts required by the problem description. Expectation: A clear mapping from the problem to one of the supported theories (LIA, LRA, QF_BV, etc.). Result: If the theory is identified, proceed to Step 2. If the problem spans multiple theories, select the appropriate combined logic. | Problem class | Theory | Typical sorts | |---------------|--------|---------------| | Integer arithmetic | LIA / NIA | Int | | Real arithmetic | LRA / NRA | Real | | Bitvector operations | QF_BV | (_ BitVec N) | | Arrays and maps | QF_AX | (Array Int Int) | | Strings and regex | QF_S | String, RegLan | | Uninterpreted functions | QF_UF | custom sorts | | Mixed theories | AUFLIA, etc. | combination | # Step 2: Generate the encoding Action: Invoke encode.py with the problem description and desired output format. Expectation: The script produces a complete SMT-LIB2 file or Z3 Python script with all declarations, constraints, and check-sat commands. Result: For `smtlib2` format: pass the output to **solve**. For `python` format: execute the script directly. Proceed to Step 3 for validation. ```bash python3 scripts/encode.py --problem "Find integers x, y such that x^2 + y^2 = 25 and x > 0" --format smtlib2 python3 scripts/encode.py --problem "Schedule 4 tasks on 2 machines minimizing makespan" --format python ``` # Step 3: Validate the encoding Action: The script runs a syntax check by piping the output through `z3 -in` in parse-only mode. Expectation: No parse errors. If errors occur, the offending line is reported. Result: On success: the encoding is ready for **solve**, **prove**, or **optimize**. On parse error: fix the reported line and re-run. # Parameters | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | problem | string | yes | | problem description | | format | string | no | smtlib2 | output format: smtlib2 or python | | output | path | no | stdout | write to file instead of stdout | | validate | flag | no | on | run syntax check on the output | | debug | flag | no | off | verbose tracing | | db | path | no | .z3-agent/z3agent.db | logging database |
GitHub에서 보기