Documentation

Mathlib.Algebra.Symmetrized

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).

Note #

See SymmetricAlgebra instead if you are looking for the symmetric algebra of a module.

References #

def SymAlg (α : Type u_1) :
Type u_1

The symmetrized algebra (denoted as αˢʸᵐ) has the same underlying space as the original algebra α.

Instances For

    The symmetrized algebra (denoted as αˢʸᵐ) has the same underlying space as the original algebra α.

    Instances For
      @[match_pattern]
      def SymAlg.sym {α : Type u_1} :

      The element of SymAlg α that represents a : α.

      Instances For
        def SymAlg.unsym {α : Type u_1} :

        The element of α represented by x : αˢʸᵐ.

        Instances For
          @[simp]
          theorem SymAlg.unsym_sym {α : Type u_1} (a : α) :
          unsym (sym a) = a
          @[simp]
          theorem SymAlg.sym_unsym {α : Type u_1} (a : α) :
          sym (unsym a) = a
          @[simp]
          theorem SymAlg.sym_comp_unsym {α : Type u_1} :
          sym unsym = id
          @[simp]
          theorem SymAlg.unsym_comp_sym {α : Type u_1} :
          unsym sym = id
          @[simp]
          theorem SymAlg.sym_symm {α : Type u_1} :
          @[simp]
          theorem SymAlg.unsym_symm {α : Type u_1} :
          theorem SymAlg.sym_inj {α : Type u_1} {a b : α} :
          sym a = sym b a = b
          theorem SymAlg.unsym_inj {α : Type u_1} {a b : αˢʸᵐ} :
          unsym a = unsym b a = b
          @[implicit_reducible]
          @[implicit_reducible]
          instance SymAlg.instUnique {α : Type u_1} [Unique α] :
          @[implicit_reducible]
          instance SymAlg.instOne {α : Type u_1} [One α] :
          @[implicit_reducible]
          instance SymAlg.instZero {α : Type u_1} [Zero α] :
          @[implicit_reducible]
          instance SymAlg.instAdd {α : Type u_1} [Add α] :
          @[implicit_reducible]
          instance SymAlg.instSub {α : Type u_1} [Sub α] :
          @[implicit_reducible]
          instance SymAlg.instNeg {α : Type u_1} [Neg α] :
          @[implicit_reducible]
          instance SymAlg.instMulOfAddOfInvertibleOfNat {α : Type u_1} [Add α] [Mul α] [One α] [OfNat α 2] [Invertible 2] :
          @[implicit_reducible]
          instance SymAlg.instInv {α : Type u_1} [Inv α] :
          @[implicit_reducible]
          instance SymAlg.instSMul {α : Type u_1} (R : Type u_2) [SMul R α] :
          @[simp]
          theorem SymAlg.sym_one {α : Type u_1} [One α] :
          sym 1 = 1
          @[simp]
          theorem SymAlg.sym_zero {α : Type u_1} [Zero α] :
          sym 0 = 0
          @[simp]
          theorem SymAlg.unsym_one {α : Type u_1} [One α] :
          unsym 1 = 1
          @[simp]
          theorem SymAlg.unsym_zero {α : Type u_1} [Zero α] :
          unsym 0 = 0
          @[simp]
          theorem SymAlg.sym_add {α : Type u_1} [Add α] (a b : α) :
          sym (a + b) = sym a + sym b
          @[simp]
          theorem SymAlg.unsym_add {α : Type u_1} [Add α] (a b : αˢʸᵐ) :
          unsym (a + b) = unsym a + unsym b
          @[simp]
          theorem SymAlg.sym_sub {α : Type u_1} [Sub α] (a b : α) :
          sym (a - b) = sym a - sym b
          @[simp]
          theorem SymAlg.unsym_sub {α : Type u_1} [Sub α] (a b : αˢʸᵐ) :
          unsym (a - b) = unsym a - unsym b
          @[simp]
          theorem SymAlg.sym_neg {α : Type u_1} [Neg α] (a : α) :
          sym (-a) = -sym a
          @[simp]
          theorem SymAlg.unsym_neg {α : Type u_1} [Neg α] (a : αˢʸᵐ) :
          theorem SymAlg.mul_def {α : Type u_1} [Add α] [Mul α] [One α] [OfNat α 2] [Invertible 2] (a b : αˢʸᵐ) :
          a * b = sym (2 * (unsym a * unsym b + unsym b * unsym a))
          theorem SymAlg.unsym_mul {α : Type u_1} [Mul α] [Add α] [One α] [OfNat α 2] [Invertible 2] (a b : αˢʸᵐ) :
          unsym (a * b) = 2 * (unsym a * unsym b + unsym b * unsym a)
          theorem SymAlg.sym_mul_sym {α : Type u_1} [Mul α] [Add α] [One α] [OfNat α 2] [Invertible 2] (a b : α) :
          sym a * sym b = sym (2 * (a * b + b * a))
          @[simp]
          theorem SymAlg.sym_inv {α : Type u_1} [Inv α] (a : α) :
          @[simp]
          theorem SymAlg.unsym_inv {α : Type u_1} [Inv α] (a : αˢʸᵐ) :
          @[simp]
          theorem SymAlg.sym_smul {α : Type u_1} {R : Type u_2} [SMul R α] (c : R) (a : α) :
          sym (c a) = c sym a
          @[simp]
          theorem SymAlg.unsym_smul {α : Type u_1} {R : Type u_2} [SMul R α] (c : R) (a : αˢʸᵐ) :
          unsym (c a) = c unsym a
          @[simp]
          theorem SymAlg.unsym_eq_one_iff {α : Type u_1} [One α] (a : αˢʸᵐ) :
          unsym a = 1 a = 1
          @[simp]
          theorem SymAlg.unsym_eq_zero_iff {α : Type u_1} [Zero α] (a : αˢʸᵐ) :
          unsym a = 0 a = 0
          @[simp]
          theorem SymAlg.sym_eq_one_iff {α : Type u_1} [One α] (a : α) :
          sym a = 1 a = 1
          @[simp]
          theorem SymAlg.sym_eq_zero_iff {α : Type u_1} [Zero α] (a : α) :
          sym a = 0 a = 0
          theorem SymAlg.unsym_ne_one_iff {α : Type u_1} [One α] (a : αˢʸᵐ) :
          unsym a 1 a 1
          theorem SymAlg.unsym_ne_zero_iff {α : Type u_1} [Zero α] (a : αˢʸᵐ) :
          unsym a 0 a 0
          theorem SymAlg.sym_ne_one_iff {α : Type u_1} [One α] (a : α) :
          sym a 1 a 1
          theorem SymAlg.sym_ne_zero_iff {α : Type u_1} [Zero α] (a : α) :
          sym a 0 a 0
          @[implicit_reducible]
          @[implicit_reducible]
          instance SymAlg.addMonoid {α : Type u_1} [AddMonoid α] :
          @[implicit_reducible]
          instance SymAlg.addGroup {α : Type u_1} [AddGroup α] :
          @[implicit_reducible]
          @[implicit_reducible]
          @[implicit_reducible]
          instance SymAlg.instModule {α : Type u_1} {R : Type u_2} [Semiring R] [AddCommMonoid α] [Module R α] :
          @[implicit_reducible]
          instance SymAlg.instInvertibleCoeEquivSym {α : Type u_1} [Mul α] [AddMonoidWithOne α] [Invertible 2] (a : α) [Invertible a] :
          @[simp]
          theorem SymAlg.invOf_sym {α : Type u_1} [Mul α] [AddMonoidWithOne α] [Invertible 2] (a : α) [Invertible a] :
          @[implicit_reducible]
          @[implicit_reducible]

          The symmetrization of a real (unital, associative) algebra is a non-associative ring.

          The squaring operation coincides for both multiplications

          theorem SymAlg.unsym_mul_self {α : Type u_1} [Semiring α] [Invertible 2] (a : αˢʸᵐ) :
          unsym (a * a) = unsym a * unsym a
          theorem SymAlg.sym_mul_self {α : Type u_1} [Semiring α] [Invertible 2] (a : α) :
          sym (a * a) = sym a * sym a
          theorem SymAlg.mul_comm {α : Type u_1} [Mul α] [AddCommSemigroup α] [One α] [OfNat α 2] [Invertible 2] (a b : αˢʸᵐ) :
          a * b = b * a
          @[implicit_reducible]