Pure subtype system type safety

Still openEvidence checked

Subjects: Logic and computation

Collections: Limits of computation

Reading depth

The problem

Can a checking guarantee for one expression survive when it is put into a larger program? An identity function returns its argument, so applying it to another identity function leaves that argument. In a pure subtype system, the same expressions can act as programs and as types. The proposed checking rules still need a general guarantee for replacing expressions in specified positions, with both completed expressions passing the rules.[1] [2]

Scope

The well-formedness, well-subtyping and operational rules for Machine-Based Pure Subtype Systems in Section 4 of Pasquale–García-Pérez (CSL 2026). Complete their progress and preservation argument by proving or refuting Conjecture 8: transitive well-subtyping is preserved by the specified covariant program contexts when both plugged terms are well-formed.

What remains open

A 2026 paper proves an important interaction between two forms of reduction. But its proposed checked language still needs a separate conjecture about replacing expressions inside a larger program. The complete safety argument depends on that remaining step.[1] [2]

Why it matters

Allowing expressions to act as types gives one language for describing values and constraints on those values. The mathematical challenge is compositional: guarantees for small checked expressions must remain meaningful when functions use them inside larger expressions and execution substitutes arguments. This connects the proposed expressiveness to reasoning about whole programs, without claiming a finished compiler or guarantees for every language with subtyping.[1] [2]

Definitions

4 terms
well-formed

An expression satisfying this calculus’s specified static checking rules in its logical context. This is a condition of the formal system, not a claim about arbitrary software.[1] [2]

covariant contexts

The particular expression templates in Conjecture 8: a hole, a hole within a function body, or a template in the function position of an application, recursively. They exclude arbitrary placements, such as putting the hole in an argument position.[1] [2]

substitution

Replacing free occurrences of a function parameter by its argument while avoiding capture by other variable binders. It supplies the expression produced by a function-application step.[1] [2]

normal form

A term with no further reduction of the specified kind available. Progress permits a well-formed term already to be normal; it does not say that every evaluation eventually reaches a normal form.[1] [2]

Sources

  1. Towards the Type Safety of Pure Subtype Systems Valentin Pasquale and Álvaro García-Pérez · 2026-02-18
    Notes on Towards the Type Safety of Pure Subtype Systems

    Sections 3–4 separate the proved commutation result from the well-formed system’s conditional progress and preservation; Conjecture 8 includes the required well-formedness of both plugged terms.

  2. Towards the type safety of Pure Subtype Systems (Full version) Valentin Pasquale and Álvaro García-Pérez · 2024-07-18
    Notes on Towards the type safety of Pure Subtype Systems (Full version)

    Version 2 revised December 13, 2025: Section 4 and the substitution appendix invoke Conjecture 8 explicitly. Related work distinguishes safety from termination and theorem-prover consistency.

Suggest a correction