Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 1c775cc

Browse files
committed
docs(tutorials/representation_theory): beginnings of a tutorial following Etingof's notes (#13911)
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
1 parent b685f50 commit 1c775cc

3 files changed

Lines changed: 192 additions & 2 deletions

File tree

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
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...

src/algebra/category/Module/algebra.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ these instances will not necessarily agree with the original ones.
2525
2626
It seems without making a parallel version `Module' k A`, for modules over a `k`-algebra `A`,
2727
that carries these typeclasses, this seems hard to achieve.
28-
(An alternative would be to always require these typeclasses,
28+
(An alternative would be to always require these typeclasses, and remove the original `Module`,
2929
requiring users to write `Module' ℤ A` when `A` is merely a ring.)
3030
-/
3131

src/linear_algebra/matrix/to_lin.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ variables {A : Type*} [ring A] [algebra K A] [module A V] [is_scalar_tower K A V
742742
[module A W] [is_scalar_tower K A W]
743743

744744
/-- Linear maps over a `k`-algebra are finite dimensional (over `k`) if both the source and
745-
target are, since they form a subspace of all `k`-linear maps. -/
745+
target are, as they form a subspace of all `k`-linear maps. -/
746746
instance finite_dimensional' : finite_dimensional K (V →ₗ[A] W) :=
747747
finite_dimensional.of_injective (restrict_scalars_linear_map K A V W)
748748
(restrict_scalars_injective _)

0 commit comments

Comments
 (0)