Abstract
In program analysis by abstract interpretation, backward-completeness represents no loss of precision between the result of the analysis and the abstraction of the concrete execution, while forward-completeness stands for no imprecision between the concretization of the analysis result and the concrete execution. Program analyzers satisfying one of the two properties (or both) are considered precise. Regrettably, as for all approximation methods, the presence of false-alarms is most of the time unavoidable and therefore we need to deal somehow with incompleteness of both. To this end, a new property called partial completeness has recently been formalized as a relaxation of backward-completeness allowing a limited amount of imprecision measured by quasi-metrics. However, the use of quasi-metrics enforces distance functions to adhere precisely the abstract domain ordering, thus not suitable to be used to weaken the forward-completeness property which considers also abstract domains that are not necessarily based on Galois Connections. In this paper, we formalize a weaker form of quasi-metric, called pre-metric, which can be defined on all domains equipped with a pre-order relation. We show how this newly defined notion of pre-metric allows us to derive other pre-metrics on other domains by exploiting the concretization and, when available, the abstraction maps, according to the information and the corresponding level of approximation that we want to measure. Finally, by exploiting pre-metrics as our imprecision meter, we introduce the partial forward/backward-completeness properties.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
The term “forward-completeness” was introduced in [32] in order to distinguish it from the well known backward-completeness property requiring an abstraction function.
- 2.
- 3.
- 4.
We assume the following results when the \(\infty \) symbol is involved: \(Av(k - \infty ) = Av(\infty - k) = \infty \) with \(k \in \mathbb {R}\), while \(\infty - \infty = 0\).
- 5.
Interproc is freely available at http://pop-art.inrialpes.fr/interproc/interprocweb.cgi.
- 6.
For the convex polyhedra analysis, we activated the option of 2 descending steps.
References
http://pop-art.inrialpes.fr/people/bjeannet/bjeannet-forge/interproc/index.html
Arkhangel’Skii, A., Fedorchuk, V.: General Topology I: Basic Concepts and Constructions Dimension Theory, vol. 17. Springer, Berlin, Heidelberg (2012). https://doi.org/10.1007/978-3-642-61265-7
Bruni, R., Giacobazzi, R., Gori, R., Garcia-Contreras, I., Pavlovic, D.: Abstract extensionality: on the properties of incomplete abstract interpretations. Proc. ACM Program. Lang. 4(POPL), 28:1–28:28 (2020). https://doi.org/10.1145/3371096
Bruni, R., Giacobazzi, R., Gori, R., Ranzato, F.: A logic for locally complete abstract interpretations. In: 36th Annual ACM/IEEE Symposium on Logic in Computer Science, LICS 2021, Rome, Italy, June 29–2 July 2021, pp. 1–13. IEEE (2021). https://doi.org/10.1109/LICS52264.2021.9470608
Bruni, R., Giacobazzi, R., Gori, R., Ranzato, F.: Abstract interpretation repair. In: Jhala, R., Dillig, I. (eds.) PLDI ’22: 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, San Diego, CA, USA, 13–17 June 2022, pp. 426–441. ACM (2022). https://doi.org/10.1145/3519939.3523453
Bruni, R., Giacobazzi, R., Gori, R., Ranzato, F.: A correctness and incorrectness program logic. J. ACM 70(2), 15:1–15:45 (2023). https://doi.org/10.1145/3582267
Buldygin, V.V., Kozachenko, I.V.: Metric Characterization of Random Variables and Random Processes, vol. 188. American Mathematical Society, Providence (2000). https://doi.org/10.1090/mmono/188
Campion, M., Dalla Preda, M., Giacobazzi, R.: Abstract interpretation of indexed grammars. In: Chang, B.-Y.E. (ed.) SAS 2019. LNCS, vol. 11822, pp. 121–139. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-32304-2_7
Campion, M., Dalla Preda, M., Giacobazzi, R.: On the properties of partial completeness in abstract interpretation. In: Lago, U.D., Gorla, D. (eds.) Proceedings of the 23rd Italian Conference on Theoretical Computer Science, ICTCS 2022, Rome, Italy, 7-9 September 2022. CEUR Workshop Proceedings, vol. 3284, pp. 79–85. CEUR-WS.org (2022). http://ceur-ws.org/Vol-3284/8665.pdf
Campion, M., Dalla Preda, M., Giacobazzi, R.: Partial (in)completeness in abstract interpretation: limiting the imprecision in program analysis. Proc. ACM Program. Lang. 6(POPL), 1–31 (2022). https://doi.org/10.1145/3498721
Campion, M., Dalla Preda, M., Giacobazzi, R.: Learning metamorphic malware signatures from samples. J. Comput. Virol. Hacking Tech. 17(3), 167–183 (2021). https://doi.org/10.1007/s11416-021-00377-z
Casso, I., Morales, J.F., López-García, P., Giacobazzi, R., Hermenegildo, M.V.: Computing abstract distances in logic programs. In: Gabbrielli, M. (ed.) LOPSTR 2019. LNCS, vol. 12042, pp. 57–72. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-45260-5_4
Ceccato, M., et al.: Understanding the behaviour of hackers while performing attack tasks in a professional setting and in a public challenge. Empir. Softw. Eng. 24(1), 240–286 (2018). https://doi.org/10.1007/s10664-018-9625-6
Cohen, J., Hickey, T.J.: Two algorithms for determining volumes of convex polyhedra. J. ACM 26(3), 401–414 (1979). https://doi.org/10.1145/322139.322141
Collberg, C., Nagra, J.: Surreptitious Software: Obfuscation, Watermarking, and Tamperproofing for Software Protection. Addison-Wesley Professional, Boston (2009)
Collberg, C.S., Davidson, J.W., Giacobazzi, R., Gu, Y.X., Herzberg, A., Wang, F.: Toward digital asset protection. IEEE Intell. Syst. 26(6), 8–13 (2011). https://doi.org/10.1109/MIS.2011.106
Cousot, P.: Principles of Abstract Interpretation. The MIT Press, Cambridge, Mass (2021)
Cousot, P., Cousot, R.: Static determination of dynamic properties of programs. In: Proceedings of the 2nd International Symposium on Programming, pp. 106–130. Dunod, Paris (1976). https://doi.org/10.1145/390019.808314
Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Graham, R.M., Harrison, M.A., Sethi, R. (eds.) Proceedings of the 4th ACM Symposium on Principles of Programming Languages, Los Angeles, California, USA, January 1977, pp. 238–252. ACM (1977). https://doi.org/10.1145/512950.512973
Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: Aho, A.V., Zilles, S.N., Rosen, B.K. (eds.) Proceedings of the 6th ACM Symposium on Principles of Programming Languages, San Antonio, Texas, USA, January 1979, pp. 269–282. ACM Press (1979). https://doi.org/10.1145/567752.567778
Cousot, P., Cousot, R.: Abstract interpretation frameworks. J. Log. Comput. 2(4), 511–547 (1992). https://doi.org/10.1093/logcom/2.4.511
Cousot, P., Giacobazzi, R., Ranzato, F.: A\(^{2}\)i: abstract\(^{2}\) interpretation. Proc. ACM Program. Lang. 3(POPL), 1–31 (2019). https://doi.org/10.1145/3290355
Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: Aho, A.V., Zilles, S.N., Szymanski, T.G. (eds.) Conference Record of the Fifth Annual ACM Symposium on Principles of Programming Languages, Tucson, Arizona, USA, January 1978, pp. 84–96. ACM Press (1978). https://doi.org/10.1145/512760.512770
Crazzolara, F.: Quasi-metric spaces as domains for abstract interpretation. In: Falaschi, M., Navarro, M., Policriti, A. (eds.) 1997 Joint Conference on Declarative Programming, APPIA-GULP-PRODE’97, Grado, Italy, 16–19 June 1997, pp. 45–56 (1997)
Dalla Preda, M., Giacobazzi, R., Debray, S.K.: Unveiling metamorphism by abstract interpretation of code properties. Theor. Comput. Sci. 577, 74–97 (2015). https://doi.org/10.1016/j.tcs.2015.02.024
Distefano, D., Fähndrich, M., Logozzo, F., O’Hearn, P.W.: Scaling static analyses at facebook. Commun. ACM 62(8), 62–70 (2019). https://doi.org/10.1145/3338112
Giacobazzi, R.: Hiding information in completeness holes: new perspectives in code obfuscation and watermarking. In: Cerone, A., Gruner, S. (eds.) Sixth IEEE International Conference on Software Engineering and Formal Methods, SEFM 2008, Cape Town, South Africa, 10–14 November 2008, pp. 7–18. IEEE Computer Society (2008). https://doi.org/10.1109/SEFM.2008.41
Giacobazzi, R., Logozzo, F., Ranzato, F.: Analyzing program analyses. In: Rajamani, S.K., Walker, D. (eds.) Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2015, Mumbai, India, 15–17 January 2015, pp. 261–273. ACM (2015). https://doi.org/10.1145/2676726.2676987
Giacobazzi, R., Mastroeni, I.: Making abstract interpretation incomplete: modeling the potency of obfuscation. In: Miné, A., Schmidt, D. (eds.) SAS 2012. LNCS, vol. 7460, pp. 129–145. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-33125-1_11
Giacobazzi, R., Mastroeni, I., Dalla Preda, M.: Maximal incompleteness as obfuscation potency. Form. Aspects Comput. 29(1), 3–31 (2016). https://doi.org/10.1007/s00165-016-0374-2
Giacobazzi, R., Quintarelli, E.: Incompleteness, counterexamples, and refinements in abstract model-checking. In: Cousot, P. (ed.) SAS 2001. LNCS, vol. 2126, pp. 356–373. Springer, Heidelberg (2001). https://doi.org/10.1007/3-540-47764-0_20
Giacobazzi, R., Ranzato, F., Scozzari, F.: Making abstract interpretations complete. J. ACM 47(2), 361–416 (2000). https://doi.org/10.1145/333979.333989
Helemskii, A.Y.: Lectures and Exercises on Functional Analysis, vol. 233. American Mathematical Society, Providence (2006). https://doi.org/10.1090/mmono/233
Lawrence, J.: Polytope volume computation. Math. Comput. 57(195), 259–271 (1991). https://doi.org/10.1090/S0025-5718-1991-1079024-2
Logozzo, F.: Towards a quantitative estimation of abstract interpretations. In: Workshop on Quantitative Analysis of Software. Microsoft, June 2009. https://www.microsoft.com/en-us/research/publication/towards-a-quantitative-estimation-of-abstract-interpretations/
Miné, A.: A new numerical abstract domain based on difference-bound matrices. In: Danvy, O., Filinski, A. (eds.) PADO 2001. LNCS, vol. 2053, pp. 155–172. Springer, Heidelberg (2001). https://doi.org/10.1007/3-540-44978-7_10
Miné, A.: The octagon abstract domain. In: Burd, E., Aiken, P., Koschke, R. (eds.) Proceedings of the Eighth Working Conference on Reverse Engineering, WCRE’01, Stuttgart, Germany, 2–5 October 2001, p. 310. IEEE Computer Society (2001). https://doi.org/10.1109/WCRE.2001.957836
Miné, A.: Tutorial on static inference of numeric invariants by abstract interpretation. Found. Trends Program. Lang. 4(3–4), 120–372 (2017). https://doi.org/10.1561/2500000034
Moser, A., Kruegel, C., Kirda, E.: Limits of static analysis for malware detection. In: 23rd Annual Computer Security Applications Conference (ACSAC 2007), 10–14 December 2007, Miami Beach, Florida, USA, pp. 421–430. IEEE Computer Society (2007). https://doi.org/10.1109/ACSAC.2007.21
Di Pierro, A., Wiklicky, H.: Measuring the precision of abstract interpretations. In: LOPSTR 2000. LNCS, vol. 2042, pp. 147–164. Springer, Heidelberg (2001). https://doi.org/10.1007/3-540-45142-0_9
Sotin, P.: Quantifying the precision of numerical abstract domains. Technical report. HAL Id: inria-00457324, INRIA (2010). https://hal.inria.fr/inria-00457324
Sutter, B.D., Collberg, C.S., Dalla Preda, M., Wyseur, B.: Software protection decision support and evaluation methodologies (dagstuhl seminar 19331). Dagstuhl Rep. 9(8), 1–25 (2019). https://doi.org/10.4230/DagRep.9.8.1
You, I., Yim, K.: Malware obfuscation techniques: a brief survey. In: Proceedings of the Fifth International Conference on Broadband and Wireless Computing, Communication and Applications, BWCCA 2010, 4–6 November 2010, Fukuoka Institute of Technology, Fukuoka, Japan (In conjunction with the 3PGCIC-2010 International Conference), pp. 297–300. IEEE Computer Society (2010). https://doi.org/10.1109/BWCCA.2010.85
Acknowledgements
We wish to thank the anonymous reviewers of SAS 2023 for their detailed comments. This work has been partially supported by the grant PRIN2017 (code: 201784YSZ5) “AnalysiS of PRogram Analyses (ASPRA)”.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Campion, M., Urban, C., Dalla Preda, M., Giacobazzi, R. (2023). A Formal Framework to Measure the Incompleteness of Abstract Interpretations. In: Hermenegildo, M.V., Morales, J.F. (eds) Static Analysis. SAS 2023. Lecture Notes in Computer Science, vol 14284. Springer, Cham. https://doi.org/10.1007/978-3-031-44245-2_7
Download citation
DOI: https://doi.org/10.1007/978-3-031-44245-2_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-44244-5
Online ISBN: 978-3-031-44245-2
eBook Packages: Computer ScienceComputer Science (R0)