Hypotheses for constructing the fuzz
map #
This file contains the inductive hypotheses required for constructing the fuzz
map.
Even though not everything defined here is strictly necessary for this construction, we bundle
it here for more convenient use later.
Main declarations #
ConNF.ModelData
: Data about the model elements at levelα
, called t-sets.ConNF.Tangle
: A t-set together with a support for it.ConNF.PositionedTangles
: A function that gives each typeα
tangle a unique positionν : μ
.ConNF.TypedObjects
: Allows us to encode near-litters as typeα
t-sets.ConNF.BasePositions
: Almost arbitrarily chosen position functions for atoms and near-litters.ConNF.PositionedObjects
: Hypotheses on the positions of typed objects.
Data about the model elements at level α
. This class asserts the existence of a type of model
elements at level α
called t-sets, and a group of allowable permutations at level α
that act
on the type α
t-sets. We also stipulate that each t-set has a support. There is a natural
embedding of t-sets into structural sets.
- TSet : Type u
The type of model elements that we assume were constructed at stage
α
. Later in the recursion, we will construct this type explicitly, but for now, we will just assume that it exists. - Allowable : Type u
The type of allowable permutations that we assume exists on
α
-tangles. - allowableGroup : Group (ConNF.Allowable α)
- allowableToStructPerm : ConNF.Allowable α →* ConNF.StructPerm α
An embedding from allowable permutations to structural permutations.
- allowableToStructPerm_injective : Function.Injective ⇑ConNF.ModelData.allowableToStructPerm
- allowableAction : MulAction (ConNF.Allowable α) (ConNF.TSet α)
- has_support : ∀ (t : ConNF.TSet α), ∃ (S : ConNF.Support α), MulAction.Supports (ConNF.Allowable α) (ConNF.Enumeration.carrier S) t
- toStructSet : ConNF.TSet α ↪ ConNF.StructSet α
The embedding that converts a t-sets into its underlying structural set.
- toStructSet_smul : ∀ (ρ : ConNF.Allowable α) (t : ConNF.TSet α), ConNF.toStructSet (ρ • t) = ρ • ConNF.toStructSet t
Instances
Allowable permutations can be considered a subtype of structural permutations. This map can be thought of as an inclusion that preserves the group structure.
Equations
- ConNF.Allowable.toStructPerm = ConNF.ModelData.allowableToStructPerm
Instances For
Allowable permutations act on anything that structural permutations do.
Equations
- ConNF.Allowable.instMulActionAllowable = MulAction.compHom X ConNF.Allowable.toStructPerm
Although we use often this in simp
invocations, it is not given the @[simp]
attribute so
that it doesn't get used unnecessarily.
The canonical support for an atom.
Equations
- a.support = ConNF.Enumeration.singleton { path := Quiver.Path.nil, value := Sum.inl a }
Instances For
The model data at level ⊥
is constructed by taking the t-sets to be the atoms, and
the allowable permutations to be the base permutations.
Equations
- ConNF.Bot.modelData = ConNF.ModelData.mk ConNF.Atom ConNF.BasePerm ConNF.Tree.toBotIso.toMonoidHom ⋯ ⋯ ConNF.StructSet.toBot.toEmbedding ⋯
A t-set at level α
together with a support for it. This is a specialisation of the notion
of a tangle which will be defined for arbitrary type indices.
- set : ConNF.TSet ↑α
- support : ConNF.Support ↑α
- support_supports : MulAction.Supports (ConNF.Allowable ↑α) (ConNF.Enumeration.carrier self.support) self.set
Instances For
If α
is a proper type index, an α
-tangle is t-set at level α
,
together with a support for it. If α = ⊥
, then an α
-tangle is an atom.
Equations
- ConNF.Tangle x✝ = match x✝, x with | some α, x => ConNF.TangleCoe α | none, x => ConNF.Atom
Instances For
Each tangle comes with a support. Since we could (a priori) have instances for [ModelData ⊥]
other than that constructed above, it's possible that this isn't a support under the action of
⊥
-allowable permutations. We will later define Tangle.support_supports_lt
which gives the
expected result under suitable hypotheses.
Equations
- x.support = match x✝¹, x✝, x with | some α, x, t => t.support | none, _i, a => ConNF.Atom.support a
Instances For
Equations
Allowable permutations act on tangles.
Equations
- One or more equations did not get rendered due to their size.
Provides a position function for α
-tangles, giving each tangle a unique position ν : μ
.
The existence of this injection proves that there are at most μ
tangles at level α
, and
therefore at most μ
t-sets. Since μ
has a well-ordering, this induces a well-ordering on
α
-tangles: to compare two tangles, simply compare their images under this map.
- pos : ConNF.Tangle α ↪ ConNF.μ
Instances
Equations
- ConNF.instPositionTangleμOfPositionedTangles = { pos := ConNF.PositionedTangles.pos }
Allows us to encode near-litters as α
-tangles. These maps are expected to cohere
with the conditions given in BasePositions
, but this requirement is expressed later.
- typedNearLitter : ConNF.NearLitter ↪ ConNF.TSet ↑α
Encode a near-litter as an
α
-tangle. The resulting model element has a⊥
-extension which contains only this near-litter. - smul_typedNearLitter : ∀ (ρ : ConNF.Allowable ↑α) (N : ConNF.NearLitter), ρ • ConNF.typedNearLitter N = ConNF.typedNearLitter (ConNF.Allowable.toStructPerm ρ (Quiver.Hom.toPath ⋯) • N)
Instances
Almost arbitrarily chosen position functions for atoms and near-litters. The only requirements
they satisfy are included in this class. These requirements are later used to prove that the
Constrains
relation is well-founded.
- posAtom : ConNF.Atom ↪ ConNF.μ
- posNearLitter : ConNF.NearLitter ↪ ConNF.μ
- lt_pos_atom : ∀ (a : ConNF.Atom), ConNF.BasePositions.posNearLitter a.1.toNearLitter < ConNF.BasePositions.posAtom a
- lt_pos_symmDiff : ∀ (a : ConNF.Atom) (N : ConNF.NearLitter), a ∈ symmDiff (ConNF.litterSet N.fst) ↑N → ConNF.BasePositions.posAtom a < ConNF.BasePositions.posNearLitter N
Instances
A position function for atoms.
Equations
- ConNF.instPositionAtomμOfBasePositions = { pos := ConNF.BasePositions.posAtom }
A position function for near-litters.
Equations
- ConNF.instPositionNearLitterμOfBasePositions = { pos := ConNF.BasePositions.posNearLitter }
The assertion that the position of typed near-litters is at least the position of the
near-litter itself. This is used to prove that the alternative extension relation ↝
is
well-founded.
- pos_typedNearLitter : ∀ (N : ConNF.NearLitter) (t : ConNF.Tangle ↑α), t.set = ConNF.typedNearLitter N → ConNF.pos N ≤ ConNF.pos t
Instances
The action of allowable permutations on tangles commutes with the typedNearLitter
function
mapping near-litters to typed near-litters. This can be seen by representing tangles as codes.
The position function at level ⊥
, taken from the BasePositions
.
Equations
- ConNF.Bot.positionedTangles = { pos := ConNF.BasePositions.posAtom }
The identity equivalence between ⊥
-allowable permutations and base permutations.
This equivalence is a group isomorphism.
Equations
- BasePerm.ofBot = Equiv.refl (ConNF.Allowable ⊥)