An axiomatic basis for computer programming
Communications of the ACM
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Counterexample-Guided Abstraction Refinement
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
Modular verification of software components in C
Proceedings of the 25th International Conference on Software Engineering
Lifting abstract interpreters to quantified logical domains
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program verification using templates over predicate abstraction
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Abstraction Refinement for Quantified Array Assertions
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Invariant synthesis for combined theories
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
ACSAR: software model checking with transfinite refinement
Proceedings of the 14th international SPIN conference on Model checking software
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
SAS'05 Proceedings of the 12th international conference on Static Analysis
Hi-index | 0.00 |
We present an assume-guarantee method for the verification of quantified array assertions based on a program transformation. A quantified array assertion expresses a property over an array segment such as "all elements of an array are sorted". Given a program Pn annotated with assertion ϕn, our method rewrites Pn to either Pn-1; C or C; Pn-1 where C is a code fragment. The validity of the assertion is then proven by induction: assuming that ϕn-1 holds for Pn-1 and proving that ϕn holds for Pn. The program transformation allows to reduce the complexity of the code as well as the assertion to be verified. Experimental results on both text book and real life examples taken from system code show performance improvement compared to our previous approach for checking quantified assertions. Moreover, this new technique enables us to verify challenging programs which are not handled by our previous method and many exiting tools as well.