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 #
- [Hanche-Olsen and Størmer, Jordan Operator Algebras][hancheolsenstormer1984]
Equations
- «term_ˢʸᵐ» = Lean.ParserDescr.trailingNode `term_ˢʸᵐ 1024 1024 (Lean.ParserDescr.symbol "ˢʸᵐ")
Instances For
@[match_pattern]
The element of SymAlg α
that represents a : α
.
Equations
- SymAlg.sym = Equiv.refl α
Instances For
Equations
- ⋯ = ⋯
Equations
- SymAlg.instUnique = Unique.mk' αˢʸᵐ
Equations
- SymAlg.addCommSemigroup = Function.Injective.addCommSemigroup ⇑SymAlg.unsym ⋯ ⋯
Equations
- SymAlg.addMonoid = Function.Injective.addMonoid ⇑SymAlg.unsym ⋯ ⋯ ⋯ ⋯
Equations
- SymAlg.addGroup = Function.Injective.addGroup ⇑SymAlg.unsym ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- SymAlg.addCommMonoid = let __src := SymAlg.addCommSemigroup; let __src_1 := SymAlg.addMonoid; AddCommMonoid.mk ⋯
Equations
- SymAlg.addCommGroup = let __src := SymAlg.addCommMonoid; let __src_1 := SymAlg.addGroup; AddCommGroup.mk ⋯
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 (SymAlg.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
- SymAlg.nonAssocSemiring = let __src := SymAlg.addCommMonoid; NonAssocSemiring.mk ⋯ ⋯ ⋯ ⋯
The symmetrization of a real (unital, associative) algebra is a non-associative ring.
Equations
- SymAlg.instNonAssocRingOfInvertibleOfNat = let __src := SymAlg.nonAssocSemiring; let __src_1 := SymAlg.addCommGroup; 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 : αˢʸᵐ)
:
Equations
- SymAlg.instCommMagmaOfInvertibleOfNat = CommMagma.mk ⋯
Equations
- ⋯ = ⋯