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

Equations
    Instances For

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

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

          The element of SymAlg α that represents a : α.

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

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

              Equations
                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
                  Equations
                    instance SymAlg.instUnique {α : Type u_1} [Unique α] :
                    Equations
                      instance SymAlg.instOne {α : Type u_1} [One α] :
                      Equations
                        instance SymAlg.instZero {α : Type u_1} [Zero α] :
                        Equations
                          instance SymAlg.instAdd {α : Type u_1} [Add α] :
                          Equations
                            instance SymAlg.instSub {α : Type u_1} [Sub α] :
                            Equations
                              instance SymAlg.instNeg {α : Type u_1} [Neg α] :
                              Equations
                                instance SymAlg.instMulOfAddOfInvertibleOfNat {α : Type u_1} [Add α] [Mul α] [One α] [OfNat α 2] [Invertible 2] :
                                Equations
                                  instance SymAlg.instInv {α : Type u_1} [Inv α] :
                                  Equations
                                    instance SymAlg.instSMul {α : Type u_1} (R : Type u_2) [SMul R α] :
                                    Equations
                                      @[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
                                      instance SymAlg.addMonoid {α : Type u_1} [AddMonoid α] :
                                      Equations
                                        instance SymAlg.addGroup {α : Type u_1} [AddGroup α] :
                                        Equations
                                          Equations
                                            instance SymAlg.instModule {α : Type u_1} {R : Type u_2} [Semiring R] [AddCommMonoid α] [Module R α] :
                                            Equations
                                              instance SymAlg.instInvertibleCoeEquivSym {α : Type u_1} [Mul α] [AddMonoidWithOne α] [Invertible 2] (a : α) [Invertible a] :
                                              Equations
                                                @[simp]
                                                theorem SymAlg.invOf_sym {α : Type u_1} [Mul α] [AddMonoidWithOne α] [Invertible 2] (a : α) [Invertible a] :

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

                                                Equations

                                                  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