HeyVL
HeyVL is a verification language similar to Viper and Boogie. The main innovation is that it supports quantitative reasoning via its constructs inspired by Gรถdel logic. Refer to our publications for details on the theory.
A HeyVL file consists of a sequence of declarations: procedure and domain declarations.
๐๏ธ Procedures
Procedures are HeyVL's logical units of code.
๐๏ธ Statements
Statements are executed sequentially and may have side-effects.
๐๏ธ Expressions
HeyVL's expressions evaluate to a value in a state.
๐๏ธ Domains, Uninterpreted Functions, and Axioms
Domain blocks are used to create user-defined types and uninterpreted functions.
Use the source, Lukeโ
We do not formally describe the syntax of HeyVL in this documentation.
You can find a more formal definition in the src/front/parser/grammar.lalrpop
file that specifies the syntax used to generate Caesar's parser.
It is written in the LALRPOP language.
Examplesโ
The pgcl/examples-heyvl
directory contains the machine-translated HeyVL code for our pGCL examples.
Note that they are just sequences of HeyVL statements without wrapping procedure declarations.
Refer to the page on the pGCL frontend for more information.
Caesar's integration tests in tests/
can also serve as a reference.
Refer to the development guide for more information about these tests.