Abstract
This paper further investigates the potential and practical applicability of abstract compilation in two different directions. First, we formally define an abstract compilation scheme for precise prediction of uncaught exceptions for a simple Java-like language; besides the usual user declared checked exceptions, the analysis covers the runtime ClassCastException. Second, we present a general implementation schema for abstract compilation based on coinductive CLP with variance annotation of user-defined predicates, and propose an implementation based on a Prolog prototype meta-interpreter, parametric in the solver for the subtyping constraints.
This work has been partially supported by MIUR DISCO - Distribution, Interaction, Specification, Composition for Object Systems.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Ancona, D., Corradi, A., Lagorio, G., Damiani, F.: Abstract compilation of object-oriented languages into coinductive CLP(X): can type inference meet verification (extended version). Technical report, DISI (August 2010), ftp://ftp.disi.unige.it/person/AnconaD/ACLD10ext.pdf
Ancona, D., Lagorio, G.: Coinductive type systems for object-oriented languages. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 2–26. Springer, Heidelberg (2009); Best paper prize
Ancona, D., Lagorio, G.: Coinductive subtyping for abstract compilation of object-oriented languages into Horn formulas. In: GandALF 2010. Electronic Proceedings in Theoretical Computer Science (2010)
Ancona, D., Lagorio, G.: Complete coinductive subtyping for abstract compilation of object-oriented languages. In: 12th Intl. Workshop on Formal Techniques for Java-like Programs, ACM Digital Library (2010)
Ancona, D., Lagorio, G.: Idealized coinductive type systems for imperative object-oriented programs. Technical report, DISI, Submitted for journal publication (January 2010)
Ancona, D., Lagorio, G., Zucca, E.: Type inference by coinductive logic programming. In: Berardi, S., Damiani, F., de’Liguoro, U. (eds.) TYPES 2008. LNCS, vol. 5497, pp. 1–18. Springer, Heidelberg (2009)
Barbanera, F., Dezani-Cincaglini, M., de Liguoro, U.: Intersection and union types: Syntax and semantics. Information and Computation 119(2), 202–230 (1995)
Courcelle, B.: Fundamental properties of infinite trees. TCS 25, 95–169 (1983)
Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM TOPLAS 13, 451–490 (1991)
Frühwirth, T.: Constraint Handling Rules. Cambridge University Press, Cambridge (2009)
Gosling, J., Joy, B., Steele, G.L., Bracha, G.: The Java language specification, 3rd edn. The Java series. Addison-Wesley, Reading (2005)
Hermenegildo, M., Warren, R., Debray, K.: Global flow analysis as a practical compilation tool. J. Log. Program. 13(4), 349–366 (1992)
Igarashi, A., Nagira, H.: Union types for object-oriented programming. Journ. of Object Technology 6(2), 47–68 (2007)
Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: a minimal core calculus for Java and GJ. ACM TOPLAS 23(3), 396–450 (2001)
Jaffar, J., Maher, M.J.: Constraint logic programming: A survey. J. Log. Program. 19(20), 503–581 (1994)
Jo, J., Chang, B., Yi, K., Choe, K.: An uncaught exception analysis for Java. Journal of Systems and Software 72(1), 59–69 (2004)
Min, R., Gupta, G.: Coinductive logic programming and its application to boolean sat. In: FLAIRS Conference (2009)
Saeedloei, N., Gupta, G.: Verifying complex continuous real-time systems with coinductive CLP(R). In: Dediu, A.-H., Fernau, H., MartÃn-Vide, C. (eds.) LATA 2010. LNCS, vol. 6031, pp. 536–548. Springer, Heidelberg (2010)
Odersky, M., Sulzmann, M., Wehr, M.: Type inference with constrained types. Theory and Practice of Object Systems 5(1), 35–55 (1999)
Simon, L., Bansal, A., Mallya, A., Gupta, G.: Co-logic programming: Extending logic programming with coinduction. In: Arge, L., Cachin, C., Jurdziński, T., Tarlecki, A. (eds.) ICALP 2007. LNCS, vol. 4596, pp. 472–483. Springer, Heidelberg (2007)
Simon, L., Mallya, A., Bansal, A., Gupta, G.: Coinductive logic programming. In: Etalle, S., Truszczyński, M. (eds.) ICLP 2006. LNCS, vol. 4079, pp. 330–345. Springer, Heidelberg (2006)
Sulzmann, M., Stuckey, P.J.: HM(X) type inference is CLP(X) solving. Journ. of Functional Programming 18(2), 251–283 (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Ancona, D., Corradi, A., Lagorio, G., Damiani, F. (2011). Abstract Compilation of Object-Oriented Languages into Coinductive CLP(X): Can Type Inference Meet Verification?. In: Beckert, B., Marché, C. (eds) Formal Verification of Object-Oriented Software. FoVeOOS 2010. Lecture Notes in Computer Science, vol 6528. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-18070-5_3
Download citation
DOI: https://doi.org/10.1007/978-3-642-18070-5_3
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-18069-9
Online ISBN: 978-3-642-18070-5
eBook Packages: Computer ScienceComputer Science (R0)