Skip to content

Commit 2fba8f2

Browse files
committed
refactor(RingTheory/HopfAlgebra/Primitive): AlgHom-level uniqueness, term-mode body
1 parent b788da7 commit 2fba8f2

2 files changed

Lines changed: 30 additions & 21 deletions

File tree

Mathlib/RingTheory/HopfAlgebra/Generators.lean

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ antimultiplicative antipode data on generators.
1515
1616
## Main definitions
1717
18-
* `HopfAlgebra.ofGenerators` : construct a Hopf algebra from data on a generating set.
18+
* `HopfAlgebra.ofGenerators`: construct a Hopf algebra from data on a generating set.
1919
2020
## Main results
2121
@@ -51,7 +51,7 @@ theorem convMul_eq_one_of_adjoin_eq_top_left
5151
(g_convMul_f : ∀ p ∈ s, (toConv g * toConv f) p = (1 : WithConv (A →ₗ[R] B)) p) :
5252
toConv g * toConv f = 1 := by
5353
ext x; refine adjoin_le
54-
(S := (eqLocus (toConv g * toConv f).ofConv (ofConv 1)).toSubalgebra ?_ fun a b ha hb => ?_)
54+
(S := (eqLocus (toConv g * toConv f).ofConv (ofConv 1)).toSubalgebra ?_ fun a b ha hb ?_)
5555
g_convMul_f (adjoin_eq_top.ge mem_top)
5656
· simp [g_one, f_one, TensorProduct.one_def]
5757
let 𝓡a := ℛ R a; let 𝓡b := ℛ R b
@@ -73,7 +73,7 @@ theorem convMul_eq_one_of_adjoin_eq_top_right
7373
(f_convMul_g : ∀ p ∈ s, (toConv f * toConv g) p = (1 : WithConv (A →ₗ[R] B)) p) :
7474
toConv f * toConv g = 1 := by
7575
ext x; refine adjoin_le
76-
(S := (eqLocus (toConv f * toConv g).ofConv (ofConv 1)).toSubalgebra ?_ fun a b ha hb => ?_)
76+
(S := (eqLocus (toConv f * toConv g).ofConv (ofConv 1)).toSubalgebra ?_ fun a b ha hb ?_)
7777
f_convMul_g (adjoin_eq_top.ge mem_top)
7878
· simp [g_one, f_one, TensorProduct.one_def]
7979
let 𝓡a := ℛ R a; let 𝓡b := ℛ R b
@@ -108,9 +108,9 @@ noncomputable abbrev ofGenerators (S₀_one : S₀ 1 = 1) (S₀_mul : ∀ x y, S
108108
(toConv (.id : A →ₗ[R] A) * toConv S₀) p = (1 : WithConv (A →ₗ[R] A)) p) :
109109
HopfAlgebra R A :=
110110
ofConvInverse S₀
111-
(convMul_eq_one_of_adjoin_eq_top_left S₀_one S₀_mul rfl (fun _ _ => rfl)
111+
(convMul_eq_one_of_adjoin_eq_top_left S₀_one S₀_mul rfl (fun _ _ rfl)
112112
adjoin_eq_top S₀_convMul_id)
113-
(convMul_eq_one_of_adjoin_eq_top_right S₀_one S₀_mul rfl (fun _ _ => rfl)
113+
(convMul_eq_one_of_adjoin_eq_top_right S₀_one S₀_mul rfl (fun _ _ rfl)
114114
adjoin_eq_top id_convMul_S₀)
115115

116116
end Construction
@@ -136,7 +136,7 @@ theorem eq_antipode_of_adjoin_eq_top_left (S₀_one : S₀ 1 = 1)
136136
(toConv S₀ * toConv (.id : A →ₗ[R] A)) p = (1 : WithConv (A →ₗ[R] A)) p) :
137137
S₀ = antipode R :=
138138
eq_antipode_of_convMul_id_eq_one
139-
(convMul_eq_one_of_adjoin_eq_top_left S₀_one S₀_mul rfl (fun _ _ => rfl)
139+
(convMul_eq_one_of_adjoin_eq_top_left S₀_one S₀_mul rfl (fun _ _ rfl)
140140
adjoin_eq_top S₀_convMul_id)
141141

142142
/-- A unital antimultiplicative map that is a right convolution inverse of the identity on an
@@ -147,7 +147,7 @@ theorem eq_antipode_of_adjoin_eq_top_right (S₀_one : S₀ 1 = 1)
147147
(toConv (.id : A →ₗ[R] A) * toConv S₀) p = (1 : WithConv (A →ₗ[R] A)) p) :
148148
S₀ = antipode R :=
149149
eq_antipode_of_id_convMul_eq_one
150-
(convMul_eq_one_of_adjoin_eq_top_right S₀_one S₀_mul rfl (fun _ _ => rfl)
150+
(convMul_eq_one_of_adjoin_eq_top_right S₀_one S₀_mul rfl (fun _ _ rfl)
151151
adjoin_eq_top id_convMul_S₀)
152152

153153
end Uniqueness

Mathlib/RingTheory/HopfAlgebra/Primitive.lean

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ a constructor for Hopf algebras generated as algebras by primitive elements.
1616
1717
## Main declarations
1818
19-
* `IsPrimitiveElem.antipode_eq_neg` : the antipode sends primitive elements to their negation.
20-
* `IsPrimitiveElem.antipode` : the antipode preserves primitivity.
21-
* `HopfAlgebra.ofPrimitives` : construct a Hopf algebra from a primitive-element generating set.
22-
* `HopfAlgebra.eq_antipode_of_primitives` : the antipode is the unique anti-algebra hom negating a
23-
primitive generating set.
19+
* `IsPrimitiveElem.antipode_eq_neg`: the antipode sends primitive elements to their negation.
20+
* `IsPrimitiveElem.antipode`: the antipode preserves primitivity.
21+
* `HopfAlgebra.ofPrimitives`: construct a Hopf algebra from a primitive-element generating set.
22+
* `HopfAlgebra.eq_antipodeAlgHomOp_of_primitives`: the antipode is the unique anti-algebra hom
23+
negating a primitive generating set.
2424
-/
2525

2626
public section
@@ -40,6 +40,11 @@ variable [Ring A] [HopfAlgebra R A] {a : A}
4040
protected lemma IsPrimitiveElem.antipode (ha : IsPrimitiveElem R a) :
4141
IsPrimitiveElem R (antipode R a) := ha.antipode_eq_neg ▸ ha.neg
4242

43+
/-- The antipode is involutive on primitive elements. -/
44+
lemma IsPrimitiveElem.antipode_antipode (ha : IsPrimitiveElem R a) :
45+
antipode R (antipode R a) = a := by
46+
simp [ha.antipode_eq_neg, ha.neg.antipode_eq_neg]
47+
4348
end Ring
4449

4550
namespace HopfAlgebra
@@ -50,18 +55,22 @@ noncomputable abbrev ofPrimitives [Ring A] [Bialgebra R A] (S : A →ₐ[R] Aᵐ
5055
(adjoin_eq_top : Algebra.adjoin R s = ⊤)
5156
(prim : ∀ p ∈ s, IsPrimitiveElem R p)
5257
(S_apply : ∀ p ∈ s, S p = op (-p)) :
53-
HopfAlgebra R A := by
54-
refine ofGenerators ((opLinearEquiv R).symm.toLinearMap ∘ₗ S.toLinearMap)
55-
(by simp) (fun _ _ => by simp) adjoin_eq_top ?_ ?_ <;>
56-
exact fun p hp => by simp [convMul_apply, prim p hp, S_apply p hp]
58+
HopfAlgebra R A :=
59+
ofGenerators ((opLinearEquiv R).symm.toLinearMap ∘ₗ S.toLinearMap)
60+
(by simp) (fun _ _ ↦ by simp) adjoin_eq_top
61+
(fun p hp ↦ by simp [convMul_apply, prim p hp, S_apply p hp])
62+
(fun p hp ↦ by simp [convMul_apply, prim p hp, S_apply p hp])
5763

5864
/-- On a Hopf algebra generated by primitive elements, the antipode is the unique anti-algebra hom
5965
negating the generators. -/
60-
theorem eq_antipode_of_primitives [Ring A] [HopfAlgebra R A] (S : A →ₐ[R] Aᵐᵒᵖ) {s : Set A}
61-
(adjoin_eq_top : Algebra.adjoin R s = ⊤) (prim : ∀ p ∈ s, IsPrimitiveElem R p)
66+
theorem eq_antipodeAlgHomOp_of_primitives [Ring A] [HopfAlgebra R A] (S : A →ₐ[R] Aᵐᵒᵖ)
67+
{s : Set A} (adjoin_eq_top : Algebra.adjoin R s = ⊤) (prim : ∀ p ∈ s, IsPrimitiveElem R p)
6268
(S_apply : ∀ p ∈ s, S p = op (-p)) :
63-
(opLinearEquiv R).symm.toLinearMap ∘ₗ S.toLinearMap = antipode R :=
64-
eq_antipode_of_adjoin_eq_top_left (by simp) (fun _ _ => by simp) adjoin_eq_top
65-
(fun p hp => by simp [convMul_apply, prim p hp, S_apply p hp])
69+
S = antipodeAlgHomOp R A := by
70+
have h := eq_antipode_of_adjoin_eq_top_left (S₀ := (opLinearEquiv R).symm.toLinearMap ∘ₗ
71+
S.toLinearMap) (by simp) (fun _ _ ↦ by simp) adjoin_eq_top
72+
(fun p hp ↦ by simp [convMul_apply, prim p hp, S_apply p hp])
73+
ext a
74+
simpa using congr(op ($h a))
6675

6776
end HopfAlgebra

0 commit comments

Comments
 (0)