Contents
Contents
Idea
This is the definition of the original CompLF formal system, version zero, without as much English getting in the way.
Syntax
Term grammar
The main syntactic class is terms. Type expressions are terms. There are also variables and contexts.
variables (, , …) ::=
(Written as usual. Complain if you can’t tell them apart from metavariables.)
terms (, , , , , , , , …) ::=
-
(variable reference)
-
(lambda abstraction)
-
(application)
-
(equality type)
-
(dependent function type)
-
(family intersection type)
-
(type of computations (realizers))
-
(subset/separation type)
-
(PER comprehension type)
-
(type of “booleans”) (two-element type)
To be added: an infinite type.
contexts (, …) ::=
|
As usual, the rules may make liberal use of informal list operations to work with contexts.
(beta conversion)
The only beta reduction is . Conversion is the congruence closure.
The other judgment forms will be defined inductively by the rules below. They are:
(type validity)
(element in a type) (realizer of a type)
Abbreviations
Semantic Judgment Forms
“ equality is respected in .”:
“ members are included in .”:
“ is a subtype of .”:
“ is a refinement/subquotient of .”:
Computations
The Church booleans:
Type constructors
“Squash” of :
Rules
Miscellaneous
Equality
Functions
Intersection
Subset
PER
Booleans