Abstract
Contracts are a simple yet very powerful form of specification. They consists of method preconditions and post-conditions, of object invariants, and of assertions and loop invariants. Ideally, the programmer will annotate all of her code with contracts which are mechanically checked by some static analysis tool. In practice, programmers only write few contracts, mainly preconditions and some object invariants. The reason for that is that other contracts are "clear from the code": Programmers do not like to repeat themselves. As a consequence, any usable static verification tool should provide some form of contract inference.
- M. Bouaziz, L. Logozzo, and M. Fähndrich. Inference of necessary field conditions with abstract interpretation. In APLAS, 2012.Google Scholar
Cross Ref
- P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL'77. ACM Press, Jan. 1977. Google Scholar
Digital Library
- P. Cousot, R. Cousot, M. Fähndrich, and F. Logozzo. Automatic inference of necessary preconditions. In VMCAI, pages 128--148, 2013.Google Scholar
Digital Library
- P. Cousot, R. Cousot, and F. Logozzo. Contract precondition inference from intermittent assertions on collections. In VMCAI'11, 2011. Google Scholar
Digital Library
- P. Cousot, R. Cousot, and F. Logozzo. A parametric segmentation functor for fully automatic and scalable array content analysis. In Proceeding of the 38th ACM Symposium on Principles of Programming Languages (POPL 2011). ACM Press, Jan. 2011. Google Scholar
Digital Library
- V. Laviron and F. Logozzo. Subpolyhedra: A (more) scalable approach to infer linear inequalities. In VMCAI '09, 2009. Google Scholar
Digital Library
- F. Logozzo. Modular static analysis of object-oriented languages. Thèse de doctorat en informatique, École poly technique, 2004.Google Scholar
- F. Logozzo. Class invariants as abstract interpretation of trace semantics. Computer Languages, Systems & Structures, 35(2):100--142, 2009. Google Scholar
Digital Library
Index Terms
Technology for inferring contracts from code
Recommendations
Technology for inferring contracts from code
HILT '13: Proceedings of the 2013 ACM SIGAda annual conference on High integrity language technologyContracts are a simple yet very powerful form of specification. They consists of method preconditions and post-conditions, of object invariants, and of assertions and loop invariants. Ideally, the programmer will annotate all of her code with contracts ...
Modular inference of subprogram contracts for safety checking
Contracts expressed by logic formulas allow one to formally specify expected behavior of programs. But writing such specifications manually takes a significant amount of work, in particular for uninteresting contracts which only aim at avoiding run-time ...
Stateful manifest contracts
POPL '17: Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming LanguagesThis paper studies hybrid contract verification for an imperative higher-order language based on a so-called manifest contract system. In manifest contract systems, contracts are part of static types and contract verification is hybrid in the sense that ...







Comments