FormalConjecturesForMathlib/NumberTheory/AdditivelyComplete.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1
14 declarations, 0 contain sorry, 0 declared as axioms
Sequences whose partial sums are dominated by the next term
If A : ℕ → ℕ is strictly increasing from index n₀ on and A 0 + ⋯ + A (m - 1) ≤ A (m + 1)
for m ≥ n₀, then removing infinitely many terms from A destroys completeness. This is the
argument of Graham [Gr64d] for the sequence n ↦ fib n - (-1) ^ n: once three terms
A m₁ < A m₂ < A m are removed, the remaining terms below A (m + 1) sum to at most
A (m + 1) - 2, so A (m + 1) - 1 is not a sum of distinct remaining terms.
Imports (7)
Imported by 2 files
- def
subsetSumsThe set of subset sums of a setA ⊆ Mline 33 sourceSource documentation
The set of subset sums of a set
A ⊆ M.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,SetProof uses:
Set.ofPred,Exists,Finset,And,LE.le,Eq,Finset.sum3 instances, coercions and auxiliary constants left out.
def subsetSums (A : Set M) : Set M := …
- theorem
subsetSums_monoIfA ⊆ B, thensubsetSums A ⊆ subsetSums Bline 38 sourceSource documentation
If
A ⊆ B, thensubsetSums A ⊆ subsetSums B.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Set,LE.le, subsetSumsProof uses:
Membership.mem,Finset,And,Eq,Finset.sum,Exists.intro,And.intro,LE.le.trans,And.left,And.right12 instances, coercions and auxiliary constants left out.
theorem subsetSums_mono {A B : Set M} (h : A ⊆ B) : subsetSums A ⊆ subsetSums B := …Mentions: subsetSums
- def
subseqSums'The set of subset sums of a sequenceℕ → M, where repetition is allowed line 42 sourceSource documentation
The set of subset sums of a sequence
ℕ → M, where repetition is allowed.standard axioms: Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Nat,SetProof uses:
Set.ofPred,Exists,Finset,Eq,Finset.sumdef subseqSums' (A : ℕ → M) : Set M := …
- def
IsAddCompleteA setA ⊆ Mis complete if every sufficiently large element ofMis a subset sum ofAline 48 sourceSource documentation
A set
A ⊆ Mis complete if every sufficiently large element ofMis a subset sum ofA.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,SetProof uses:
Filter.Eventually,Membership.mem, subsetSums,Filter.atTop1 instances, coercions and auxiliary constants left out.
def IsAddComplete (A : Set M) : Prop := …
- theorem
IsAddComplete.monoIfA ⊆ BandAis complete, thenBis also complete line 53 sourceSource documentation
If
A ⊆ BandAis complete, thenBis also complete.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,Set,LE.le, IsAddCompleteProof uses:
Filter.mp_mem,Filter.atTop,Set.ofPred,Membership.mem, subsetSums,Filter.univ_mem',id, subsetSums_mono3 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem IsAddComplete.mono {A B : Set M} (h : A ⊆ B) (ha : IsAddComplete A) : IsAddComplete B := by …Mentions: IsAddComplete
- def
IsAddStronglyCompleteA setA ⊆ Mis complete if every sufficiently large element ofMis a subset sum ofAline 58 sourceSource documentation
A set
A ⊆ Mis complete if every sufficiently large element ofMis a subset sum ofA.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,SetProof uses:
Set.Finite, IsAddComplete,SDiff.sdiff1 instances, coercions and auxiliary constants left out.
def IsAddStronglyComplete (A : Set M) : Prop := …
- theorem
IsAddStronglyComplete.isAddCompleteA strongly complete set is complete line 62 sourceSource documentation
A strongly complete set is complete.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,Set, IsAddStronglyComplete, IsAddCompleteProof uses:
Eq.mp,SDiff.sdiff,EmptyCollection.emptyCollection,congrArg,Set.sdiff_empty,Set.finite_empty2 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem IsAddStronglyComplete.isAddComplete {A : Set M} (hA : IsAddStronglyComplete A) : IsAddComplete A := by simpa using hA Set.finite_emptyMentions: IsAddStronglyComplete, IsAddComplete
- theorem
IsAddStronglyComplete.monoIfA ⊆ BandAis strongly complete, thenBis also strongly complete line 66 sourceSource documentation
If
A ⊆ BandAis strongly complete, thenBis also strongly complete.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,Set,LE.le, IsAddStronglyCompleteProof uses:
Set.Finite, IsAddComplete.mono,SDiff.sdiff4 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem IsAddStronglyComplete.mono {A B : Set M} (h : A ⊆ B) (ha : IsAddStronglyComplete A) : IsAddStronglyComplete B := fun C hC => (ha hC).mono (by grind)Mentions: IsAddStronglyComplete
- def
IsAddStronglyCompleteNatSeqA sequenceAis strongly complete iffun m => A (n + m)is still complete for allnline 70 sourceSource documentation
A sequence
Ais strongly complete iffun m => A (n + m)is still complete for alln.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,NatProof uses: IsAddComplete,
Set.range,HAdd.hAdd2 instances, coercions and auxiliary constants left out.
def IsAddStronglyCompleteNatSeq (A : ℕ → M) : Prop := …
- theorem
IsAddStronglyCompleteNatSeq.isAddCompleteA strongly complete sequence is complete line 74 sourceSource documentation
A strongly complete sequence is complete.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,Nat, IsAddStronglyCompleteNatSeq, IsAddComplete,Set.rangeProof uses:
Eq.mp,HAdd.hAdd,OfNat.ofNat,congrArg,Set,funext,zero_add5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem IsAddStronglyCompleteNatSeq.isAddComplete {A : ℕ → M} (hA : IsAddStronglyCompleteNatSeq A) : IsAddComplete (Set.range A) := by simpa using hA 0 …Mentions: IsAddStronglyCompleteNatSeq, IsAddComplete
- theorem
IsAddStronglyCompleteNatSeq.of_isAddStronglyCompleteIf the range of a sequenceAis strongly complete, thenAis strongly complete line 80 sourceSource documentation
If the range of a sequence
Ais strongly complete, thenAis strongly complete.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,Nat, IsAddStronglyComplete,Set.range, IsAddStronglyCompleteNatSeqProof uses: IsAddComplete.mono,
SDiff.sdiff,Set,Finset,Finset.image,Classical.propDecidable,Eq,Finset.range,HAdd.hAdd,Membership.mem,Not,Exists.intro,HSub.hSub,Finset.finite_toSet10 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem IsAddStronglyCompleteNatSeq.of_isAddStronglyComplete {A : ℕ → M} (h : IsAddStronglyComplete (.range A)) : IsAddStronglyCompleteNatSeq A := …Mentions: IsAddStronglyComplete, IsAddStronglyCompleteNatSeq
- theorem
IsAddStronglyCompleteNatSeq.isAddStronglyCompleteIfAis strongly complete and the preimage of each element is finite, then the range ofAis strongly complete line 87 sourceSource documentation
If
Ais strongly complete and the preimage of each element is finite, then the range ofAis strongly complete.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,Nat, IsAddStronglyCompleteNatSeq,Set.Finite,Set.preimage,Singleton.singleton,Set, IsAddStronglyComplete,Set.rangeProof uses:
LE.le,Finset,Set.Finite.toFinset,Set.Finite.preimage',Membership.mem,Finset.range,Exists, IsAddComplete,SDiff.sdiff,Finset.exists_nat_subset_range, IsAddComplete.mono,HAdd.hAdd,OfNat.ofNat,Eq,And.intro,Not,Exists.intro,Set.Iio,Eq.mp,congrArgand 3 more18 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
theorem IsAddStronglyCompleteNatSeq.isAddStronglyComplete {A : ℕ → M} (h : IsAddStronglyCompleteNatSeq A) (hA : ∀ m, (A ⁻¹' {m}).Finite) : IsAddStronglyComplete (.range A) := by …Mentions: IsAddStronglyCompleteNatSeq, IsAddStronglyComplete
- def
IsAddCompleteNatSeq'A sequenceAis complete if every sufficiently large element ofMis a sum of (not necessarily distinct) terms ofAline 100 sourceSource documentation
A sequence
Ais complete if every sufficiently large element ofMis a sum of (not necessarily distinct) terms ofA.standard axioms: Quot.sound, propext what this means
Statement uses:
AddCommMonoid,Preorder,NatProof uses:
Filter.Eventually,Membership.mem,Set, subseqSums',Filter.atTop1 instances, coercions and auxiliary constants left out.
def IsAddCompleteNatSeq' (A : ℕ → M) : Prop := …
- theorem
not_isAddComplete_range_diff_of_sum_range_leLetA : ℕ → ℕbe strictly increasing from indexn₀on, withA 0 + ⋯ + A (m - 1) ≤ A (m + 1)for allm ≥ n₀line 114 sourceSource documentation
Let
A : ℕ → ℕbe strictly increasing from indexn₀on, withA 0 + ⋯ + A (m - 1) ≤ A (m + 1)for allm ≥ n₀. ThenSet.range A \ Bis not complete for any infiniteB ⊆ Set.range A.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,StrictMono,HAdd.hAdd,LE.le,Finset.sum,Finset.range,OfNat.ofNat,Set,Set.range,Set.Infinite,Not, IsAddComplete,SDiff.sdiffProof uses:
Set.preimage,Set.Finite,Set.Finite.subset,Set.image,Set.Finite.image,Membership.mem,Eq,Exists.intro,And,And.intro,rfl,HSub.hSub,id,StrictMono.id_le,Eq.mp,congrArg,Decidable.byContradiction,Iff,LT.lt,Existsand 36 more75 instances, coercions and auxiliary constants left out.
Tactic trace: 77 steps
Open to load the checked before-and-after goal states.
theorem not_isAddComplete_range_diff_of_sum_range_le {A : ℕ → ℕ} {n₀ : ℕ} (hA : StrictMono fun k => A (n₀ + k)) (hsum : ∀ m, n₀ ≤ m → ∑ i ∈ Finset.range m, A i ≤ A (m + 1)) {B : Set ℕ} (hB : B ⊆ Set.range A) (hB' : B.Infinite) : ¬ IsAddComplete (Set.range A \ B) := by …Mentions: IsAddComplete