Indices #
In this file, we create instances for various facts about comparisons between type indices, and also define extended type indices.
Main declarations #
ConNF.ExtendedIndex
: The type of extended type indices from a given base type index.
The current level of the structure we are building. This is registered as a class so that Lean can find it easily.
- α : ConNF.Λ
Instances
Equations
- ⋯ = inst
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = inst
We define the type of paths from certain types to lower types as inhabitants of this quiver.
A (finite) path from the type α
to the base type. This is a way that we can perceive
extensionality, iteratively descending to lower types in the hierarchy until we reach the base type.
As Λ
is well-ordered, there are no infinite descending paths.
Equations
Instances For
If there is a path between α
and β
, we must have β ≤ α
.
The case β = α
can occur with the nil path.
Paths from a type index to itself must be the nil path.
Extended indices cannot be the nil path.
There are at most Λ
α
-extended type indices.
If β < γ
, we have a path directly between the two types in the opposite order.
Note that the ⟶
symbol (long right arrow) is not the normal →
(right arrow),
even though monospace fonts often display them similarly.
Equations
- ConNF.ltToHom β γ = { coe := ⋯ }
Equations
- ConNF.instInhabitedExtendedIndex x = match x with | none => { default := Quiver.Path.nil } | some α => { default := Quiver.Hom.toPath ⋯ }
There exists an α
-extended type index. -