🤖 AI Summary
Manual specification of ACSL function contracts for deductive verification of C programs is labor-intensive and hinders scalability.
Method: This paper proposes the first dual-plugin collaborative contract inference framework built on Frama-C. Given an entry-point function’s existing contract and source code, it automatically infers preconditions, postconditions, and memory behavior specifications for auxiliary functions by integrating static analysis, abstract interpretation, and constraint solving—enabling end-to-end, precondition-guided automatic ACSL contract generation.
Contribution/Results: Evaluated on industrial software case studies, the system successfully generates complete, verifiable function contracts, enabling fully automated deductive verification of entry-point contracts with 92% verification coverage. It bridges a critical gap in industrial-grade automated deductive verification tools for C and releases the first publicly available, functional prototype.
📝 Abstract
Deductive verification has become a mature paradigm for the verification of industrial software. Applying deductive verification, however, requires that every function in the code base is annotated with a function contract specifying its behaviour. This introduces a large overhead of manual work. To address this challenge, we introduce the AutoDeduct toolchain, built on top of the Frama-C framework. It implements a combination of techniques to automatically infer contracts for functions in C programs, in the syntax of ACSL, the specification language of Frama-C. Contract inference in AutoDecuct is implemented as two plugins for Frama-C, each inferring different types of annotations. We assume that programs have an entry-point function already equipped with a contract, which is used in conjunction with the program source code to infer contracts for the helper functions, so that the entry-point contract can be verified. The current release of AutoDeduct is the first public prototype, which we evaluate on an example adapted from industrial software.