Hacker News new | ask | show | jobs
by jaunkst 2694 days ago
Can I get a lam ns example of what z3 is and what it is?
2 comments

Found these links helpful:

https://en.m.wikipedia.org/wiki/Satisfiability_modulo_theori... https://github.com/Z3Prover/z3/wiki/Slides

Appears to be useful for static analysis and verification of a program.

Basically, it solves the problem of finding a setting of variables that is compatible with some set of constraints. This is NP-hard but Z3 is in practice very fast nonetheless.

A case study/glowing review from a programmer at Microsoft is here:

https://medium.com/@ahelwer/checking-firewall-equivalence-wi...

You could be a little more precise and say that it's NP-complete. :-)
That actually depends on the logic being used. Some of the logics supported by Z3 are not even decidable. In fact, even solving quantifier-free bit-vector formulas is NEXPTIME-complete [0] when using a binary encoding.

[0] http://smt2012.loria.fr/paper7.pdf

Thanks for the clarification!

What do Z3 and other SMT solvers do if you ask them about undecidable questions? Do they potentially run forever?