/-
Copyright 2025 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/
import FormalConjecturesUtilErdős Problem 42: Maximal Sidon Sets and Disjoint Difference Sets
Reference: erdosproblems.com/42
This problem asks whether maximal Sidon sets can coexist with other Sidon sets that have disjoint difference sets (apart from 0).
open Function Set Filteropen scoped Pointwisenamespace Erdos42
Erdős Problem 42: Let M ≥ 1 and N be sufficiently large in terms of M. Is it true that for every
maximal Sidon set A ⊆ {1,…,N} there is another Sidon set B ⊆ {1,…,N} of size M such that
(A - A) ∩ (B - B) = {0}?
This was proved for all $M$ by GPT 5.5 Pro (prompted by Sandhu), see discussion thread for more details.
@[category research solved, AMS 5 11, formal_proof using lean4 at "https://github.com/Shashi456/erdos-formalizations/blob/main/Erdos/P42/CompactCayley/Proof.lean"]
theorem erdos_42 : answer(True) ↔
∀ M ≥ 1, ∀ᶠ N in atTop, ∀ (A : Set ℕ) (_ : IsMaximalSidonSetIn A N),
∃ᵉ (B : Set ℕ), B ⊆ Set.Icc 1 N ∧ IsSidon B ∧ B.ncard = M ∧
((A - A) ∩ (B - B)) = {0} := ⊢ True ↔
∀ M ≥ 1,
∀ᶠ (N : ℕ) in atTop,
∀ (A : Set ℕ), A.IsMaximalSidonSetIn N → ∃ B ⊆ Icc 1 N, IsSidon B ∧ B.ncard = M ∧ (A - A) ∩ (B - B) = {0}
All goals completed! 🐙A variant asking for explicit bounds on how large N needs to be in terms of M.
This version provides a constructive function f such that for all M ≥ 1 and N ≥ f(M), every maximal Sidon set A ⊆ {1,…,N} has another Sidon set B ⊆ {1,…,N} of size M with disjoint difference sets (apart from 0).
@[category research solved, AMS 5 11,
formal_proof using formal_conjectures at "https://github.com/KitaKen1/erdos-42-constructive-variant/blob/1f82c76be43cb56f22e2f7f792e392d5fb3ff78c/lean/Erdos42Constructive.lean"]
theorem erdos_42.variants.constructive : answer(True) ↔
∃ (f : ℕ → ℕ), ∀ (M N : ℕ) (_ : 1 ≤ M) (_ : f M ≤ N),
∀ (A : Set ℕ) (_ : IsMaximalSidonSetIn A N), ∃ᵉ (B : Set ℕ),
B ⊆ Set.Icc 1 N ∧ IsSidon B ∧ B.ncard = M ∧
((A - A) ∩ (B - B)) = {0} := ⊢ True ↔
∃ f,
∀ (M N : ℕ),
1 ≤ M →
f M ≤ N →
∀ (A : Set ℕ), A.IsMaximalSidonSetIn N → ∃ B ⊆ Icc 1 N, IsSidon B ∧ B.ncard = M ∧ (A - A) ∩ (B - B) = {0}
All goals completed! 🐙
The set {1, 2, 4} is a maximal Sidon set in {1, ..., 4}.
refine_3 hx1:1 ≤ 3hx2:3 ≤ 4hne1:¬3 = 1hne2:¬3 = 2hne4:¬3 = 4hbad:IsSidon ({1, 2, 4} ∪ {3})this:1 = 2 ∧ 3 = 2 ∨ 1 = 2 ∧ 3 = 2⊢ False
rcases this with ⟨h1, h2⟩ | ⟨h1, h2⟩ refine_3.inl hx1:1 ≤ 3hx2:3 ≤ 4hne1:¬3 = 1hne2:¬3 = 2hne4:¬3 = 4hbad:IsSidon ({1, 2, 4} ∪ {3})h1:1 = 2h2:3 = 2⊢ Falserefine_3.inr hx1:1 ≤ 3hx2:3 ≤ 4hne1:¬3 = 1hne2:¬3 = 2hne4:¬3 = 4hbad:IsSidon ({1, 2, 4} ∪ {3})h1:1 = 2h2:3 = 2⊢ False <;> refine_3.inl hx1:1 ≤ 3hx2:3 ≤ 4hne1:¬3 = 1hne2:¬3 = 2hne4:¬3 = 4hbad:IsSidon ({1, 2, 4} ∪ {3})h1:1 = 2h2:3 = 2⊢ Falserefine_3.inr hx1:1 ≤ 3hx2:3 ≤ 4hne1:¬3 = 1hne2:¬3 = 2hne4:¬3 = 4hbad:IsSidon ({1, 2, 4} ∪ {3})h1:1 = 2h2:3 = 2⊢ False omega All goals completed! 🐙
The difference set of {1, 2, 4} is {0, 1, 2, 3}.
@[category textbook, AMS 5 11]
theorem example_difference_set : ({1, 2, 4} : Set ℕ) - {1, 2, 4} = {0, 1, 2, 3} := by ⊢ {1, 2, 4} - {1, 2, 4} = {0, 1, 2, 3}
ext x x:ℕ⊢ x ∈ {1, 2, 4} - {1, 2, 4} ↔ x ∈ {0, 1, 2, 3}
simp only [Set.mem_sub, Set.mem_insert_iff, Set.mem_singleton_iff] x:ℕ⊢ (∃ x_1, (x_1 = 1 ∨ x_1 = 2 ∨ x_1 = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x_1 - y = x) ↔ x = 0 ∨ x = 1 ∨ x = 2 ∨ x = 3
constructor mp x:ℕ⊢ (∃ x_1, (x_1 = 1 ∨ x_1 = 2 ∨ x_1 = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x_1 - y = x) → x = 0 ∨ x = 1 ∨ x = 2 ∨ x = 3mpr x:ℕ⊢ x = 0 ∨ x = 1 ∨ x = 2 ∨ x = 3 → ∃ x_1, (x_1 = 1 ∨ x_1 = 2 ∨ x_1 = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x_1 - y = x
· mp x:ℕ⊢ (∃ x_1, (x_1 = 1 ∨ x_1 = 2 ∨ x_1 = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x_1 - y = x) → x = 0 ∨ x = 1 ∨ x = 2 ∨ x = 3 rintro ⟨a, ha, b, hb, rfl⟩ mp a:ℕha:a = 1 ∨ a = 2 ∨ a = 4b:ℕhb:b = 1 ∨ b = 2 ∨ b = 4⊢ a - b = 0 ∨ a - b = 1 ∨ a - b = 2 ∨ a - b = 3
rcases ha with rfl | rfl | rfl mp.inl b:ℕhb:b = 1 ∨ b = 2 ∨ b = 4⊢ 1 - b = 0 ∨ 1 - b = 1 ∨ 1 - b = 2 ∨ 1 - b = 3mp.inr.inl b:ℕhb:b = 1 ∨ b = 2 ∨ b = 4⊢ 2 - b = 0 ∨ 2 - b = 1 ∨ 2 - b = 2 ∨ 2 - b = 3mp.inr.inr b:ℕhb:b = 1 ∨ b = 2 ∨ b = 4⊢ 4 - b = 0 ∨ 4 - b = 1 ∨ 4 - b = 2 ∨ 4 - b = 3 <;> mp.inl b:ℕhb:b = 1 ∨ b = 2 ∨ b = 4⊢ 1 - b = 0 ∨ 1 - b = 1 ∨ 1 - b = 2 ∨ 1 - b = 3mp.inr.inl b:ℕhb:b = 1 ∨ b = 2 ∨ b = 4⊢ 2 - b = 0 ∨ 2 - b = 1 ∨ 2 - b = 2 ∨ 2 - b = 3mp.inr.inr b:ℕhb:b = 1 ∨ b = 2 ∨ b = 4⊢ 4 - b = 0 ∨ 4 - b = 1 ∨ 4 - b = 2 ∨ 4 - b = 3
rcases hb with rfl | rfl | rfl mp.inr.inr.inl ⊢ 4 - 1 = 0 ∨ 4 - 1 = 1 ∨ 4 - 1 = 2 ∨ 4 - 1 = 3mp.inr.inr.inr.inl ⊢ 4 - 2 = 0 ∨ 4 - 2 = 1 ∨ 4 - 2 = 2 ∨ 4 - 2 = 3mp.inr.inr.inr.inr ⊢ 4 - 4 = 0 ∨ 4 - 4 = 1 ∨ 4 - 4 = 2 ∨ 4 - 4 = 3 <;> mp.inl.inl ⊢ 1 - 1 = 0 ∨ 1 - 1 = 1 ∨ 1 - 1 = 2 ∨ 1 - 1 = 3mp.inl.inr.inl ⊢ 1 - 2 = 0 ∨ 1 - 2 = 1 ∨ 1 - 2 = 2 ∨ 1 - 2 = 3mp.inl.inr.inr ⊢ 1 - 4 = 0 ∨ 1 - 4 = 1 ∨ 1 - 4 = 2 ∨ 1 - 4 = 3mp.inr.inl.inl ⊢ 2 - 1 = 0 ∨ 2 - 1 = 1 ∨ 2 - 1 = 2 ∨ 2 - 1 = 3mp.inr.inl.inr.inl ⊢ 2 - 2 = 0 ∨ 2 - 2 = 1 ∨ 2 - 2 = 2 ∨ 2 - 2 = 3mp.inr.inl.inr.inr ⊢ 2 - 4 = 0 ∨ 2 - 4 = 1 ∨ 2 - 4 = 2 ∨ 2 - 4 = 3mp.inr.inr.inl ⊢ 4 - 1 = 0 ∨ 4 - 1 = 1 ∨ 4 - 1 = 2 ∨ 4 - 1 = 3mp.inr.inr.inr.inl ⊢ 4 - 2 = 0 ∨ 4 - 2 = 1 ∨ 4 - 2 = 2 ∨ 4 - 2 = 3mp.inr.inr.inr.inr ⊢ 4 - 4 = 0 ∨ 4 - 4 = 1 ∨ 4 - 4 = 2 ∨ 4 - 4 = 3
simp All goals completed! 🐙
· mpr x:ℕ⊢ x = 0 ∨ x = 1 ∨ x = 2 ∨ x = 3 → ∃ x_1, (x_1 = 1 ∨ x_1 = 2 ∨ x_1 = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x_1 - y = x rintro (rfl | rfl | rfl | rfl) mpr.inl ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 0mpr.inr.inl ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 1mpr.inr.inr.inl ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 2mpr.inr.inr.inr ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 3
· mpr.inl ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 0 exact ⟨1, by ⊢ 1 = 1 ∨ 1 = 2 ∨ 1 = 4 decide All goals completed! 🐙, 1, by ⊢ 1 = 1 ∨ 1 = 2 ∨ 1 = 4 decide All goals completed! 🐙, by ⊢ 1 - 1 = 0 decide All goals completed! 🐙⟩
· mpr.inr.inl ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 1 exact ⟨2, by ⊢ 2 = 1 ∨ 2 = 2 ∨ 2 = 4 decide All goals completed! 🐙, 1, by ⊢ 1 = 1 ∨ 1 = 2 ∨ 1 = 4 decide All goals completed! 🐙, by ⊢ 2 - 1 = 1 decide All goals completed! 🐙⟩
· mpr.inr.inr.inl ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 2 exact ⟨4, by ⊢ 4 = 1 ∨ 4 = 2 ∨ 4 = 4 decide All goals completed! 🐙, 2, by ⊢ 2 = 1 ∨ 2 = 2 ∨ 2 = 4 decide All goals completed! 🐙, by ⊢ 4 - 2 = 2 decide All goals completed! 🐙⟩
· mpr.inr.inr.inr ⊢ ∃ x, (x = 1 ∨ x = 2 ∨ x = 4) ∧ ∃ y, (y = 1 ∨ y = 2 ∨ y = 4) ∧ x - y = 3 exact ⟨4, by ⊢ 4 = 1 ∨ 4 = 2 ∨ 4 = 4 decide All goals completed! 🐙, 1, by ⊢ 1 = 1 ∨ 1 = 2 ∨ 1 = 4 decide All goals completed! 🐙, by ⊢ 4 - 1 = 3 decide All goals completed! 🐙⟩For any maximal Sidon set, the difference set contains 0.
@[category textbook, AMS 5 11]
theorem maximal_sidon_contains_zero (A : Set ℕ) (N : ℕ) (hN : 1 ≤ N)
(hA : IsMaximalSidonSetIn A N) : 0 ∈ A - A := by A:Set ℕN:ℕhN:1 ≤ NhA:A.IsMaximalSidonSetIn N⊢ 0 ∈ A - A
obtain ⟨hAsub, hAsidon, hAmax⟩ := hA A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})⊢ 0 ∈ A - A
have hne : A.Nonempty hne A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})⊢ A.NonemptyA:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hne:A.Nonempty⊢ 0 ∈ A - A
· hne A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})⊢ A.Nonempty by_contra hemp hne A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:¬A.Nonempty⊢ False; rw [Set.not_nonempty_iff_eq_empty hne A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ False hne A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ False] at hemp hne A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ False
exact hAmax (Set.mem_Icc.mpr ⟨le_refl 1, hN⟩)
(by A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ 1 ∉ A rw [hemp A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ 1 ∉ ∅ A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ 1 ∉ ∅] A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ 1 ∉ ∅; exact id All goals completed! 🐙) (by A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ IsSidon (A ∪ {1})
rw [hemp, A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ IsSidon (∅ ∪ {1}) A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ IsSidon {1} Set.empty_union A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ IsSidon {1} A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ IsSidon {1}] A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅⊢ IsSidon {1}
exact fun _ hi _ hj _ hk _ hl _ => by A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅x✝⁴:ℕhi:x✝⁴ ∈ {1}x✝³:ℕhj:x✝³ ∈ {1}x✝²:ℕhk:x✝² ∈ {1}x✝¹:ℕhl:x✝¹ ∈ {1}x✝:x✝⁴ + x✝² = x✝³ + x✝¹⊢ x✝⁴ = x✝³ ∧ x✝² = x✝¹ ∨ x✝⁴ = x✝¹ ∧ x✝² = x✝³
simp only [Set.mem_singleton_iff] at hi hj hk hl A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅x✝⁴:ℕx✝³:ℕx✝²:ℕx✝¹:ℕx✝:x✝⁴ + x✝² = x✝³ + x✝¹hi:x✝⁴ = 1hj:x✝³ = 1hk:x✝² = 1hl:x✝¹ = 1⊢ x✝⁴ = x✝³ ∧ x✝² = x✝¹ ∨ x✝⁴ = x✝¹ ∧ x✝² = x✝³
subst hi A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅x✝³:ℕx✝²:ℕx✝¹:ℕhj:x✝³ = 1hk:x✝² = 1hl:x✝¹ = 1x✝:1 + x✝² = x✝³ + x✝¹⊢ 1 = x✝³ ∧ x✝² = x✝¹ ∨ 1 = x✝¹ ∧ x✝² = x✝³
subst hj A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅x✝²:ℕx✝¹:ℕhk:x✝² = 1hl:x✝¹ = 1x✝:1 + x✝² = 1 + x✝¹⊢ 1 = 1 ∧ x✝² = x✝¹ ∨ 1 = x✝¹ ∧ x✝² = 1
subst hk A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅x✝¹:ℕhl:x✝¹ = 1x✝:1 + 1 = 1 + x✝¹⊢ 1 = 1 ∧ 1 = x✝¹ ∨ 1 = x✝¹ ∧ 1 = 1
subst hl A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})hemp:A = ∅x✝:1 + 1 = 1 + 1⊢ 1 = 1 ∧ 1 = 1 ∨ 1 = 1 ∧ 1 = 1
exact Or.inl ⟨rfl, rfl⟩ All goals completed! 🐙)
obtain ⟨a, ha⟩ := hne A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})a:ℕha:a ∈ A⊢ 0 ∈ A - A
have := Set.sub_mem_sub ha ha A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})a:ℕha:a ∈ Athis:a - a ∈ A - A⊢ 0 ∈ A - A
rwa [Nat.sub_self A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})a:ℕha:a ∈ Athis:0 ∈ A - A⊢ 0 ∈ A - A] A:Set ℕN:ℕhN:1 ≤ NhAsub:A ⊆ Icc 1 NhAsidon:IsSidon AhAmax:∀ ⦃x : ℕ⦄, x ∈ Icc 1 N → x ∉ A → ¬IsSidon (A ∪ {x})a:ℕha:a ∈ Athis:0 ∈ A - A⊢ 0 ∈ A - A at thisend Erdos42