Exact covering systems
DefinitionMultiplicity of an indexed system of residue classes#✓fully proved
Given \(k \in \mathbb{N}\), moduli \(m_0, \dots, m_{k-1} \in \mathbb{N}\) and residues \(r_0, \dots, r_{k-1} \in \mathbb{Z}\), the multiplicity of an integer \(z\) is the number of indices \(i < k\) with \(z \equiv r_i \pmod{m_i}\).
Indices are counted separately, so a residue class listed several times is counted that many times; a modulus \(m_i = 0\) makes the condition \(z = r_i\).
public def indexedCoverMultiplicity {k : ℕ} (moduli : Fin k → ℕ)
(residues : Fin k → ℤ) (z : ℤ) : ℕ :=
(Finset.univ.filter fun i => z ≡ residues i [ZMOD (moduli i : ℤ)]).card
DefinitionExact covers by residue classes#✓fully proved
Let \(k \in \mathbb{N}\), let \(m_0, \dots, m_{k-1} \in \mathbb{N}\) be moduli and \(r_0, \dots, r_{k-1} \in \mathbb{Z}\) residues, and let \(M \in \mathbb{N}\) and \(T \subseteq \mathbb{Z}\). The system of residue classes \(r_i \bmod m_i\) is an exact \(M\)-cover of \(T\) when \(k \ge 2\), every \(m_i\) is positive, every \(z \in T\) satisfies \(z \equiv r_i \pmod{m_i}\) for exactly \(M\) indices \(i < k\), and every integer \(z \notin T\) satisfies \(z \equiv r_i \pmod{m_i}\) for no index \(i < k\).
Indices are counted separately, so a residue class listed several times counts that many times.
public def IsExactCoverOf {k : ℕ} (moduli : Fin k → ℕ) (residues : Fin k → ℤ)
(M : ℕ) (target : Set ℤ) : Prop :=
2 ≤ k ∧ (∀ i, 0 < moduli i) ∧
(∀ z, z ∈ target → indexedCoverMultiplicity moduli residues z = M) ∧
∀ z, z ∉ target → indexedCoverMultiplicity moduli residues z = 0
public def indexedCoverMultiplicity {k : ℕ} (moduli : Fin k → ℕ)
(residues : Fin k → ℤ) (z : ℤ) : ℕ :=
(Finset.univ.filter fun i => z ≡ residues i [ZMOD (moduli i : ℤ)]).card
MathlibExt/NumberTheory/CoveringSystem/ExactCover.lean:30
Uses 1
TheoremFraenkel's Bernoulli recurrence for exact covers by any number of classes#✓fully proved
Let \(q\), \(M\) and \(m \ge 1\) be natural numbers, and for \(i = 1, \dots, q\) let \(n_i\) be a positive integer and \(a_i\) an integer with \(0 \le a_i < n_i\). Suppose the residue classes \(a_i \bmod n_i\), counted with repetition, form an exact \(M\)-cover of \(\mathbb{Z}\): every integer \(k\) satisfies \(k \equiv a_i \pmod{n_i}\) for exactly \(M\) indices \(i\). Then
where \(B_s\) is the \(s\)-th Bernoulli number, with the convention \(B_1 = -\frac{1}{2}\).
The source assumes \(q \ge 2\); the identity holds without that assumption.
theorem fraenkel_exact_M_cover_bernoulli_recurrence_general
(q M m : ℕ) (a n : Fin q → ℕ) (hm : 1 ≤ m)
(hn : ∀ i, 0 < n i) (ha : ∀ i, a i < n i)
(hcover : ∀ k : ℤ, Int.indexedCoverMultiplicity n (fun i => ((a i : ℤ))) k = M) :
bernoulli m * ((M : ℚ) - ∑ i : Fin q, ((n i : ℚ)) ^ (m - 1)) =
∑ i : Fin q, ((n i : ℚ)) ^ (m - 1) *
(∑ s ∈ Finset.range m, bernoulli s * (Nat.choose m s : ℚ) *
(((a i : ℚ)) / ((n i : ℚ))) ^ (m - s))
public def indexedCoverMultiplicity {k : ℕ} (moduli : Fin k → ℕ)
(residues : Fin k → ℤ) (z : ℤ) : ℕ :=
(Finset.univ.filter fun i => z ≡ residues i [ZMOD (moduli i : ℤ)]).card
MathlibExt/NumberTheory/CoveringSystem/ExactCover.lean:30
Uses 1 · Used by 1
TheoremFraenkel's Bernoulli recurrence for exact covers#✓fully proved
Let \(q \ge 2\), \(m \ge 1\) and \(M\) be natural numbers, and for \(i = 1, \dots, q\) let \(n_i\) be a positive integer and \(a_i\) an integer with \(0 \le a_i < n_i\). Suppose the residue classes \(a_i \bmod n_i\), counted with repetition, form an exact \(M\)-cover of \(\mathbb{Z}\): every integer \(k\) satisfies \(k \equiv a_i \pmod{n_i}\) for exactly \(M\) indices \(i\). Then
where \(B_s\) is the \(s\)-th Bernoulli number, with the convention \(B_1 = -\frac{1}{2}\).
Only this direction of the source's equation (23) is stated; the converse, Beebee's variant with a parameter \(x\), and Porubsky's weighted variant are not.
theorem fraenkel_exact_M_cover_bernoulli_recurrence
(q M m : ℕ) (a n : Fin q → ℕ)
(hq : 2 ≤ q) (hm : 1 ≤ m)
(hn : ∀ i, 0 < n i) (ha : ∀ i, a i < n i)
(hcover : ∀ k : ℤ, Int.indexedCoverMultiplicity n (fun i => ((a i : ℤ))) k = M) :
bernoulli m * ((M : ℚ) - ∑ i : Fin q, ((n i : ℚ)) ^ (m - 1)) =
∑ i : Fin q, ((n i : ℚ)) ^ (m - 1) *
(∑ s ∈ Finset.range m, bernoulli s * (Nat.choose m s : ℚ) *
(((a i : ℚ)) / ((n i : ℚ))) ^ (m - s))
public def indexedCoverMultiplicity {k : ℕ} (moduli : Fin k → ℕ)
(residues : Fin k → ℤ) (z : ℤ) : ℕ :=
(Finset.univ.filter fun i => z ≡ residues i [ZMOD (moduli i : ℤ)]).card
MathlibExt/NumberTheory/CoveringSystem/ExactCover.lean:30
Sources
- Yevgenya Movshovich, "Raabe's Identity and Covering Systems," Journal of Integer Sequences 23 (2020), Article 20.2.8, https://cs.uwaterloo.ca/journals/JIS/VOL23/Movshovich/movsho5.tex. Equation (23); lines 228–241.
Uses 2
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.