Documentation

MIPRE.Foundations.NCPoly.Basic

Noncommutative polynomials with the conjugate-linear star #

MIPRE.NCPoly G is the free complex algebra on the letters G: finite complex combinations of words in G, multiplied by concatenation. It is a type synonym (a def, not an abbrev) for MonoidAlgebra ℂ (FreeMonoid G), and carries the involution of the free *-algebra on self-adjoint generators, (Σ_w c_w w)⋆ = Σ_w conj(c_w) reverse(w): conjugate the coefficients and reverse the words (MIPRE.NCPoly.coeff_star_apply, MIPRE.NCPoly.star_single). With it NCPoly G is a StarRing and a StarModule ℂ, and every letter NCPoly.gen g is self-adjoint.

This is the algebra of the Tsirelson route (planning/tsirelson-campaign.md, §3.1): the quadratic module of the measurement relations lives in it (MIPRE.Foundations.NCPoly.Cone), and strategies are evaluations of it on a Hilbert space.

Why a new star, and why a def #

Main declarations #

At the pinned Mathlib MonoidAlgebra is a structure with constructor ofCoeff and field coeff, so the star is defined on coefficients and transported.

def MIPRE.NCPoly (G : Type u_1) :
Type u_1

Noncommutative polynomials over ℂ in the letters G: the monoid algebra of the free monoid, with the conjugate-linear, word-reversing star declared below. A def, so that the star is not an instance on MonoidAlgebra.

Equations
Instances For
    @[instance_reducible]
    noncomputable instance MIPRE.NCPoly.instRing {G : Type u_1} :

    The ring structure of the monoid algebra.

    Equations
    • One or more equations did not get rendered due to their size.
    @[instance_reducible]
    noncomputable instance MIPRE.NCPoly.instAlgebra {G : Type u_1} :

    The complex algebra structure of the monoid algebra.

    Equations
    @[instance_reducible]
    noncomputable instance MIPRE.NCPoly.instInhabited {G : Type u_1} :

    NCPoly G is inhabited, by 0.

    Equations

    NCPoly G is nontrivial: 0 ≠ 1.

    The transport API #

    The coefficients of a polynomial, as a finitely supported function on words.

    Equations
    Instances For

      The polynomial with prescribed coefficients.

      Equations
      Instances For
        noncomputable def MIPRE.NCPoly.single {G : Type u_1} (w : FreeMonoid G) (c : ℂ) :

        The monomial c w of a word w with coefficient c.

        Equations
        Instances For
          @[simp]

          The coefficients of ofCoeff f are f.

          @[simp]
          theorem MIPRE.NCPoly.ofCoeff_coeff {G : Type u_1} (x : NCPoly G) :

          A polynomial is recovered from its coefficients.

          A polynomial is determined by its coefficients.

          @[simp]
          theorem MIPRE.NCPoly.coeff_inj {G : Type u_1} {x y : NCPoly G} :
          x.coeff = y.coeff ↔ x = y

          Equality of coefficient functions.

          theorem MIPRE.NCPoly.ext {G : Type u_1} {x y : NCPoly G} (h : ∀ (w : FreeMonoid G), x.coeff w = y.coeff w) :
          x = y

          Extensionality: two polynomials with the same coefficient on every word are equal.

          theorem MIPRE.NCPoly.ext_iff {G : Type u_1} {x y : NCPoly G} :
          x = y ↔ ∀ (w : FreeMonoid G), x.coeff w = y.coeff w
          @[simp]
          theorem MIPRE.NCPoly.coeff_zero {G : Type u_1} :
          coeff 0 = 0

          The coefficients of 0.

          @[simp]
          theorem MIPRE.NCPoly.coeff_add {G : Type u_1} (x y : NCPoly G) :
          (x + y).coeff = x.coeff + y.coeff

          The coefficients of a sum.

          @[simp]
          theorem MIPRE.NCPoly.coeff_neg {G : Type u_1} (x : NCPoly G) :

          The coefficients of a negation.

          @[simp]
          theorem MIPRE.NCPoly.coeff_sub {G : Type u_1} (x y : NCPoly G) :
          (x - y).coeff = x.coeff - y.coeff

          The coefficients of a difference.

          @[simp]
          theorem MIPRE.NCPoly.coeff_smul {G : Type u_1} (c : ℂ) (x : NCPoly G) :
          (c • x).coeff = c • x.coeff

          The coefficients of a complex multiple.

          @[simp]
          theorem MIPRE.NCPoly.coeff_real_smul {G : Type u_1} (r : ℝ) (x : NCPoly G) :
          (r • x).coeff = ↑r • x.coeff

          The coefficients of a real multiple.

          @[simp]
          theorem MIPRE.NCPoly.coeff_sum {G : Type u_1} {ι : Type u_2} (s : Finset ι) (f : ι → NCPoly G) :
          (∑ i ∈ s, f i).coeff = ∑ i ∈ s, (f i).coeff

          The coefficients of a finite sum.

          @[simp]
          theorem MIPRE.NCPoly.coeff_single {G : Type u_1} (w : FreeMonoid G) (c : ℂ) :

          The coefficients of a monomial.

          theorem MIPRE.NCPoly.coeff_single_apply {G : Type u_1} (w v : FreeMonoid G) (c : ℂ) [Decidable (w = v)] :
          (single w c).coeff v = if w = v then c else 0

          The coefficient of a monomial at a word.

          @[simp]
          theorem MIPRE.NCPoly.single_zero {G : Type u_1} (w : FreeMonoid G) :
          single w 0 = 0

          A monomial with coefficient 0 vanishes.

          theorem MIPRE.NCPoly.single_neg {G : Type u_1} (w : FreeMonoid G) (c : ℂ) :
          single w (-c) = -single w c

          single w commutes with negation.

          @[simp]
          theorem MIPRE.NCPoly.smul_single {G : Type u_1} (c' : ℂ) (w : FreeMonoid G) (c : ℂ) :
          c' • single w c = single w (c' * c)

          A complex multiple of a monomial.

          theorem MIPRE.NCPoly.single_eq_smul_single_one {G : Type u_1} (w : FreeMonoid G) (c : ℂ) :
          single w c = c • single w 1

          A monomial is a multiple of the monomial with coefficient 1.

          theorem MIPRE.NCPoly.one_def {G : Type u_1} :
          1 = single 1 1

          The unit is the empty word.

          The coefficients of the unit.

          @[simp]
          theorem MIPRE.NCPoly.single_mul_single {G : Type u_1} (w w' : FreeMonoid G) (c c' : ℂ) :
          single w c * single w' c' = single (w * w') (c * c')

          The product of two monomials concatenates the words.

          theorem MIPRE.NCPoly.coeff_mul {G : Type u_1} [DecidableEq (FreeMonoid G)] (x y : NCPoly G) (w : FreeMonoid G) :
          (x * y).coeff w = x.coeff.sum fun (u : FreeMonoid G) (a : ℂ) => y.coeff.sum fun (v : FreeMonoid G) (b : ℂ) => if u * v = w then a * b else 0

          The coefficients of a product: the coefficient of w in x y is the sum of the x_u y_v over the factorizations w = u v.

          @[simp]
          theorem MIPRE.NCPoly.sum_single {G : Type u_1} (x : NCPoly G) :

          Every polynomial is the sum of its monomials.

          theorem MIPRE.NCPoly.sum_support_single {G : Type u_1} (x : NCPoly G) :
          ∑ w ∈ x.coeff.support, single w (x.coeff w) = x

          Every polynomial is the sum of its monomials, over the support of its coefficients.

          theorem MIPRE.NCPoly.induction_linear {G : Type u_1} {motive : NCPoly G → Prop} (x : NCPoly G) (zero : motive 0) (add : ∀ (x y : NCPoly G), motive x → motive y → motive (x + y)) (single : ∀ (w : FreeMonoid G) (c : ℂ), motive (single w c)) :
          motive x

          Induction on polynomials: a property that holds at 0, is closed under sums and holds on monomials holds everywhere.

          noncomputable def MIPRE.NCPoly.basis {G : Type u_1} :

          The monomial basis of NCPoly G, indexed by words.

          Equations
          Instances For
            @[simp]
            theorem MIPRE.NCPoly.basis_apply {G : Type u_1} (w : FreeMonoid G) :
            basis w = single w 1

            The monomial basis vector of a word is the monomial with coefficient 1.

            @[simp]
            theorem MIPRE.NCPoly.basis_repr {G : Type u_1} (x : NCPoly G) :

            The coordinates in the monomial basis are the coefficients.

            noncomputable def MIPRE.NCPoly.lift {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] :

            The universal property: a monoid hom from the words into a complex algebra A extends to a ℂ-algebra hom NCPoly G →ₐ[ℂ] A.

            Equations
            Instances For
              @[simp]
              theorem MIPRE.NCPoly.lift_single {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] (F : FreeMonoid G →* A) (w : FreeMonoid G) (c : ℂ) :
              (lift F) (single w c) = c • F w

              The lift of a monoid hom on a monomial.

              theorem MIPRE.NCPoly.algHom_ext {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] {φ ψ : NCPoly G →ₐ[ℂ] A} (h : ∀ (w : FreeMonoid G), φ (single w 1) = ψ (single w 1)) :
              φ = ψ

              Two algebra homs out of NCPoly G that agree on words are equal.

              The star #

              Word reversal, as an involutive permutation of FreeMonoid G.

              Equations
              Instances For
                @[simp]

                Word reversal, applied.

                @[simp]

                Word reversal is its own inverse.

                @[simp]

                The empty word is its own reversal.

                noncomputable def MIPRE.NCPoly.starCoeff {G : Type u_1} (f : FreeMonoid G →₀ ℂ) :

                The star on coefficient functions: conjugate the coefficients, reverse the words.

                Equations
                Instances For
                  @[instance_reducible]
                  noncomputable instance MIPRE.NCPoly.instStar {G : Type u_1} :

                  The star of NCPoly G: (Σ_w c_w w)⋆ = Σ_w conj(c_w) reverse(w).

                  Equations
                  @[simp]
                  theorem MIPRE.NCPoly.coeff_star_apply {G : Type u_1} (x : NCPoly G) (w : FreeMonoid G) :

                  The coefficient formula for the star: the coefficient of w in x⋆ is the conjugate of the coefficient of the reversed word in x.

                  theorem MIPRE.NCPoly.star_single {G : Type u_1} (w : FreeMonoid G) (c : ℂ) :

                  The star of a monomial.

                  theorem MIPRE.NCPoly.star_add' {G : Type u_1} (x y : NCPoly G) :
                  star (x + y) = star x + star y
                  theorem MIPRE.NCPoly.star_zero' {G : Type u_1} :
                  star 0 = 0
                  theorem MIPRE.NCPoly.star_star' {G : Type u_1} (x : NCPoly G) :
                  star (star x) = x
                  theorem MIPRE.NCPoly.star_mul' {G : Type u_1} (x y : NCPoly G) :
                  star (x * y) = star y * star x
                  @[instance_reducible]
                  noncomputable instance MIPRE.NCPoly.instStarRing {G : Type u_1} :

                  NCPoly G is a ⋆-ring: the star is additive, involutive and reverses products.

                  Equations

                  The star is conjugate-linear: (c • x)⋆ = conj c • x⋆.

                  @[simp]
                  theorem MIPRE.NCPoly.star_single_one {G : Type u_1} (w : FreeMonoid G) :

                  The star of a monomial with coefficient 1.

                  Generators #

                  noncomputable def MIPRE.NCPoly.gen {G : Type u_1} (g : G) :

                  The generator of a letter: the degree-one monomial single (FreeMonoid.of g) 1.

                  Equations
                  Instances For
                    @[simp]
                    theorem MIPRE.NCPoly.star_gen {G : Type u_1} (g : G) :
                    star (gen g) = gen g

                    Generators are fixed by the star.

                    theorem MIPRE.NCPoly.isSelfAdjoint_gen {G : Type u_1} (g : G) :

                    Generators are self-adjoint.

                    theorem MIPRE.NCPoly.single_of_mul {G : Type u_1} (g : G) (w : FreeMonoid G) (c : ℂ) :

                    A word g w is the product of the generator g and the word w.

                    Evaluation #

                    theorem MIPRE.NCPoly.star_lift_eq_lift_reverse {G : Type u_1} {M : Type u_2} [Monoid M] [StarMul M] (f : G → M) (hf : ∀ (g : G), IsSelfAdjoint (f g)) (w : FreeMonoid G) :

                    On a word, the star of the evaluation at self-adjoint letters is the evaluation of the reversed word.

                    noncomputable def MIPRE.NCPoly.eval {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] (f : G → A) :

                    Evaluation of noncommutative polynomials at an assignment f : G → A of the letters, as a ℂ-algebra hom: a word goes to the product of the images of its letters.

                    Equations
                    Instances For
                      @[simp]
                      theorem MIPRE.NCPoly.eval_single {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] (f : G → A) (w : FreeMonoid G) (c : ℂ) :
                      (eval f) (single w c) = c • (FreeMonoid.lift f) w

                      Evaluation of a monomial.

                      @[simp]
                      theorem MIPRE.NCPoly.eval_gen {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] (f : G → A) (g : G) :
                      (eval f) (gen g) = f g

                      Evaluation of a generator.

                      theorem MIPRE.NCPoly.eval_star {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] [StarRing A] [StarModule ℂ A] (f : G → A) (hf : ∀ (g : G), IsSelfAdjoint (f g)) (x : NCPoly G) :
                      (eval f) (star x) = star ((eval f) x)

                      Evaluation at self-adjoint letters commutes with the stars.

                      noncomputable def MIPRE.NCPoly.evalStar {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] [StarRing A] [StarModule ℂ A] (f : G → A) (hf : ∀ (g : G), IsSelfAdjoint (f g)) :

                      Evaluation at self-adjoint letters, as a ⋆-algebra hom.

                      Equations
                      Instances For
                        @[simp]
                        theorem MIPRE.NCPoly.evalStar_apply {G : Type u_1} {A : Type u_2} [Semiring A] [Algebra ℂ A] [StarRing A] [StarModule ℂ A] (f : G → A) (hf : ∀ (g : G), IsSelfAdjoint (f g)) (x : NCPoly G) :
                        (evalStar f hf) x = (eval f) x

                        The ⋆-algebra hom of an evaluation is the evaluation.