|
| 1 | +/- |
| 2 | +Copyright (c) 2022 Scott Morrison. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Scott Morrison |
| 5 | +-/ |
| 6 | +import category_theory.simple |
| 7 | +import category_theory.subobject.basic |
| 8 | +import category_theory.preadditive.schur |
| 9 | +import algebra.algebra.restrict_scalars |
| 10 | +import algebra.algebra.tower |
| 11 | +import algebra.category.Module.algebra |
| 12 | +import algebra.category.Module.images |
| 13 | +import algebra.category.Module.biproducts |
| 14 | +import algebra.category.Module.simple |
| 15 | +import data.mv_polynomial.basic |
| 16 | +import algebra.free_algebra |
| 17 | +import data.complex.module |
| 18 | + |
| 19 | +/-! |
| 20 | +# "Introduction to representation theory" by Etingof |
| 21 | +
|
| 22 | +This tutorial file follows along with the lecture notes "Introduction to representation theory", |
| 23 | +by Pavel Etingof and other contributors. |
| 24 | +
|
| 25 | +These lecture notes are available freely online at <https://klein.mit.edu/~etingof/repb.pdf>. |
| 26 | +
|
| 27 | +This tutorial is (extremely) incomplete at present. |
| 28 | +The goal is to work through the lecture notes, |
| 29 | +showing how to use the definitions and results from mathlib |
| 30 | +to establish the results in Etingof's notes. (We are not giving separate proofs here!) |
| 31 | +
|
| 32 | +Our intention is (sadly) to skip all the problems, and many of the examples. |
| 33 | +
|
| 34 | +Often results are proved by reference to (much) more general facts in mathlib. |
| 35 | +-/ |
| 36 | + |
| 37 | +axiom skipped {p : Sort*} : p |
| 38 | + |
| 39 | +universes u |
| 40 | +open category_theory finite_dimensional |
| 41 | + |
| 42 | +noncomputable theory |
| 43 | + |
| 44 | +/-! |
| 45 | +## Chapter 2 "Basic notions of representation theory" |
| 46 | +-/ |
| 47 | + |
| 48 | +/-! |
| 49 | +### 2.2 "Algebras" |
| 50 | +-/ |
| 51 | + |
| 52 | +-- Definition 2.2.1: An associative algebra. |
| 53 | +variables {k : Type*} [field k] |
| 54 | +variables {A : Type*} [ring A] [algebra k A] |
| 55 | + |
| 56 | +-- Etingof uses the word "unit" to refer to the identity in an algebra. |
| 57 | +-- Currently in mathlib all algebras are unital |
| 58 | +-- (although non-unital rings exists as `non_unital_ring`) |
| 59 | +-- Thus we skip Definition 2.2.2 and Proposition 2.2.3 |
| 60 | + |
| 61 | +-- Example 2.2.4 (1)-(5) |
| 62 | +example : algebra k k := by apply_instance |
| 63 | +example {X : Type*} [fintype X] : algebra k (mv_polynomial X k) := by apply_instance |
| 64 | +example {V : Type*} [add_comm_group V] [module k V] : algebra k (V →ₗ[k] V) := by apply_instance |
| 65 | +example {X : Type*} : algebra k (free_algebra k X) := by apply_instance |
| 66 | +example {G : Type*} [group G] : algebra k (monoid_algebra k G) := by apply_instance |
| 67 | + |
| 68 | +-- Definition 2.2.5: A commutative algebra is described as: |
| 69 | +example {A : Type*} [comm_ring A] [algebra k A] := true |
| 70 | + |
| 71 | +-- Definition 2.2.6: algebra homomorphisms: |
| 72 | +example {B : Type*} [ring B] [algebra k B] (f : A →ₐ[k] B) := true |
| 73 | + |
| 74 | +/-! |
| 75 | +## 2.3 "Representations" |
| 76 | +-/ |
| 77 | + |
| 78 | +-- Definition 2.3.1 |
| 79 | +-- A representation (of an associative algebra) will usually be described as a module. |
| 80 | +variables {M : Type*} [add_comm_group M] [module k M] [module A M] [is_scalar_tower k A M] |
| 81 | + |
| 82 | +-- or we can use `Module A`, for a "bundled" `A`-module, |
| 83 | +-- which is useful when we want access to the category theory library. |
| 84 | +variables (N : Module.{u} A) |
| 85 | + |
| 86 | +-- We can translate between these easily: |
| 87 | +-- "bundle" a type with appropriate typeclasses |
| 88 | +example : Module A := Module.of A M |
| 89 | +-- a "bundled" module has a coercion to `Type`, |
| 90 | +-- that comes equipped with the appropriate typeclasses: |
| 91 | +example : module A N := by apply_instance |
| 92 | + |
| 93 | +-- Remark 2.3.2: Right `A`-modules are handled as left `Aᵐᵒᵖ`-modules: |
| 94 | +example : Module Aᵐᵒᵖ := Module.of Aᵐᵒᵖ A |
| 95 | +-- Right modules are not extensively developed in mathlib at this point, |
| 96 | +-- and you may run into difficulty using them. |
| 97 | + |
| 98 | +-- It is helpful when working with `Module` to run |
| 99 | +open_locale Module |
| 100 | +-- which adds some instances. |
| 101 | + |
| 102 | +-- Example 2.3.3 |
| 103 | +-- (1) The zero module |
| 104 | +example : Module A := Module.of A punit |
| 105 | +-- (2) The left regular module |
| 106 | +example : Module A := Module.of A A |
| 107 | +-- (3) Modules over a field are vector spaces. |
| 108 | +-- (Because we handle vector spaces as modules in mathlib, this is empty of content.) |
| 109 | +example (V : Type*) [add_comm_group V] [module k V] : Module k := Module.of k V |
| 110 | +-- (4) is trickier, |
| 111 | +-- and we would probably want to formalise as an equivalence of categories, |
| 112 | +-- because "it's hard to get back to where we started". |
| 113 | +example (X : Type*) : Module (free_algebra k X) ≃ Σ (V : Module k), X → (V ⟶ V) := skipped |
| 114 | + |
| 115 | +-- Definition 2.3.4 |
| 116 | +-- A subrepresentation can be described using `submodule`, |
| 117 | +variables (S : submodule A M) |
| 118 | +-- or using the category theory library either as a monomorphism |
| 119 | +variables (S' : Module.{u} A) (i : S' ⟶ N) [mono i] |
| 120 | +-- or a subobject (defined as an isomorphism class of monomorphisms) |
| 121 | +variables (S'' : subobject N) |
| 122 | + |
| 123 | +-- Definition 2.3.5: We express that a representation is "irreducible" using `simple`. |
| 124 | +example (N : Module A) : Prop := simple N |
| 125 | +-- there's also a predicate for unbundled modules: |
| 126 | +example : simple (Module.of A M) ↔ is_simple_module A M := simple_iff_is_simple_module |
| 127 | + |
| 128 | +-- Definition 2.3.6: homomorphisms, intertwiners, isomorphisms |
| 129 | +-- For unbundled representations, we use linear maps: |
| 130 | +variables {M' : Type*} [add_comm_group M'] [module k M'] [module A M'] [is_scalar_tower k A M'] |
| 131 | +variables (f : M →ₗ[A] M') |
| 132 | +-- while for bundled representations we use the categorical morphism arrow: |
| 133 | +variables (N₁ N₂ : Module.{u} A) (g : N₁ ⟶ N₂) |
| 134 | +-- For isomorphisms, use one of |
| 135 | +variables (e : M ≃ₗ[A] M') (j : N₁ ≅ N₂) |
| 136 | + |
| 137 | +-- Definition 2.3.7: direct sum |
| 138 | +example : module A (M × M') := by apply_instance |
| 139 | +example (N₁ N₂ : Module.{u} A) : Module.{u} A := N₁ ⊞ N₂ |
| 140 | +example (N₁ N₂ : Module.{u} A) : N₁ ⊞ N₂ ≅ Module.of A (N₁ × N₂) := Module.biprod_iso_prod N₁ N₂ |
| 141 | + |
| 142 | +-- Definition 2.3.8: indecomposable |
| 143 | +example (N : Module A) : Prop := indecomposable N |
| 144 | +example (N : Module A) [simple N] : indecomposable N := indecomposable_of_simple N |
| 145 | + |
| 146 | +-- Proposition 2.3.9 (Schur's lemma) |
| 147 | +example (N₁ N₂ : Module.{u} A) [simple N₁] (f : N₁ ⟶ N₂) (w : f ≠ 0) : mono f := |
| 148 | +mono_of_nonzero_from_simple w |
| 149 | +example (N₁ N₂ : Module.{u} A) [simple N₂] (f : N₁ ⟶ N₂) (w : f ≠ 0) : epi f := |
| 150 | +epi_of_nonzero_to_simple w |
| 151 | +example (N₁ N₂ : Module.{u} A) [simple N₁] [simple N₂] (f : N₁ ⟶ N₂) (w : f ≠ 0) : is_iso f := |
| 152 | +is_iso_of_hom_simple w |
| 153 | + |
| 154 | +-- Corollary 2.3.10 (Schur's lemma over an algebraically closed field) |
| 155 | +-- Unfortunately these can't be global instances |
| 156 | +example [is_alg_closed k] (V : Module.{u} A) [simple V] [finite_dimensional k V] (f : V ⟶ V) : |
| 157 | + ∃ φ : k, φ • 𝟙 V = f := |
| 158 | +endomorphism_simple_eq_smul_id k f |
| 159 | +-- Note that some magic is going on behind the scenes in this proof. |
| 160 | +-- We're using a version of Schur's lemma that applies to any `k`-linear category, |
| 161 | +-- and its hypotheses include `finite_dimensional k (V ⟶ V)` |
| 162 | +-- rather than `finite_dimensional k V` (because `V` need not even be a vector space). |
| 163 | +-- Typeclass inference is automatically generating this fact. |
| 164 | + |
| 165 | +-- Remark 2.3.11 (Schur's lemma doesn't hold over a non-algebraically closed field) |
| 166 | +example : simple (Module.of ℂ ℂ) := simple_of_finrank_eq_one (finrank_self ℂ) |
| 167 | +example : finite_dimensional ℝ (Module.of ℂ ℂ) := by { dsimp, apply_instance, } |
| 168 | +example : |
| 169 | + let V := Module.of ℂ ℂ in |
| 170 | + ∃ (f : V ⟶ V), ∀ φ : ℝ, (φ : ℂ) • 𝟙 V ≠ f := |
| 171 | +⟨algebra.lsmul ℂ ℂ complex.I, |
| 172 | + λ φ w, by simpa using congr_arg complex.im (linear_map.congr_fun w (1 : ℂ))⟩ |
| 173 | + |
| 174 | +-- Corollary 2.3.12 |
| 175 | +-- Every irreducible finite dimensional representation of a commutative algebra is 1-dimensional |
| 176 | +example (A : Type*) [comm_ring A] [algebra k A] (V : Module A) [finite_dimensional k V] [simple V] : |
| 177 | + finrank k V = 1 := |
| 178 | +skipped |
| 179 | + |
| 180 | +-- Remark 2.3.13: Every 1-dimensional representation is irreducible |
| 181 | +example (V : Module A) [finite_dimensional k V] (h : finrank k V = 1) : simple V := |
| 182 | +simple_of_finrank_eq_one h |
| 183 | + |
| 184 | +-- Example 2.3.14: skipped (1 and 3 we can do, 2 requires Jordan normal form) |
| 185 | + |
| 186 | +/-! |
| 187 | +## 2.4 "Ideals" |
| 188 | +-/ |
| 189 | + |
| 190 | +-- To be continued... |
0 commit comments