A Quick Tour of the VeriFast Program Verifier
This paper describes the main features of VeriFast, a sound and modular program verifier for C and Java. VeriFast takes as input a number of source files annotated with method contracts written in separation logic, inductive data type and fixpoint definitions, lemma functions and proof steps. The verifier checks that (1) the program does not perform illegal operations such as dividing by zero or illegal memory accesses and (2) that the assumptions described in method contracts hold in each execution.
Although VeriFast supports specifying and verifying deep data structure properties, it provides an interactive verification experience as verification times are consistently low and errors can be diagnosed using its symbolic debugger. VeriFast and a large number of example programs are available online at: http://www.cs.kuleuven.be/~bartj/verifast
KeywordsSymbolic Execution Struct Node Separation Logic Program Verifier Method Contract
Unable to display preview. Download preview PDF.
- 2.Reynolds, J.C.: Separation logic: A logic for shared mutable data structures. In: Symposium on Logic in Computer Science (2002)Google Scholar
- 3.Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12 (1969)Google Scholar
- 5.Calcagno, C., Distefano, D., O’Hearn, P.W., Yang, H.: Compositional shape analysis by means of bi-abduction. In: POPL (2009)Google Scholar
- 6.Distefano, D., Parkinson, M.: jStar: Towards practical verification for Java. In: OOPSLA (2008)Google Scholar
- 7.Nanevski, A., Morrisett, G., Shinnar, A., Govereau, P., Birkedal, L.: Ynot: Reasoning with the awkward squad. In: ICFP (2008)Google Scholar