Zustre is a modular SMT-based PDR-style verification engine for Lustre programs. It is also an engine to generate mode-aware assume-guarantee style formal contract.
##License## Zustre is distributed under a modified BSD license. See LICENSE for details.
- LustreC (Lustre compiler)
- SPACER (PDR engine)
- (Optional) Eldarica (Horn Clause solver)
- Python v. 2.7. (or up)
- Build separately LustreC
cd zustre ; mkdir build ; cd buildcmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=run -DLUSTREC_ROOT=LUSTREC_DIR ../whereLUSTREC_DIRis the directory containing LustreC. Note that you need to compile LustreC separately beforehand.cmake --build .to build zustrecmake --build . --target installto install everything inrundirectorycmake --build . --target packageto package everything.- (Optional) To use Eldarica just copy the eldarica binary under
build/run/bin
Zustre and dependencies are installed under build/run
- To simply verify Lustre code:
> ./build/run/bin/zustre [LUSTRE_FILE] --node [OBSERVER NODE (default: top)]
- To generate CoCoSpec contract of Lustre code:
> ./build/run/bin/zustre [LUSTRE_FILE] --cg --node [OBSERVER NODE (default: top)]
- To use Eldarica as the backend solver:
> ./build/run/bin/zustre --eldarica [LUSTRE_FILE] --node [OBSERVER NODE (default: top)]
-h, --helpshow this help message and exit--ppEnable default pre-processing--trace TRACETrace levels to enable--statPrint statistics--verboseVerbose--no-simpZ3 simplification--node NODESpecify top node (default:top)--cgGenerate modular contrats--smt2Directly encoded file in SMT2 Format--no-solvingGenerate only Horn clauses, i.e. do not solve--xmlOutput result in XML format--saveSave intermediate files--no-dlDisable Difference Logic (UTVPI) in SPACER--timeout TIMEOUTSet timeout for solving--eldaricaUse Eldarica as the backend solver
- Temesghen Kahsai (NASA Ames / CMU)
- Arie Gurfinkel (SEI / CMU)
