Skip to main content
Article thumbnail
Location of Repository

Abstract Domains of Affine Relations

By Matt Elder, Junghee Lim, Tushar Sharma, Tycho Anderson and Thomas Reps


This paper considers some known abstract domains for affine-relation analysis, along with several variants, and studies how they relate to each other. The various domains represent sets of points that satisfy affine relations over variables that hold machine integers, and are based on an extension of linear algebra to modules over a ring (in particular, arithmetic performed modulo 2^w, for some machine-integer width w). We show that the abstract domains of Mueller-Olm/Seidl (MOS) and King/Sondergaard (KS) are, in general, incomparable. However, we give sound interconversion methods. That is, we give an algorithm to convert a KS element v_KS to an over-approximating MOS element v_MOS -- i.e., gamma(v_KS) subseteq gamma(v_MOS) -- as well as an algorithm to convert an MOS element w_MOS to an over-approximating KS element w_KS -- i.e., gamma(w_MOS) subseteq gamma(w_KS). The paper provides insight on the range of options that one has for performing affine-relation analysis in a program analyzer. o We describe how to perform a greedy, operator-by-operator abstraction method to obtain KS abstract transformers. o We also describe a more global approach to obtaining KS abstract transformers that considers the semantics of an entire instruction, basic block or other loop-free program fragment. The latter method can yield best abstract transformers, and hence can be more precise than the former method. However, the latter method is more expensive. We also explain how to use the KS domain for interprocedural program analysis using a bit-precise concrete semantics, but without bit-blasting

Topics: Howell form, modular arithmetic, symbolic abstraction, ane relation, abstract interpretation, abstract domain, static analysis
Publisher: University of Wisconsin-Madison Department of Computer Sciences
Year: 2013
DOI identifier: 10.1007/978-3-642-23702-7_17
OAI identifier:

Suggested articles


  1. (2003). A generic approach to the static analysis of concurrent programs with procedures.
  2. (2012). A method for symbolic computation of abstract operations.
  3. (1985). A relational framework for abstract interpretation.
  4. (2008). A system for generating static analyzers for machine instructions.
  5. (2011). Abstract domains of ane relations.
  6. (2000). Algorithms for matrix canonical forms.
  7. (2007). Analysis of modular arithmetic.
  8. (1976). Ane relationship among variables of a program.
  9. (1991). Asymptotically fast triangularization of matrices over rings.
  10. (2010). Automatic abstraction for congruences.
  11. (1978). Automatic discovery of linear constraints among variables of a program.
  12. (2012). Bilateral algorithms for symbolic abstraction.
  13. (1986). Data ow analysis of applicative programs using minimal function graphs.
  14. (1986). Denotational Semantics.
  15. (2003). Discovering ane equalities using random interpretation.
  16. (2005). Extended weighted pushdown systems.
  17. (2003). Hacker's Delight. Addison-Wesley. 53A. DUALIZATION For any matrix M, it is a common lemma that
  18. (2006). Improving pushdown system model checking. In CAV.
  19. (2008). Inferring congruence equations with SAT.
  20. (1992). Linear algebra modulo n. Unpublished
  21. (2000). Matrix Analysis and Applied Linear Algebra.
  22. (2004). Precise interprocedural analysis through linear algebra.
  23. (2005). Precise interprocedural analysis using random interpretation.
  24. (1986). Spans in the module (Zm)s. Linear and Multilinear Algebra 19.
  25. (1989). Static analysis of arithmetic congruences.
  26. (2004). Symbolic implementation of the best transformer.
  27. (1979). Systematic design of program analysis frameworks.
  28. (1992). The interprocedural coincidence theorem.
  29. (2013). TSL: A system for generating abstract interpreters and its application to machine-code analysis.
  30. (1981). Two approaches to interprocedural data ow analysis. In Program Flow Analysis: Theory and Applications.
  31. (1989). Two-level semantics and abstract interpretation.
  32. (2007). WALi: The Weighted Automaton Library.
  33. (2005). Weighted pushdown systems and their application to interprocedural data ow analysis.

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.