@@ -68,12 +68,26 @@ lemma coe_of {V : Type u} [add_comm_group V] [module k V] (ρ : G →* (V →ₗ
6868@[simp] lemma of_ρ {V : Type u} [add_comm_group V] [module k V] (ρ : G →* (V →ₗ[k] V)) :
6969 (of ρ).ρ = ρ := rfl
7070
71+ @[simp] lemma Action_ρ_eq_ρ {A : Rep k G} : Action.ρ A = A.ρ := rfl
72+
73+ /-- Allows us to apply lemmas about the underlying `ρ`, which would take an element `g : G` rather
74+ than `g : Mon.of G` as an argument. -/
75+ lemma of_ρ_apply {V : Type u} [add_comm_group V] [module k V]
76+ (ρ : representation k G V) (g : Mon.of G) :
77+ (Rep.of ρ).ρ g = ρ (g : G) := rfl
78+
7179-- Verify that limits are calculated correctly.
7280noncomputable example : preserves_limits (forget₂ (Rep k G) (Module.{u} k)) :=
7381by apply_instance
7482noncomputable example : preserves_colimits (forget₂ (Rep k G) (Module.{u} k)) :=
7583by apply_instance
7684
85+ @[simp] lemma monoidal_category.braiding_hom_apply {A B : Rep k G} (x : A) (y : B) :
86+ Action.hom.hom (β_ A B).hom (tensor_product.tmul k x y) = tensor_product.tmul k y x := rfl
87+
88+ @[simp] lemma monoidal_category.braiding_inv_apply {A B : Rep k G} (x : A) (y : B) :
89+ Action.hom.hom (β_ A B).inv (tensor_product.tmul k y x) = tensor_product.tmul k x y := rfl
90+
7791section linearization
7892
7993variables (k G)
@@ -117,6 +131,56 @@ noncomputable def linearization_of_mul_action_iso (n : ℕ) :
117131 (linearization k G).1 .1 .obj (Action.of_mul_action G (fin n → G))
118132 ≅ of_mul_action k G (fin n → G) := iso.refl _
119133
134+ variables {k G}
135+
136+ /-- Given an element `x : A`, there is a natural morphism of representations `k[G] ⟶ A` sending
137+ `g ↦ A.ρ(g)(x).` -/
138+ @[simps] noncomputable def left_regular_hom (A : Rep k G) (x : A) :
139+ Rep.of_mul_action k G G ⟶ A :=
140+ { hom := finsupp.lift _ _ _ (λ g, A.ρ g x),
141+ comm' := λ g,
142+ begin
143+ refine finsupp.lhom_ext' (λ y, linear_map.ext_ring _),
144+ simpa only [linear_map.comp_apply, Module.comp_def, finsupp.lsingle_apply,
145+ finsupp.lift_apply, Action_ρ_eq_ρ, of_ρ_apply, representation.of_mul_action_single,
146+ finsupp.sum_single_index, zero_smul, one_smul, smul_eq_mul, A.ρ.map_mul],
147+ end }
148+
149+ lemma left_regular_hom_apply {A : Rep k G} (x : A) :
150+ (left_regular_hom A x).hom (finsupp.single 1 1 ) = x :=
151+ begin
152+ simpa only [left_regular_hom_hom, finsupp.lift_apply, finsupp.sum_single_index, one_smul,
153+ A.ρ.map_one, zero_smul],
154+ end
155+
156+ /-- Given a `k`-linear `G`-representation `A`, there is a `k`-linear isomorphism between
157+ representation morphisms `Hom(k[G], A)` and `A`. -/
158+ @[simps] noncomputable def left_regular_hom_equiv (A : Rep k G) :
159+ (Rep.of_mul_action k G G ⟶ A) ≃ₗ[k] A :=
160+ { to_fun := λ f, f.hom (finsupp.single 1 1 ),
161+ map_add' := λ x y, rfl,
162+ map_smul' := λ r x, rfl,
163+ inv_fun := λ x, left_regular_hom A x,
164+ left_inv := λ f,
165+ begin
166+ refine Action.hom.ext _ _ (finsupp.lhom_ext' (λ (x : G), linear_map.ext_ring _)),
167+ have : f.hom (((of_mul_action k G G).ρ) x (finsupp.single (1 : G) (1 : k)))
168+ = A.ρ x (f.hom (finsupp.single (1 : G) (1 : k))) :=
169+ linear_map.ext_iff.1 (f.comm x) (finsupp.single 1 1 ),
170+ simp only [linear_map.comp_apply, finsupp.lsingle_apply,
171+ left_regular_hom_hom, finsupp.lift_apply, finsupp.sum_single_index, one_smul, ←this ,
172+ zero_smul, of_ρ_apply, representation.of_mul_action_single x (1 : G) (1 : k), smul_eq_mul,
173+ mul_one],
174+ end ,
175+ right_inv := λ x, left_regular_hom_apply x }
176+
177+ lemma left_regular_hom_equiv_symm_single {A : Rep k G} (x : A) (g : G) :
178+ ((left_regular_hom_equiv A).symm x).hom (finsupp.single g 1 ) = A.ρ g x :=
179+ begin
180+ simp only [left_regular_hom_equiv_symm_apply, left_regular_hom_hom,
181+ finsupp.lift_apply, finsupp.sum_single_index, zero_smul, one_smul],
182+ end
183+
120184end linearization
121185end
122186section
162226`G`-representation `B,` the `k`-linear map underlying the resulting map `B ⟶ iHom(A, A ⊗ B)` is
163227given by flipping the arguments in the natural `k`-bilinear map `A →ₗ[k] B →ₗ[k] A ⊗ B`. -/
164228@[simp] lemma ihom_coev_app_hom :
165- Action.hom.hom ((ihom.coev A).app B) =
166- (tensor_product.mk _ _ _).flip :=
229+ Action.hom.hom ((ihom.coev A).app B) = (tensor_product.mk _ _ _).flip :=
167230begin
168231 refine linear_map.ext (λ x, linear_map.ext (λ y, _)),
169232 simpa only [ihom_coev_app_def, functor.map_comp, comp_hom,
@@ -208,9 +271,79 @@ the identity map on `Homₖ(A, B).` -/
208271 tensor_product.uncurry _ _ _ _ linear_map.id.flip :=
209272monoidal_closed_uncurry_hom _
210273
274+ variables (A B C)
275+
276+ /-- There is a `k`-linear isomorphism between the sets of representation morphisms`Hom(A ⊗ B, C)`
277+ and `Hom(B, Homₖ(A, C))`. -/
278+ noncomputable def monoidal_closed.linear_hom_equiv :
279+ (A ⊗ B ⟶ C) ≃ₗ[k] (B ⟶ (A ⟶[Rep k G] C)) :=
280+ { map_add' := λ f g, rfl,
281+ map_smul' := λ r f, rfl, ..(ihom.adjunction A).hom_equiv _ _ }
282+
283+ /-- There is a `k`-linear isomorphism between the sets of representation morphisms`Hom(A ⊗ B, C)`
284+ and `Hom(A, Homₖ(B, C))`. -/
285+ noncomputable def monoidal_closed.linear_hom_equiv_comm :
286+ (A ⊗ B ⟶ C) ≃ₗ[k] (A ⟶ (B ⟶[Rep k G] C)) :=
287+ (linear.hom_congr k (β_ A B) (iso.refl _)) ≪≫ₗ
288+ monoidal_closed.linear_hom_equiv _ _ _
289+
290+ variables {A B C}
291+
292+ lemma monoidal_closed.linear_hom_equiv_hom (f : A ⊗ B ⟶ C) :
293+ (monoidal_closed.linear_hom_equiv A B C f).hom =
294+ (tensor_product.curry f.hom).flip :=
295+ monoidal_closed_curry_hom _
296+
297+ lemma monoidal_closed.linear_hom_equiv_comm_hom (f : A ⊗ B ⟶ C) :
298+ (monoidal_closed.linear_hom_equiv_comm A B C f).hom =
299+ tensor_product.curry f.hom :=
300+ begin
301+ dunfold monoidal_closed.linear_hom_equiv_comm,
302+ refine linear_map.ext (λ x, linear_map.ext (λ y, _)),
303+ simp only [linear_equiv.trans_apply, monoidal_closed.linear_hom_equiv_hom,
304+ linear.hom_congr_apply, iso.refl_hom, iso.symm_hom, linear_map.to_fun_eq_coe,
305+ linear_map.coe_comp, function.comp_app, linear.left_comp_apply, linear.right_comp_apply,
306+ category.comp_id, Action.comp_hom, linear_map.flip_apply, tensor_product.curry_apply,
307+ Module.coe_comp, function.comp_app, monoidal_category.braiding_inv_apply],
308+ end
309+
310+ lemma monoidal_closed.linear_hom_equiv_symm_hom (f : B ⟶ (A ⟶[Rep k G] C)) :
311+ ((monoidal_closed.linear_hom_equiv A B C).symm f).hom =
312+ tensor_product.uncurry k A B C f.hom.flip :=
313+ monoidal_closed_uncurry_hom _
314+
315+ lemma monoidal_closed.linear_hom_equiv_comm_symm_hom (f : A ⟶ (B ⟶[Rep k G] C)) :
316+ ((monoidal_closed.linear_hom_equiv_comm A B C).symm f).hom =
317+ tensor_product.uncurry k A B C f.hom :=
318+ begin
319+ dunfold monoidal_closed.linear_hom_equiv_comm,
320+ refine tensor_product.algebra_tensor_module.curry_injective
321+ (linear_map.ext (λ x, linear_map.ext (λ y, _))),
322+ simp only [linear_equiv.trans_symm, linear_equiv.trans_apply, linear.hom_congr_symm_apply,
323+ iso.refl_inv, linear_map.coe_comp, function.comp_app, category.comp_id, Action.comp_hom,
324+ monoidal_closed.linear_hom_equiv_symm_hom, tensor_product.algebra_tensor_module.curry_apply,
325+ linear_map.coe_restrict_scalars, linear_map.to_fun_eq_coe, linear_map.flip_apply,
326+ tensor_product.curry_apply, Module.coe_comp, function.comp_app,
327+ monoidal_category.braiding_hom_apply, tensor_product.uncurry_apply],
328+ end
329+
211330end
212331end Rep
332+ namespace representation
333+ variables {k G : Type u} [comm_ring k] [monoid G] {V W : Type u}
334+ [add_comm_group V] [add_comm_group W] [module k V] [module k W]
335+ (ρ : representation k G V) (τ : representation k G W)
336+
337+ /-- Tautological isomorphism to help Lean in typechecking. -/
338+ def Rep_of_tprod_iso : Rep.of (ρ.tprod τ) ≅ Rep.of ρ ⊗ Rep.of τ := iso.refl _
339+
340+ lemma Rep_of_tprod_iso_apply (x : tensor_product k V W) :
341+ (Rep_of_tprod_iso ρ τ).hom.hom x = x := rfl
342+
343+ lemma Rep_of_tprod_iso_inv_apply (x : tensor_product k V W) :
344+ (Rep_of_tprod_iso ρ τ).inv.hom x = x := rfl
213345
346+ end representation
214347/-!
215348# The categorical equivalence `Rep k G ≌ Module.{u} (monoid_algebra k G)`.
216349-/
0 commit comments