|
| 1 | +/- |
| 2 | +Copyright (c) 2026 Robert Hawkins. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Robert Hawkins |
| 5 | +-/ |
| 6 | +module |
| 7 | + |
| 8 | +public import Mathlib.RingTheory.Bialgebra.Quotient |
| 9 | +public import Mathlib.RingTheory.HopfAlgebra.Convolution |
| 10 | + |
| 11 | +/-! |
| 12 | +# Hopf algebra structure on quotients by Hopf ideals |
| 13 | +
|
| 14 | +A *Hopf ideal* of an `R`-Hopf algebra `A` is a biideal stable under the antipode. The quotient |
| 15 | +by a Hopf ideal inherits a Hopf algebra structure. |
| 16 | +
|
| 17 | +## Main definitions |
| 18 | +
|
| 19 | +* `Ideal.IsHopfIdeal R I` : `I` is a coideal (as an `R`-submodule) stable under the antipode. |
| 20 | +
|
| 21 | +## Main results |
| 22 | +
|
| 23 | +* `HopfAlgebra.ofSurjective` : the Hopf algebra axioms transfer along a surjective bialgebra |
| 24 | + homomorphism intertwining the antipodes. |
| 25 | +* `HopfAlgebra R (A ⧸ I)` instance when `[I.IsTwoSided]` and `[I.IsHopfIdeal R]`. |
| 26 | +-/ |
| 27 | + |
| 28 | +public section |
| 29 | + |
| 30 | +open Bialgebra Bialgebra.Quotient Coalgebra HopfAlgebra Ideal.Quotient LinearMap |
| 31 | + TensorProduct WithConv |
| 32 | + |
| 33 | +namespace HopfAlgebra |
| 34 | + |
| 35 | +section ofSurjective |
| 36 | + |
| 37 | +variable {R A B : Type*} [CommSemiring R] [Semiring A] [Semiring B] |
| 38 | + [HopfAlgebra R A] [HopfAlgebraStruct R B] |
| 39 | + |
| 40 | +/-- Post-composition by an algebra homomorphism preserves the convolution unit. -/ |
| 41 | +lemma _root_.LinearMap.algHom_comp_convOne (g : A →ₐ[R] B) : |
| 42 | + g.toLinearMap ∘ₗ (1 : WithConv (A →ₗ[R] A)).ofConv = (1 : WithConv (A →ₗ[R] B)).ofConv := by |
| 43 | + ext a; simp |
| 44 | + |
| 45 | +/-- Pre-composition by a coalgebra homomorphism preserves the convolution unit. -/ |
| 46 | +lemma _root_.LinearMap.convOne_comp_coalgHom (g : A →ₗc[R] B) : |
| 47 | + (1 : WithConv (B →ₗ[R] B)).ofConv ∘ₗ g.toLinearMap = (1 : WithConv (A →ₗ[R] B)).ofConv := by |
| 48 | + ext a; simp |
| 49 | + |
| 50 | +/-- Transfer the Hopf algebra axioms along a surjective bialgebra homomorphism intertwining |
| 51 | +the antipodes. -/ |
| 52 | +noncomputable abbrev ofSurjective (f : A →ₐc[R] B) (hf : Function.Surjective f) |
| 53 | + (hS : antipode R ∘ₗ f.toLinearMap = f.toLinearMap ∘ₗ antipode R) : HopfAlgebra R B := by |
| 54 | + refine .ofConvInverse (antipode R) (ofConv_injective ?_) (ofConv_injective ?_) <;> |
| 55 | + rw [← LinearMap.cancel_right (show Function.Surjective f.toLinearMap from hf)] |
| 56 | + · calc (toConv (antipode R) * toConv .id : WithConv (B →ₗ[R] B)).ofConv ∘ₗ |
| 57 | + f.toCoalgHom.toLinearMap |
| 58 | + = (toConv (f.toLinearMap ∘ₗ antipode R) * toConv f.toLinearMap).ofConv := by |
| 59 | + rw [convMul_comp_coalgHom_distrib, hS]; rfl |
| 60 | + _ = (AlgHomClass.toAlgHom f).toLinearMap ∘ₗ |
| 61 | + (toConv (antipode R) * toConv .id : WithConv (A →ₗ[R] A)).ofConv := by |
| 62 | + rw [algHom_comp_convMul_distrib]; rfl |
| 63 | + _ = (1 : WithConv (B →ₗ[R] B)).ofConv ∘ₗ f.toLinearMap := by |
| 64 | + rw [antipode_mul_id, algHom_comp_convOne, ← convOne_comp_coalgHom f.toCoalgHom] |
| 65 | + · calc (toConv .id * toConv (antipode R) : WithConv (B →ₗ[R] B)).ofConv ∘ₗ |
| 66 | + f.toCoalgHom.toLinearMap |
| 67 | + = (toConv f.toLinearMap * toConv (f.toLinearMap ∘ₗ antipode R)).ofConv := by |
| 68 | + rw [convMul_comp_coalgHom_distrib, hS]; rfl |
| 69 | + _ = (AlgHomClass.toAlgHom f).toLinearMap ∘ₗ |
| 70 | + (toConv .id * toConv (antipode R) : WithConv (A →ₗ[R] A)).ofConv := by |
| 71 | + rw [algHom_comp_convMul_distrib]; rfl |
| 72 | + _ = (1 : WithConv (B →ₗ[R] B)).ofConv ∘ₗ f.toLinearMap := by |
| 73 | + rw [id_mul_antipode, algHom_comp_convOne, ← convOne_comp_coalgHom f.toCoalgHom] |
| 74 | + |
| 75 | +end ofSurjective |
| 76 | + |
| 77 | +end HopfAlgebra |
| 78 | + |
| 79 | +variable {R A : Type*} [CommRing R] [Ring A] |
| 80 | + |
| 81 | +section HopfAlgebraStruct |
| 82 | + |
| 83 | +variable [HopfAlgebraStruct R A] |
| 84 | + |
| 85 | +variable (R) in |
| 86 | +/-- An ideal whose underlying `R`-submodule is a coideal and which is stable under the |
| 87 | +antipode (`S(I) ⊆ I`). Together with `I.IsTwoSided`, this makes `I` a *Hopf ideal*. -/ |
| 88 | +@[mk_iff] |
| 89 | +class Ideal.IsHopfIdeal (I : Ideal A) : Prop extends (I.restrictScalars R).IsCoideal where |
| 90 | + antipode_mem : ∀ ⦃x : A⦄, x ∈ I → antipode R x ∈ I |
| 91 | + |
| 92 | +end HopfAlgebraStruct |
| 93 | + |
| 94 | +namespace HopfAlgebra.Quotient |
| 95 | + |
| 96 | +section HopfAlgebraStruct |
| 97 | + |
| 98 | +variable [HopfAlgebraStruct R A] (I : Ideal A) [I.IsTwoSided] [I.IsHopfIdeal R] |
| 99 | + |
| 100 | +instance : HopfAlgebraStruct R (A ⧸ I) where |
| 101 | + antipode := Submodule.mapQ (I.restrictScalars R) (I.restrictScalars R) |
| 102 | + (antipode R) (Ideal.IsHopfIdeal.antipode_mem (R := R)) |
| 103 | + |
| 104 | +@[simp] |
| 105 | +lemma antipode_mk (a : A) : |
| 106 | + antipode R (Ideal.Quotient.mk I a) = Ideal.Quotient.mk I (antipode R a) := rfl |
| 107 | + |
| 108 | +lemma antipode_comp_mkₐ : |
| 109 | + antipode R ∘ₗ (Ideal.Quotient.mkₐ R I).toLinearMap = |
| 110 | + (Ideal.Quotient.mkₐ R I).toLinearMap ∘ₗ antipode R := by ext; simp |
| 111 | + |
| 112 | +end HopfAlgebraStruct |
| 113 | + |
| 114 | +variable [HopfAlgebra R A] (I : Ideal A) [I.IsTwoSided] [I.IsHopfIdeal R] |
| 115 | + |
| 116 | +noncomputable instance : HopfAlgebra R (A ⧸ I) := |
| 117 | + .ofSurjective (mkBialgHom I) mk_surjective (antipode_comp_mkₐ I) |
| 118 | + |
| 119 | +end HopfAlgebra.Quotient |
0 commit comments