Documentation

HexRealRootsTheory.TarskiSum

Membership in an open interval reduces to its two endpoint inequalities.

noncomputable def HexRealRootsTheory.Tarski.rootsIn {R : Type u_1} [Field R] [LinearOrder R] (p : Polynomial R) (a b : Hex.Endpoint R) :

The distinct roots in the open interval. This is a semantic finite set, not an executable root enumeration.

Equations
Instances For
    @[simp]

    Every point lies between the two infinite endpoints.

    @[simp]
    theorem HexRealRootsTheory.Tarski.mem_rootsIn {R : Type u_1} [Field R] [LinearOrder R] (p : Polynomial R) (a b : Hex.Endpoint R) (x : R) :
    x ∈ rootsIn p a b ↔ x ∈ p.roots ∧ InInterval a b x
    theorem HexRealRootsTheory.Tarski.mem_rootsIn_iff {R : Type u_1} [Field R] [LinearOrder R] (p : Polynomial R) (hp : p ≠ 0) (a b : Hex.Endpoint R) (x : R) :

    Nonzero heads have exactly their evaluation-zero points as roots.

    theorem HexRealRootsTheory.Tarski.rootsIn_C_mul {R : Type u_1} [Field R] [LinearOrder R] (p : Polynomial R) (c : R) (hc : c ≠ 0) (a b : Hex.Endpoint R) :
    rootsIn (Polynomial.C c * p) a b = rootsIn p a b

    Multiplying the head by a nonzero scalar preserves the interval root set.

    noncomputable def HexRealRootsTheory.Tarski.rootSum {R : Type u_1} [Field R] [LinearOrder R] (p f : Polynomial R) (a b : Hex.Endpoint R) :

    The mathematical Sturm–Tarski sum. Its general executable-query identity requires the separately owned signed-remainder theorem.

    Equations
    Instances For
      theorem HexRealRootsTheory.Tarski.rootSum_eq_sum {R : Type u_1} [Field R] [LinearOrder R] (p f : Polynomial R) (a b : Hex.Endpoint R) :
      rootSum p f a b = ∑ x ∈ rootsIn p a b, ↑(SignType.sign (Polynomial.eval x f))

      Expand a query into its finite sum of signs over distinct roots.

      @[simp]
      theorem HexRealRootsTheory.Tarski.rootSum_zero {R : Type u_1} [Field R] [LinearOrder R] (p : Polynomial R) (a b : Hex.Endpoint R) :
      rootSum p 0 a b = 0
      @[simp]
      theorem HexRealRootsTheory.Tarski.rootSum_one {R : Type u_1} [Field R] [LinearOrder R] [IsStrictOrderedRing R] (p : Polynomial R) (a b : Hex.Endpoint R) :
      rootSum p 1 a b = ↑(rootsIn p a b).card
      theorem HexRealRootsTheory.Tarski.rootSum_singleton {R : Type u_1} [Field R] [LinearOrder R] (p f : Polynomial R) (a b : Hex.Endpoint R) (x : R) (h : rootsIn p a b = {x}) :
      theorem HexRealRootsTheory.Tarski.contribution_zero {R : Type u_1} [Field R] [LinearOrder R] (f : Polynomial R) (x : R) (h : f.IsRoot x) :

      A common root contributes zero to the signed sum.

      theorem HexRealRootsTheory.Tarski.rootSum_filter {R : Type u_1} [Field R] [LinearOrder R] (p f : Polynomial R) (a b : Hex.Endpoint R) :
      rootSum p f a b = ∑ x ∈ rootsIn p a b with Polynomial.eval x f ≠ 0, ↑(SignType.sign (Polynomial.eval x f))

      Restricting to nonzero query evaluations removes only zero contributions.

      theorem HexRealRootsTheory.Tarski.rootSum_eq_zero {R : Type u_1} [Field R] [LinearOrder R] (p f : Polynomial R) (a b : Hex.Endpoint R) (h : ∀ x ∈ rootsIn p a b, Polynomial.eval x f = 0) :
      rootSum p f a b = 0
      theorem HexRealRootsTheory.Tarski.rootSum_of_dvd {R : Type u_1} [Field R] [LinearOrder R] (p f : Polynomial R) (a b : Hex.Endpoint R) (h : p ∣ f) :
      rootSum p f a b = 0

      Divisibility includes zero initial query remainder without a coprimality assumption.

      theorem HexRealRootsTheory.Tarski.abs_rootSum_le {R : Type u_1} [Field R] [LinearOrder R] (p f : Polynomial R) (a b : Hex.Endpoint R) :
      |rootSum p f a b| ≤ ↑(rootsIn p a b).card
      @[simp]
      @[simp]
      theorem HexRealRootsTheory.Tarski.rootSum_const {R : Type u_1} [Field R] [LinearOrder R] (c : R) (f : Polynomial R) (a b : Hex.Endpoint R) :
      rootSum (Polynomial.C c) f a b = 0