Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions FormalConjectures/GreensOpenProblems/39.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
/-
Copyright 2026 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 FormalConjectures.Util.ProblemImports

/-!
# Green's Open Problem 39

*References:*
- [Gr24] [Green, Ben. "100 open problems." (2024).](https://people.maths.ox.ac.uk/greenbj/papers/open-problems.pdf#problem.39)
- [BJR11] BollobΓ‘s, BΓ©la, Svante Janson, and Oliver Riordan. "On covering by translates of a set."
Random Structures & Algorithms 38.1‐2 (2011): 33-67.
-/

open Filter Topology
open scoped Pointwise

namespace Green39

/--
The proportion of subsets of $\mathbb{Z}/p\mathbb{Z}$ of size $k$ that can cover
$\mathbb{Z}/p\mathbb{Z}$ using at most $c$ translates.

If p = 0 or k > p, return 0 by convention.
-/
def proportionCoverable (p k c : β„•) : β„š :=
if h : p = 0 then 0
else if k > p then 0
else
have : NeZero p := ⟨h⟩
let S : Finset (Finset (ZMod p)) := Finset.powersetCard k Finset.univ
let coverable := S.filter (fun A => βˆƒ T : Finset (ZMod p), T.card ≀ c ∧ A + T = Finset.univ)
(coverable.card : β„š) / (S.card : β„š)

@[category test, AMS 5 60]
theorem proportionCoverable_p_p_1 : proportionCoverable 3 3 1 = 1 := by native_decide

@[category test, AMS 5 60]
theorem proportionCoverable_t_0 : proportionCoverable 5 2 0 = 0 := by native_decide

@[category test, AMS 5 60]
theorem proportionCoverable_2_1_2 : proportionCoverable 2 1 2 = 1 := by native_decide

@[category test, AMS 5 60]
theorem proportionCoverable_3_1_2 : proportionCoverable 3 1 2 = 0 := by native_decide

@[category test, AMS 5 60]
theorem proportionCoverable_a_gt_p : proportionCoverable 3 4 2 = 0 := by native_decide

@[category test, AMS 5 60]
theorem proportionCoverable_7_4_2 :
proportionCoverable 7 4 2 = (3 : β„š) / 5 := by
native_decide

@[category test, AMS 5 60]
theorem proportionCoverable_11_3_4 :
proportionCoverable 11 3 4 = (1 : β„š) / 3 := by
native_decide

@[category test, AMS 5 60]
theorem proportionCoverable_11_4_3 :
proportionCoverable 11 4 3 = (1 : β„š) / 6 := by
native_decide

/--
If $A \subset \mathbb{Z}/p\mathbb{Z}$ is random, $|A| = \sqrt{p}$, can we almost surely cover
$\mathbb{Z}/p\mathbb{Z}$ with $100\sqrt{p}$ translates of $A$? [Gr24]
-/
@[category research open, AMS 5 60]
theorem green_39 : answer(sorry) ↔
Tendsto
(fun p : {q : β„• // q.Prime} ↦
let k := Nat.sqrt p
let c := 100 * k
(proportionCoverable p k c : ℝ))
atTop (𝓝 1) := by
sorry

/--
"I do not know how to answer this even with 100 replaced by 1.01." [Gr24]"
-/
@[category research open, AMS 5 60]
theorem green_39.variant_101 : answer(sorry) ↔
Tendsto
(fun p : {q : β„• // q.Prime} ↦
let k := Nat.sqrt p
let c := ⌊1.01 * (k : ℝ)βŒ‹β‚Š
(proportionCoverable p k c : ℝ))
atTop (𝓝 1) := by
sorry

/--
Similar questions are interesting with $\sqrt{p}$ replaced by $p^\theta$ for any $\theta \le 1/2$. [Gr24]
-/
@[category research open, AMS 5 60]
theorem green_39.variant_theta : answer(sorry) ↔
βˆ€ (ΞΈ : ℝ), 0 < ΞΈ β†’ ΞΈ ≀ 1/2 β†’
βˆƒ C > 1, Tendsto
(fun p : {q : β„• // q.Prime} ↦
let k := ⌊(p : ℝ) ^ ΞΈβŒ‹β‚Š
let c := ⌊C * (p : ℝ) ^ ΞΈβŒ‹β‚Š
(proportionCoverable p k c : ℝ))
atTop (𝓝 1) := by
sorry

end Green39
Loading