A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer
Reuse of Proofs in Software Verification
Proceedings of the 13th Conference on Foundations of Software Technology and Theoretical Computer Science
Proof Reuse for Deductive Program Verification
SEFM '04 Proceedings of the Software Engineering and Formal Methods, Second International Conference
Verification of object-oriented software: The KeY approach
Verification of object-oriented software: The KeY approach
Delta-oriented programming of software product lines
SPLC'10 Proceedings of the 14th international conference on Software product lines: going beyond
Verification of software product lines with delta-oriented slicing
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
A transformational proof system for delta-oriented programming
Proceedings of the 16th International Software Product Line Conference - Volume 2
A liskov principle for delta-oriented programming
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Tracking behavioral constraints during object-oriented software evolution
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Hi-index | 0.00 |
A major obstacle facing adoption of formal software verification is the difficulty to track changes in the target code and to accomodate them in specifications and in verification arguments. We introduce abstract method calls, a new verification rule for method calls that can be used in most contract-based verification settings. By combining abstract method calls, structured reuse in specification contracts, and caching of verification conditions, it is possible to detect reusability of contracts automatically via first-order reasoning. This is the basis for a verification framework that is able to deal with code undergoing frequent changes.