Documentation

Mathlib.RingTheory.Generators

Generators of algebras #

Main definition #

structure Algebra.Generators (R : Type u) (S : Type v) [CommRing R] [CommRing S] [Algebra R S] :
Type (max (max u v) (w + 1))

A family of generators of a R-algebra S consists of

  1. vars: The type of variables.
  2. val : vars → S: The assignment of each variable to a value in S.
  3. σ: A section of R[X] → S.
  • vars : Type w

    The type of variables.

  • val : self.varsS

    The assignment of each variable to a value in S.

  • σ' : SMvPolynomial self.vars R

    A section of R[X] → S.

  • aeval_val_σ' (s : S) : (MvPolynomial.aeval self.val) (self.σ' s) = s
Instances For
    @[reducible, inline]
    abbrev Algebra.Generators.Ring {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
    Type (max w u)

    The polynomial ring wrt a family of generators.

    Equations
    Instances For
      def Algebra.Generators.σ {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
      SP.Ring

      The designated section of wrt a family of generators.

      Equations
      • P = P.σ'
      Instances For
        def Algebra.Generators.Simps.σ {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
        SP.Ring

        See Note [custom simps projection]

        Equations
        Instances For
          @[simp]
          theorem Algebra.Generators.aeval_val_σ {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) (s : S) :
          (MvPolynomial.aeval P.val) (P s) = s
          instance Algebra.Generators.instRing {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
          Algebra P.Ring S
          Equations
          instance Algebra.Generators.instIsScalarTowerRing {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R₀ : Type u_1} [CommRing R₀] [Algebra R₀ R] [Algebra R₀ S] [IsScalarTower R₀ R S] :
          IsScalarTower R₀ P.Ring S
          theorem Algebra.Generators.algebraMap_eq {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
          algebraMap P.Ring S = (MvPolynomial.aeval P.val)
          @[simp]
          theorem Algebra.Generators.algebraMap_apply {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) (x : P.Ring) :
          (algebraMap P.Ring S) x = (MvPolynomial.aeval P.val) x
          @[simp]
          theorem Algebra.Generators.σ_smul {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) (x y : S) :
          P x y = x * y
          noncomputable def Algebra.Generators.ofSurjective {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {vars : Type u_1} (val : varsS) (h : Function.Surjective (MvPolynomial.aeval val)) :

          Construct Generators from an assignment I → S such that R[X] → S is surjective.

          Equations
          Instances For
            @[simp]
            theorem Algebra.Generators.ofSurjective_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {vars : Type u_1} (val : varsS) (h : Function.Surjective (MvPolynomial.aeval val)) (a✝ : vars) :
            (Algebra.Generators.ofSurjective val h).val a✝ = val a✝
            theorem Algebra.Generators.ofSurjective_vars {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {vars : Type u_1} (val : varsS) (h : Function.Surjective (MvPolynomial.aeval val)) :

            If algebraMap R S is surjective, the empty type generates S.

            Equations
            Instances For
              noncomputable def Algebra.Generators.id {R : Type u} [CommRing R] :

              The canonical generators for R as an R-algebra.

              Equations
              Instances For
                noncomputable def Algebra.Generators.ofAlgHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {I : Type u_1} (f : MvPolynomial I R →ₐ[R] S) (h : Function.Surjective f) :

                Construct Generators from an assignment I → S such that R[X] → S is surjective.

                Equations
                Instances For
                  noncomputable def Algebra.Generators.ofSet {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {s : Set S} (hs : Algebra.adjoin R s = ) :

                  Construct Generators from a family of generators of S.

                  Equations
                  Instances For
                    noncomputable def Algebra.Generators.self (R : Type u) (S : Type v) [CommRing R] [CommRing S] [Algebra R S] :

                    The Generators containing the whole algebra, which induces the canonical map R[S] → S.

                    Equations
                    Instances For
                      @[simp]
                      theorem Algebra.Generators.self_vars (R : Type u) (S : Type v) [CommRing R] [CommRing S] [Algebra R S] :
                      @[simp]
                      theorem Algebra.Generators.self_val (R : Type u) (S : Type v) [CommRing R] [CommRing S] [Algebra R S] (a : S) :
                      @[simp]
                      theorem Algebra.Generators.self_σ (R : Type u) (S : Type v) [CommRing R] [CommRing S] [Algebra R S] (n : S) :
                      noncomputable def Algebra.Generators.toExtension {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :

                      The extension R[X₁,...,Xₙ] → S given a family of generators.

                      Equations
                      Instances For
                        @[simp]
                        theorem Algebra.Generators.toExtension_Ring {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
                        P.toExtension.Ring = P.Ring
                        @[simp]
                        theorem Algebra.Generators.toExtension_algebra₁ {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
                        P.toExtension.algebra₁ = MvPolynomial.algebra
                        @[simp]
                        theorem Algebra.Generators.toExtension_commRing {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
                        P.toExtension.commRing = MvPolynomial.instCommRingMvPolynomial
                        @[simp]
                        theorem Algebra.Generators.toExtension_σ {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) (a✝ : S) :
                        P.toExtension a✝ = P a✝
                        @[simp]
                        theorem Algebra.Generators.toExtension_algebra₂ {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
                        P.toExtension.algebra₂ = P.instRing
                        noncomputable def Algebra.Generators.localizationAway {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (r : R) [IsLocalization.Away r S] :

                        If S is the localization of R away from r, we obtain a canonical generator mapping to the inverse of r.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          noncomputable def Algebra.Generators.comp {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) :

                          Given two families of generators S[X] → T and R[Y] → S, we may construct the family of generators R[X, Y] → T.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[simp]
                            theorem Algebra.Generators.comp_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) (a✝ : Q.vars P.vars) :
                            (Q.comp P).val a✝ = Sum.elim Q.val ((algebraMap S T) P.val) a✝
                            theorem Algebra.Generators.comp_σ {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) (x : T) :
                            (Q.comp P) x = Finsupp.sum (Q x) fun (n : Q.vars →₀ ) (r : S) => (MvPolynomial.rename Sum.inr) (P r) * (MvPolynomial.monomial (Finsupp.mapDomain Sum.inl n)) 1
                            theorem Algebra.Generators.comp_vars {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) :
                            (Q.comp P).vars = (Q.vars P.vars)
                            noncomputable def Algebra.Generators.extendScalars {R : Type u} (S : Type v) [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (P : Algebra.Generators R T) :

                            If R → S → T is a tower of algebras, a family of generators R[X] → T gives a family of generators S[X] → T.

                            Equations
                            Instances For
                              @[simp]
                              theorem Algebra.Generators.extendScalars_val {R : Type u} (S : Type v) [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (P : Algebra.Generators R T) (a✝ : P.vars) :
                              (Algebra.Generators.extendScalars S P).val a✝ = P.val a✝
                              theorem Algebra.Generators.extendScalars_vars {R : Type u} (S : Type v) [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (P : Algebra.Generators R T) :
                              noncomputable def Algebra.Generators.baseChange {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] (P : Algebra.Generators R S) :

                              If P is a family of generators of S over R and T is an R-algebra, we obtain a natural family of generators of T ⊗[R] S over T.

                              Equations
                              Instances For
                                @[simp]
                                theorem Algebra.Generators.baseChange_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] (P : Algebra.Generators R S) (x : P.vars) :
                                P.baseChange.val x = 1 ⊗ₜ[R] P.val x
                                theorem Algebra.Generators.baseChange_vars {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] (P : Algebra.Generators R S) :
                                P.baseChange.vars = P.vars
                                structure Algebra.Generators.Hom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] (P' : Algebra.Generators R' S') [Algebra S S'] :
                                Type (max (max u_1 u_3) w)

                                Given a commuting square R --→ P = R[X] ---→ S | | ↓ ↓ R' -→ P' = R'[X'] → S A hom between P and P' is an assignment I → P' such that the arrows commute. Also see Algebra.Generators.Hom.equivAlgHom.

                                • val : P.varsP'.Ring

                                  The assignment of each variable in I to a value in P' = R'[X'].

                                • aeval_val (i : P.vars) : (MvPolynomial.aeval P'.val) (self.val i) = (algebraMap S S') (P.val i)
                                Instances For
                                  theorem Algebra.Generators.Hom.ext {R : Type u} {S : Type v} {inst✝ : CommRing R} {inst✝¹ : CommRing S} {inst✝² : Algebra R S} {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} {inst✝³ : CommRing R'} {inst✝⁴ : CommRing S'} {inst✝⁵ : Algebra R' S'} {P' : Algebra.Generators R' S'} {inst✝⁶ : Algebra S S'} {x y : P.Hom P'} (val : x.val = y.val) :
                                  x = y
                                  noncomputable def Algebra.Generators.Hom.toAlgHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] (f : P.Hom P') :
                                  P.Ring →ₐ[R] P'.Ring

                                  A hom between two families of generators gives an algebra homomorphism between the polynomial rings.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem Algebra.Generators.Hom.algebraMap_toAlgHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] [Algebra R S'] [IsScalarTower R R' S'] [IsScalarTower R S S'] (f : P.Hom P') (x : P.Ring) :
                                    (MvPolynomial.aeval P'.val) (f.toAlgHom x) = (algebraMap S S') ((MvPolynomial.aeval P.val) x)
                                    @[simp]
                                    theorem Algebra.Generators.Hom.toAlgHom_X {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] (f : P.Hom P') (i : P.vars) :
                                    f.toAlgHom (MvPolynomial.X i) = f.val i
                                    theorem Algebra.Generators.Hom.toAlgHom_C {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] (f : P.Hom P') (r : R) :
                                    f.toAlgHom (MvPolynomial.C r) = MvPolynomial.C ((algebraMap R R') r)
                                    theorem Algebra.Generators.Hom.toAlgHom_monomial {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] (f : P.Hom P') (v : P.vars →₀ ) (r : R) :
                                    f.toAlgHom ((MvPolynomial.monomial v) r) = r v.prod fun (x1 : P.vars) (x2 : ) => f.val x1 ^ x2
                                    noncomputable def Algebra.Generators.Hom.equivAlgHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] [Algebra R S'] [IsScalarTower R R' S'] [IsScalarTower R S S'] :
                                    P.Hom P' { f : P.Ring →ₐ[R] P'.Ring // ∀ (x : P.Ring), (MvPolynomial.aeval P'.val) (f x) = (algebraMap S S') ((MvPolynomial.aeval P.val) x) }

                                    Giving a hom between two families of generators is equivalent to giving an algebra homomorphism between the polynomial rings.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[simp]
                                      theorem Algebra.Generators.Hom.equivAlgHom_apply_coe {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] [Algebra R S'] [IsScalarTower R R' S'] [IsScalarTower R S S'] (f : P.Hom P') :
                                      (Algebra.Generators.Hom.equivAlgHom f) = f.toAlgHom
                                      @[simp]
                                      theorem Algebra.Generators.Hom.equivAlgHom_symm_apply_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] [Algebra R S'] [IsScalarTower R R' S'] [IsScalarTower R S S'] (f : { f : P.Ring →ₐ[R] P'.Ring // ∀ (x : P.Ring), (MvPolynomial.aeval P'.val) (f x) = (algebraMap S S') ((MvPolynomial.aeval P.val) x) }) (i : P.vars) :
                                      (Algebra.Generators.Hom.equivAlgHom.symm f).val i = f (MvPolynomial.X i)
                                      def Algebra.Generators.defaultHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] (P' : Algebra.Generators R' S') [Algebra S S'] :
                                      P.Hom P'

                                      The hom from P to P' given by the designated section of P'.

                                      Equations
                                      • P.defaultHom P' = { val := P' (algebraMap S S') P.val, aeval_val := }
                                      Instances For
                                        @[simp]
                                        theorem Algebra.Generators.defaultHom_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] (P' : Algebra.Generators R' S') [Algebra S S'] (a✝ : P.vars) :
                                        (P.defaultHom P').val a✝ = (P' (algebraMap S S') P.val) a✝
                                        instance Algebra.Generators.instInhabitedHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] (P' : Algebra.Generators R' S') [Algebra S S'] :
                                        Inhabited (P.Hom P')
                                        Equations
                                        • P.instInhabitedHom P' = { default := P.defaultHom P' }
                                        noncomputable def Algebra.Generators.Hom.id {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
                                        P.Hom P

                                        The identity hom.

                                        Equations
                                        Instances For
                                          @[simp]
                                          theorem Algebra.Generators.Hom.id_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) (n : P.vars) :
                                          @[simp]
                                          theorem Algebra.Generators.Hom.toAlgHom_id {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
                                          (Algebra.Generators.Hom.id P).toAlgHom = AlgHom.id R P.Ring
                                          noncomputable def Algebra.Generators.Hom.comp {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} {R'' : Type u_4} {S'' : Type u_5} [CommRing R''] [CommRing S''] [Algebra R'' S''] {P'' : Algebra.Generators R'' S''} [Algebra R' R''] [Algebra R' S''] [Algebra S S'] [Algebra S' S''] [Algebra S S''] [IsScalarTower R' R'' S''] [IsScalarTower R' S' S''] [IsScalarTower S S' S''] (f : P'.Hom P'') (g : P.Hom P') :
                                          P.Hom P''

                                          The composition of two homs.

                                          Equations
                                          • f.comp g = { val := fun (x : P.vars) => (MvPolynomial.aeval f.val) (g.val x), aeval_val := }
                                          Instances For
                                            @[simp]
                                            theorem Algebra.Generators.Hom.comp_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} {R'' : Type u_4} {S'' : Type u_5} [CommRing R''] [CommRing S''] [Algebra R'' S''] {P'' : Algebra.Generators R'' S''} [Algebra R' R''] [Algebra R' S''] [Algebra S S'] [Algebra S' S''] [Algebra S S''] [IsScalarTower R' R'' S''] [IsScalarTower R' S' S''] [IsScalarTower S S' S''] (f : P'.Hom P'') (g : P.Hom P') (x : P.vars) :
                                            (f.comp g).val x = (MvPolynomial.aeval f.val) (g.val x)
                                            @[simp]
                                            theorem Algebra.Generators.Hom.comp_id {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_2} {S' : Type u_1} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] [Algebra R S'] [IsScalarTower R R' S'] [IsScalarTower R S S'] (f : P.Hom P') :
                                            @[simp]
                                            theorem Algebra.Generators.Hom.id_comp {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R' : Type u_2} {S' : Type u_1} [CommRing R'] [CommRing S'] [Algebra R' S'] (P' : Algebra.Generators R' S') [Algebra S S'] (f : P.Hom P') :
                                            @[simp]
                                            theorem Algebra.Generators.Hom.toAlgHom_comp_apply {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R' : Type u_2} {S' : Type u_4} [CommRing R'] [CommRing S'] [Algebra R' S'] (P' : Algebra.Generators R' S') {R'' : Type u_1} {S'' : Type u_3} [CommRing R''] [CommRing S''] [Algebra R'' S''] (P'' : Algebra.Generators R'' S'') [Algebra R R'] [Algebra R' R''] [Algebra R' S''] [Algebra S S'] [Algebra S' S''] [Algebra S S''] [Algebra R R''] [IsScalarTower R R' R''] [IsScalarTower R' R'' S''] [IsScalarTower R' S' S''] [IsScalarTower S S' S''] (f : P.Hom P') (g : P'.Hom P'') (x : P.Ring) :
                                            (g.comp f).toAlgHom x = g.toAlgHom (f.toAlgHom x)
                                            noncomputable def Algebra.Generators.toComp {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) :
                                            P.Hom (Q.comp P)

                                            Given families of generators X ⊆ T over S and Y ⊆ S over R, there is a map of generators R[Y] → R[X, Y].

                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem Algebra.Generators.toComp_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) (i : P.vars) :
                                              (Q.toComp P).val i = MvPolynomial.X (Sum.inr i)
                                              noncomputable def Algebra.Generators.ofComp {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) :
                                              (Q.comp P).Hom Q

                                              Given families of generators X ⊆ T over S and Y ⊆ S over R, there is a map of generators R[X, Y] → S[X].

                                              Equations
                                              • Q.ofComp P = { val := fun (i : (Q.comp P).vars) => Sum.elim MvPolynomial.X (MvPolynomial.C P.val) i, aeval_val := }
                                              Instances For
                                                @[simp]
                                                theorem Algebra.Generators.ofComp_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (Q : Algebra.Generators S T) (P : Algebra.Generators R S) (i : (Q.comp P).vars) :
                                                (Q.ofComp P).val i = Sum.elim MvPolynomial.X (MvPolynomial.C P.val) i
                                                noncomputable def Algebra.Generators.toExtendScalars {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (P : Algebra.Generators R T) :

                                                Given families of generators X ⊆ T, there is a map R[X] → S[X].

                                                Equations
                                                • P.toExtendScalars = { val := MvPolynomial.X, aeval_val := }
                                                Instances For
                                                  @[simp]
                                                  theorem Algebra.Generators.toExtendScalars_val {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {T : Type u_1} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (P : Algebra.Generators R T) (n : P.vars) :
                                                  P.toExtendScalars.val n = MvPolynomial.X n
                                                  noncomputable def Algebra.Generators.Hom.toExtensionHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] [Algebra R S'] [IsScalarTower R R' S'] [IsScalarTower R S S'] (f : P.Hom P') :
                                                  P.toExtension.Hom P'.toExtension

                                                  Reinterpret a hom between generators as a hom between extensions.

                                                  Equations
                                                  • f.toExtensionHom = { toRingHom := f.toAlgHom.toRingHom, toRingHom_algebraMap := , algebraMap_toRingHom := }
                                                  Instances For
                                                    @[simp]
                                                    theorem Algebra.Generators.Hom.toExtensionHom_toRingHom {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {P : Algebra.Generators R S} {R' : Type u_1} {S' : Type u_2} [CommRing R'] [CommRing S'] [Algebra R' S'] {P' : Algebra.Generators R' S'} [Algebra R R'] [Algebra S S'] [Algebra R S'] [IsScalarTower R R' S'] [IsScalarTower R S S'] (f : P.Hom P') :
                                                    f.toExtensionHom.toRingHom = f.toAlgHom.toRingHom
                                                    @[simp]
                                                    @[simp]
                                                    theorem Algebra.Generators.Hom.toExtensionHom_comp {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) {R' : Type u_4} {S' : Type u_1} [CommRing R'] [CommRing S'] [Algebra R' S'] (P' : Algebra.Generators R' S') {R'' : Type u_2} {S'' : Type u_3} [CommRing R''] [CommRing S''] [Algebra R'' S''] (P'' : Algebra.Generators R'' S'') [Algebra R R'] [Algebra R' R''] [Algebra R' S''] [Algebra S S'] [Algebra S' S''] [Algebra S S''] [Algebra R S'] [IsScalarTower R S S'] [Algebra R R''] [Algebra R S''] [IsScalarTower R R'' S''] [IsScalarTower R S S''] [IsScalarTower R' R'' S''] [IsScalarTower R' S' S''] [IsScalarTower S S' S''] [IsScalarTower R R' R''] [IsScalarTower R R' S'] (f : P'.Hom P'') (g : P.Hom P') :
                                                    (f.comp g).toExtensionHom = f.toExtensionHom.comp g.toExtensionHom
                                                    @[reducible, inline]
                                                    noncomputable abbrev Algebra.Generators.ker {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] (P : Algebra.Generators R S) :
                                                    Ideal P.Ring

                                                    The kernel of a presentation.

                                                    Equations
                                                    • P.ker = P.toExtension.ker
                                                    Instances For