File: Mathlib/RingTheory/Trace/Defs.lean

full_name: Algebra.trace
code: /-- The trace of an element `s` of an `R`-algebra is the trace of `(s * ·)`,
as an `R`-linear map. -/
noncomputable def trace : S →ₗ[R] R 
goal: S →ₗ[R] R

full_name: Algebra.trace_apply
code: theorem trace_apply (x) : trace R S x = LinearMap.trace R S (lmul R S x) 
goal: (Algebra.trace R S) x = (LinearMap.trace R S) ((Algebra.lmul R S) x)

full_name: Algebra.trace_eq_zero_of_not_exists_basis
code: theorem trace_eq_zero_of_not_exists_basis (h : ¬∃ s : Finset S, Nonempty (Basis s R S)) :
    trace R S = 0 
goal: Algebra.trace R S = 0

full_name: Algebra.trace_eq_matrix_trace
code: theorem trace_eq_matrix_trace [DecidableEq ι] (b : Basis ι R S) (s : S) :
    trace R S s = Matrix.trace (Algebra.leftMulMatrix b s) 
goal: (Algebra.trace R S) s = ((Algebra.leftMulMatrix b) s).trace

full_name: Algebra.trace_algebraMap_of_basis
code: /-- If `x` is in the base field `K`, then the trace is `[L : K] * x`. -/
theorem trace_algebraMap_of_basis (x : R) : trace R S (algebraMap R S x) = Fintype.card ι • x 
goal: (Algebra.trace R S) ((algebraMap R S) x) = Fintype.card ι • x

full_name: Algebra.trace_algebraMap
code: /-- 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`.)
-/
@[simp]
theorem trace_algebraMap [StrongRankCondition R] [Module.Free R S] (x : R) :
    trace R S (algebraMap R S x) = finrank R S • x 
goal: (Algebra.trace R S) ((algebraMap R S) x) = FiniteDimensional.finrank R S • x

full_name: Algebra.trace_trace_of_basis
code: theorem trace_trace_of_basis [Algebra S T] [IsScalarTower R S T] {ι κ : Type*} [Finite ι]
    [Finite κ] (b : Basis ι R S) (c : Basis κ S T) (x : T) :
    trace R S (trace S T x) = trace R T x 
goal: (Algebra.trace R S) ((Algebra.trace S T) x) = (Algebra.trace R T) x

full_name: Algebra.trace_comp_trace_of_basis
code: theorem trace_comp_trace_of_basis [Algebra S T] [IsScalarTower R S T] {ι κ : Type*} [Finite ι]
    [Finite κ] (b : Basis ι R S) (c : Basis κ S T) :
    (trace R S).comp ((trace S T).restrictScalars R) = trace R T 
goal: Algebra.trace R S ∘ₗ ↑R (Algebra.trace S T) = Algebra.trace R T

full_name: Algebra.trace_trace
code: @[simp]
theorem trace_trace [Algebra S T] [IsScalarTower R S T]
    [Module.Free R S] [Module.Finite R S] [Module.Free S T] [Module.Finite S T] (x : T) :
    trace R S (trace S T x) = trace R T x 
goal: (Algebra.trace R S) ((Algebra.trace S T) x) = (Algebra.trace R T) x

full_name: Algebra.trace_comp_trace
code: @[simp]
theorem trace_comp_trace [Algebra S T] [IsScalarTower R S T]
    [Module.Free R S] [Module.Finite R S] [Module.Free S T] [Module.Finite S T] :
    (trace R S).comp ((trace S T).restrictScalars R) = trace R T 
goal: Algebra.trace R S ∘ₗ ↑R (Algebra.trace S T) = Algebra.trace R T

full_name: Algebra.trace_prod_apply
code: @[simp]
theorem trace_prod_apply [Module.Free R S] [Module.Free R T] [Module.Finite R S] [Module.Finite R T]
    (x : S × T) : trace R (S × T) x = trace R S x.fst + trace R T x.snd 
goal: (Algebra.trace R (S × T)) x = (Algebra.trace R S) x.1 + (Algebra.trace R T) x.2

full_name: Algebra.trace_prod
code: theorem trace_prod [Module.Free R S] [Module.Free R T] [Module.Finite R S] [Module.Finite R T] :
    trace R (S × T) = (trace R S).coprod (trace R T) 
goal: Algebra.trace R (S × T) = (Algebra.trace R S).coprod (Algebra.trace R T)

full_name: Algebra.traceForm
code: /-- 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. -/
noncomputable def traceForm : BilinForm R S 
goal: LinearMap.BilinForm R S

full_name: Algebra.traceForm_apply
code: @[simp]
theorem traceForm_apply (x y : S) : traceForm R S x y = trace R S (x * y) 
goal: ((Algebra.traceForm R S) x) y = (Algebra.trace R S) (x * y)

full_name: Algebra.traceForm_isSymm
code: theorem traceForm_isSymm : (traceForm R S).IsSymm 
goal: (Algebra.traceForm R S).IsSymm

full_name: Algebra.traceForm_toMatrix
code: theorem traceForm_toMatrix [DecidableEq ι] (i j) :
    BilinForm.toMatrix b (traceForm R S) i j = trace R S (b i * b j) 
goal: (BilinForm.toMatrix b) (Algebra.traceForm R S) i j = (Algebra.trace R S) (b i * b j)