System I

WORK IN PROGRESS

Variables

Type variables: xn;p

Expansion variables: En;p

Where n ∈ ℕ and p ∈ ℕ* (sequences of integers)

Trees

Many objects in System I use the notion of boxed tree.

For all set S, if s ∈ S, then t ∈ Tree(S) is defined by the following pseudo syntax:

t ⩴ ω | {s} | t1 ∧ t2 | E t

The name boxed tree comes from the construction (E t), for which tree t is said to be inside the box named E.
Applying a substitution targetting E effectively performs an operation on the entire content of box E.

Boxed trees are identified up to the folllowing equivalence relation:

Thus, ω can be intepreted as the empty set, { } as singleton set construction, and ∧ as set union.

Note that curly braces are omitted when it is unambiguous to do so.

Types

Small types (which we also name linear types, or solo types) are defined as follows:

τSmallTypexn;p | τ → τ

where τ ∈ Type = Tree(SmallExpansion × SmallType).

Constraints Solving

Reduction to T-normal form solve all constraints between small types; it always terminates.

Flow Graph

Mozilla+SVG

Unicode Characters Testing

The following table shows all the Unicode characters used on this page.
If any of them is not rendered correctly by your browser, you might have trouble reading this page.
× product sign
τ greek letter tau
ω greek letter omega
right arrow
double-struck capital n
set inclusion
intersection
double colon equal
long right arrow