Skip to content

Commit ce444bb

Browse files
committed
refactor(RingTheory/HopfAlgebra): prove generator extension via equalizer subalgebra
1 parent 3cc311f commit ce444bb

1 file changed

Lines changed: 25 additions & 33 deletions

File tree

Mathlib/RingTheory/HopfAlgebra/Generators.lean

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ public import Mathlib.RingTheory.HopfAlgebra.Convolution
1010
/-!
1111
# Constructing Hopf algebras from algebra generators
1212
13-
This file provides a constructor for Hopf algebras given antimultiplicative
14-
antipode data on an algebra-generating set, via an extension principle for
15-
pointwise convolution inverses of multiplicative maps.
13+
This file provides an extension principle to upgrade a bialgebra to a Hopf algebra given
14+
antimultiplicative antipode data on generators.
1615
17-
## Main declarations
16+
## Main definitions
1817
1918
* `HopfAlgebra.ofGenerators` : construct a Hopf algebra from data on a generating set.
19+
20+
## Main results
21+
2022
* `HopfAlgebra.convMul_eq_one_of_adjoin_eq_top_left` and
2123
`HopfAlgebra.convMul_eq_one_of_adjoin_eq_top_right`: a pointwise one-sided convolution inverse of
2224
a multiplicative map on generators is a global one.
@@ -30,7 +32,7 @@ public section
3032

3133
namespace HopfAlgebra
3234

33-
open Coalgebra LinearMap WithConv
35+
open Algebra Coalgebra LinearMap WithConv
3436

3537
variable {R A B : Type*} [CommSemiring R]
3638

@@ -47,26 +49,21 @@ a left convolution inverse on generators is a left convolution inverse. -/
4749
theorem convMul_eq_one_of_adjoin_eq_top_left
4850
(g_one : g 1 = 1) (g_mul : ∀ x y, g (x * y) = g y * g x)
4951
(f_one : f 1 = 1) (f_mul : ∀ x y, f (x * y) = f x * f y)
50-
(adjoin_eq_top : Algebra.adjoin R s = ⊤)
52+
(adjoin_eq_top : adjoin R s = ⊤)
5153
(g_convMul_f : ∀ p ∈ s, (toConv g * toConv f) p = (1 : WithConv (A →ₗ[R] B)) p) :
5254
toConv g * toConv f = 1 := by
53-
refine WithConv.ext (ext fun x => ?_)
54-
refine Algebra.adjoin_induction g_convMul_f
55-
(fun r => by simp [g_one, f_one, Algebra.algebraMap_eq_smul_one, Algebra.TensorProduct.one_def])
56-
(fun a b _ _ ha hb => by simp [map_add, ha, hb])
57-
(fun a b _ _ ha hb => ?_) (adjoin_eq_top ▸ Algebra.mem_top : x ∈ Algebra.adjoin R s)
55+
ext x; refine adjoin_le
56+
(S := (eqLocus (toConv g * toConv f).ofConv (ofConv 1)).toSubalgebra ?_ fun a b ha hb => ?_)
57+
g_convMul_f (adjoin_eq_top ▸ mem_top : x ∈ adjoin R s)
58+
· simp [g_one, f_one, TensorProduct.one_def]
5859
let 𝓡a := ℛ R a; let 𝓡b := ℛ R b
59-
simp only [𝓡a.convMul_apply, 𝓡b.convMul_apply, convOne_apply] at ha hb
60-
rw [convOne_apply]
60+
simp only [mem_eqLocus, 𝓡a.convMul_apply, 𝓡b.convMul_apply, convOne_apply] at ha hb ⊢
6161
calc (toConv g * toConv f) (a * b)
62-
_ = ∑ p ∈ 𝓡a.index, ∑ q ∈ 𝓡b.index,
63-
g (𝓡a.left p * 𝓡b.left q) * f (𝓡a.right p * 𝓡b.right q) := by
64-
simp [← 𝓡a.eq, ← 𝓡b.eq, Finset.sum_mul_sum]
6562
_ = ∑ p ∈ 𝓡a.index, ∑ q ∈ 𝓡b.index,
6663
g (𝓡b.left q) * (g (𝓡a.left p) * f (𝓡a.right p)) * f (𝓡b.right q) := by
67-
simp_rw [g_mul, f_mul, mul_assoc]
64+
simp [← 𝓡a.eq, ← 𝓡b.eq, Finset.sum_mul_sum, g_mul, f_mul, mul_assoc]
6865
_ = ∑ q ∈ 𝓡b.index, algebraMap R B (counit a) * g (𝓡b.left q) * f (𝓡b.right q) := by
69-
rw [Finset.sum_comm]; simp_rw [← Finset.sum_mul, ← Finset.mul_sum, ha, ← Algebra.commutes]
66+
rw [Finset.sum_comm]; simp_rw [← Finset.sum_mul, ← Finset.mul_sum, ha, ← commutes]
7067
_ = algebraMap R B (counit (a * b)) := by
7168
simp_rw [mul_assoc, ← Finset.mul_sum, hb, ← map_mul, ← Bialgebra.counit_mul]
7269

@@ -75,26 +72,21 @@ a right convolution inverse on generators is a right convolution inverse. -/
7572
theorem convMul_eq_one_of_adjoin_eq_top_right
7673
(g_one : g 1 = 1) (g_mul : ∀ x y, g (x * y) = g y * g x)
7774
(f_one : f 1 = 1) (f_mul : ∀ x y, f (x * y) = f x * f y)
78-
(adjoin_eq_top : Algebra.adjoin R s = ⊤)
75+
(adjoin_eq_top : adjoin R s = ⊤)
7976
(f_convMul_g : ∀ p ∈ s, (toConv f * toConv g) p = (1 : WithConv (A →ₗ[R] B)) p) :
8077
toConv f * toConv g = 1 := by
81-
refine WithConv.ext (ext fun x => ?_)
82-
refine Algebra.adjoin_induction f_convMul_g
83-
(fun r => by simp [g_one, f_one, Algebra.algebraMap_eq_smul_one, Algebra.TensorProduct.one_def])
84-
(fun a b _ _ ha hb => by simp [map_add, ha, hb])
85-
(fun a b _ _ ha hb => ?_) (adjoin_eq_top ▸ Algebra.mem_top : x ∈ Algebra.adjoin R s)
78+
ext x; refine adjoin_le
79+
(S := (eqLocus (toConv f * toConv g).ofConv (ofConv 1)).toSubalgebra ?_ fun a b ha hb => ?_)
80+
f_convMul_g (adjoin_eq_top ▸ mem_top : x ∈ adjoin R s)
81+
· simp [g_one, f_one, TensorProduct.one_def]
8682
let 𝓡a := ℛ R a; let 𝓡b := ℛ R b
87-
simp only [𝓡a.convMul_apply, 𝓡b.convMul_apply, convOne_apply] at ha hb
88-
rw [convOne_apply]
83+
simp only [mem_eqLocus, 𝓡a.convMul_apply, 𝓡b.convMul_apply, convOne_apply] at ha hb ⊢
8984
calc (toConv f * toConv g) (a * b)
90-
_ = ∑ p ∈ 𝓡a.index, ∑ q ∈ 𝓡b.index,
91-
f (𝓡a.left p * 𝓡b.left q) * g (𝓡a.right p * 𝓡b.right q) := by
92-
simp [← 𝓡a.eq, ← 𝓡b.eq, Finset.sum_mul_sum]
9385
_ = ∑ p ∈ 𝓡a.index, ∑ q ∈ 𝓡b.index,
9486
f (𝓡a.left p) * (f (𝓡b.left q) * g (𝓡b.right q)) * g (𝓡a.right p) := by
95-
simp_rw [g_mul, f_mul, mul_assoc]
87+
simp [← 𝓡a.eq, ← 𝓡b.eq, Finset.sum_mul_sum, g_mul, f_mul, mul_assoc]
9688
_ = ∑ p ∈ 𝓡a.index, algebraMap R B (counit b) * f (𝓡a.left p) * g (𝓡a.right p) := by
97-
simp_rw [← Finset.sum_mul, ← Finset.mul_sum, hb, ← Algebra.commutes]
89+
simp_rw [← Finset.sum_mul, ← Finset.mul_sum, hb, ← commutes]
9890
_ = algebraMap R B (counit (a * b)) := by
9991
simp_rw [mul_assoc, ← Finset.mul_sum, ha, ← map_mul, mul_comm (counit b),
10092
← Bialgebra.counit_mul]
@@ -109,7 +101,7 @@ variable (S₀) in
109101
that is a two-sided convolution inverse of the identity pointwise on an algebra-generating
110102
set. -/
111103
noncomputable abbrev ofGenerators (S₀_one : S₀ 1 = 1) (S₀_mul : ∀ x y, S₀ (x * y) = S₀ y * S₀ x)
112-
(adjoin_eq_top : Algebra.adjoin R s = ⊤)
104+
(adjoin_eq_top : adjoin R s = ⊤)
113105
(S₀_convMul_id : ∀ p ∈ s,
114106
(toConv S₀ * toConv (.id : A →ₗ[R] A)) p = (1 : WithConv (A →ₗ[R] A)) p)
115107
(id_convMul_S₀ : ∀ p ∈ s,
@@ -135,7 +127,7 @@ variable (S₀) in
135127
/-- A unital antimultiplicative map that is a left convolution inverse of the identity on an
136128
algebra-generating set is the antipode. -/
137129
theorem eq_antipode_of_adjoin_eq_top (S₀_one : S₀ 1 = 1)
138-
(S₀_mul : ∀ x y, S₀ (x * y) = S₀ y * S₀ x) (adjoin_eq_top : Algebra.adjoin R s = ⊤)
130+
(S₀_mul : ∀ x y, S₀ (x * y) = S₀ y * S₀ x) (adjoin_eq_top : adjoin R s = ⊤)
139131
(S₀_convMul_id : ∀ p ∈ s,
140132
(toConv S₀ * toConv (.id : A →ₗ[R] A)) p = (1 : WithConv (A →ₗ[R] A)) p) :
141133
S₀ = antipode R :=

0 commit comments

Comments
 (0)