Construction of t-sets #
In this file, we construct the type of t-sets at level α
, assuming they exist at all levels
β < α
.
Main declarations #
ConNF.Extensions
: The type of extensions of a t-set at levelα
.ConNF.Preference
: A preferred extension of a extensional set.ConNF.ExtensionalSet
: An extension for eachβ < α
, with one chosen as its preferred extension. The non-preferred extensions can be derived from the preferred extension.ConNF.NewTangle
: The type of t-sets at levelα
.
Equations
- ConNF.Extensions = ((β : ConNF.Λ) → [inst_1 : ConNF.LtLevel ↑β] → Set (ConNF.TSet ↑β))
Instances For
Extensional sets #
Keeps track of the preferred extension of a extensional set, along with coherence conditions
relating each extension of the extensional set. In particular, each non-preferred extension can be
obtained by applying the cloud
map to the preferred extension.
- base: [inst : ConNF.Params] → [inst_1 : ConNF.Level] → [inst_2 : ConNF.BasePositions] → [inst_3 : ConNF.ModelDataLt] → [inst_4 : ConNF.PositionedTanglesLt] → [inst_5 : ConNF.TypedObjectsLt] → {members : ConNF.Extensions} → (atoms : Set (ConNF.Tangle ⊥)) → (∀ (γ : ConNF.Λ) [inst_6 : ConNF.LtLevel ↑γ], ConNF.cloud ⋯ atoms = members γ) → ConNF.ExtensionalSet.Preference members
- proper: [inst : ConNF.Params] → [inst_1 : ConNF.Level] → [inst_2 : ConNF.BasePositions] → [inst_3 : ConNF.ModelDataLt] → [inst_4 : ConNF.PositionedTanglesLt] → [inst_5 : ConNF.TypedObjectsLt] → {members : ConNF.Extensions} → (β : ConNF.Λ) → [inst_6 : ConNF.LtLevel ↑β] → (ConNF.Code.mk (↑β) (members β)).IsEven → (∀ (γ : ConNF.Λ) [inst_7 : ConNF.LtLevel ↑γ] (hβγ : ↑β ≠ ↑γ), ConNF.cloud hβγ (members β) = members γ) → ConNF.ExtensionalSet.Preference members
Instances For
The ⊥
-extension in a given extensional set, if it exists.
Equations
- x.atoms = match x with | ConNF.ExtensionalSet.Preference.base atoms a => atoms | ConNF.ExtensionalSet.Preference.proper β a a_1 => ∅
Instances For
A extensional set is a collection of β
-tangles for each lower level β < α
, together with
a preference for one of these extensions.
- members : ConNF.Extensions
- pref : ConNF.ExtensionalSet.Preference self.members
Instances For
The even code associated to a extensional set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
One form of extensionality: If there is a proper type index γ < α
, then two extensional sets
with the same elements have the same preference.
This formulation of extensionality holds only for types larger than type zero, since it doesn't take
into account any ⊥
-extension.
One useful form of extensionality in tangled type theory. Two extensional sets are equal if their even codes are equivalent (and hence equal, by uniqueness).
Extensionality in tangled type theory. Two extensional sets are equal if their
β
-extensions are equal for any choice of γ < α
.
TODO: This proof can be golfed quite a bit just by cleaning up the simp
calls.
Extensionality at the lowest level of tangled type theory.
At type 0, all extensional sets have a ⊥
-extension.
Therefore, the extensionality principle in this case applies to the ⊥
-extensions.
Construct a extensional set from an even code.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct an extensional set from any set of t-sets of a smaller level. This uses choice to find the even code representing the given set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Allowable permutations on extensional sets #
We now establish that allowable permutations can act on extensional sets.
Equations
- ConNF.NewAllowable.instMulActionDerivativesExtensions = MulAction.mk ⋯ ⋯
Equations
- One or more equations did not get rendered due to their size.
Allowable permutations act on extensional sets.
Equations
- ConNF.NewAllowable.instMulActionExtensionalSet = MulAction.mk ⋯ ⋯
Extensional sets can easily be turned into structural sets.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The members of extensional sets are determined by their underlying structural sets.
Defining t-sets #
A tangle at the new level α
is a extensional set supported by a small support.
This is τ_α
in the blueprint.
Unlike the type tangle
, this is not an opaque definition, and we can inspect and unfold it.
Equations
- ConNF.NewTSet = { t : ConNF.ExtensionalSet // ∃ (S : ConNF.Support ↑ConNF.α), MulAction.Supports ConNF.NewAllowable (ConNF.Enumeration.carrier S) t }
Instances For
If a set of addresses supports a code, it supports all equivalent codes.
If two codes are equivalent, one is supported if and only if the other is.
For any near-litter N
, the code (α, ⊥, N)
is a tangle at level α
.
This is called a typed near-litter.
Equations
- ConNF.newTypedNearLitter N = ⟨ConNF.ExtensionalSet.intro (let_fun this := ↑N.snd; this) ⋯, ⋯⟩
Instances For
Equations
- ConNF.newSingleton' β t = ⟨ConNF.ExtensionalSet.intro {t.set_lt} ⋯, ⋯⟩
Instances For
Equations
- ConNF.newSingleton β t = ConNF.newSingleton' β ⋯.choose
Instances For
Allowable permutations act on t-sets at level α
.
Equations
- ConNF.NewAllowable.instMulActionNewTSet = MulAction.mk ⋯ ⋯
Equations
- t.toStructSet = (↑t).toStructSet
Instances For
The t-sets at level α
are extensional at all lower proper type indices.
The main introduction rule for t-sets at level α
.
Equations
- ConNF.NewTSet.intro s hs = ⟨ConNF.ExtensionalSet.intro' s, ⋯⟩