Documentation

LeanPool.NairTenenbaum.Sieve.JointCongruence

Simultaneous polynomial congruences #

The Chinese remainder theorem gives the exact density for different polynomial conditions at pairwise coprime moduli. The bad-prime modulus may be a least common multiple; its coordinates need not be mutually coprime.

theorem NairTenenbaum.residueSet_count_error {q : ℕ} (hq : 0 < q) [NeZero q] (S : Finset (ZMod q)) (a b : ℤ) (hab : a ≤ b) :
|↑{n ∈ Finset.Ioc a b | ↑n ∈ S}.card - (↑b - ↑a) * ↑S.card / ↑q| ≤ ↑S.card

Interval discrepancy for any collection of residue classes.

noncomputable def NairTenenbaum.jointResidueSet {ι : Type u_1} [Fintype ι] (Q : ι → Polynomial ℤ) (q : ι → ℕ) [∀ (i : ι), NeZero (q i)] (hcop : Pairwise fun (i j : ι) => (q i).Coprime (q j)) :
Finset (ZMod (∏ i : ι, q i))

The joint residue set, obtained from the product of the individual root sets.

Equations
Instances For
    theorem NairTenenbaum.jointResidueSet_card {ι : Type u_1} [Fintype ι] (Q : ι → Polynomial ℤ) (q : ι → ℕ) [∀ (i : ι), NeZero (q i)] (hcop : Pairwise fun (i j : ι) => (q i).Coprime (q j)) :
    (jointResidueSet Q q hcop).card = ∏ i : ι, rootCount (Q i) (q i)
    theorem NairTenenbaum.cast_mem_jointResidueSet {ι : Type u_1} [Fintype ι] (Q : ι → Polynomial ℤ) (q : ι → ℕ) [∀ (i : ι), NeZero (q i)] (hcop : Pairwise fun (i j : ι) => (q i).Coprime (q j)) (n : ℤ) :
    ↑n ∈ jointResidueSet Q q hcop ↔ ∀ (i : ι), ↑(q i) ∣ Polynomial.eval n (Q i)
    noncomputable def NairTenenbaum.jointCongruenceCount {ι : Type u_1} [Fintype ι] (Q : ι → Polynomial ℤ) (q : ι → ℕ) (a b : ℤ) :

    The number of integers in an interval satisfying all polynomial congruences.

    Equations
    Instances For
      theorem NairTenenbaum.jointCongruenceCount_error {ι : Type u_1} [Fintype ι] (Q : ι → Polynomial ℤ) (q : ι → ℕ) (hq : ∀ (i : ι), 0 < q i) (hcop : Pairwise fun (i j : ι) => (q i).Coprime (q j)) (a b : ℤ) (hab : a ≤ b) :
      |↑(jointCongruenceCount Q q a b) - (↑b - ↑a) * ↑(∏ i : ι, rootCount (Q i) (q i)) / ↑(∏ i : ι, q i)| ≤ ↑(∏ i : ι, rootCount (Q i) (q i))

      Exact CRT main term with one root-count error per joint residue class.

      theorem NairTenenbaum.jointCongruenceCount_le {ι : Type u_1} [Fintype ι] (Q : ι → Polynomial ℤ) (q : ι → ℕ) (hq : ∀ (i : ι), 0 < q i) (hcop : Pairwise fun (i j : ι) => (q i).Coprime (q j)) (a b : ℤ) (hab : a ≤ b) (hsize : ∏ i : ι, ↑(q i) ≤ ↑b - ↑a) :
      ↑(jointCongruenceCount Q q a b) ≤ 2 * (↑b - ↑a) * ∏ i : ι, ↑(rootCount (Q i) (q i)) / ↑(q i)

      The residue-class error is absorbed whenever the modulus fits in the interval.

      noncomputable def NairTenenbaum.mixedCongruenceCount {r : ℕ} (Q : Polynomial ℤ) (R : Fin r → Polynomial ℤ) (d : ℕ) (m : Tuple r) (a b : ℤ) :

      A bad-prime modulus and the remaining coprime polynomial conditions.

      Equations
      Instances For
        theorem NairTenenbaum.mixedCongruenceCount_le {r : ℕ} (Q : Polynomial ℤ) (R : Fin r → Polynomial ℤ) {d : ℕ} (hd : 0 < d) (m : Tuple r) (hpair : Pairwise fun (i j : Fin r) => (↑(m i)).Coprime ↑(m j)) (hcross : ∀ (i : Fin r), d.Coprime ↑(m i)) (a b : ℤ) (hab : a ≤ b) (hsize : ↑d * ↑(mass m) ≤ ↑b - ↑a) :
        ↑(mixedCongruenceCount Q R d m a b) ≤ 2 * (↑b - ↑a) * (↑(rootCount Q d) / ↑d) * ∏ i : Fin r, ↑(rootCount (R i) ↑(m i)) / ↑↑(m i)
        theorem NairTenenbaum.PolynomialSystem.tupleLCM_dvd_radical_eval {k r : ℕ} (P : PolynomialSystem k r) (m : Tuple r) (a : ℤ) (hm : ∀ (i : Fin r), ↑↑(m i) ∣ Polynomial.eval a (P.R i)) :

        Simultaneous factor divisibility implies radical divisibility at the LCM.

        theorem NairTenenbaum.PolynomialSystem.jointCongruenceCount_le_mixed {k r : ℕ} (P : PolynomialSystem k r) (u v : Tuple r) (a b : ℤ) :
        jointCongruenceCount P.R (fun (i : Fin r) => ↑((u * v) i)) a b ≤ mixedCongruenceCount P.radical P.R (tupleLCM u) v a b

        The full bad-prime part is kept as an LCM congruence while each good coordinate keeps its own irreducible-factor congruence.