Skip to content

Commit e081836

Browse files
committed
feat: HopfAlgebra.ofSurjective
1 parent ca03b5c commit e081836

1 file changed

Lines changed: 26 additions & 41 deletions

File tree

Mathlib/RingTheory/HopfAlgebra/Quotient.lean

Lines changed: 26 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Authors: Robert Hawkins
66
module
77

88
public import Mathlib.RingTheory.Bialgebra.Quotient
9-
public import Mathlib.RingTheory.HopfAlgebra.Basic
9+
public import Mathlib.RingTheory.HopfAlgebra.Convolution
1010

1111
/-!
1212
# Hopf algebra structure on quotients by Hopf ideals
@@ -27,7 +27,8 @@ by a Hopf ideal inherits a Hopf algebra structure.
2727

2828
public section
2929

30-
open Bialgebra Coalgebra HopfAlgebra LinearMap TensorProduct WithConv
30+
open Bialgebra Bialgebra.Quotient Coalgebra HopfAlgebra Ideal.Quotient LinearMap
31+
TensorProduct WithConv
3132

3233
namespace HopfAlgebra
3334

@@ -41,48 +42,33 @@ intertwining the antipodes: in convolution-algebra terms, `S_B ⋆ id` and `id
4142
along the coalgebra morphism `f` to the pushforwards of `S_A ⋆ id` and `id ⋆ S_A` along the
4243
algebra morphism `f`, hence to the convolution unit; precomposition by a surjection is
4344
injective. -/
44-
abbrev ofSurjective (f : A →ₐc[R] B) (hf : Function.Surjective f)
45-
(hS : antipode R ∘ₗ f.toLinearMap = f.toLinearMap ∘ₗ antipode R) : HopfAlgebra R B where
46-
mul_antipode_rTensor_comul := by
47-
have hf' : Function.Surjective f.toLinearMap := hf
48-
rw [← LinearMap.cancel_right hf']
49-
calc (mul' R B ∘ₗ (antipode R).rTensor B ∘ₗ comul) ∘ₗ f.toLinearMap
50-
= (toConv (antipode R) * toConv .id : WithConv (B →ₗ[R] B)).ofConv ∘ₗ
51-
f.toCoalgHom.toLinearMap := rfl
52-
_ = (toConv (antipode R ∘ₗ f.toLinearMap) * toConv f.toLinearMap).ofConv := by
53-
rw [convMul_comp_coalgHom_distrib]; rfl
54-
_ = (toConv (f.toLinearMap ∘ₗ antipode R) * toConv f.toLinearMap).ofConv := by
55-
rw [hS]
45+
noncomputable abbrev ofSurjective (f : A →ₐc[R] B) (hf : Function.Surjective f)
46+
(hS : antipode R ∘ₗ f.toLinearMap = f.toLinearMap ∘ₗ antipode R) : HopfAlgebra R B := by
47+
have h1 : (AlgHomClass.toAlgHom f).toLinearMap ∘ₗ (1 : WithConv (A →ₗ[R] A)).ofConv =
48+
(1 : WithConv (B →ₗ[R] B)).ofConv ∘ₗ f.toLinearMap := by
49+
ext a
50+
simp only [comp_apply, convOne_apply, ← LinearMap.congr_fun f.counit_comp a]
51+
exact AlgHomClass.commutes f _
52+
refine .ofConvInverse (antipode R) (ofConv_injective ?_) (ofConv_injective ?_) <;>
53+
rw [← LinearMap.cancel_right (show Function.Surjective f.toLinearMap from hf)]
54+
· calc (toConv (antipode R) * toConv .id : WithConv (B →ₗ[R] B)).ofConv ∘ₗ
55+
f.toCoalgHom.toLinearMap
56+
= (toConv (f.toLinearMap ∘ₗ antipode R) * toConv f.toLinearMap).ofConv := by
57+
rw [convMul_comp_coalgHom_distrib, hS]; rfl
5658
_ = (AlgHomClass.toAlgHom f).toLinearMap ∘ₗ
5759
(toConv (antipode R) * toConv .id : WithConv (A →ₗ[R] A)).ofConv := by
5860
rw [algHom_comp_convMul_distrib]; rfl
59-
_ = f.toLinearMap ∘ₗ (mul' R A ∘ₗ (antipode R).rTensor A ∘ₗ comul) := rfl
60-
_ = f.toLinearMap ∘ₗ (Algebra.linearMap R A ∘ₗ counit) := by
61-
rw [mul_antipode_rTensor_comul]
62-
_ = (Algebra.linearMap R B ∘ₗ counit) ∘ₗ f.toLinearMap := by
63-
ext a
64-
simp only [comp_apply, ← LinearMap.congr_fun f.counit_comp a]
65-
exact AlgHomClass.commutes f _
66-
mul_antipode_lTensor_comul := by
67-
have hf' : Function.Surjective f.toLinearMap := hf
68-
rw [← LinearMap.cancel_right hf']
69-
calc (mul' R B ∘ₗ (antipode R).lTensor B ∘ₗ comul) ∘ₗ f.toLinearMap
70-
= (toConv .id * toConv (antipode R) : WithConv (B →ₗ[R] B)).ofConv ∘ₗ
71-
f.toCoalgHom.toLinearMap := rfl
72-
_ = (toConv f.toLinearMap * toConv (antipode R ∘ₗ f.toLinearMap)).ofConv := by
73-
rw [convMul_comp_coalgHom_distrib]; rfl
74-
_ = (toConv f.toLinearMap * toConv (f.toLinearMap ∘ₗ antipode R)).ofConv := by
75-
rw [hS]
61+
_ = (1 : WithConv (B →ₗ[R] B)).ofConv ∘ₗ f.toLinearMap := by
62+
rw [antipode_mul_id, h1]
63+
· calc (toConv .id * toConv (antipode R) : WithConv (B →ₗ[R] B)).ofConv ∘ₗ
64+
f.toCoalgHom.toLinearMap
65+
= (toConv f.toLinearMap * toConv (f.toLinearMap ∘ₗ antipode R)).ofConv := by
66+
rw [convMul_comp_coalgHom_distrib, hS]; rfl
7667
_ = (AlgHomClass.toAlgHom f).toLinearMap ∘ₗ
7768
(toConv .id * toConv (antipode R) : WithConv (A →ₗ[R] A)).ofConv := by
7869
rw [algHom_comp_convMul_distrib]; rfl
79-
_ = f.toLinearMap ∘ₗ (mul' R A ∘ₗ (antipode R).lTensor A ∘ₗ comul) := rfl
80-
_ = f.toLinearMap ∘ₗ (Algebra.linearMap R A ∘ₗ counit) := by
81-
rw [mul_antipode_lTensor_comul]
82-
_ = (Algebra.linearMap R B ∘ₗ counit) ∘ₗ f.toLinearMap := by
83-
ext a
84-
simp only [comp_apply, ← LinearMap.congr_fun f.counit_comp a]
85-
exact AlgHomClass.commutes f _
70+
_ = (1 : WithConv (B →ₗ[R] B)).ofConv ∘ₗ f.toLinearMap := by
71+
rw [id_mul_antipode, h1]
8672

8773
end ofSurjective
8874

@@ -125,8 +111,7 @@ end HopfAlgebraStruct
125111

126112
variable [HopfAlgebra R A] (I : Ideal A) [I.IsTwoSided] [I.IsHopfIdeal R]
127113

128-
instance : HopfAlgebra R (A ⧸ I) :=
129-
.ofSurjective (Bialgebra.Quotient.mkBialgHom I) Ideal.Quotient.mk_surjective
130-
(antipode_comp_mkₐ I)
114+
noncomputable instance : HopfAlgebra R (A ⧸ I) :=
115+
.ofSurjective (mkBialgHom I) mk_surjective (antipode_comp_mkₐ I)
131116

132117
end HopfAlgebra.Quotient

0 commit comments

Comments
 (0)