Comments (4)
Floating-point constraints are usually translated first into bit-vectors and then into propositional SAT. Conversion terms from/to (non-numeral) reals translate into large non-linear constraints over the reals, which the (new, fast) purely propositional SAT solver can't handle, so it falls back to the (old, slow) SMT core that handles all theories, but is often slower. In the case of these non-linear constraints it's simply not strong enough and it either doesn't terminate or gives up early and returns unknown.
For numerals, we can get rid of those expressions altogether (and I've added another one of those in 59911f78), but for general constraints, there is no efficient method yet.
from z3.
Closing this issue as all questions are answered. There is no simple solution to the performance problems, so will require more research. Feel free to re-open if new information becomes available.
from z3.
Indeed, there isn't much point to keeping this ticket here.
I'll just note that most of the interesting floating-point verification work actually involves showing that certain operations will produce exact results. The typical approach is to take two floats, convert them to reals, do the operation with infinite precision, and turn the result back to a float using the rounding mode. Then, one shows that this result is precisely the same as just doing the corresponding operation directly on the floats without moving to reals and back. (This is the required behavior in the IEEE754 sense.)
I'd even say that this is the raison d'etre for why we want an automated floating-point logic in the first place.
Of course, none of this is criticism for Z3 or SMT. It's just that such problems are hard and more research is needed. But without proper real/float conversion support in solvers, the automation is inherently limited in its industrial use.
from z3.
You're completely right of course and we are aware of those problems. We have plans to extend the floating point reasoning in that direction, but that will take some time.
from z3.
Related Issues (20)
- [api bug?] Error("invalid argument") whenever no expr update
- ASSERT and python crashes HOT 3
- Performance regression on QF_NIA HOT 1
- Nested construction terms problem HOT 5
- z3 solver check call hangs when solver is created with smt tactic HOT 1
- Select one bit in BitVec
- C++23 compatibility HOT 1
- Undetermined value in Z3?
- Linux arm64 build is actually an x86_64 build HOT 3
- Last package available for Ubuntu via apt is 4.8.12 HOT 1
- Missing universes for uninterpreted sorts HOT 2
- 4.8.5 and 4.13.0 hang on example that works in 4.6.0 (linear constraints with int variables)
- ASSERTION VIOLATION, File: ../src/qe/qsat.cpp Line: 655
- Huge performance issue solved by tiny inlining
- unable to use z3-solver (typescript/javascript) due to import issues HOT 1
- SAT solver runtime changes depending on Z3 version HOT 1
- Incorrect results yet no errors reported (with Datatypes and contexts)
- 4.13.0 hangs on an example that works in 4.8.7 HOT 2
- Solving with regular constraints doesn't finish in unsat case
- Link to C++ and C API HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from z3.