Idealized coinductive type systems for imperative object-oriented programs

In recent work we have proposed a novel approach to define idealized type systems for object-oriented languages, based on ab- stract compilation of programs into Horn formulas which are interpreted w.r.t. the coinductive (that is, the greatest) Herbrand model. In this paper we investigate how this approach can be applied also in the presence of imperative features. This is made possible by considering a natural translation of Static Single Assignment intermediate form programs into Horn formulas, where ϕ functions correspond to union types.

[1]  Davide Ancona,et al.  Coinductive Type Systems for Object-Oriented Languages , 2009, ECOOP.

[2]  Martin Odersky,et al.  Type Inference with Constrained Types , 1999, Theory Pract. Object Syst..

[3]  Jeremy Singer,et al.  Static program analysis based on virtual register renaming , 2006 .

[4]  Ramakrishna Upadrasta,et al.  A practical and fast iterative algorithm for φ-function computation using DJ graphs , 2005, TOPL.

[5]  Gopal Gupta,et al.  Coinductive Logic Programming and its Application to Boolean SAT , 2009, FLAIRS.

[6]  Sophia Drossopoulou,et al.  Towards Type Inference for JavaScript , 2005, ECOOP.

[7]  Davide Ancona,et al.  Abstract Compilation of Object-Oriented Languages into Coinductive CLP(X): Can Type Inference Meet Verification? , 2010, FoVeOOS.

[8]  Andrew A. Chien,et al.  Precise concrete type inference for object-oriented languages , 1994, OOPSLA 1994.

[9]  Davide Ancona,et al.  Type inference for polymorphic methods in Java-like languages , 2007, ICTCS.

[10]  Davide Ancona,et al.  Type Inference by Coinductive Logic Programming , 2008, TYPES.

[11]  Jeffrey S. Foster,et al.  Static type inference for Ruby , 2009, SAC '09.

[12]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[13]  Scott F. Smith,et al.  Precise Constraint-Based Type Inference for Java , 2001, ECOOP.

[14]  Mariangiola Dezani-Ciancaglini,et al.  Intersection and Union Types: Syntax and Semantics , 1995, Inf. Comput..

[15]  Davide Ancona,et al.  Coinductive subtyping for abstract compilation of object-oriented languages into Horn formulas , 2010, GANDALF.

[16]  Davide Ancona,et al.  Complete coinductive subtyping for abstract compilation of object-oriented languages , 2010, FTfJP@ECOOP.

[17]  Gopal Gupta,et al.  Co-Logic Programming: Extending Logic Programming with Coinduction , 2007, ICALP.

[18]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[19]  Hervé Grall,et al.  Coinductive big-step operational semantics , 2009, Inf. Comput..

[20]  Atsushi Igarashi,et al.  Union Types for Object-Oriented Programming , 2007, J. Object Technol..

[21]  Gopal Gupta,et al.  Coinductive Logic Programming with Negation , 2009, LOPSTR.

[22]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[23]  Peter J. Stuckey,et al.  Under Consideration for Publication in J. Functional Programming Hm(x) Type Inference Is Clp(x) Solving , 2022 .

[24]  Patrick Cousot,et al.  Types as abstract interpretations , 1997, POPL '97.

[25]  Ole Agesen The Cartesian Product Algorithm: Simple and Precise Type Inference Of Parametric Polymorphism , 1995, ECOOP.

[26]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[27]  Jens Palsberg,et al.  Object-oriented type inference , 1991, OOPSLA 1991.

[28]  Tian Zhao Polymorphic type inference for scripting languages with object extensions , 2011, DLS '11.

[29]  Peter Thiemann,et al.  Recency Types for Analyzing Scripting Languages , 2010, ECOOP.

[30]  B. Courcelle Fundamental properties of infinite trees , 1983 .

[31]  Gopal Gupta,et al.  Verifying Complex Continuous Real-Time Systems with Coinductive CLP(R) , 2010, LATA.

[32]  Jens Palsberg,et al.  Making Type Inference Practical , 1992, ECOOP.

[33]  Luca Cardelli,et al.  Subtyping recursive types , 1993 .