Generators of algebras #
Main definition #
Algebra.Generators
: A family of generators of aR
-algebraS
consists ofAlgebra.Generators.Hom
: Given a commuting squareR --→ P = R[X] ---→ S | | ↓ ↓ R' -→ P' = R'[X'] → S
A hom between
P
andP'
is an assignmentX → P'
such that the arrows commute.Algebra.Generators.Cotangent
: The cotangent space wrtP = R[X] → S
, i.e. the spaceI/I²
withI
being the kernel of the presentation.
A family of generators of a R
-algebra S
consists of
vars
: The type of variables.val : vars → S
: The assignment of each variable to a value inS
.σ
: A section ofR[X] → S
.
- vars : Type w
The type of variables.
- val : self.vars → S
The assignment of each variable to a value in
S
. - σ' : S → MvPolynomial self.vars R
A section of
R[X] → S
. - aeval_val_σ' : ∀ (s : S), (MvPolynomial.aeval self.val) (self.σ' s) = s
Instances For
The polynomial ring wrt a family of generators.
Equations
- P.Ring = MvPolynomial P.vars R
Instances For
The designated section of wrt a family of generators.
Equations
- P.σ = P.σ'
Instances For
See Note [custom simps projection]
Equations
- Algebra.Generators.Simps.σ P = P.σ
Instances For
Equations
- P.instRing = (MvPolynomial.aeval P.val).toAlgebra
Equations
- ⋯ = ⋯
Construct Generators
from an assignment I → S
such that R[X] → S
is surjective.
Equations
- Algebra.Generators.ofSurjective val h = { vars := vars, val := val, σ' := fun (x : S) => ⋯.choose, aeval_val_σ' := ⋯ }
Instances For
Construct Generators
from an assignment I → S
such that R[X] → S
is surjective.
Equations
- Algebra.Generators.ofAlgHom f h = Algebra.Generators.ofSurjective (⇑f ∘ MvPolynomial.X) ⋯
Instances For
Construct Generators
from a family of generators of S
.
Equations
- Algebra.Generators.ofSet hs = Algebra.Generators.ofSurjective Subtype.val ⋯
Instances For
The Generators
containing the whole algebra, which induces the canonical map R[S] → S
.
Equations
- Algebra.Generators.self R S = { vars := S, val := id, σ' := MvPolynomial.X, aeval_val_σ' := ⋯ }
Instances For
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
Given two families of generators S[X] → T
and R[Y] → S
,
we may constuct the family of generators R[X, Y] → T
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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
- Algebra.Generators.extendScalars S P = { vars := P.vars, val := P.val, σ' := fun (x : T) => (MvPolynomial.map (algebraMap R S)) (P.σ x), aeval_val_σ' := ⋯ }
Instances For
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
- P.baseChange = Algebra.Generators.ofSurjective (fun (x : P.vars) => 1 ⊗ₜ[R] P.val x) ⋯
Instances For
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.vars → P'.Ring
The assignment of each variable in
I
to a value inP' = R'[X']
. - aeval_val : ∀ (i : P.vars), (MvPolynomial.aeval P'.val) (self.val i) = (algebraMap S S') (P.val i)
Instances For
A hom between two families of generators gives an algebra homomorphism between the polynomial rings.
Equations
- f.toAlgHom = MvPolynomial.aeval f.val
Instances For
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
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
Equations
- P.instInhabitedHom P' = { default := P.defaultHom P' }
The identity hom.
Equations
- Algebra.Generators.Hom.id P = { val := MvPolynomial.X, aeval_val := ⋯ }
Instances For
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
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
- Q.toComp P = { val := fun (i : P.vars) => MvPolynomial.X (Sum.inr i), aeval_val := ⋯ }
Instances For
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
Instances For
Given families of generators X ⊆ T
, there is a map R[X] → S[X]
.
Equations
- P.toExtendScalars = { val := MvPolynomial.X, aeval_val := ⋯ }
Instances For
The kernel of a presentation.
Equations
- P.ker = RingHom.ker (algebraMap P.Ring S)
Instances For
The cotangent space of a presentation.
This is a type synonym so that P = R[X]
can act on it through the action of S
without creating
a diamond.
Equations
- P.Cotangent = P.ker.Cotangent
Instances For
Equations
- P.instAddCommGroupCotangent = inferInstanceAs (AddCommGroup P.ker.Cotangent)
The identity map P.ker.Cotangent → P.Cotangent
into the type synonym.
Equations
Instances For
Equations
- Algebra.Generators.Cotangent.module' = Module.compHom P.Cotangent (algebraMap R₀ S)
Equations
- ⋯ = ⋯
The quotient map from the kernel of P = R[X] → S
onto the cotangent space.
Equations
- Algebra.Generators.Cotangent.mk = { toFun := fun (x : ↥P.ker) => Algebra.Generators.Cotangent.of (P.ker.toCotangent x), map_add' := ⋯, map_smul' := ⋯ }
Instances For
A hom between families of generators induce a map between cotangent spaces.
Equations
- Algebra.Generators.Cotangent.map f = { toFun := fun (x : P.Cotangent) => Algebra.Generators.Cotangent.of ((P.ker.mapCotangent P'.ker f.toAlgHom ⋯) x.val), map_add' := ⋯, map_smul' := ⋯ }