LINQ to Z3, The World’s Fasted Theorem Prover
Microsoft Research claims that Z3 is the world’s fastest theorem prover. Z3 is designed to be a low-level tool for other applications, it is not meant to stand-alone. With its host of theorem provers, it is used by numerous projects including Spec#/Boogie, Pex, Yogi, Vigilante, SLAM, F7, SAGE, VS3, FORMULA, and HAVOC.
Using Z3’s .NET API, one can encode theorems using an object-orientated style. However the example in the Z3 Tutorial demonstrates that even small problems can be quite tedious to code. Bart De Smet greatly simplified this by wrapping the OO-style API with a query-style API called LINQ to Z3. Below is an example that accompanied Bart De Smet’s Channel 9 interview.
var theorem = from t in ctx.NewTheorem<Symbols<int, int, int, int, int>>()
where t.X1 - t.X2 >= 1
where t.X1 - t.X2 <= 3
where t.X1 == (2 * t.X3) + t.X5
where t.X3 == t.X5
where t.X2 == 6 * t.X4
select t;
var solution = theorem.Solve();
Console.WriteLine("X1 = {0}, X2 = {1}, X3 = {2}, X4 = {3}, X5 = {4}",
Support for Z3 primarily available on Windows, but there is a Linux version of Z3. Z3 is released for non-commercial use under the “Microsoft Research License Agreement”. You can play with an on-line version of Z3 on RiSE4fun.
Marketing buzz...
by
Jérôme Radix
Z3 is a SMT solver...not a theorem prover
by
Francesco Bongiovanni
Re: Marketing buzz...
by
Faisal Waris
See: www.smtexec.org/exec/?jobs=311,684
I don't know much about Z3 or SMT but I am using Microsoft Solver Foundation which is a constraint programming and linear/quadratic programming tool.
Constraint programming problems can become large and intractable. Perhaps Z3 can handle some of these types of problems better. It will be good to know that.
Additionally, I think it will be useful to be able to express such problems in LINQ so we can substitute for Z3 or Solver Foundation (or any other such tool) without impacting application code much.
Re: Marketing buzz...
by
Roberto Carlos Gonzalez Flores
"Z3 is a high-performance theorem prover being developed at Microsoft Research. Z3 supports linear real and integer arithmetic, fixed-size bit-vectors, extensional arrays, uninterpreted functions, and quantifiers. Z3 is integrated with a number of program analysis, testing, and verification tools from Microsoft Research. These include: Spec#/Boogie, Pex, Yogi, Vigilante, SLAM, F7, SAGE, VS3, FORMULA, and HAVOC. It can read problems in SMT-LIB and Simplify formats."...
I haven't test this API, and I knew that a theorem is a lot more complex or it seems, because a theorem is a single solution to a problem under certain "controlled" circumnstances so it could be infered by an algorithm, I'm not saying that like it, I'm only saying "lets give it a try", and then we can talk, discuss, qualify, etc...
:)
Re: Marketing buzz...
by
Jonathan Allen
Jonathan Allen
jonathan@infoq.com
Educational Content
Intro to CLP with core.logic
Ryan Senior Jun 18, 2013
Spock: A Highly Logical Way To Test
Howard Lewis Ship Jun 18, 2013
Java Garbage Collection Distilled
Martin Thompson Jun 17, 2013
C++11 The Future is Here
Bjarne Stroustrup Jun 16, 2013
The Big Data Revolution
Claudia Perlich Jun 16, 2013




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think