NOOP: A Domain-Theoretic Model of Nominally-Typed OOP

01/21/2018
by   Moez AbdelGawad, et al.
0

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 came from assuming non-nominal (a.k.a., structural) models of OOP. To motivate the construction of NOOP, this paper briefly presents the benefits of nominal-typing to mainstream OO developers and OO language designers, as compared to structural-typing. After presenting NOOP, the paper further briefly compares NOOP to the most widely known domain-theoretic models of OOP. Leveraging the development of NOOP, the comparisons presented in this paper provide clear, brief and precise technical and mathematical accounts for the relation between nominal and structural OO type systems. NOOP, thus, provides a firmer semantic foundation for analyzing and progressing nominally-typed OO programming languages.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/26/2019

Induction, Coinduction, and Fixed Points in PL Type Theory

Recently we presented a concise survey of the formulation of the inducti...
research
12/25/2018

Induction, Coinduction, and Fixed Points: A Concise Survey

In this survey paper (which hitherto is an ongoing work-in-progress) we ...
research
12/25/2018

Induction, Coinduction, and Fixed Points: A Concise Comparative Survey (and Tutorial)

In this survey paper (which hitherto is an ongoing work-in-progress) we ...
research
06/20/2019

Java Generics: An Order-Theoretic Approach (Abridged Outline)

The mathematical modeling of generics in Java and other similar nominall...
research
05/18/2018

Partial Cartesian Graph Product

In this paper we define a new product-like binary operation on directed ...
research
06/22/2022

Functional or imperative? On pleasant semantics for differentiable programming languages

In machine learning (ML), researchers and engineers seem to be at odds. ...
research
03/05/2023

Regexes are Hard: Decision-making, Difficulties, and Risks in Programming Regular Expressions

Regular expressions (regexes) are a powerful mechanism for solving strin...

Please sign up or login with your details

Forgot password? Click here to reset