Skip to content

twyair/verification-project

Repository files navigation

verification-project

building

npm run build

web interface

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"

1

editor

on the left there's a code editor where you can change the current function or write a new one

paths

when verification fails you can view the paths that made it fail by choosing a path from the dropdown list.

2

you'll get the proposition that failed, the path's reachability condition, its transformation relation and a counterexample

3

horn

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

4

testing

python3 test.py

TODO

  • 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

features

  • requires(prop)
  • ensures(prop)
  • assert(prop)
  • freeze(id, expr) :: declares a phantom variable id and stores expr in it
  • remember(prop) :: adds prop to all asserts following it
  • phantom(statement) :: surrounds a statement that's used only by the verifier (e.g. assigning to a phantom variable)
  • assume(prop) :: lets the verifier assume that prop holds in that point
  • then(expr, prop) :: implication
  • then(expr, prop1, prop2) :: if-then-else
  • forall(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)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published