Documentation

LeanPool.IsTranscendentalPi.ScaledAuxiliaryPolynomial

Scaled auxiliary polynomial #

The symmetric polynomial ∑ᵢ T(Xᵢ) and its evaluation, providing the algebraic input to the auxiliary integer in Niven's proof.

noncomputable def MvPolynomialSumX {R : Type u_1} [CommSemiring R] (T : Polynomial R) (n : ) :

The symmetric polynomial ∑ᵢ₌₀ⁿ⁻¹ T(Xᵢ).

Equations
Instances For
    theorem aeval_MvPolynomialSumX {R : Type u_1} {S : Type u_2} [CommSemiring R] [CommSemiring S] [Algebra R S] (T : Polynomial R) (n : ) (a : Fin nS) :

    Evaluating ∑ᵢ₌₀ⁿ⁻¹ T(Xᵢ) at a gives ∑ᵢ₌₀ⁿ⁻¹ T(aᵢ).

    The polynomial ∑ᵢ₌₀ⁿ⁻¹ T(Xᵢ) is symmetric in the variables X₀, …, Xₙ₋₁.

    theorem eval_MvPolynomialSumX_at_roots_eq_int {R : Type u_1} {S : Type u_2} [CommRing R] [Field S] [Algebra R S] [IsAlgClosed S] {n : } (B : Polynomial R) (T : Polynomial ) (a : Fin nS) (hmonic : B.Monic) (hroots : B.aroots S = valuesFin a) :
    ∃ (Q : MvPolynomial (Fin n) ), (MvPolynomial.aeval a) (MvPolynomialSumX T n) = (algebraMap R S) ((MvPolynomial.aeval fun (i : Fin n) => (-1) ^ (i + 1) * B.coeff (n - (i + 1))) Q)

    If a₀, …, aₙ₋₁ are the roots of a monic polynomial B, then ∑ᵢ₌₀ⁿ⁻¹ T(aᵢ) is a polynomial expression in the coefficients of B.

    noncomputable def scaledMvPolynomial {R : Type u_1} {K : Type u_2} [CommSemiring R] [Semifield K] [Algebra R K] (P : Polynomial R) (c : K) (n : ) :

    For P = ∑ₖ₌₀ⁿ⁻¹ cₖ Xᵏ, this defines ∑ₖ (cₖ / cᵏ) (x₁ᵏ + ⋯ + xₙᵏ).

    Equations
    Instances For
      theorem aeval_scaledMvPolynomial {R : Type u_1} {K : Type u_2} [CommSemiring R] [Semifield K] [Algebra R K] (P : Polynomial R) (c : K) (n : ) (a : Fin nK) (hc : c 0) :
      (MvPolynomial.aeval fun (i : Fin n) => c * a i) (scaledMvPolynomial P c n) = i : Fin n, (Polynomial.aeval (a i)) P

      Evaluating the scaled power-sum polynomial of P at c a gives ∑ᵢ₌₀ⁿ⁻¹ P(aᵢ).

      theorem sum_aeval_Gp_eq_one_div_factorial_sum_iterate_derivative_Fp {R : Type u_1} {K : Type u_2} [CommSemiring R] [Field K] [CharZero K] [Algebra R K] (Q : Polynomial R) (p n : ) (a : Fin nK) :
      j : Fin n, (Polynomial.aeval (a j)) (Gp Q p) = 1 / p.factorial * iFinset.Icc p (Fp Q p).natDegree, j : Fin n, (Polynomial.aeval (a j)) ((⇑Polynomial.derivative)^[i] (Fp Q p))

      ∑ⱼ₌₀ⁿ⁻¹ Gₚ(aⱼ) = (1 / p!) ∑ᵢ₌ₚ^deg(Fₚ) ∑ⱼ₌₀ⁿ⁻¹ Fₚ⁽ⁱ⁾(aⱼ).

      noncomputable def ScaledCoeffDerivFp (T : Polynomial ) (c : ) (p s i k : ) :

      The integer coefficients cˢ⁻ᵏ · (i! / p!) · (k-Coeff of Sₚ).

      Equations
      Instances For
        noncomputable def RpolyFp (T : Polynomial ) (c : ) (p s i n : ) :

        The symmetric polynomial encoding the scaled i-th derivative of Fₚ through power sums, i.e. ∑ₖ₌₀^deg(Fₚ) cˢ⁻ᵏ · (i! / p!) · (k-Coeff of Sₚ) · (X₀ᵏ + ⋯ + Xₙ₋₁ᵏ) .

        Equations
        Instances For
          theorem ScaledCoeffDerivFp_from_Sp {K : Type u_1} [Field K] [CharZero K] [Algebra K] (T : Polynomial ) (c : ) (p s i k : ) (hpi : p i) :
          c ^ (s - k) / p.factorial * (((⇑Polynomial.derivative)^[i] (Fp T p)).coeff k) = (algebraMap K) (ScaledCoeffDerivFp T c p s i k)

          ((cˢ⁻ᵏ) / p!) · (k-th coeff of Fₚ⁽ⁱ⁾) = cˢ⁻ᵏ · (i! / p!) · (k-Coeff of Sₚ).

          theorem aeval_RpolyFp_derivative_Fp (T : Polynomial ) (c : ) (p s i n : ) (a : Fin n) (hpi : p i) (hs : ((⇑Polynomial.derivative)^[i] (Fp T p)).natDegree s) (hc : c 0) :
          (MvPolynomial.aeval fun (m : Fin n) => c * a m) (RpolyFp T c p s i n) = c ^ s / p.factorial * m : Fin n, (Polynomial.aeval (a m)) ((⇑Polynomial.derivative)^[i] (Fp T p))

          Evaluating ``∑ₖ (cₖ / cᵏ) (x₁ᵏ + ⋯ + xₙᵏ)at(c a₀, …, c aₙ₋₁)gives the scaled sum `(cˢ / p!) ∑ⱼ₌₀ⁿ⁻¹ Fₚ⁽ⁱ⁾(aⱼ)`.

          theorem RpolyFp_isSymmetric (T : Polynomial ) (c : ) (p s i n : ) :
          (RpolyFp T c p s i n).IsSymmetric

          The polynomial ∑ₖ₌₀^deg(Fₚ) cˢ⁻ᵏ · (i! / p!) · (k-Coeff of Sₚ) · (X₀ᵏ + ⋯ + Xₙ₋₁ᵏ) is symmetric.

          theorem RpolyFp_at_c_mul_eq_poly_of_monicRescaleOf (T : Polynomial ) (T' : Polynomial ) (c : ) (p s i d : ) (a : Fin d) (hc : c 0) (hmonic : T'.Monic) (hd : T'.natDegree = d) (hT : Polynomial.map (Int.castRingHom ) T = Polynomial.C c * T') (hroots' : T'.aroots = valuesFin a) :
          ∃ (Q : MvPolynomial (Fin d) ), (MvPolynomial.aeval fun (j : Fin d) => c * a j) (RpolyFp T c p s i d) = (algebraMap ) ((MvPolynomial.aeval fun (j : Fin d) => (-1) ^ (j + 1) * (monicRescaleOf T d c).coeff (d - (j + 1))) Q)

          Suppose that T = c T with T ∈ ℤ[X], T' ∈ ℚ[X], and c ∈ ℤ. If a₀, …, aₙ₋₁ are the roots of T' in , then evaluating ∑ₖ₌₀^deg(Fₚ) cˢ⁻ᵏ · (i! / p!) · (k-Coeff of Sₚ) · (X₀ᵏ + ⋯ + Xₙ₋₁ᵏ) at (c a₀, …, c aₙ₋₁) gives an integer polynomial expression in the coefficients T.

          noncomputable def intAevalRpoly (T : Polynomial ) (T' : Polynomial ) (c : ) (p s d : ) (a : Fin d) (hc : c 0) (hmonic : T'.Monic) (hd : T'.natDegree = d) (hT : Polynomial.map (Int.castRingHom ) T = Polynomial.C c * T') (hroots' : T'.aroots = valuesFin a) :

          The integer witness for evaluating ∑ₖ₌₀^deg(Fₚ) cˢ⁻ᵏ · (i! / p!) · (k-Coeff of Sₚ) · (X₀ᵏ + ⋯ + X_{d-1}ᵏ) at (c a₀, …, c a_{d-1}).

          Equations
          Instances For
            noncomputable def intSumAevalGp (T : Polynomial ) (T' : Polynomial ) (c : ) (d : ) (a : Fin d) (hc : c 0) (hmonic : T'.Monic) (hd : T'.natDegree = d) (hT : Polynomial.map (Int.castRingHom ) T = Polynomial.C c * T') (hroots' : T'.aroots = valuesFin a) :

            The integer witness for cᵖᵈ⁻¹ ∑ₘ Gₚ(aₘ).

            Equations
            Instances For
              theorem SumAevalGp_as_intSumAevalGp (T : Polynomial ) (T' : Polynomial ) (c : ) (p d : ) (a : Fin d) (hc : c 0) (hp : 0 < p) (hmonic : T'.Monic) (hd : T'.natDegree = d) (hT : Polynomial.map (Int.castRingHom ) T = Polynomial.C c * T') (hroots' : T'.aroots = valuesFin a) :
              c ^ (p * d - 1) * m : Fin d, (Polynomial.aeval (a m)) (Gp T p) = (intSumAevalGp T T' c d a hc hmonic hd hT hroots' p)

              Suppose that T = c T with T ∈ ℤ[X], T' ∈ ℚ[X] monic of degree d, and c ∈ ℤ. If a₀, …, aₙ₋₁ are the roots of T' in , then the sum c^(p * d - 1) ∑_m Gₚ(a_m) is an integer.