Zulip Chat Archive
Stream: mathlib4
Topic: Should Rep R G be funlike?
Kevin Buzzard (Apr 25 2025 at 11:27):
Doing representation theory with Richard Hill using Rep k G I want things like map_add to work, and one way to make this happen would be something like
instance (A B : Rep R G) : FunLike (A ⟶ B) A.V B.V where -- or should it be A B not A.V B.V?
coe f := (f : A.V → B.V)
coe_injective' _ _ hfg := CategoryTheory.ConcreteCategory.hom_ext_iff.mpr (congrFun hfg)
instance (A B : Rep R G) : AddHomClass (A ⟶ B) A B where
map_add f a₁ a₂ := by
change f.hom _ = f.hom _ + f.hom _
simp only [map_add]
But I'm now confused about whether we should be doing this. If we don't make (A ⟶ B) an AddHomClass then we end up with hom f.homs everywhere after the concrete category redesign (or ModuleCat.Hom.hom f's everywhere in ModuleCat). Sorry to be so confused about what should be happening here -- what are we supposed to be doing?
Kevin Buzzard (Apr 25 2025 at 11:35):
Is the issue that Rep R G can't currently be a concrete category because we haven't decided what the best way to do non-category-theory rep theory is, so we don't know what to put for the hom sets??
Eric Wieser (Apr 25 2025 at 11:38):
What's hom f.hom in this context? Are the two homs different?
Eric Wieser (Apr 25 2025 at 11:38):
ModuleCat.Hom.hom f seems ok to me if we can make it use dot notation
Kevin Buzzard (Apr 25 2025 at 11:40):
import Mathlib
variable (R G : Type) [CommRing R] [Group G]
open CategoryTheory ConcreteCategory
instance (A B : Rep R G) (f : A ⟶ B) :
f.hom 0 = 0 := by
-- ⊢ (hom f.hom) 0 = 0
sorry
Kevin Buzzard (Apr 25 2025 at 11:44):
I think the issue is that Rep R G is no longer a concrete category because we don't know what the morphisms are, so to apply f we go through the module category (f.hom is a morphism in the module category) and then hom f.hom is coming from the concrete category. One fix is to make Rep R G FunLike and AddHomClass etc etc, and another fix would be to add some bundled structure for morphisms of representations and make Rep R G concrete.
Edison Xie (Apr 25 2025 at 11:47):
Kevin Buzzard said:
make Rep R G FunLike
Rep R G now is a R-module V and a ringhom fromG to CategoryTheory.End V right?
Aaron Liu (Apr 25 2025 at 11:49):
I have
import Mathlib
variable (R G : Type) [CommRing R] [Group G]
open CategoryTheory
#synth ConcreteCategory (Rep R G) (Action.HomSubtype (ModuleCat R) G)
Kevin Buzzard (Apr 25 2025 at 11:51):
This is something else which is confusing me:
#synth ConcreteCategory (ModuleCat R) (fun A B ↦ A →ₗ[R] B) -- works
instance (A B : ModuleCat R) : FunLike (A ⟶ B) A B := inferInstance -- fails
Aaron Liu (Apr 25 2025 at 11:51):
Now it's confusing me too
Kevin Buzzard (Apr 25 2025 at 11:52):
Aaron Liu said:
I have
import Mathlib variable (R G : Type) [CommRing R] [Group G] open CategoryTheory #synth ConcreteCategory (Rep R G) (Action.HomSubtype (ModuleCat R) G)
This is going to make the infoview even worse, I should think!
Edison Xie (Apr 25 2025 at 11:54):
are these two instance the same on ModuleCat: Action.instConcreteCategoryHomSubtypeV andModuleCat.instConcreteCategoryLinearMapIdCarrier R?
Aaron Liu (Apr 25 2025 at 11:58):
Do you mean
import Mathlib
variable (R G : Type) [CommRing R] [Group G]
open CategoryTheory
instance (A B : Rep R G) (f : A ⟶ B) :
⇑(ConcreteCategory.hom f.hom) = ⇑(ConcreteCategory.hom f) := rfl
Last updated: May 02 2025 at 03:31 UTC