Symmetrized algebra #
A commutative multiplication on a real or complex space can be constructed from any multiplication by "symmetrization" i.e $$ a \circ b = \frac{1}{2}(ab + ba) $$
We provide the symmetrized version of a type α
as SymAlg α
, with notation αˢʸᵐ
.
Implementation notes #
The approach taken here is inspired by Mathlib/Algebra/Opposites.lean
. We use Oxford Spellings
(IETF en-GB-oxendict).
References #
The symmetrized algebra has the same underlying space as the original algebra.
Equations
- «term_ˢʸᵐ» = Lean.ParserDescr.trailingNode `«term_ˢʸᵐ» 1024 1024 (Lean.ParserDescr.symbol "ˢʸᵐ")
Instances For
The element of α
represented by x : αˢʸᵐ
.
Equations
Instances For
Equations
- SymAlg.instInhabited = { default := SymAlg.sym default }
Equations
Equations
- SymAlg.instOne = { one := SymAlg.sym 1 }
Equations
- SymAlg.instZero = { zero := SymAlg.sym 0 }
Equations
- SymAlg.instAdd = { add := fun (a b : αˢʸᵐ) => SymAlg.sym (SymAlg.unsym a + SymAlg.unsym b) }
Equations
- SymAlg.instSub = { sub := fun (a b : αˢʸᵐ) => SymAlg.sym (SymAlg.unsym a - SymAlg.unsym b) }
Equations
- SymAlg.instNeg = { neg := fun (a : αˢʸᵐ) => SymAlg.sym (-SymAlg.unsym a) }
Equations
- SymAlg.instInv = { inv := fun (a : αˢʸᵐ) => SymAlg.sym (SymAlg.unsym a)⁻¹ }
Equations
Equations
- SymAlg.addGroup = Function.Injective.addGroup ⇑SymAlg.unsym ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
Equations
instance
SymAlg.instModule
{α : Type u_1}
{R : Type u_2}
[Semiring R]
[AddCommMonoid α]
[Module R α]
:
Equations
- SymAlg.instModule = Function.Injective.module R { toFun := ⇑SymAlg.unsym, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯
instance
SymAlg.instInvertibleCoeEquivSym
{α : Type u_1}
[Mul α]
[AddMonoidWithOne α]
[Invertible 2]
(a : α)
[Invertible a]
:
Invertible (sym a)
Equations
- SymAlg.instInvertibleCoeEquivSym a = { invOf := SymAlg.sym ⅟a, invOf_mul_self := ⋯, mul_invOf_self := ⋯ }
@[simp]
theorem
SymAlg.invOf_sym
{α : Type u_1}
[Mul α]
[AddMonoidWithOne α]
[Invertible 2]
(a : α)
[Invertible a]
:
Equations
The symmetrization of a real (unital, associative) algebra is a non-associative ring.
Equations
- SymAlg.instNonAssocRingOfInvertibleOfNat = NonAssocRing.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
The squaring operation coincides for both multiplications
theorem
SymAlg.mul_comm
{α : Type u_1}
[Mul α]
[AddCommSemigroup α]
[One α]
[OfNat α 2]
[Invertible 2]
(a b : αˢʸᵐ)
: