Skip to main content
QUICK REVIEW

[Paper Review] A Comparison of NOOP to Structural Domain-Theoretic Models of Object-Oriented Programming.

Moez A. AbdelGawad|arXiv (Cornell University)|Mar 29, 2016
Advanced Software Engineering Methodologies3 citations
TL;DR

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.

ABSTRACT

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.