Istari

Istari rules

Conventions:

Note that no effort was made to keep the set of rules minimal. Many rules that would follow from other rules are nonetheless included for the sake of convenience or performance. Since the rules are (nearly) all verified, there is no robustness advantage to minimizing the set of rules.

Rules are given here in human-readable format, using explicit variables. The official rules, using de Bruijn indices, are given here.

Contents

Structural
Reduction
Dependent functions
Functions
T-Functions
K-Functions
Intersection types
Guarded types
Strong sums
Products
Semi-dependent products
Union types
Couarded types
Disjoint sums
Future modality
Recursive types
Inductive types
Void
Unit
Bool
Natural numbers
Universes
Kinds
Levels
Equality
Typing
Type equality
Type formation
Subtyping
Subset types
Intensional subset types
Squash
Intensional squash
Quotient types
Impredicative universals
Impredicative polymorphism
Impredicative existentials
Miscellaneous
Syntactic equality
Partial types
Let hypotheses
Integers
Rewriting

Structural

Reduction

Dependent functions

Functions

T-Functions

K-Functions

Intersection types

Guarded types

Strong sums

Products

Semi-dependent products

Union Types

Coguarded types

Disjoint sums

Future modality

Recursive types

Inductive types

Void

Unit

Bool

Natural numbers

Universes

Kinds

Levels

Equality

Typing

Type equality

Type formation

Subtyping

Extensional type equality

Subset types

Intensional subset types

Squash

Intensional squash

Quotient types

Impredicative universals

Impredicative polymorphism

Impredicative existentials

Miscellaneous

Syntactic equality

Partial types

Let hypotheses

Integers

The remaining integer rules establish the properties of Istari’s native integer operations through an isomorphism to Integer, which defines the integers as a quotient over pairs of natural numbers (quotient (x y : nat & nat) . x #1 + y #2 = x #2 + y #1 : nat).

Symbols

Rewriting

These rules are tailor-made to justify certain transformations in the rewriter, to improve performance and robustness. (Some of the justifying derivations are quite large.)