@@ -3,6 +3,7 @@ Copyright (c) 2020 Kim Morrison. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Kim Morrison
5
5
-/
6
+ import Mathlib.Algebra.BigOperators.Fin
6
7
import Mathlib.CategoryTheory.Monoidal.Linear
7
8
import Mathlib.CategoryTheory.Monoidal.Rigid.FunctorCategory
8
9
import Mathlib.CategoryTheory.Monoidal.Rigid.OfEquivalence
@@ -189,48 +190,86 @@ end
189
190
190
191
end Monoidal
191
192
193
+ section
194
+
192
195
open MonoidalCategory
193
196
194
- /-- Given `X : Action (Type u) G` for `G` a group, then `G × X` (with `G` acting as left
195
- multiplication on the first factor and by `X.ρ` on the second) is isomorphic as a `G`-set to
196
- `G × X` (with `G` acting as left multiplication on the first factor and trivially on the second).
197
- The isomorphism is given by `(g, x) ↦ (g, g⁻¹ • x)`. -/
198
- @[simps]
199
- noncomputable def leftRegularTensorIso (G : Type u) [Group G] (X : Action (Type u) G) :
200
- leftRegular G ⊗ X ≅ leftRegular G ⊗ Action.mk X.V 1 where
201
- hom :=
202
- { hom := fun g => ⟨g.1 , (X.ρ (g.1 ⁻¹ : G) g.2 : X.V)⟩
203
- comm := fun (g : G) => by
204
- funext ⟨(x₁ : G), (x₂ : X.V)⟩
205
- refine Prod.ext rfl ?_
206
- change (X.ρ ((g * x₁)⁻¹ : G) * X.ρ g) x₂ = X.ρ _ _
207
- rw [mul_inv_rev, ← X.ρ.map_mul, inv_mul_cancel_right] }
208
- inv :=
209
- { hom := fun g => ⟨g.1 , X.ρ g.1 g.2 ⟩
210
- comm := fun (g : G) => by
211
- funext ⟨(x₁ : G), (x₂ : X.V)⟩
212
- refine Prod.ext rfl ?_
213
- simp [leftRegular] }
214
- hom_inv_id := by
215
- apply Hom.ext
216
- funext x
217
- refine Prod.ext rfl ?_
218
- change (X.ρ x.1 * X.ρ (x.1 ⁻¹ : G)) x.2 = x.2
219
- rw [← X.ρ.map_mul, mul_inv_cancel, X.ρ.map_one, End.one_def, types_id_apply]
220
- inv_hom_id := by
221
- apply Hom.ext
222
- funext x
223
- refine Prod.ext rfl ?_
224
- change (X.ρ (x.1 ⁻¹ : G) * X.ρ x.1 ) x.2 = x.2
225
- rw [← X.ρ.map_mul, inv_mul_cancel, X.ρ.map_one, End.one_def, types_id_apply]
197
+ variable (G : Type u)
226
198
227
199
/-- The natural isomorphism of `G`-sets `Gⁿ⁺¹ ≅ G × Gⁿ`, where `G` acts by left multiplication on
228
200
each factor. -/
229
201
@[simps!]
230
- noncomputable def diagonalSucc (G : Type *) [Monoid G] (n : ℕ) :
202
+ noncomputable def diagonalSuccIsoTensorDiagonal [Monoid G] (n : ℕ) :
231
203
diagonal G (n + 1 ) ≅ leftRegular G ⊗ diagonal G n :=
232
204
mkIso (Fin.consEquiv _).symm.toIso fun _ => rfl
233
205
206
+ @[deprecated (since := "2025-06-02")] alias diagonalSucc := diagonalSuccIsoTensorDiagonal
207
+
208
+ variable [Group G]
209
+
210
+ /-- Given `X : Action (Type u) G` for `G` a group, then `G × X` (with `G` acting as left
211
+ multiplication on the first factor and by `X.ρ` on the second) is isomorphic as a `G`-set to
212
+ `G × X` (with `G` acting as left multiplication on the first factor and trivially on the second).
213
+ The isomorphism is given by `(g, x) ↦ (g, g⁻¹ • x)`. -/
214
+ @[simps!]
215
+ noncomputable def leftRegularTensorIso (X : Action (Type u) G) :
216
+ leftRegular G ⊗ X ≅ leftRegular G ⊗ trivial G X.V :=
217
+ mkIso (Equiv.toIso {
218
+ toFun g := ⟨g.1 , (X.ρ (g.1 ⁻¹ : G) g.2 : X.V)⟩
219
+ invFun g := ⟨g.1 , X.ρ g.1 g.2 ⟩
220
+ left_inv _ := Prod.ext rfl <| by simp
221
+ right_inv _ := Prod.ext rfl <| by simp }) <| fun _ => by
222
+ ext _
223
+ simp only [tensorObj_V, tensor_ρ, types_comp_apply, tensor_apply, ofMulAction_apply]
224
+ simp
225
+
226
+ /-- An isomorphism of `G`-sets `Gⁿ⁺¹ ≅ G × Gⁿ`, where `G` acts by left multiplication on `Gⁿ⁺¹` and
227
+ `G` but trivially on `Gⁿ`. The map sends `(g₀, ..., gₙ) ↦ (g₀, (g₀⁻¹g₁, g₁⁻¹g₂, ..., gₙ₋₁⁻¹gₙ))`,
228
+ and the inverse is `(g₀, (g₁, ..., gₙ)) ↦ (g₀, g₀g₁, g₀g₁g₂, ..., g₀g₁...gₙ).` -/
229
+ noncomputable def diagonalSuccIsoTensorTrivial :
230
+ ∀ n : ℕ, diagonal G (n + 1 ) ≅ leftRegular G ⊗ trivial G (Fin n → G)
231
+ | 0 =>
232
+ diagonalOneIsoLeftRegular G ≪≫
233
+ (ρ_ _).symm ≪≫ tensorIso (Iso.refl _) (tensorUnitIso (Equiv.ofUnique PUnit _).toIso)
234
+ | n + 1 =>
235
+ diagonalSuccIsoTensorDiagonal _ _ ≪≫
236
+ tensorIso (Iso.refl _) (diagonalSuccIsoTensorTrivial n) ≪≫
237
+ leftRegularTensorIso _ _ ≪≫
238
+ tensorIso (Iso.refl _)
239
+ (mkIso (Fin.insertNthEquiv (fun _ => G) 0 ).toIso fun _ => rfl)
240
+
241
+ variable {G}
242
+
243
+ @[simp]
244
+ theorem diagonalSuccIsoTensorTrivial_hom_hom_apply {n : ℕ} (f : Fin (n + 1 ) → G) :
245
+ (diagonalSuccIsoTensorTrivial G n).hom.hom f =
246
+ (f 0 , fun i => (f (Fin.castSucc i))⁻¹ * f i.succ) := by
247
+ induction' n with n hn
248
+ · exact Prod.ext rfl (funext fun x => Fin.elim0 x)
249
+ · refine Prod.ext rfl (funext fun x => ?_)
250
+ induction' x using Fin.cases
251
+ <;> simp_all only [tensorObj_V, diagonalSuccIsoTensorTrivial, Iso.trans_hom, tensorIso_hom,
252
+ Iso.refl_hom, id_tensorHom, comp_hom, whiskerLeft_hom, types_comp_apply, whiskerLeft_apply,
253
+ leftRegularTensorIso_hom_hom, tensor_ρ, tensor_apply, ofMulAction_apply]
254
+ <;> simp [ofMulAction_V, types_tensorObj_def, Fin.tail, Fin.castSucc_fin_succ]
255
+
256
+ @[simp]
257
+ theorem diagonalSuccIsoTensorTrivial_inv_hom_apply {n : ℕ} (g : G) (f : Fin n → G) :
258
+ (diagonalSuccIsoTensorTrivial G n).inv.hom (g, f) =
259
+ (g • Fin.partialProd f : Fin (n + 1 ) → G) := by
260
+ induction' n with n hn generalizing g
261
+ · funext (x : Fin 1 )
262
+ simp [diagonalSuccIsoTensorTrivial, diagonalOneIsoLeftRegular, Subsingleton.elim x 0 ,
263
+ ofMulAction_V]
264
+ · funext x
265
+ induction' x using Fin.cases
266
+ <;> simp_all only [diagonalSuccIsoTensorTrivial, Iso.trans_inv, comp_hom, mkIso_inv_hom,
267
+ tensorObj_V, types_comp_apply, leftRegularTensorIso_inv_hom, tensor_ρ, tensor_apply,
268
+ ofMulAction_apply]
269
+ <;> simp_all [types_tensorObj_def, mul_assoc, Fin.partialProd_succ', ofMulAction_V]
270
+
271
+ end
272
+
234
273
end Action
235
274
236
275
namespace CategoryTheory.Functor
0 commit comments