This repository assembles the core technologies that make up the VERSE TA1 toolchain and packages them into IDE and CI/CD integrations.
This is a companion to the VERSE Open SUT repository for TA2.
The VERSE toolchain brings together core technologies from EPFL, the University of Cambridge, the University of Illinois at Urbana-Champaign, the University of Maryland, the University of Massachusetts Amherst, and the University of Pennsylvania.
Developers write inline specifications alongside their C code using the CN specification language. Additionally, CN's automated verification backend attempts to automatically prove specifications.
[ Homepage, paper, GitHub, manual ]
Runtime spec testing is made up of two parts:
- Synthesizing test input from specifications, a form of property-based testing (PBT).
- Transliterating CN specifications into C runtime tests that check whether the spec holds for a specific program execution.
TBD: Links and details as these projects progress.
See Tyche and QuickChick (manual, GitHub) for inspiration.
CN provides an escape hatch to Roq (formerly Coq) to provide manual proofs of properties that cannot be automatically verified.
- Proof synthesis attempts to automatically discharge these proof obligations.
- Proof repair attempts to automatically fix existing proofs if the code associated with them changes.
- Proof visualization assists the manual proof effort by tracking and visualizing complex C memory states and other proof details.
TBD: Links to project pages, more details as we discover them.
To be filled in as the toolchain is developed.
You need (1) git
and (2) docker
(or a comparable alternative such as colima
).
In the root directory invoke make
.
- Review the code of conduct and developer guidelines.
- Check out the reading list.
- Get some experience running CN on simple examples.