Category of Families as a Symmetric Monoidal Category #
For any category C, the category Fam C of families forms a symmetric monoidal
category with Sum as tensor and Empty as unit.
Objects are pairs (ι : Type, objs : ι → C). Morphisms carry an equivalence
σ : ι₁ ≃ ι₂ together with componentwise C-morphisms.
The tensor uses Sum on index types and Sum.elim on objects, giving
definitional reductions for all structural morphisms (associator, braiding, unitors).
Main results #
Category (FamObj C)— componentwise category with Equiv permutationsMonoidalCategory (FamObj C)— Sum tensor, Empty unitBraidedCategory (FamObj C)— braiding viaSum.swapSymmetricCategory (FamObj C)— braiding is self-inverse
Objects of the family category: a type ι indexing objects of C.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- CatCrypt.Category.FamObj.instCategory = { toCategoryStruct := CatCrypt.Category.FamObj.instCategoryStruct, id_comp := ⋯, comp_id := ⋯, assoc := ⋯ }
Monoidal definitions #
Unit for tensor: empty family.
Equations
- CatCrypt.Category.FamObj.unitObj = { ι := Empty, objs := Empty.elim }
Instances For
Left whiskering: identity on the left component, f on the right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Right whiskering: f on the left component, identity on the right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Associator forward.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Associator backward.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Braiding.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Left and right unitors #
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equiv application lemmas #
Mathlib's Equiv.sumCongr_apply doesn't fire in simp through the
FunLike.coe discrimination tree. These specific lemmas bypass the issue
by stating applications directly. All proved by rfl (definitional).
Equiv-level σ lemmas #
These rewrite Hom.σ (a struct projection returning an Equiv) to the
concrete Equiv constructor. Since Hom.σ is a struct projection (not
going through FunLike.coe), these fire reliably in simp.
Per-constructor simp lemmas for map #
These fire fine in simp because Hom.map is a direct struct projection
(no FunLike.coe coercion chain).
Small morphism-level lemmas #
These operate at the level of whole morphisms (not components), allowing MonoidalCategory axioms to be proved by rewriting rather than fam_ext.
Naturality lemmas for structural morphisms #
These express naturality of assocHom, braidHom, and unitors with respect
to wkR/wkL. Proofs use erw which matches through dependent function
arguments via isDefEq, unlike simp/dsimp which use discrimination trees.
Isomorphisms #
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Simp lemmas bridging class projections to concrete definitions #
Tactic for map-field goals #
For goals involving only structural morphisms (all 𝟙 map components),
erw with isDefEq matching can rewrite inside dependent function arguments
where simp/dsimp discrimination trees cannot. The pattern is:
erw [FamObj.comp_map]to expand compositionserw [specific_map_lemma]to reduce individual.mapcallserw [Category.id_comp]to close residual𝟙 ≫ 𝟙 = 𝟙goals
For naturality axioms, we use morphism-level intermediate lemmas
(assocHom_wkR, braidHom_wkR, etc.) to avoid complex erw chains.
MonoidalCategory #
Equations
- One or more equations did not get rendered due to their size.
BraidedCategory and SymmetricCategory #
Equations
- One or more equations did not get rendered due to their size.
Equations
- CatCrypt.Category.FamObj.instSymmetricCategory = { toBraidedCategory := CatCrypt.Category.FamObj.instBraidedCategory, symmetry := ⋯ }