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.