We present a graded modal type theory, a dependent type theory with
grades
that can be used to enforce various properties of the
code.
The theory has Π-types, weak and strong Σ-types, natural numbers, an
empty type, and a universe, and we also extend the theory with a unit
type and graded Σ-types.
The theory is parameterized by a modality, a kind of partially ordered
semiring, whose elements (grades) are used to track the usage of
variables in terms and types.
Different modalities are possible.
We focus mainly on quantitative properties, in particular erasure:
with the erasure modality one can mark function arguments as erasable.
The theory is fully formalized in Agda.
The formalization, which uses a syntactic Kripke logical relation at
its core and is based on earlier work, establishes major
meta-theoretic properties such as subject reduction, consistency,
normalization, and decidability of definitional equality.
We also prove a substitution theorem for grade assignment, and
preservation of grades under reduction.
Furthermore we study an extraction function that translates terms to
an untyped λ-calculus and removes erasable content, in
particular function arguments with the “erasable” grade.
For a certain class of modalities we prove that extraction is sound,
in the sense that programs of natural number type have the same value
before and after extraction.
Soundness of extraction holds also for
open
programs, as
long as all variables in the context are erasable, the context is
consistent, and
erased matches
are not allowed for weak
Σ-types.