Share on Facebook Tweet on Twitter Share on LinkedIn Share by email
Pentagons: A weakly relational domain for the efficient validation of array accesses

Francesco Logozzo and Manuel Fähndrich


We introduce Pentagons (Pentagons ), a weakly relational numerical abstract domain useful for the validation of array accesses in byte-code and intermediate languages (IL). This abstract domain captures properties of the form of x in [a, b] && x < y. It is more precise than the well known Interval domain, but it is less precise than the Octagon domain.

The goal of Pentagons is to be a lightweight numerical domain useful for adaptive static analysis, where Pentagons is used to quickly prove the safety of most array accesses, restricting the use of more precise (but also more expensive) domains to only a small fraction of the code.

We implemented the Pentagons abstract domain in Clousot, a generic abstract interpreter for .NET assemblies. Using it, we were able to validate 83% of array accesses in the core runtime library mscorlib.dll in less than 8 minutes.


Publication typeInproceedings
Published inProceedings of the 23th ACM Symposium on Applied Computing
PublisherAssociation for Computing Machinery, Inc.

Newer versions

Manuel Fahndrich and Francesco Logozzo. Static contract checking with Abstract Interpretation, Springer Verlag, October 2010.

Francesco Logozzo. Practical Specification and Verification with CodeContracts, ACM, November 2013.

Francesco Logozzo. Practical verification for the working programmer with CodeContracts and Abstract Interpretation - Invited Talk, Springer Verlag, January 2011.

Francesco Logozzo. Our Experience with the CodeContracts Static Checker, Springer, January 2012.

> Publications > Pentagons: A weakly relational domain for the efficient validation of array accesses