Comments (6)
Didn't have time to look at the files yet, since I'm currently very busy. I'll have a look and let you know soon.
from boolector.
Interesting. If you have benchmarks that exhibit this behaviour (push/pop slower than recreating solver instance) can you please share?
from boolector.
@SylvainCecchetto A few questions:
- How did you generate these files?
- Are the values that you assert in each context the values returned by
get-value
? - What is the time if you always restart Boolector?
If 2. is yes:
In the first run you always exclude the current model value of the variable queried via get-value
.
In the second run you exclude some value, but not the model value queried via get-value
.
from boolector.
Hi @mpreiner and thank you for taking a look at that.
-
Those files are generated with a tool that I currently code during my PhD. This tool need to makes some symbolic execution of a binary code. First we have to "translate" x86 instructions to an equivalent semantic (here SMTLIB), then from the SMTLIB formula I ask some queries to the solver in order to get informations about the system state (CPU registers values and memory cells values).
-
Yes this exactly what I do (maybe there is a smarter method to do that ?) What I want is to know if a variable can only get specifics values while the formula is SAT. This what I achieve:
- Me: "Boolector, give me a SAT value of ESP_exit" (
(get-value ESP_exit)
) - Boolector: "ESP_exit can take the value 0x12345678 while maintaining the formula SAT
- Me: "Ok, is ESP_exit can take another value" (
(assert ESP_exit != 0x12345678)
and(get-value ESP_exit)
) - Boolector: "ESP_exit can take the value 0x87654321 while maintaining the formula SAT"
- Me: "Ok, is ESP_exit can take another value" (
(assert ESP_exit != 0x87654321)
and(get-value ESP_exit)
) - Boolector: "
UNSAT
"
- Me: "Boolector, give me a SAT value of ESP_exit" (
So I can conclude that ESP_exit can only take the values 0x12345678 and 0x87654321
Do you think that I can ask the same "question" to Boolector in only one query with the "maximum number of values to compute" paramter?
- I do not have the exact execution time now for this experience but this actually what I do now: For each variable that I want the value(s) I kill Boolector, restart-it, and resend the complete formula. This is why I made this feature request (#32) in order to avoid the kill / restart steps of the processus.
Sorry but I don't really understand the last part of your comment :-/
from boolector.
@SylvainCecchetto Sorry for the delay. I totally forgot about this issue...
Do you see this behavior in more examples? I need to further look into this issue since it seems that the solving time does not really increase, but Boolector reports more time spent on generating the model.
from boolector.
Sorry but I do not have more examples ATM.
I do not use the push
/pop
commands anymore, instead I reopen an instance of Boolector for each query and the total execution time is better.
from boolector.
Related Issues (20)
- New release? HOT 2
- Incorrect handling of SMT-LIB double-quote escape sequence in strings HOT 1
- PyBoolector-3.2.2.20210617.2.tar.gz Missing CMakeLists.txt HOT 2
- Error while install pyboolector 3.2.2 HOT 13
- Support for finite-domain SMTLIB2 `declare-datatypes` HOT 1
- Test failures on aarch64 linux HOT 3
- Cannot install PyBoolector using Python 3.10 HOT 2
- PyBoolector not working on ARM64 M1 MAC ? HOT 5
- Not able to found how to get different solution after every boolector_sat under same assertions HOT 1
- PyBoolector install via PIP fails on x86_64 MacOS HOT 10
- Lookup Table HOT 1
- Assertion with zero and propagation engine HOT 5
- Is there any Distribution Constraint sv equivalent in boolector?
- Printing of Constant Arrays
- 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
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.