@@ -19,17 +19,18 @@ In this file we define `HopfAlgebra`, and provide instances for:
1919
2020* `HopfAlgebra R A` : the Hopf algebra structure on an `R`-bialgebra `A`.
2121* `HopfAlgebra.antipode` : the `R`-linear map `A →ₗ[R] A`.
22+ * `HopfAlgebra.ofAlgHom` : construct a Hopf algebra structure from an algebra hom
23+ `A →ₐ[R] Aᵐᵒᵖ` satisfying the antipode identities.
2224
2325 ## Main results
2426
2527* `HopfAlgebra.antipode_one` : the antipode of the unit is the unit.
2628* `HopfAlgebra.antipode_mul` : the antipode is an antihomomorphism: `S(ab) = S(b)S(a)`.
29+ * `HopfAlgebra.antipode_unique` : the antipode is uniquely determined by the underlying bialgebra
30+ structure.
2731
2832 ## TODO
2933
30- * Uniqueness of Hopf algebra structure on a bialgebra (i.e. if the algebra and coalgebra structures
31- agree then the antipodes must also agree).
32-
3334* If `A` is commutative then `antipode` is an algebra homomorphism.
3435
3536* If `A` is commutative then `antipode` is necessarily a bijection and its square is
@@ -38,6 +39,8 @@ In this file we define `HopfAlgebra`, and provide instances for:
3839 (Note that all three facts have been proved for Hopf bimonoids in an arbitrary braided category,
3940so we could deduce the facts here from an equivalence `HopfAlgCat R ≌ Hopf (ModuleCat R)`.)
4041
42+ * A graded connected bialgebra admits a unique antipode.
43+
4144 ## References
4245
4346* <https://en.wikipedia.org/wiki/Hopf_algebra>
@@ -75,6 +78,26 @@ namespace HopfAlgebra
7578
7679export HopfAlgebraStruct (antipode)
7780
81+ section Bialgebra
82+ variable {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Bialgebra R A]
83+
84+ open Coalgebra WithConv
85+
86+ /-! ### Uniqueness of the antipode -/
87+
88+ /-- If `S₁` and `S₂` are left and right convolution inverses of the identity, then `S₁ = S₂`. -/
89+ theorem antipode_unique {S₁ S₂ : A →ₗ[R] A}
90+ (h₁ : LinearMap.mul' R A ∘ₗ S₁.rTensor A ∘ₗ comul = Algebra.linearMap R A ∘ₗ counit)
91+ (h₂ : LinearMap.mul' R A ∘ₗ S₂.lTensor A ∘ₗ comul = Algebra.linearMap R A ∘ₗ counit) :
92+ S₁ = S₂ := by
93+ refine toConv_injective <| left_inv_eq_right_inv
94+ (a := toConv LinearMap.id) (b := toConv S₁) (c := toConv S₂) ?_ ?_
95+ · exact WithConv.ext h₁
96+ · exact WithConv.ext h₂
97+
98+ end Bialgebra
99+
100+ section Semiring
78101variable {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [HopfAlgebra R A] {a : A}
79102
80103@[simp]
@@ -211,6 +234,44 @@ theorem antipode_mul (a b : A) :
211234 _ = (counit (R := R) y • counit x) • (1 : A) := by
212235 simp only [smul_eq_mul, mul_comm (counit y)]
213236
237+ /-! ### Antipode as unique convolution inverse -/
238+
239+ /-- The antipode is the unique left convolution inverse of the identity. -/
240+ theorem eq_antipode_of_mul_rTensor_comul {S : A →ₗ[R] A}
241+ (h : LinearMap.mul' R A ∘ₗ S.rTensor A ∘ₗ comul = Algebra.linearMap R A ∘ₗ counit) :
242+ S = antipode R :=
243+ antipode_unique h mul_antipode_lTensor_comul
244+
245+ /-- The antipode is the unique right convolution inverse of the identity. -/
246+ theorem eq_antipode_of_mul_lTensor_comul {S : A →ₗ[R] A}
247+ (h : LinearMap.mul' R A ∘ₗ S.lTensor A ∘ₗ comul = Algebra.linearMap R A ∘ₗ counit) :
248+ S = antipode R :=
249+ (antipode_unique mul_antipode_rTensor_comul h).symm
250+
251+ end Semiring
252+
253+ end HopfAlgebra
254+
255+ namespace HopfAlgebra
256+
257+ variable {R A : Type *} [CommSemiring R] [Semiring A] [Bialgebra R A]
258+
259+ open Coalgebra MulOpposite
260+
261+ /-- Upgrade a bialgebra to a Hopf algebra by specifying the antipode as an algebra map
262+ `A →ₐ[R] Aᵐᵒᵖ` with appropriate conditions. -/
263+ noncomputable abbrev ofAlgHom (antipode : A →ₐ[R] Aᵐᵒᵖ)
264+ (mul_antipode_rTensor_comul :
265+ LinearMap.mul' R A ∘ₗ ((opLinearEquiv R).symm.toLinearMap ∘ₗ
266+ antipode.toLinearMap).rTensor A ∘ₗ comul = Algebra.linearMap R A ∘ₗ counit)
267+ (mul_antipode_lTensor_comul :
268+ LinearMap.mul' R A ∘ₗ ((opLinearEquiv R).symm.toLinearMap ∘ₗ
269+ antipode.toLinearMap).lTensor A ∘ₗ comul = Algebra.linearMap R A ∘ₗ counit) :
270+ HopfAlgebra R A where
271+ antipode := (opLinearEquiv R).symm.toLinearMap ∘ₗ antipode.toLinearMap
272+ mul_antipode_rTensor_comul := mul_antipode_rTensor_comul
273+ mul_antipode_lTensor_comul := mul_antipode_lTensor_comul
274+
214275end HopfAlgebra
215276
216277namespace CommSemiring
0 commit comments