Normal forms for morphisms in SimplexCategoryGenRel. #
In this file, we establish that P_δ and P_σ morphisms in SimplexCategoryGenRel
each admits a normal form.
In both cases, the normal forms are encoded as an integer m, and a strictly increasing
list of integers [i₀,…,iₙ] such that iₖ ≤ m + k for all k. We define a predicate
isAdmissible m : List ℕ → Prop encoding this property. And provide some lemmas to help
work with such lists.
Normal forms for P_σ morphisms are encoded by m-admissible lists, in which case the list
[i₀,…,iₙ] represents the morphism σ iₙ ≫ ⋯ ≫ σ i₀ : .mk (m + n) ⟶ .mk n.
Normal forms for P_δ morphisms are encoded by (m + 1)-admissible lists, in which case the list
[i₀,…,iₙ] represents the morphism δ i₀ ≫ ⋯ ≫ δ iₙ : .mk n ⟶ .mk (m + n).
The results in this file are to be treated as implementation-only, and they only serve as stepping
stones towards proving that the canonical functor
toSimplexCategory : SimplexCategoryGenRel ⥤ SimplexCategory is an equivalence.
References: #
TODOs: #
- Show that every
P_δadmits a unique normal form.
A list of natural numbers [i₀, ⋯, iₙ] is said to be m-admissible (for m : ℕ) if
i₀ < ⋯ < iₙ and iₖ ≤ m + k for all k. This would suggest the definition
L.IsChain (· < ·) ∧ ∀ k, (h : k < L.length) → L[k] ≤ m + k.
However, we instead define IsAdmissible inductively and show, in
isAdmissible_iff_isChain_and_le, that this is equivalent to the non-inductive definition.
- nil (m : ℕ) : IsAdmissible m []
- singleton {m a : ℕ} (ha : a ≤ m) : IsAdmissible m [a]
- cons_cons {m a b : ℕ} {L' : List ℕ} (hab : a < b) (hbL : IsAdmissible (m + 1) (b :: L')) (ha : a ≤ m) : IsAdmissible m (a :: b :: L')
Instances For
The tail of an m-admissible list is (m+1)-admissible.
Alias of SimplexCategoryGenRel.IsAdmissible.of_cons.
The tail of an m-admissible list is (m+1)-admissible.
If (a :: l) is m-admissible then a is less than all elements of l
The head of an m-admissible list.
Equations
- hl.head = hl.getElemAsFin 0 ⋯
Instances For
The construction simplicialInsert describes inserting an element in a list of integer and
moving it to its "right place" according to the simplicial relations. Somewhat miraculously,
the algorithm is the same for the first or the fifth simplicial relations, making it "valid"
when we treat the list as a normal form for a morphism satisfying P_δ, or for a morphism
satisfying P_σ!
This is similar in nature to List.orderedInsert, but note that we increment one of the element
every time we perform an exchange, making it a different construction.
Equations
Instances For
simplicialInsert just adds one to the length.
simplicialInsert preserves admissibility
Given a sequence L = [ i 0, ..., i b ], standardσ m L i is the morphism
σ (i b) ≫ … ≫ σ (i 0). The construction is provided for any list of natural numbers,
but it is intended to behave well only when the list is admissible.
Equations
Instances For
simplicialEvalσ is a lift to ℕ of (toSimplexCategory.map (standardσ m L _ _)).toOrderHom.
Rather than defining it as such, we define it inductively for less painful inductive reasoning,
(see simplicialEvalσ_of_isAdmissible).
It is expected to produce the correct result only if L is admissible, and values for
non-admissible lists should be considered junk values. Similarly, values for out-of-bounds inputs
are junk values.
Equations
- One or more equations did not get rendered due to their size.
- SimplexCategoryGenRel.simplicialEvalσ [] j = j
Instances For
Performing a simplicial insertion in a list is the same as composition on the right by the corresponding degeneracy operator.
Using standardσ_simplicialInsert, we can prove that every morphism satisfying P_σ is equal
to some standardσ for some admissible list of indices.
We can characterize elements in an admissible list as exactly those for which
simplicialEvalσ takes the same value twice in a row.