A new abstraction framework for affine transformers

  • Tushar SharmaEmail author
  • Thomas Reps


This paper addresses the problem of abstracting a set of affine transformers \(\overrightarrow{v}' = \overrightarrow{v} \cdot C + \overrightarrow{d}\), where \(\overrightarrow{v}\) and \(\overrightarrow{v}'\) represent the pre-state and post-state, respectively. We introduce a framework to harness any base abstract domain \(\mathcal {B}\) in an abstract domain of affine transformations. Abstract domains are usually used to define constraints on the variables of a program. In this paper, however, abstract domain \(\mathcal {B}\) is re-purposed to constrain the elements of C and \(\overrightarrow{d}\)—thereby defining a set of affine transformers on program states. This framework facilitates intra- and interprocedural analyses to obtain function and loop summaries, as well as to prove program assertions.


Affine transformers Bit-vectors Program verification Abstract domains Abstract interpretation 


  1. 1.
    Chen L, Miné A, Wang J, Cousot P (2009) Interval polyhedra: an abstract domain to infer interval linear relationships. In: SASGoogle Scholar
  2. 2.
    Cousot P, Cousot R (1976) Static determination of dynamic properties of programs. In: Proceedings of the 2nd international symposium on programming, ParisGoogle Scholar
  3. 3.
    Cousot P, Cousot R (1977) Abstract interpretation: a unified lattice model for static analysis of programs by construction of approximation of fixed points. In: POPL, pp 238–252Google Scholar
  4. 4.
    Cousot P, Cousot R (1979) Systematic design of program analysis frameworks. In: POPLGoogle Scholar
  5. 5.
    Cousot P, Halbwachs N (1978) Automatic discovery of linear constraints among variables of a program. In: POPLGoogle Scholar
  6. 6.
    Elder M, Lim J, Sharma T, Andersen T, Reps T (2014) Abstract domains of affine relations. In: TOPLASGoogle Scholar
  7. 7.
    Gange G, Navas J, Schachte P, Søndergaard H, Stuckey P (2013) Abstract interpretation over non-lattice abstract domains. In: SASGoogle Scholar
  8. 8.
    Goubault E, Putot S, Védrine F (2012) Modular static analysis with zonotopes. In: CAVGoogle Scholar
  9. 9.
    Jeannet B, Gopan D, Reps T (2005) A relational abstraction for functions. In: SASGoogle Scholar
  10. 10.
    Jones N, Mycroft A (1986) Data flow analysis of applicative programs using minimal function graphs. In: POPL, pp 296–306Google Scholar
  11. 11.
    Kidd N, Lal A, Reps T (2007) WALi: the weighted automaton library.
  12. 12.
    King A, Søndergaard H (2010) Automatic abstraction for congruences. In: VMCAIGoogle Scholar
  13. 13.
    Knoop J, Steffen B (1992) The interprocedural coincidence theorem. In: CCGoogle Scholar
  14. 14.
    Lal A, Reps T, Balakrishnan G (2005) Extended weighted pushdown systems. In: CAVGoogle Scholar
  15. 15.
    Lattner C, Adve V (2004) LLVM: a compilation framework for lifelong program analysis and transformation. In: International symposium on code generation and optimizationGoogle Scholar
  16. 16.
    Lim J, Reps T (2008) A system for generating static analyzers for machine instructions. In: CCGoogle Scholar
  17. 17.
    Lim J, Reps T (2013) TSL: a system for generating abstract interpreters and its application to machine-code analysis. TOPLAS 35(1):841–847CrossRefGoogle Scholar
  18. 18.
    LLVM: Low level virtual machine. Llvm.orgGoogle Scholar
  19. 19.
    Malmkjær K (1993) Abstract interpretation of partial-evaluation algorithms. PhD thesis, Department of Computing and Information Sciences, Kansas State University, ManhattanGoogle Scholar
  20. 20.
    Miné A (2001) The octagon abstract domain. In: WCREGoogle Scholar
  21. 21.
    Miné A (2002) A few graph-based relational numerical abstract domains. In: SASGoogle Scholar
  22. 22.
    Müller-Olm M, Seidl H (2004) Precise interprocedural analysis through linear algebra. In: POPLGoogle Scholar
  23. 23.
    Müller-Olm M, Seidl H (2007) Analysis of modular arithmetic. TOPLAS 29(5):29CrossRefGoogle Scholar
  24. 24.
    Mycroft A, Jones N (1986) A relational framework for abstract interpretation. In: Programs as data objects. Springer, Berlin, Heidelberg. CrossRefGoogle Scholar
  25. 25.
    Nielson F (1989) Two-level semantics and abstract interpretation. Theor Comput Sci 69:117–242MathSciNetCrossRefGoogle Scholar
  26. 26.
    Reps T, Balakrishnan G, Lim J (2006) Intermediate-representation recovery from low-level code. In: Partial evaluation and semantics-based program manipulationGoogle Scholar
  27. 27.
    Reps T, Sagiv M, Yorsh G (2004) Symbolic implementation of the best transformer. In: VMCAIGoogle Scholar
  28. 28.
    Reps T, Schwoon S, Jha S, Melski D (2005) Weighted pushdown systems and their application to interprocedural dataflow analysis. SCP 58(1–2):206–263MathSciNetzbMATHGoogle Scholar
  29. 29.
    Sankaranarayanan S, Sipma H, Manna Z (2005) Scalable analysis of linear systems using mathematical programming. In: VMCAIGoogle Scholar
  30. 30.
    Schmidt D (1986) Denotational semantics. Allyn and Bacon Inc., BostonGoogle Scholar
  31. 31.
    Sen R, Srikant Y (2007) Executable analysis using abstract interpretation with circular linear progressions. In: MEMOCODEGoogle Scholar
  32. 32.
    Sharir M, Pnueli A (1981) Two approaches to interprocedural data flow analysis. In: Muchnick SS, Jones ND (eds) Program flow analysis: theory and applications. Prentice-Hall, Englewood Cliffs, NJGoogle Scholar
  33. 33.
    Sharma T, Reps T (2017) Sound bit-precise numerical domains. In: VMCAIGoogle Scholar
  34. 34.
    Simon A, King A (2007) Taming the wrapping of integer arithmetic. In: SASGoogle Scholar
  35. 35.
    Thakur A, Elder M, Reps T (2012) Bilateral algorithms for symbolic abstraction. In: SASGoogle Scholar
  36. 36.
    Warren H Jr (2003) Hacker’s delight. Addison-Wesley, ReadingGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC, part of Springer Nature 2018

Authors and Affiliations

  1. 1.University of WisconsinMadisonUSA
  2. 2.Synopsys Inc.San FranciscoUSA
  3. 3.GrammaTech, Inc.IthacaUSA

Personalised recommendations