The admissible index category and its cofilteredness (Stage B, work order B2) #
This file upgrades AdmissibleIndex (the skeletal admissible marked finite
groups of Candidate/AdmissibleIndex.lean) to a category whose morphisms are
the generator-preserving group homomorphisms, and proves that category is
cofiltered.
Cofilteredness is the Lean form of manuscript Lemma 2.1 (finite subdirect
closure) and Lemma 2.2 (cofinality): every finite diagram in
AdmissibleIndex has a cone, built from the single uniform subdirect
construction admissible_subdirect. Two structural facts make this clean:
- Hom uniqueness (
admissibleHom_ext): a morphism is pinned by its action on the marking, and the marking generates the source (AdmissibleIndex.admissible.1 : generates A.q), so any two parallel arrows coincide. The index category has no nontrivial parallel-arrow coherence — equalizers are free, and thecone_mapshalf of cofilteredness is trivial. - Binary cones (
subdirectObj): the skeletalized diagonal subdirect quotient of the family![A, B]admits coordinate projections toAandB.
GammaA is built (in B3) as the cofiltered limit of this category.
Instance gotcha (inherited from AdmissibleIndex.lean) #
Fin n carries the global Fin.instMul (mod-n multiplication), which is not
definitionally equal to the group multiplication transported by skeletalize.
Whenever a Group/Mul (Fin n) is needed we thread the bundled
AdmissibleIndex.groupFin explicitly (@, projection access) so Fin.instMul
is never synthesized — otherwise instance synthesis reports a non-defeq clash and
the elaborator stalls on isDefEq heartbeats.
A generator-preserving morphism of admissible indices: a homomorphism of the skeletal carriers that intertwines the two markings.
The underlying homomorphism of skeletal carriers.
Marking preservation.
Instances For
Two admissible homs are equal once their underlying homomorphisms agree (the marking-preservation field is a proposition).
The identity admissible hom.
Equations
- Q2Presentation.AdmissibleHom.id A = { toMonoidHom := MonoidHom.id (Fin A.n), map_q := ⋯ }
Instances For
Composition: comp f g first applies f, then g.
Equations
- f.comp g = { toMonoidHom := g.toMonoidHom.comp f.toMonoidHom, map_q := ⋯ }
Instances For
The admissible index category: objects are admissible indices, morphisms are generator-preserving homomorphisms.
Equations
- One or more equations did not get rendered due to their size.
Uniqueness of admissible morphisms. Both maps send the marking A.q to
the same values (B.q, by map_q), and A.q generates A
(A.admissible.1), so they agree on a generating set and hence everywhere
(MonoidHom.eq_of_eqOn_dense). Consequently the index category has no
nontrivial parallel arrows.
Nonemptiness: the trivial admissible quotient #
The trivial group is admissibly marked: generation is automatic in a
subsingleton group, both relators evaluate into a subsingleton (so equal 1),
and the two wild generators are 1 ∈ O₂.
The trivial admissible index (carrier Fin 1), witnessing nonemptiness of
the index category. Built by skeletalizing the trivial group PUnit, so its
group structure is the transported one (never Fin.instMul).
Equations
Instances For
Transporting homomorphisms out of a skeletalization #
A morphism out of a skeletalized object is built from a marking-preserving
homomorphism out of the original group G, precomposed with the transport
equivalence Fin (skeletalize G q h).n ≃* G. The group instance on the skeleton
is threaded explicitly so the global Fin.instMul is never synthesized.
The transport equivalence underlying skeletalize, as a MulEquiv
Fin (skeletalize G q h).n ≃* G. Its multiplication on the skeleton side is
forced to be skeletalize's transported one (no Fin.instMul).
Equations
- Q2Presentation.skelEquiv G q h = (Finite.equivFin G).symm.mulEquiv
Instances For
A marking-preserving homomorphism ψ : G →* Fin D.n out of G induces an
admissible morphism skeletalize G q h ⟶ D, by precomposing with the transport
skelEquiv.
Equations
- Q2Presentation.skeletalizeHomOut ψ hψ = { toMonoidHom := ψ.comp (Q2Presentation.skelEquiv G q h).toMonoidHom, map_q := ⋯ }
Instances For
Binary subdirect objects #
The binary subdirect object of A and B: skeletalize the diagonal
subdirect quotient of the two-object family ![A, B] (manuscript Lemma 2.1 with
ι = Fin 2).
Equations
- One or more equations did not get rendered due to their size.
Instances For
First coordinate projection subdirectObj A B ⟶ A (evaluation at index 0,
where ![A, B] 0 is A).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Second coordinate projection subdirectObj A B ⟶ B (evaluation at index 1,
where ![A, B] 1 is B).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Cofilteredness #
The admissible index category is cofiltered (the Lean form of manuscript
Lemma 2.1 + Lemma 2.2). Binary cones are the subdirect objects subdirectObj;
the cone_maps (equalizer) half is automatic because any two parallel arrows are
equal (admissibleHom_ext); nonemptiness is the trivial admissible quotient.