Zulip Chat Archive
Stream: mathlib4
Topic: Concrete action category
Christian Merten (Jan 11 2024 at 16:09):
I would like to generalise docs#Action.ofMulAction to more concrete categories other than Type
. In particular I need this for FintypeCat
, but I think one could generalise to any ConcreteCategory V
where forget V
is Full
, i.e.
import Mathlib
open CategoryTheory
variable {V : Type (u + 1)} [LargeCategory V] {G : MonCat.{u}} [ConcreteCategory V]
@[simps]
def Concrete.MulAction.of [Full (forget V)] (X : V) [MulAction G ((forget _).obj X)] : Action V G where
V := X
ρ := MonCat.ofHom {
toFun := by
intro g
let f : ((forget V).obj X) ⟶ ((forget V).obj X) := fun x => g • x
exact Full.preimage f
map_one' := by
apply (forget V).map_injective
ext
simp only [one_smul, Full.witness, End.one_def, FunctorToTypes.map_id_apply]
map_mul' := by
intro g h
apply (forget V).map_injective
ext
simp only [Full.witness, End.mul_def, FunctorToTypes.map_comp_apply, mul_smul]
}
But I don't want this to make the usage of Action.ofMulAction
worse. Currently
def Types.ofMulAction (X : Type u) [MulAction G X] : Action (Type u) G :=
let i : MulAction G ((forget (Type u)).obj X) := by
show MulAction G X
infer_instance
Concrete.MulAction.of X
example (X : Type u) [MulAction G X] (g : G) (x : X) : (Types.ofMulAction X).ρ g x = g • x := rfl
works, but has unwanted boilerplate code because Lean does not infer MulAction G X
automatically, because it somehow can't see through (forget (Type u)).obj X
.
Christian Merten (Jan 11 2024 at 16:11):
Do you think this is worth it or should one better introduce specialized ofMulAction
s for each full subcategory of Type u
that one encounters?
Adam Topaz (Jan 11 2024 at 16:59):
I'm not sure how useful this would be since there aren't many concrete categories "in the wild" where the forgetful functor is full.
Christian Merten (Jan 11 2024 at 17:00):
So I just go with a specialized constructor Action.FintypeCat.ofMulAction
?
Adam Topaz (Jan 11 2024 at 17:01):
Yes, I think so. If there ends up being another case which fits this model then it may be worth adding this general construction, but I can't think of a natural example.
Christian Merten (Jan 11 2024 at 17:07):
Follow up question: Where would this Action.FintypeCat.ofMulAction
go? In RepresentationTheory.Action.Basic
I would have to add an import for FintypeCat
, do I add an extra file for this? Or do I just put this where I actually use it?
Christian Merten (Jan 11 2024 at 17:09):
Alternative suggestion: How about making a new file RepresentationTheory.Action.Concrete
and move Action.ofMulAction
and associated lemmas there.
Last updated: May 02 2025 at 03:31 UTC