Package Import
z3 package.
Core Types
Context
The context manages all Z3 objects and operations.timeout: Timeout in millisecondsproof: Enable proof generation (true/false)model: Enable model generation (true/false)
Config
Configuration object for context creation.Expr
Represents Z3 expressions (formulas, terms, variables). Methods:String() string- Get string representationSort() *Sort- Get the sort (type) of this expressionIsConst() bool- Check if expression is a constantIsApp() bool- Check if expression is a function application
Sort
Represents Z3 sorts (types). Methods:String() string- Get string representationKind() SortKind- Get the kind of sort
Creating Variables and Constants
Boolean
Integer and Real
Bit-Vectors
Boolean Operations
Arithmetic Operations
Comparison Operations
Bit-Vector Operations
Arithmetic
MkBVAdd(lhs, rhs *Expr) *Expr- AdditionMkBVSub(lhs, rhs *Expr) *Expr- SubtractionMkBVMul(lhs, rhs *Expr) *Expr- MultiplicationMkBVUDiv(lhs, rhs *Expr) *Expr- Unsigned divisionMkBVSDiv(lhs, rhs *Expr) *Expr- Signed divisionMkBVURem(lhs, rhs *Expr) *Expr- Unsigned remainderMkBVSRem(lhs, rhs *Expr) *Expr- Signed remainderMkBVSMod(lhs, rhs *Expr) *Expr- Signed moduloMkBVNeg(expr *Expr) *Expr- Negation
Bitwise
MkBVAnd(lhs, rhs *Expr) *Expr- Bitwise ANDMkBVOr(lhs, rhs *Expr) *Expr- Bitwise ORMkBVXor(lhs, rhs *Expr) *Expr- Bitwise XORMkBVNot(expr *Expr) *Expr- Bitwise NOTMkBVNand(lhs, rhs *Expr) *Expr- Bitwise NANDMkBVNor(lhs, rhs *Expr) *Expr- Bitwise NORMkBVXnor(lhs, rhs *Expr) *Expr- Bitwise XNOR
Shifts and Rotations
MkBVShl(lhs, rhs *Expr) *Expr- Shift leftMkBVLShr(lhs, rhs *Expr) *Expr- Logical shift rightMkBVAShr(lhs, rhs *Expr) *Expr- Arithmetic shift rightMkBVRotateLeft(expr *Expr, i uint) *Expr- Rotate leftMkBVRotateRight(expr *Expr, i uint) *Expr- Rotate right
Comparisons
MkBVULT(lhs, rhs *Expr) *Expr- Unsigned less thanMkBVSLT(lhs, rhs *Expr) *Expr- Signed less thanMkBVULE(lhs, rhs *Expr) *Expr- Unsigned less or equalMkBVSLE(lhs, rhs *Expr) *Expr- Signed less or equalMkBVUGE(lhs, rhs *Expr) *Expr- Unsigned greater or equalMkBVSGE(lhs, rhs *Expr) *Expr- Signed greater or equalMkBVUGT(lhs, rhs *Expr) *Expr- Unsigned greater thanMkBVSGT(lhs, rhs *Expr) *Expr- Signed greater than
Extraction and Extension
MkConcat(lhs, rhs *Expr) *Expr- Concatenate bit-vectorsMkExtract(high, low uint, expr *Expr) *Expr- Extract bits [high:low]MkSignExt(i uint, expr *Expr) *Expr- Sign extensionMkZeroExt(i uint, expr *Expr) *Expr- Zero extensionMkRepeat(i uint, expr *Expr) *Expr- Repeat bit-vector
Floating-Point Operations
Sorts
MkFPSort(ebits, sbits uint) *Sort- Custom FP sort (ebits exponent, sbits significand)MkFPSort16() *Sort- IEEE 754 half precision (16-bit)MkFPSort32() *Sort- IEEE 754 single precision (32-bit)MkFPSort64() *Sort- IEEE 754 double precision (64-bit)MkFPSort128() *Sort- IEEE 754 quadruple precision (128-bit)MkFPRoundingModeSort() *Sort- Rounding mode sort
Special Values
MkFPInf(sort *Sort, negative bool) *Expr- InfinityMkFPNaN(sort *Sort) *Expr- Not-a-NumberMkFPZero(sort *Sort, negative bool) *Expr- Zero (+0.0 or -0.0)
Arithmetic
MkFPAdd(rm, lhs, rhs *Expr) *Expr- Addition with rounding modeMkFPSub(rm, lhs, rhs *Expr) *Expr- SubtractionMkFPMul(rm, lhs, rhs *Expr) *Expr- MultiplicationMkFPDiv(rm, lhs, rhs *Expr) *Expr- DivisionMkFPFMA(rm, x, y, z *Expr) *Expr- Fused multiply-add: x*y+zMkFPSqrt(rm, expr *Expr) *Expr- Square rootMkFPRem(lhs, rhs *Expr) *Expr- RemainderMkFPAbs(expr *Expr) *Expr- Absolute valueMkFPNeg(expr *Expr) *Expr- Negation
Comparisons
MkFPLT(lhs, rhs *Expr) *Expr- Less thanMkFPGT(lhs, rhs *Expr) *Expr- Greater thanMkFPLE(lhs, rhs *Expr) *Expr- Less or equalMkFPGE(lhs, rhs *Expr) *Expr- Greater or equalMkFPEq(lhs, rhs *Expr) *Expr- Equality
Predicates
MkFPIsNaN(expr *Expr) *Expr- Is NaNMkFPIsInf(expr *Expr) *Expr- Is infiniteMkFPIsZero(expr *Expr) *Expr- Is zeroMkFPIsNormal(expr *Expr) *Expr- Is normalMkFPIsSubnormal(expr *Expr) *Expr- Is subnormalMkFPIsNegative(expr *Expr) *Expr- Is negativeMkFPIsPositive(expr *Expr) *Expr- Is positive
String/Sequence Operations
Creation
MkStringSort() *Sort- String sortMkSeqSort(elemSort *Sort) *Sort- Sequence sortMkString(value string) *Expr- String constantMkEmptySeq(sort *Sort) *Expr- Empty sequence
Operations
MkSeqConcat(exprs ...*Expr) *Expr- ConcatenationMkSeqLength(seq *Expr) *Expr- LengthMkSeqAt(seq, index *Expr) *Expr- Character at indexMkSeqExtract(seq, offset, length *Expr) *Expr- SubstringMkSeqPrefix(prefix, seq *Expr) *Expr- Prefix predicateMkSeqSuffix(suffix, seq *Expr) *Expr- Suffix predicateMkSeqContains(container, contained *Expr) *Expr- Contains predicateMkSeqIndexOf(seq, substr, offset *Expr) *Expr- Index of substringMkSeqReplace(seq, src, dst *Expr) *Expr- Replace substringMkStrToInt(str *Expr) *Expr- String to integerMkIntToStr(i *Expr) *Expr- Integer to string
Array Operations
MkArraySort(domain, range *Sort) *Sort- Create array sortMkSelect(array, index *Expr) *Expr- Read: array[index]MkStore(array, index, value *Expr) *Expr- Write: array[index := value]MkConstArray(domain *Sort, value *Expr) *Expr- Constant arrayMkArrayDefault(array *Expr) *Expr- Default value
Datatypes
Lists
Tuples
Enumerations
Solver
Creation
Adding Constraints
Checking Satisfiability
z3.Satisfiable(LTrue)z3.Unsatisfiable(LFalse)z3.Unknown(LUndef)
Backtracking
Results
Model
expr: Expression to evaluatemodelCompletion: Assign default values to unbound variables
Optimize
Solver for optimization problems.Assert(constraint *Expr)- Add hard constraintAssertSoft(constraint *Expr, weight, group string)- Add soft constraintMaximize(expr *Expr) uint- Add maximization objectiveMinimize(expr *Expr) uint- Add minimization objectiveCheck(assumptions ...*Expr) LBool- Check and optimizeModel() *Model- Get optimal modelGetLower/Upper(index uint) *Expr- Get objective boundsPush/Pop()- Backtracking
Tactics
Tactics provide goal-based solving."simplify"- Simplification"solve-eqs"- Solve equations"qe"- Quantifier elimination"sat"- SAT solver"smt"- SMT solver"qfnra"- Nonlinear real arithmetic
AndThen(t1, t2 *Tactic, tactics ...*Tactic) *Tactic- SequentialOrElse(t1, t2 *Tactic) *Tactic- Try first, fallbackRepeat(t *Tactic, max uint) *Tactic- Repeat tactic
Constants and Enums
LBool
Satisfiability result:Further Reading
Getting Started
Practical examples and tutorials
C API Reference
Underlying C API documentation
Z3 Guide
Comprehensive Z3 guide
GitHub Source
Go bindings source code
