galoisinc / reopt-vcg Goto Github PK
View Code? Open in Web Editor NEWA translation verifier for Reopt (https://github.com/GaloisInc/reopt)
A translation verifier for Reopt (https://github.com/GaloisInc/reopt)
Update build instructions, mention tests, etc
The LLVM decoder doesn't currently export the expected width of immediates and memory locations, only the number of bytes. In particular, we need to extend immediates to a larger size, but we don't know whether to sign extend or zero extend.
With memory locations we currently use whatever width the semantics pattern wants, but this means that e.g. a 32 bit move to a 64 bit memory address will be executed as (depending on order of the one_of argument to the pattern) an 8 bit store, truncating the immediate.
Currently the Backend type includes all operations, which makes it harder to reuse parts for e.g. the vcg vs symbolic. Splitting these out would enable reuse
It currently looks like pressing Ctrl-C will frequently cause CVC4 to abort, but keep reopt-vcg running. It would be useful to be able to reliably abort reopt-vc with canceling via Ctrl-C.
The definition of bitvec.of_nat uses pow, which isn't a VM override. Better would be using e.g. shiftl, but this would involve updating the proofs.
Currently we assert that the return address, stored at the top of the stack, is the value of the IP after a return, but we don't assert that the RA value is unchanged by blocks which do not return. Thus, a block which mutates the RA slot and then branches to a block which returns will pass verification.
reopt-vcg
currently fails to generate verification conditions when a function takes an argument of type <8 x double>
(it currently we only handle 64-bit values as arguments).
Based on my (somewhat limited given the duration of this project) experiences, the following top level directories seem likely to no longer be of use going forward:
concrete-vcg/
lean/
old-lean4/
test-programs/
I think it would be useful to remove these and move the contents of lean4
into the root of the repository.
When running reopt-vcg /absolute/path/to/executable.ann
, I got a file does not exist
error.
It works with relative path to the same file, so likely a problem in the handling of absolute paths.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.