This tutorial introduces the basic concepts of Z3 through simple constraint solving examples. You’ll learn how to create variables, add constraints, and check satisfiability.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Z3Prover/z3/llms.txt
Use this file to discover all available pages before exploring further.
Simple Arithmetic Constraints
Let’s start with a basic example that solves arithmetic constraints using real numbers.Import Z3
First, import the Z3 library to access all solver functions:This imports all Z3 classes and functions, including
Real, Solver, and constraint operators.Create variables
Create variables that represent unknown values you want to find:
Real('x') creates a real-valued variable named ‘x’. Z3 also supports Int, Bool, and other types.Create a solver and add constraints
Create a solver instance and add your constraints:The
add() method accepts multiple constraints. Here we’re saying:- The sum of x and y must be greater than 5
- x must be greater than 1
- y must be greater than 1
Complete Example
The actual values may vary - Z3 finds any solution that satisfies the constraints, not necessarily a specific one.
Integer Constraints
Z3 can also solve integer programming problems.
Expected output:
Boolean Satisfiability (SAT)
Z3 can solve classic SAT problems using boolean variables.Checking Unsatisfiability
Sometimes constraints have no solution:Key Concepts
Variable types
Variable types
Int('name')- Integer variablesReal('name')- Real number variablesBool('name')- Boolean variablesBitVec('name', size)- Bit-vector variables
Constraint operators
Constraint operators
- Arithmetic:
+,-,*,/,% - Comparison:
==,!=,<,<=,>,>= - Boolean:
And(),Or(),Not(),Implies() - Special:
Distinct()- ensures all arguments are different
Solver results
Solver results
sat- Satisfiable (solution found)unsat- Unsatisfiable (no solution exists)unknown- Solver timed out or couldn’t determine
Next Steps
Sudoku Solver
Apply these concepts to build a complete Sudoku solver
Optimization Problems
Learn to find optimal solutions using Z3’s Optimize solver
