npm run build
run:
npm start
and go to http://127.0.0.1:5000/
you can click on any of the files listed under "benchmarks" or write a function yourself in the editor.
choose a benchmark from the drop down list below "benchmarks"
to verify it click on "verify"
to try to generate invariants using horn click on "verify w/ horn"
on the left there's a code editor where you can change the current function or write a new one
when verification fails you can view the paths that made it fail by choosing a path from the dropdown list.
you'll get the proposition that failed, the path's reachability condition, its transformation relation and a counterexample
when verify w/ horn
succeeds the invariants will be listed and their locations can be viewed in the editor by clicking on the corresponding locate
button
python3 test.py
- support
switch
- properly handle
for
- support explicit casts
- support implicit casts
- handle fixed size ints as bitvectors
- implement an
is_nan()
operator - make the parser work with float literals
- implement phantom variables
- implement
assume()
- implement a simple gui
- add source locations to the cfg
- implement a gui for horn (invariants synthesis)
- (horn) allow providing partial invariants
- (horn, gui) highlight cut points
requires(prop)
ensures(prop)
assert(prop)
freeze(id, expr)
:: declares a phantom variableid
and storesexpr
in itremember(prop)
:: addsprop
to allassert
s following itphantom(statement)
:: surrounds a statement that's used only by the verifier (e.g. assigning to a phantom variable)assume(prop)
:: lets the verifier assume thatprop
holds in that pointthen(expr, prop)
:: implicationthen(expr, prop1, prop2)
:: if-then-elseforall(id, range(expr1, expr2), prop)
:: universal quantifier (for a range of integers)exists(id, range(expr1, expr2), prop)
:: existential quantifier (for a range of integers)