ABSTRACT
Many calculi exist for modeling various features of object-oriented languages. Many of them are based on λ -calculus and focus either on statically typed class-based languages or dynamic prototype-based languages. We formalize the untyped calculus of decorated objects, informally presented by Bugayenko, which is defined in terms of objects and relies on decoration as a primary mechanism of object extension. It is not based on λ -calculus, yet with only four basic syntactic constructions is just as complete (in particular, it is Turing complete and possesses the Church-Rosser property). We also provide a sound translation to Wand’s λ -calculus with records and concatenation, and discuss the key differences of these calculi.
- Martin Abadi. 1994. Baby Modula-3 and a theory of objects. J. Funct. Program. 4, 2 (1994), 249–283. https://doi.org/10.1017/S0956796800001052Google ScholarCross Ref
- Martín Abadi and Luca Cardelli. 1996. A Theory of Primitive Objects: Untyped and First-Order Systems. Inf. Comput. 125, 2 (1996), 78–102. https://doi.org/10.1006/inco.1996.0024Google ScholarDigital Library
- Eric Allen, Joseph J. Hallett, Victor Luchangco, Sukyoung Ryu, and Guy L. Steele. 2007. Modular Multiple Dispatch with Multiple Inheritance. In Proceedings of the 2007 ACM Symposium on Applied Computing (Seoul, Korea) (SAC ’07). Association for Computing Machinery, New York, NY, USA, 1117–1121. https://doi.org/10.1145/1244002.1244245Google ScholarDigital Library
- Eric Allen, Justin Hilburn, Scott Kilpatrick, Victor Luchangco, Sukyoung Ryu, David Chase, and Guy Steele. 2011. Type Checking Modular Multiple Dispatch with Parametric Polymorphism and Multiple Inheritance. SIGPLAN Not. 46, 10 (Oct. 2011), 973–992. https://doi.org/10.1145/2076021.2048140Google ScholarDigital Library
- Henk Barendregt and Erik Barendsen. 1984. Introduction to lambda calculus. Nieuw archief voor wisenkunde 4 (Jan. 1984), 337–372.Google Scholar
- Yegor Bugayenko. 2022. EOLANG and φ -calculus. arxiv:2111.13384 [cs.PL]Google Scholar
- Yegor Bugayenko. 2022. Reducing Programs to Objects. arxiv:2112.11988 [cs.PL]Google Scholar
- Luca Cardelli. 1994. Extensible Records in a Pure Calculus of Subtyping. MIT Press, Cambridge, MA, USA, 373–425.Google Scholar
- Luca Cardelli. 1995. A Language with Distributed Scope. In Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Francisco, California, USA) (POPL ’95). Association for Computing Machinery, New York, NY, USA, 286–297. https://doi.org/10.1145/199448.199516Google ScholarDigital Library
- Giuseppe Castagna, Giorgio Ghelli, and Giuseppe Longo. 1992. A Calculus for Overloaded Functions with Subtyping. In Proceedings of the 1992 ACM Conference on LISP and Functional Programming (San Francisco, California, USA) (LFP ’92). Association for Computing Machinery, New York, NY, USA, 182–192. https://doi.org/10.1145/141471.141537Google ScholarDigital Library
- Elias Castegren and Tobias Wrigstad. 2019. OOlong: A Concurrent Object Calculus for Extensibility and Reuse. SIGAPP Appl. Comput. Rev. 18, 4 (Jan. 2019), 47–60. https://doi.org/10.1145/3307624.3307629Google ScholarDigital Library
- Alberto Ciaffaglione, Pietro Di Gianantonio, Furio Honsell, and Luigi Liquori. 2021. A prototype-based approach to object evolution. J. Object Technol. 20, 2 (2021), 1–24. https://doi.org/10.5381/jot.2021.20.2.a4Google ScholarCross Ref
- Roger Duke, Gordon Rose, and Graeme Smith. 1995. Object-Z: A specification language advocated for the description of standards. Comput. Stand. Interfaces. 17, 5 (1995), 511–533. https://doi.org/10.1016/0920-5489(95)00024-OGoogle ScholarDigital Library
- Eugene Durr and Jan Van Katwijk. 1992. VDM++, a formal specification language for object-oriented designs. In CompEuro 1992 Proceedings Computer Systems and Software Engineering. IEEE Comput. Soc. Press, The Hague, Netherlands, 214–219. https://doi.org/10.1109/CMPEUR.1992.218511Google ScholarCross Ref
- Kathleen Fisher, Furio Honsell, and John C. Mitchell. 1994. A Lambda Calculus of Objects and Method Specialization. Nordic J. of Computing 1, 1 (Mar. 1994), 3–37.Google Scholar
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., USA.Google ScholarDigital Library
- Jean-Yves Girard, Paul Taylor, and Yves Lafont. 1989. Proofs and Types. Cambridge University Press, USA.Google Scholar
- Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. 2001. Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23, 3 (May 2001), 396–450. https://doi.org/10.1145/503502.503505Google ScholarDigital Library
- Jean L. Krivine. 1993. Lambda-Calculus, Types and Models. Ellis Horwood, USA.Google Scholar
- Johan Östlund and Tobias Wrigstad. 2010. Welterweight Java. In Proceedings of the 48th International Conference on Objects, Models, Components, Patterns (Málaga, Spain) (TOOLS’10). Springer-Verlag, Berlin, Heidelberg, 97–116.Google Scholar
- Gyunghee Park, Jaemin Hong, Guy L. Steele Jr., and Sukyoung Ryu. 2019. Polymorphic Symmetric Multiple Dispatch with Variance. Proc. ACM Program. Lang. 3, POPL, Article 11 (Jan. 2019), 28 pages. https://doi.org/10.1145/3290324Google ScholarDigital Library
- Benjamin C Pierce and David N Turner. 1994. Simple type-theoretic foundations for object-oriented programming. J. Funct. Program. 4, 2 (1994), 207–247.Google ScholarCross Ref
- Lee Salzman and Jonathan Aldrich. 2005. Prototypes with Multiple Dispatch: An Expressive and Dynamic Object Model. In Proceedings of the 19th European Conference on Object-Oriented Programming (Glasgow, UK) (ECOOP’05). Springer-Verlag, Berlin, Heidelberg, 312–336. https://doi.org/10.1007/11531142_14Google ScholarDigital Library
- Masako Takahashi. 1995. Parallel Reductions in λ -Calculus. Inf. Comput. 118, 1 (1995), 120–127. https://doi.org/10.1006/inco.1995.1057Google ScholarDigital Library
- David Ungar and Randall B. Smith. 1987. Self: The Power of Simplicity. SIGPLAN Not. 22, 12 (Dec. 1987), 227–242. https://doi.org/10.1145/38807.38828Google ScholarDigital Library
- Mitchell Wand. 1991. Type inference for record concatenation and multiple inheritance. Inf. Comput. 93, 1 (1991), 1–15. https://doi.org/10.1016/0890-5401(91)90050-CGoogle ScholarDigital Library
- Yanlin Wang, Haoyuan Zhang, Bruno C. d. S. Oliveira, and Marco Servetto. 2018. FHJ: A Formal Model for Hierarchical Dispatching and Overriding. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018)(Leibniz International Proceedings in Informatics (LIPIcs), Vol. 109), Todd Millstein (Ed.). Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 20:1–20:30. https://doi.org/10.4230/LIPIcs.ECOOP.2018.20Google ScholarCross Ref
Index Terms
- Formalizing ϕ-Calculus: A Purely Object-Oriented Calculus of Decorated Objects
Recommendations
The Bang Calculus: an untyped lambda-calculus generalizing call-by-name and call-by-value
PPDP '16: Proceedings of the 18th International Symposium on Principles and Practice of Declarative ProgrammingWe introduce and study the Bang Calculus, an untyped functional calculus in which the promotion operation of Linear Logic is made explicit and where application is a bilinear operation. This calculus, which can be understood as an untyped version of ...
Formalization of the Resolution Calculus for First-Order Logic
I present a formalization in Isabelle/HOL of the resolution calculus for first-order logic with formal soundness and completeness proofs. To prove the calculus sound, I use the substitution lemma, and to prove it complete, I use Herbrand interpretations ...
Comments