Abstract
In this paper we generalise the notion of extensional (functional) equivalence of programs to abstract equivalences induced by abstract interpretations. The standard notion of extensional equivalence is recovered as the special case, induced by the concrete interpretation. Some properties of the extensional equivalence, such as the one spelled out in Rice’s theorem, lift to the abstract equivalences in suitably generalised forms. On the other hand, the generalised framework gives rise to interesting and important new properties, and allows refined, non-extensional analyses. In particular, since programs turn out to be extensionally equivalent if and only if they are equivalent just for the concrete interpretation, it follows that any non-trivial abstract interpretation uncovers some intensional aspect of programs. This striking result is also effective, in the sense that it allows constructing, for any non-trivial abstraction, a pair of programs that are extensionally equivalent, but have different abstract semantics. The construction is based on the fact that abstract interpretations are always sound, but that they can be made incomplete through suitable code transformations. To construct these transformations, we introduce a novel technique for building incompleteness cliques of extensionally equivalent yet abstractly distinguishable programs: They are built together with abstract interpretations that produce false alarms. While programs are forced into incompleteness cliques using both control-flow and data-flow transformations, the main result follows from limitations of data-flow transformations with respect to control-flow ones. A further consequence is that the class of incomplete programs for a non-trivial abstraction is Turing complete. The obtained results also shed a new light on the relation between the techniques of code obfuscation and the precision in program analysis.
Supplemental Material
- S. Abramsky. 2014. Intensionality, Definability and Computation. In Johan van Benthem on Logic and Information Dynamics, A. Baltag and S. Smets (Eds.). Springer, 121–142. Google Scholar
Cross Ref
- A. Asperti. 2008. The intensional content of Rice’s theorem. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2008, G. C. Necula and P. Wadler (Eds.). ACM, 113–119. Google Scholar
Digital Library
- B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S.P. Vadhan, and K. Yang. 2012. On the (im)possibility of obfuscating programs. Journal of the ACM 59, 2 (2012), 6. Google Scholar
Digital Library
- A. M. Ben-Amram and N. D. Jones. 2000. Computational complexity via programming languages: constant factors do matter. Acta Inf. 37, 2 (2000), 83–120. Google Scholar
Digital Library
- R. Bruni, R. Giacobazzi, and R. Gori. 2018. Code obfuscation against abstraction refinement attacks. Formal Asp. Comput. 30, 6 (2018), 685–711. Google Scholar
Cross Ref
- C. Collberg and J. Nagra. 2009. Surreptitious Software: Obfuscation, Watermarking, and Tamperproofing for Software Protection. Addison-Wesley Professional.Google Scholar
Digital Library
- C. Collberg, C. D. Thomborson, and D. Low. 1998. Manufactoring Cheap, Resilient, and Stealthy Opaque Constructs. In Proc. of Conf. Record of the 25st ACM Symp. on Principles of Programming Languages (POPL ’98). ACM Press, 184–196. Google Scholar
Digital Library
- P. Cousot and R. Cousot. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proc. of the 4th ACM Symp. on Principles of Programming Languages (POPL ’77). ACM Press, 238–252. Google Scholar
Digital Library
- P. Cousot and R. Cousot. 1979. Systematic design of program analysis frameworks. In Conference Record of the 6th ACM Symposium on Principles of Programming Languages (POPL ’79). ACM Press, 269–282. Google Scholar
Digital Library
- P. Cousot and R. Cousot. 2014. Abstract interpretation: past, present and future. In Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS), CSL-LICS ’14, 2014, T. A. Henzinger and D. Miller (Eds.). ACM, 2:1–2:10. Google Scholar
Digital Library
- P. Cousot, R. Giacobazzi, and F. Ranzato. 2018. Program Analysis Is Harder Than Verification: A Computability Perspective. In Computer Aided Verification - 30th International Conference, CAV 2018, Part of the Federated Logic Conference, FloC 2018, Oxford, UK, July 14-17, 2018, Proceedings, Part II (Lecture Notes in Computer Science), H. Chockler and G. Weissenbacher (Eds.), Vol. 10982. Springer, 75–95. Google Scholar
Cross Ref
- U. Dal Lago. 2011. A Short Introduction to Implicit Computational Complexity. In Lectures on Logic and Computation -ESSLLI 2010 and ESSLLI 2011, Selected Lecture Notes (Lecture Notes in Computer Science), N. Bezhanishvili and V. Goranko (Eds.), Vol. 7388. Springer, 89–109. Google Scholar
Digital Library
- M. Dalla Preda and R. Giacobazzi. 2009. Semantics-based code obfuscation by abstract interpretation. Journal of Computer Security 17, 6 (2009), 855–908. Google Scholar
Digital Library
- S. Drape, C. Thomborson, and A. Majumdar. 2007. Specifying Imperative Data Obfuscations. In ISC - Information Security (Lecture Notes in Computer Science), J. A. Garay, et al. (Eds.), Vol. 4779. Springer Verlag, 299 – 314. Google Scholar
Cross Ref
- Y. Futamura. 1999. Partial Evaluation of Computation Process–An Approach to a Compiler-Compiler. Higher-Order and Symbolic Computation 12, 4 (1999), 381–391. Google Scholar
Digital Library
- R. Giacobazzi. 2008. Hiding Information in Completeness Holes - New perspectives in code obfuscation and watermarking. In Proc. of the 6th IEEE Int. Conferences on Software Engineering and Formal Methods (SEFM ’08). IEEE Press, 7–20. Google Scholar
Digital Library
- R. Giacobazzi, N. D. Jones, and I. Mastroeni. 2012. Obfuscation by Partial Evaluation of Distorted Interpreters. In Proc. of the ACM SIGPLAN Symp. on Partial Evaluation and Semantics-Based Program Manipulation (PEPM’12). ACM Press, 63–72. Google Scholar
Digital Library
- R. Giacobazzi, F. Logozzo, and F. Ranzato. 2015. Analyzing Program Analyses. In Proc. of the 42nd ACM Symp. on Principles of Programming Languages (POPL ’15). ACM Press, 261–273. Google Scholar
Digital Library
- R. Giacobazzi and I. Mastroeni. 2012. Making Abstract Interpretation Incomplete: Modeling the Potency of Obfuscation. In Static Analysis - 19th International Symposium, SAS, 2012. Proc. (Lecture Notes in Computer Science), A. Miné and D. Schmidt (Eds.), Vol. 7460. Springer, 129–145. Google Scholar
Digital Library
- R. Giacobazzi and I. Mastroeni. 2016. Making abstract models complete. Mathematical Structures in Computer Science 26, 4 (2016), 658–701. Google Scholar
Cross Ref
- R. Giacobazzi, F. Ranzato, and F. Scozzari. 2000. Making Abstract Interpretations Complete. Journal of the ACM 47, 2 (March 2000), 361–416. Google Scholar
Digital Library
- N. D. Jones. 2004. Transformation by interpreter specialisation. Science of Computer Programming 52, 17(1) (2004), 307–339. Google Scholar
Digital Library
- G. A. Kavvos. 2017. On the Semantics of Intensionality. In Foundations of Software Science and Computation Structures - 20th International Conference, FOSSACS 2017, Proceedings (Lecture Notes in Computer Science), J. Esparza and A. S. Murawski (Eds.), Vol. 10203. 550–566. Google Scholar
Digital Library
- V. Laviron and F. Logozzo. 2009. Refining Abstract Interpretation-Based Static Analyses with Hints. In Proc. of APLAS’09 (Lecture Notes in Computer Science), Vol. 5904. Springer-Verlag, 343–358. Google Scholar
Digital Library
- A. Majumdar, C. D. Thomborson, and S. Drape. 2006. A Survey of Control-Flow Obfuscations. In Information Systems Security, Second International Conference, ICISS 2006, Kolkata, India, December 19-21, 2006, Proceedings (Lecture Notes in Computer Science), A. Bagchi and V. Atluri (Eds.), Vol. 4332. Springer, 353–356. Google Scholar
Digital Library
- N. Partush and E. Yahav. 2013. Abstract Semantic Differencing for Numerical Programs. In Static Analysis - 20th International Symposium, SAS 2013. Proceedings (Lecture Notes in Computer Science), F. Logozzo and M. Fähndrich (Eds.), Vol. 7935. Springer, 238–258. Google Scholar
Cross Ref
- H.G. Rice. 1953. Classes of Recursively Enumerable Sets and Their Decision Problems. Trans. Amer. Math. Soc. 74 (1953), 358–366. Google Scholar
Cross Ref
- H. Rogers. 1992. Theory of recursive functions and effective computability. The MIT press.Google Scholar
Digital Library
- A. Venet. 1996. Abstract Cofibered Domains: Application to the Alias Analysis of Untyped Programs. In Static Analysis, Third International Symposium, SAS’96, Aachen, Germany, September 24-26, 1996, Proceedings (Lecture Notes in Computer Science), R. Cousot and D. A. Schmidt (Eds.), Vol. 1145. Springer, 366–382. Google Scholar
Cross Ref
- G. Winskel. 1993. The formal semantics of programming languages: an introduction. MIT press.Google Scholar
Digital Library
Index Terms
Abstract extensionality: on the properties of incomplete abstract interpretations
Recommendations
Abstract interpretation of resolution-based semantics
We extend the abstract interpretation point of view on context-free grammars by Cousot and Cousot to resolution-based logic programs and proof systems. Starting from a transition-based small-step operational semantics of Prolog programs (akin to the ...
On the power of abstract interpretation
Increasingly sophisticated applications of static analysis make it important to precisely characterize the power of static analysis techniques. Sekar et al. recently studied the power of strictness analysis techniques and showed that strictness analysis ...
Goal-directed weakening of abstract interpretation results
One proposal for automatic construction of proofs about programs is to combine Hoare logic and abstract interpretation. Constructing proofs is in Hoare logic. Discovering programs' invariants is done by abstract interpreters.
One problem of this ...






Comments