Comments (4)
I have studied a little bit what Boogie supports when it comes to types, and here is one simple example of how to maybe define our memory model in this case:
type ptr = bv64;
type bvtype t;
const unique type32 : bvtype bv32;
const unique type8 : bvtype bv8;
procedure main()
{
var M: <t>[ptr, bvtype t] t;
M[0bv64, type32] := 10bv32;
M[1bv64, type8] := 20bv8;
assert M[0bv64, type32] == 10bv32;
assert M[1bv64, type8] == 20bv8;
return;
}
from smack.
I guess we should close this one now that bit-vectors are implemented.
from smack.
Hi guys,
There is obviously a scalability issue of SMACK when it is applied on DeviceDriver64 category of SVCOMP benchmarks that requires reasoning about bit-vectors. I think it would be good to improve our support for bit-vectors in order to fix this issue.
I manually inspected some benchmarks[1] and it seems that the number of variables requiring bit-vectors is limited (mainly flags[2]). So I think maybe a dependence analysis could allow us to use bit-vector on these variables while model others as integers though interprocedural support and pointer aliasing could be a big problem. Moreover, Akash's paper, Powering the Static Driver Verifier using Corral also provides a very reasonable solution. I remember you have tried it while it might not work well.
Please let me know your thoughts.
Thanks,
Shaobo
from smack.
This issue (support for bit-vectors) is certainly closed since SMACK supports bit-vectors now.
Improving the scalability of bit-vector support is a separate issue: #149.
from smack.
Related Issues (20)
- Feature request: Attempt to compute loop bounds. Unroll to bound if possible. Error if not. HOT 1
- Heads up: renaming master branch into main HOT 1
- Implement a per-allocation-site memory-safety checking
- Running example with SMACK
- Multi-language model checking, on inequality modify languages to match correct model?
- Verifying Fortran Intrinsic Function ABS
- Handling thread_local variables HOT 9
- Some Rust `Box` operation is internally supported by rustc HOT 1
- Leverage `instcombine` pass
- Generalize `clang-options` into `compiler-options` HOT 1
- Upgrade Rust version to support edition 2021
- Verifying D programs
- Debug information when using LLVM IR as an input HOT 2
- How it can support ensures, requires, invariant API in Rust
- llvm2bpl report error when use smack generate boogie code
- Build issue on Ubuntu 18.04
- Unhandled LLVM intrinsic generated from math.c HOT 1
- Unhandled experimental intrinsics crash SMACK
- All programs verify when SMT solver (Z3) is not present HOT 1
- Advanced SMACK guide
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 smack.