The cloud
map #
The cloud
map from γ
to β ≠ γ
sends a set of t-sets of type γ
to a set of t-sets
of type β
. Each t-set of type γ
in the domain is sent to a "cloud" of β
-typed near-litters,
representing "junk" at level β
. This map will used to identify codes that represent the same TTT
object.
An important property for intuition is that the cloud
maps have disjoint ranges (except on empty
codes) and are each injective, so if we connect each code to its images under the cloud
maps,
we get a tree (except for empty codes, which form a complete graph).
Main declarations #
ConNF.cloud
: Thecloud
map fromγ
-tangles toβ
-tangles, assumingγ ≠ β
.ConNF.extension
: Thecloud
map ifγ ≠ β
, otherwise the identity map.ConNF.cloudCode
: Thecloud
map as a map from codes with any extension to codes of extensionβ
.ConNF.CloudRel
: The relation on codes generated bycloudCode
. It relatesc
tod
iffd
is an image ofc
under thecloudCode
map. This relation is well-founded on nonempty codes. SeeConNF.cloudRel'_wellFounded
.
Notation #
The cloud map. We map each t-set to all typed near-litters near any fuzz
ed tangle with this
t-set, and take the union over all t-sets in the input.
Equations
- ConNF.cloud hγβ s = {u : ConNF.TSet ↑β | ∃ (t : ConNF.Tangle γ), t.set_lt ∈ s ∧ ∃ (N : ConNF.NearLitter), N.fst = ConNF.fuzz hγβ t ∧ u = ConNF.typedNearLitter N}
Instances For
We don't need to prove that the ranges of the cloud
maps are disjoint for different β
, since
this holds at the type level.
We now show that there are only finitely many iterated images under any inverse cloud
map, in the
case of nonempty sets.
The minimum tangle of a nonempty set of tangles.
Equations
- ConNF.minTangle s hs = ⋯.min s hs
Instances For
The minimum tangle with a t-set in s
.
Equations
- ConNF.minTSet s hs = ConNF.minTangle (ConNF.Tangle.set_lt ⁻¹' s) ⋯
Instances For
Tool that lets us use well-founded recursion on codes via μ
.
This maps a nonempty code to the least pos of a tangle in the extension of the code.
Equations
- ConNF.codeMinMap c = ConNF.pos (ConNF.minTSet (↑c).members ⋯)
Instances For
The pullback <
relation on codes is well-founded.
The cloud
map, phrased as a function on sets of γ
-tangles, but if γ = β
, this is the
identity function.
Equations
- ConNF.extension s γ = if hβγ : β = ↑γ then cast ⋯ s else ConNF.cloud hβγ s
Instances For
The cloud
map, phrased as a function on α
-codes, but if the code's level matches β
,
this is the identity function. This is written in a weird way in order to make (cloudCode β c).1
defeq to β
.
Equations
- ConNF.cloudCode β c = ConNF.Code.mk (↑β) (ConNF.extension c.members β)
Instances For
Alias of the reverse direction of ConNF.cloudCode_isEmpty
.
This relation on α
-codes allows us to state that there are only finitely many iterated images
under the inverse cloud
map. Note that we require the map to actually change the data, by
stipulating that c.1 ≠ β
.
- intro: ∀ [inst : ConNF.Params] [inst_1 : ConNF.Level] [inst_2 : ConNF.BasePositions] [inst_3 : ConNF.ModelDataLt] [inst_4 : ConNF.PositionedTanglesLt] [inst_5 : ConNF.TypedObjectsLt] {c : ConNF.Code} (β : ConNF.Λ) [inst_6 : ConNF.LtLevel ↑β], c.β ≠ ↑β → c ↝₀ ConNF.cloudCode β c
Instances For
Equations
- ConNF.«term_↝₀_» = Lean.ParserDescr.trailingNode `ConNF.term_↝₀_ 62 62 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ↝₀ ") (Lean.ParserDescr.cat `term 63))
Instances For
This relation on α
-codes allows us to state that there are only finitely many iterated images
under the inverse cloud
map.
- intro: ∀ [inst : ConNF.Params] [inst_1 : ConNF.Level] [inst_2 : ConNF.BasePositions] [inst_3 : ConNF.ModelDataLt] [inst_4 : ConNF.PositionedTanglesLt] [inst_5 : ConNF.TypedObjectsLt] {c : ConNF.NonemptyCode} (β : ConNF.Λ) [inst_6 : ConNF.LtLevel ↑β], (↑c).β ≠ ↑β → c ↝ ⟨ConNF.cloudCode β ↑c, ⋯⟩
Instances For
Equations
- ConNF.«term_↝_» = Lean.ParserDescr.trailingNode `ConNF.term_↝_ 62 62 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ↝ ") (Lean.ParserDescr.cat `term 63))
Instances For
There are only finitely many iterated images under any inverse cloud
map.
There is at most one inverse under an cloud
map. This corresponds to the fact that there is
only one code which is related (on the left) to any given code under the cloud
map relation.