NOOP: A Domain-Theoretic Model of Nominally-Typed OOP
Moez AbdelGawad, Robert Cartwright

TL;DR
NOOP is a novel domain-theoretic model of object-oriented programming that incorporates nominal type information, demonstrating that type inheritance and subtyping are equivalent in nominally-typed languages, aligning with developer intuition.
Contribution
This paper introduces NOOP, the first domain-theoretic model that fully incorporates class/type names, clarifying the relationship between inheritance and subtyping in nominally-typed OOP.
Findings
Type inheritance and subtyping are fully identified in nominally-typed OOP.
NOOP provides a precise semantic foundation for analyzing nominal type systems.
Comparison with structural models highlights the benefits of nominal typing.
Abstract
The majority of industrial-strength object-oriented (OO) software is written using nominally-typed OO programming languages. Extant domain-theoretic models of OOP developed to analyze OO type systems miss, however, a crucial feature of these mainstream OO languages: nominality. This paper presents the construction of NOOP as the first domain-theoretic model of OOP that includes full class/type names information found in nominally-typed OOP. Inclusion of nominal information in objects of NOOP and asserting that type inheritance in statically-typed OO programming languages is an inherently nominal notion allow readily proving that type inheritance and subtyping are completely identified in these languages. This conclusion is in full agreement with intuitions of developers and language designers of these OO languages, and contrary to the belief that "inheritance is not subtyping," which…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Engineering Research · Advanced Software Engineering Methodologies
