There is a newer version of the record available.

Published October 15, 2026 | Version v30

Semantic Completeness for Correct Maintenance: A Strict Hierarchy of Typing and Inheritance

  • 1. EDMO icon McGill University

Description

Removing nominal types or inheritance is often defended as reducing developer burden. The cited Java and Go rationales give no objective measure. Correct maintenance minimizes required facts left for code or tooling to supply and repairs forced by changes, while preserving required facts and behavioral correctness as a program's intended behavior evolves. Semantically complete languages derive all required type identities, interface memberships, and implementation-class pairs as finite requirements evolve. Incompleteness cannot guarantee the optimum. It forces slop: code restating facts that complete languages derive natively once.

In 20 pinned multiple-inheritance Python projects, recovered pairs grouped by declaring class would need code or tooling: 12,880 without inheritance, 8,792 under first parents, 739 under one parent inheriting only required pairs (certified exact), 0 with multiple parents. With code and state in each provider, state-bearing requirements force 236 outside pairs. Java and C# interface defaults supply no instance state. Of the top 150 pure-Python downloads, at least 24 of 65 size-qualified wheels have positive recovered gap (36.9%, 34 unscored).

For independent providers, the minimum covers reparenting, infinite helpers, delegation, and generators. One parent covers all pairs exactly when providers' class sets nest or do not overlap; likewise for contracts. Look-alike records needing different handling need as many keys as the confusability graph's chromatic number. As requirements grow and stay tree-shaped, inserting a provider outside the old ancestor path strictly between ancestors forces one-parent repair. Our zero-gap construction repeats it; multiple parents add one edge per change. Bans cannot lower minima at fixed design costs; savings require otherwise choosing worse than the best.

Files

paper1_oopsla.pdf

Files (17.3 MB)

Name Size
md5:d12a7ad55192b13b33410b3fafaebe77
1.0 MB Preview Download
md5:928dbf0864c880eb083aaa1720e8dc41
1.1 MB Preview Download
md5:0d939b1bed8cd8352db2cb0d6b7825a2
15.2 MB Preview Download

Additional details

Software

Programming language
Python
Development Status
Active