Trace for (finite) ring extensions. #
Suppose we have an R
-algebra S
with a finite basis. For each s : S
,
the trace of the linear map given by multiplying by s
gives information about
the roots of the minimal polynomial of s
over R
.
Main definitions #
Algebra.trace R S x
: the trace of an elements
of anR
-algebraS
Algebra.traceForm R S
: bilinear form sendingx
,y
to the trace ofx * y
Algebra.traceMatrix R b
: the matrix whose(i j)
-th element is the trace ofb i * b j
.Algebra.embeddingsMatrix A C b : Matrix κ (B →ₐ[A] C) C
is the matrix whose(i, σ)
coefficient isσ (b i)
.Algebra.embeddingsMatrixReindex A C b e : Matrix κ κ C
is the matrix whose(i, j)
coefficient isσⱼ (b i)
, whereσⱼ : B →ₐ[A] C
is the embedding corresponding toj : κ
given by a bijectione : κ ≃ (B →ₐ[A] C)
.
Main results #
trace_algebraMap_of_basis
,trace_algebraMap
: ifx : K
, thenTr_{L/K} x = [L : K] x
trace_trace_of_basis
,trace_trace
:Tr_{L/K} (Tr_{F/L} x) = Tr_{F/K} x
trace_eq_sum_roots
: the trace ofx : K(x)
is the sum of all conjugate roots ofx
trace_eq_sum_embeddings
: the trace ofx : K(x)
is the sum of all embeddings ofx
into an algebraically closed fieldtraceForm_nondegenerate
: the trace form over a separable extension is a nondegenerate bilinear form
Implementation notes #
Typically, the trace is defined specifically for finite field extensions. The definition is as general as possible and the assumption that we have fields or that the extension is finite is added to the lemmas as needed.
We only define the trace for left multiplication (Algebra.leftMulMatrix
,
i.e. LinearMap.mulLeft
).
For now, the definitions assume S
is commutative, so the choice doesn't matter anyway.
References #
- https://en.wikipedia.org/wiki/Field_trace
The trace of an element s
of an R
-algebra is the trace of (*) s
,
as an R
-linear map.
Equations
- Algebra.trace R S = LinearMap.comp (LinearMap.trace R S) (AlgHom.toLinearMap (Algebra.lmul R S))
Instances For
If x
is in the base field K
, then the trace is [L : K] * x
.
If x
is in the base field K
, then the trace is [L : K] * x
.
(If L
is not finite-dimensional over K
, then trace
and finrank
return 0
.)
The traceForm
maps x y : S
to the trace of x * y
.
It is a symmetric bilinear form and is nondegenerate if the extension is separable.
Equations
- Algebra.traceForm R S = ↑LinearMap.toBilin (LinearMap.compr₂ (AlgHom.toLinearMap (Algebra.lmul R S)) (Algebra.trace R S))
Instances For
Given pb : PowerBasis K S
, the trace of pb.gen
is -(minpoly K pb.gen).nextCoeff
.
Given pb : PowerBasis K S
, then the trace of pb.gen
is
((minpoly K pb.gen).aroots F).sum
.
Given an A
-algebra B
and b
, a κ
-indexed family of elements of B
, we define
traceMatrix A b
as the matrix whose (i j)
-th element is the trace of b i * b j
.
Equations
- Algebra.traceMatrix A b = ↑Matrix.of fun i j => BilinForm.bilin (Algebra.traceForm A B) (b i) (b j)
Instances For
embeddingsMatrix A C b : Matrix κ (B →ₐ[A] C) C
is the matrix whose (i, σ)
coefficient is
σ (b i)
. It is mostly useful for fields when Fintype.card κ = finrank A B
and C
is
algebraically closed.
Equations
- Algebra.embeddingsMatrix A C b = ↑Matrix.of fun i σ => ↑σ (b i)
Instances For
embeddingsMatrixReindex A C b e : Matrix κ κ C
is the matrix whose (i, j)
coefficient
is σⱼ (b i)
, where σⱼ : B →ₐ[A] C
is the embedding corresponding to j : κ
given by a
bijection e : κ ≃ (B →ₐ[A] C)
. It is mostly useful for fields and C
is algebraically closed.
In this case, in presence of h : Fintype.card κ = finrank A B
, one can take
e := equivOfCardEq ((AlgHom.card A B C).trans h.symm)
.
Equations
- Algebra.embeddingsMatrixReindex A C b e = ↑(Matrix.reindex (Equiv.refl κ) e.symm) (Algebra.embeddingsMatrix A C b)