Comments (5)
I'm not sure I understand what the issue is? Can you please elaborate.
from boolector.
with PROP Engine ON, Incremental Mode On,
(x>=1 && x<=10) provides different possible value of x (e.g. 1,9,8,6,...) everytime boolector_sat is executed.
But for
(x>=0 && x<=10) provides only x=0 for every time boolector_sat is executed. (e.g. 0,0,0,0,0,...)
Not just this one, problem lies with every constraint where x=0 is a possible solution. It doesn't propagate if x=0 is a possible solution.
As you can see in above table, x>=0 equivalent btor file is just zero, it should have been something like
1 var 32 x
2 zero 32
3 ult 1 1 2
4 root 1 -3
from boolector.
Just to be clear: the prop engine is a local search engine, which can be randomized via the BTOR_OPT_SEED
option. It is not guaranteed that it will always produce different model values for subsequent boolector_sat
calls. If you want Boolector to provide different model values, you have to explicitly block these model values with new constraints. It is just coincidence that in your case it will return different values.
Your example code for (x >= 1 && x <= 10) produces the following for me:
i: 0 sat x: 15
i: 1 sat x: 15
i: 2 sat x: 15
i: 3 sat x: 15
i: 4 sat x: 15
i: 5 sat x: 5
i: 6 sat x: 15
i: 7 sat x: 15
i: 8 sat x: 15
i: 9 sat x: 15
Using a different random seed it will produce:
i: 0 sat x: 15
i: 1 sat x: 7
i: 2 sat x: 15
i: 3 sat x: 15
i: 4 sat x: 15
i: 5 sat x: 5
i: 6 sat x: 15
i: 7 sat x: 15
i: 8 sat x: 8
i: 9 sat x: 15
For the x >= 0
case it always returns 0 since this is the first value the local search engine tries and succeeds.
As you can see in above table, x>=0 equivalent btor file is just zero, it should have been something like
1 var 32 x
2 zero 32
3 ult 1 1 2
4 root 1 -3
When Boolector prints
1 zero 1
2 root 1 -1
just means that Boolector's preprocessor+rewriting was able to simplify the formula to true
. This has nothing to do with the propagation engine.
from boolector.
Got it, Thanks
from boolector.
@mpreiner @gsingla21 Sorry for bothering you. I want to know is there a way to change the first value the local search engine tries and succeeds ?
from boolector.
Related Issues (20)
- Linker error when building boolector from source HOT 2
- windows10 install pyboolector failed HOT 1
- ./configure.sh problem HOT 2
- install pyboolector failed on python 3.11 macos
- Stuck rewriting in rewrite_eq_exp
- Installing pyboolector fails for python 3.11.3 on Linux (Arch) HOT 2
- install error on macos 13.4.1
- Hello, how do I install Boolector and cryptominisat offline? HOT 1
- Make error while running btor2tools HOT 15
- How to install pyboolector for pypy HOT 1
- Tests fail to compile: error: no member named 'make_unique' in namespace 'std', etc. HOT 1
- FileNotFoundError when installing on windows
- BtorMC --kind not converging
- Wrong path for libbtor2parser.a in reach's Makefile HOT 1
- Difference of boolector_not and boolector_neg? HOT 1
- PyBoolector metadata version mismatch causing install failure HOT 4
- Tests fail to build: error: C++ versions less than C++14 are not supported HOT 3
- The test 'bv' doesn't finish in 8 mins
- configure python support with a non-global python version HOT 1
- make failing for Python API with Python version 3.11.8
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 boolector.