Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Z3 Theorem Prover

From Wikipedia, the free encyclopedia
Software for solving satisfiability problems
Z3 Theorem Prover
Original authorMicrosoft Research
DeveloperMicrosoft
Initial release2012; 14 years ago (2012)
Stable release
4.15.4[1] Edit this on Wikidata / 29 October 2025; 3 months ago (29 October 2025)
Written inC++
Operating systemWindows,FreeBSD,Linux (Debian,Ubuntu),macOS
PlatformIA-32,x86-64,WebAssembly,arm64
TypeTheorem prover
LicenseMIT License
Websitegithub.com/Z3Prover
Repository

Z3, also known as theZ3 Theorem Prover, is asatisfiability modulo theories (SMT) solver developed byMicrosoft.[2]

Overview

[edit]

Z3 was developed in theResearch in Software Engineering (RiSE) group atMicrosoft Research Redmond and is targeted at solving problems that arise insoftware verification andprogram analysis. Z3 supports arithmetic, fixed-size bit-vectors, extensional arrays, datatypes, uninterpreted functions, andquantifiers. Its main applications areextended static checking, test case generation, andpredicate abstraction.[citation needed]

Z3 was open sourced in the beginning of 2015.[3] The source code is licensed underMIT License and hosted onGitHub.[4]The solver can be built usingVisual Studio, amakefile or usingCMake and runs onWindows,FreeBSD,Linux, andmacOS.

The default input format for Z3 isSMTLIB2.It also has officially supportedbindings for severalprogramming languages, includingC,C++,Python,.NET,Java, andOCaml.[5]

Examples

[edit]

Propositional and predicate logic

[edit]

In this example propositional logic assertions are checked using functions to represent the propositions a and b. The following Z3 script checks to see ifab¯a¯b¯{\displaystyle {\overline {a\land b}}\equiv {\overline {a}}\lor {\overline {b}}}:

(declare-fun a () Bool)(declare-fun b () Bool)(assert (not (= (not (and a b)) (or (not a)(not b)))))(check-sat)

Result:

unsat

Note that the script asserts thenegation of the proposition of interest. Theunsat result means that the negated proposition is not satisfiable, thus proving the desired result (De Morgan's law).

Solving equations

[edit]

The following script solves the two given equations, finding suitable values for the variables a and b:

(declare-const a Int)(declare-const b Int)(assert (= (+ a b) 20))(assert (= (+ a (* 2 b)) 10))(check-sat)(get-model)

Result:

sat(model   (define-fun b () Int    -10)  (define-fun a () Int    30))

Awards

[edit]

In 2015, Z3 received theProgramming Languages Software Award fromACMSIGPLAN.[6][7] In 2018, Z3 received theTest of Time Award from theEuropean Joint Conferences on Theory and Practice of Software (ETAPS).[8] Microsoft researchers Nikolaj Bjørner andLeonardo de Moura received the 2019Herbrand Award for Distinguished Contributions to Automated Reasoning in recognition of their work in advancing theorem proving with Z3.[9][10]

See also

[edit]

References

[edit]
  1. ^"Release 4.15.4". 29 October 2025. Retrieved31 October 2025.
  2. ^"Using the SMT solver Z3"(PDF). Archived fromthe original(PDF) on 2020-11-17. Retrieved2019-12-01.
  3. ^"Microsoft's Visual Studio timeline and Z3 Theorem Prover, Google Cloud Launcher, Facebook's Fresco—SD Times news digest: March 27, 2015". March 27, 2015.
  4. ^"GitHub - Z3Prover/z3: The Z3 Theorem Prover". December 1, 2019 – via GitHub.
  5. ^Bjørner, Nikolaj; de Moura, Leonardo; Nachmanson, Lev; Wintersteiger, Christoph (2019)."Programming Z3".Programming Z3.Archived from the original on February 9, 2023. RetrievedMay 21, 2023.
  6. ^"Programming Languages Software Award".www.sigplan.org.
  7. ^Microsoft Z3 Theorem Prover Wins Award
  8. ^"ETAPS 2018 Test of Time Award". Archived fromthe original on 2020-08-08. Retrieved2019-12-21.
  9. ^The inner magic behind the Z3 theorem prover - Microsoft Research
  10. ^Herbrand Award

Further reading

[edit]

External links

[edit]
Overview
Software
Applications
Video games
Programming
languages
Frameworks,
development tools
Operating systems
Other
Licenses
Forges
Related
Main
projects
Languages, compilers
Distributedgrid computing
Internet,networking
Other projects
Operating systems
APIs
Launched as products
MSR Labs
applied
research
Live Labs
Current
Discontinued
FUSE Labs
Other labs
Retrieved from "https://en.wikipedia.org/w/index.php?title=Z3_Theorem_Prover&oldid=1328728824"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp