[Paper Review] A Comparison of NOOP to Structural Domain-Theoretic Models of Object-Oriented Programming.
This paper presents a formal comparison between NOOP, a nominally-typed domain-theoretic model of OOP, and structural models by Cardelli and Cook. It provides a precise mathematical account of the relationship between nominal and structural type systems in OOP, clarifying how nominal typing enriches structural models with explicit name-based type distinctions.
Mainstream object-oriented programming languages such as Java, C#, C++ and Scala are all almost entirely nominally-typed. NOOP is a recently developed domain-theoretic model of OOP that was designed to include full nominal information found in nominally-typed OOP. This paper compares NOOP to the most widely known domain-theoretic models of OOP, namely, the models developed by Cardelli and Cook, which were structurally-typed models. Leveraging the development of NOOP, the comparison presented in this paper provides a clear and precise mathematical account for the relation between nominal and structural OO type systems.
Motivation & Objective
- To formally analyze the differences between nominally-typed and structurally-typed object-oriented type systems.
- To investigate how NOOP, a domain-theoretic model of OOP, incorporates full nominal typing information.
- To establish a rigorous mathematical framework for comparing nominal and structural type systems in OOP.
- To clarify the conceptual and formal relationship between the dominant structural models (Cardelli and Cook) and the emerging nominal model (NOOP).
Proposed method
- Developed NOOP as a domain-theoretic model of OOP that explicitly encodes nominal type information.
- Formalized the structural models of Cardelli and Cook as reference points for comparison.
- Used domain theory to model object types, inheritance, and subtyping in both nominal and structural settings.
- Established a mathematical correspondence between nominal and structural type systems through category-theoretic and order-theoretic constructs.
- Analyzed subtyping relations in both models to highlight the impact of nominal typing on type safety and expressiveness.
- Demonstrated that NOOP extends structural models by adding name-based type distinctions without sacrificing domain-theoretic elegance.
Experimental results
Research questions
- RQ1How does a nominally-typed domain-theoretic model of OOP, such as NOOP, differ formally from structurally-typed models?
- RQ2What is the precise mathematical relationship between nominal and structural subtyping in object-oriented type systems?
- RQ3Can a domain-theoretic model fully incorporate nominal typing while preserving the structural properties of OOP?
- RQ4What are the implications of nominal typing for type safety and expressiveness in domain-theoretic models of OOP?
Key findings
- NOOP successfully integrates full nominal typing into a domain-theoretic framework, enabling explicit name-based type distinctions.
- The paper establishes that nominal typing adds expressiveness beyond what is possible in purely structural models.
- The comparison reveals that structural models (Cardelli and Cook) are subsumed within the broader class of models supported by NOOP.
- Nominal typing in NOOP allows for more precise subtyping relations, particularly in cases involving class identity and inheritance.
- The mathematical framework shows that nominal and structural type systems are not mutually exclusive but can be related through a formal embedding.
- NOOP provides a foundation for reasoning about real-world OOP languages like Java and C# within a domain-theoretic setting.
Better researchstarts right now
From reading papers to final review, dramatically reduce your research time.
No credit card · Free plan available
This review was created by AI and reviewed by human editors.