Inferring contracts by abstract interpretation with application to pointer nullness analysis
Abstract This paper proposes a semantic static analysis for inferring nullable or non-null pointer annotations in low level programs. The analysis is formulated on a minimalistic imperative language and it is expressed as a least fixpoint computation over pointer annotations calling a sound type-checking algorithm. Therefore, this analysis may be used for more general annotations than pointer nullability. We prove two main properties for this approach: (1) when using a sound and precise type-checker (i.e., without false alarms), it will find an annotation that guarantees the absence of run-time errors due to pointer deference, if such an annotation exists, (2) when the type-checker is only sound, the errors singled out by the analysis are real errors. We report on the implementation of this method in Codex , a static analyzer for C and binary code. Codex already provides an abstract interpretation based type-checker for a rich dependent type systems. The evaluation of our implementation on a benchmark of challenging programs shows that the inference is better than manual annotations obtained by code inspection.
Authors
- Mihaela Sighireanu (ORCID: https://orcid.org/0000-0002-1925-089X)
- Matthieu Lemerre (ORCID: https://orcid.org/0000-0002-1081-0467)
- Paul Robert
Institutions
- Commissariat à l'Énergie Atomique et aux Énergies Alternatives (FR)
- Université Paris-Saclay (FR)
- Laboratoire d'Intégration des Systèmes et des Technologies (FR)
Publication Details
- Journal
- International Journal on Software Tools for Technology Transfer
- Published
- 2026-03-16
- DOI
- https://doi.org/10.1007/s10009-026-00846-0
- Primary Topic
- Logic, programming, and type systems
- Type
- article
- Field-Weighted Citation Impact
- 0.00
Funders
- Université Paris-Saclay