No description
Find a file
2025-12-22 15:21:42 -07:00
inputs further refinement 2025-12-21 15:52:32 -07:00
part_01_intro more refinement 2025-12-15 10:53:54 -07:00
part_02_solver updated solutions with constant values 2025-12-15 16:39:32 -07:00
part_03_optimizer p4 refinements 2025-12-18 10:07:27 -07:00
part_04_push_pop p4 post video updates 2025-12-18 11:32:21 -07:00
part_05_application further refinement 2025-12-21 14:23:08 -07:00
solutions finalization 2025-12-22 15:21:42 -07:00
.gitignore initial commit 2025-12-12 22:37:36 -07:00
Cargo.lock initial commit 2025-12-12 22:37:36 -07:00
Cargo.toml docs: Add GitHub token setup instructions to part_01_intro README 2025-12-13 16:57:59 -07:00
README.md add links 2025-12-15 11:01:21 -07:00

Z3 with Rust Mini-Series

This repository contains the code for a tutorial series on using the Z3 Theorem Prover with Rust.

The companion Videos and Drawing are available here:

Series Outline

Part 1: Introduction to Z3 & Setup

  • Topic: What is Z3? Getting Started
  • Goal: Learn a bit about how Z3 works with some basic examples.
  • Project: part_01_intro
  • Key Concepts: Solver, Optimizer, Int, assert, check, get_model.

Part 2: The Solver

  • Topic: Deep dive into the generic Solver.
  • Key Concepts: Multiple Solutions, Complex Problems.
  • Project: part_02_solver

Part 3: The Optimizer

  • Topic: Using the Optimize.
  • Key Concepts: Hard vs. Soft constraints, Minimization, Maximization.
  • Project: part_03_optimizer

Part 4: Incremental Solving

  • Topic: Advanced control over the solver state.
  • Key Concepts: push(), pop(), scopes, and backtracking.
  • Project: part_04_push_pop

Part 5: Showcase

  • Topic: Leverage Skills to Solve Problems.
  • Goal: Solve three problems to test your skills.
  • Project: part_05_application

Running the Examples

You can run any part of the series using cargo:

cargo run -p part_01_intro
cargo run -p part_02_solver
# ... and so on