the smt solver z3 lecture 3, 2012
DESCRIPTION
The SMT solver Z3 Lecture 3, 2012. Nikolaj Bjørner Microsoft Research DTU Winter course January 4 th 2012 Organized by Hanne Riis Nielson, Flemming Nielson. Plan. Overview and architecture of Z3 What is Z3 How to use Z3. Takeaways :. - PowerPoint PPT PresentationTRANSCRIPT
The SMT solver Z3
Lecture 3, 2012
Nikolaj Bjørner Microsoft ResearchDTU Winter course January 4th 2012Organized by Hanne Riis Nielson, Flemming Nielson
Plan
Overview and architecture of Z3
What is Z3
How to use Z3
Takeaways:
You will have an idea of what Z3 is and ways of using it
Follow-on questions
What is Z3?
TheoriesBit-Vectors
Lin-arithmetic Groebner basis
Free (uninterpreted) functions
Arrays
Quantifiers:E-matching
OCaml
.NET
CNative
SMT-LIB
Model Generation:Finite Models
Simplify
Comb. Array LogicRecursive Datatypes
Quantifiers:Super-position
Proof objects
Parallel Z3Assumption
tracking
By Leonardo de Moura & Nikolaj Bjørner http://research.microsoft.com/projects/z3
F# quote
Z3: Little Engines of Proof
CongruenceClosur
e
SAT Solve
r
Simplifier
Quant.Instan
ces
Simplex
Bit-Arith
Super-positio
n
Arrays
Datatypes
User-Theori
es
MBQI
Q- Elim
Freely available from http://research.microsoft.com/projects/z3
Input Formats
Input FormatsText:
SMT-LIB2 - main exchange format for SMT solversSimplify - legacy format by Simplify Theorem ProverNative Z3 - low-level for storing formulas (and replay)Log - low-level log for replayTPTP - format used for first-order theorem provers
Programmatic:C - API functions exposed for COcaml - Ocaml wrapper around C API.NET - .NET wrapper around C APIScala, Python - by Phillip Suter and Sascha Böhme
A Primer on SMT-LIB2See online Interactive tutorial
http://rise4fun.com/z3tutorial
LINQ/F#: Sample layer on top of API
SMT@Microsoft
open Microsoft.Z3 open Microsoft.Z3.Quotations
do Solver.prove <@ Logic.declare (fun t11 t12 t21 t22 t31 t32 -> not ((t11 >= 0I) && (t12 >= t11 + 2I) && (t12 + 1I <= 8I) && (t21 >= 0I) && (t22 >= t21 + 3I) && (t32 + 1I <= 8I) && (t31 >= 0I) && (t32 >= t31 + 2I) && (t32 + 3I <= 8I) && (t11 >= t21 + 3I || t21 >= t11 + 2I) && (t11 >= t31 + 2I || t31 >= t11 + 2I) && (t21 >= t31 + 2I || t31 >= t21 + 3I) && (t12 >= t22 + 1I || t22 >= t12 + 1I) && (t12 >= t32 + 3I || t32 >= t12 + 1I) && (t22 >= t32 + 3I || t32 >= t22 + 1I) ) ) @>
Create Quoted
Expression
Theories
Theories
Uninterpreted functionsArithmetic (linear)Bit-vectorsAlgebraic data-typesArraysUser-defined
Uninterpreted functionsArithmetic (linear)Bit-vectorsAlgebraic data-typesArraysUser-defined
Theories
Theories
Uninterpreted functionsArithmetic (linear)Bit-vectorsAlgebraic data-typesArraysUser-defined
Theories
Uninterpreted functionsArithmetic (linear)Bit-vectorsAlgebraic data-typesArraysUser-defined
Theories
Uninterpreted functionsArithmetic (linear)Bit-vectorsAlgebraic data-typesArraysUser-defined
User-interaction
and Guidance
Interaction modelsText: SMT-LIB, SMT-LIB2, Native Yices (high-level), Native Z3 (low-level), SimplifyProgrammatic APIs: C, Ocaml, .NET, LINQ,
Interaction
Logical Formula
Sat/Model
Interaction
Logical Formula
Unsat/Proof
Interaction
Simplify
Logical Formula
Interaction
ImpliedEqualities
- x and y are equal- z + y and x + z are equal
Logical Formula
Interaction
QuantifierEliminatio
n
Logical Formula
Interaction
Logical Formula
Unsat. Core