All proofs
Project-declaredLean 4.33.0-rc1 · mathlib@79d0395a1825

Homomorphism pfr

homomorphism_pfr

Project documentation

Let f:GGf: G \to G' be a function, and let SS denote the set S:={f(x+y)f(x)f(y):x,yG}. S := \{ f(x+y)-f(x)-f(y): x,y \in G \}. Then there exists a homomorphism ϕ:GG\phi: G \to G' such that {f(x)ϕ(x)}S10.|\{f(x) - \phi(x)\}| \leq |S|^{10}.

Exact Lean statement

theorem homomorphism_pfr (f : G → G') (S : Set G') (hS : ∀ x y : G, f (x+y) - (f x) - (f y) ∈ S) :
    ∃ (φ : G →+ G') (T : Set G'), Nat.card T ≤ Nat.card S ^ 10 ∧ ∀ x : G, (f x) - (φ x) ∈ T

Formal artifact

Lean source

Canonical source
Full Lean sourceLean 4
theorem homomorphism_pfr (f : G  G') (S : Set G') (hS :  x y : G, f (x+y) - (f x) - (f y)  S) :     (φ : G →+ G') (T : Set G'), Nat.card T  Nat.card S ^ 10   x : G, (f x) - (φ x)  T := by  cases nonempty_fintype G  cases nonempty_fintype G'  classical  have : 0 < Nat.card G := Nat.card_pos  let A := univ.graphOn f  have hA_le : (Nat.card ↥(A + A) : )  Nat.card S * Nat.card A := by    let B := A - {0}×ˢS    have hAB : A + A  B := by      intro x hx      obtain a, ha, a', ha', haa' := Set.mem_add.mp hx      simp only [mem_graphOn, A] at ha ha'      rw [Set.mem_sub]      refine (x.1, f x.1), ?_, (0, f (a.1 + a'.1) - f a.1 - f a'.1), ?_      · simp [A]      · simp only [singleton_prod, mem_image, Prod.mk.injEq, true_and,          exists_eq_right, Prod.mk_sub_mk, sub_zero]        exact hS a.1 a'.1,          by rw [ Prod.fst_add, ha.2, ha'.2, sub_sub,  Prod.snd_add, haa', sub_sub_self]    have hB_card : Nat.card B  Nat.card S * Nat.card A :=      natCard_sub_le.trans_eq <| by simp only [mul_comm, Set.card_singleton_prod]    norm_cast    exact (Nat.card_mono (toFinite B) hAB).trans hB_card  have hA_nonempty : A.Nonempty := by simp [A]  obtain H, c, hcS, -, -, hAcH := better_PFR_conjecture_aux hA_nonempty hA_le  have : 0 < Nat.card c := by    have : c.Nonempty := by      by_contra! H      simp only [H, empty_add, subset_empty_iff] at hAcH      simp [hAcH] at hA_nonempty    exact this.natCard_pos c.toFinite  obtain H₀, H₁, φ, hH₀₁, hH_card := goursat H  have hG_card_le : Nat.card G  Nat.card c * Nat.card H₀ := by    let c' := Prod.fst '' c    have hc'_card : Nat.card c'  Nat.card c := Nat.card_image_le (toFinite c)    have h_fstH : Prod.fst '' (H : Set (G × G')) = H₀:= by      ext x; simpa [hH₀₁] using fun _  φ x, by simp    have hG_cover : (univ : Set G) = c' + (H₀:Set G) := by      apply (eq_univ_of_forall (fun g  ?_)).symm      have := image_mono (f := Prod.fst) hAcH      rw [ AddHom.coe_fst, Set.image_add, AddHom.coe_fst, image_fst_graphOn] at this      rw [ h_fstH]      exact this (mem_univ g)    apply_fun Nat.card at hG_cover    rw [Nat.card_coe_set_eq, Set.ncard_univ] at hG_cover    rw [hG_cover]    calc      Nat.card (c' + (H₀ : Set G))  Nat.card c' * Nat.card H₀ := natCard_add_le      _  Nat.card c * Nat.card H₀ := by gcongr  have : (Nat.card H₁ : )  (Nat.card H / Nat.card A) * Nat.card c := by calc      (Nat.card H₁ : ) = (Nat.card H : ) / Nat.card H₀ := by rw [hH_card]; push_cast; field_simp      _  (Nat.card H : ) / (Nat.card G / Nat.card c) := by        gcongr        rw [div_le_iff₀' (by positivity)]        exact_mod_cast hG_card_le      _ = (Nat.card H / Nat.card G : ) * Nat.card c := by field_simp      _ = (Nat.card H / Nat.card A) * Nat.card c := by congr; simp [-Nat.card_eq_fintype_card, A]  let T := (fun p  p.2 - φ p.1) '' (c + {0} ×ˢ (H₁: Set G'))  have :=    calc      A  c + H := hAcH      _  c + (({0} ×ˢ (H₁ : Set G')) + {(x, φ x) | x : G}) := by        gcongr        rintro g, g' hg        simp only [SetLike.mem_coe, hH₀₁] at hg        exact (0, g' - φ g), by simp [hg.2], (g, φ g), by simp      _ = ⋃ (a  T), {(x, a + φ x) | x : G} := by        rw [ add_assoc,  vadd_eq_add,  Set.iUnion_vadd_set, Set.biUnion_image]        congr! 3 with a        rw [ range,  range,  graphOn_univ_eq_range,  graphOn_univ_eq_range, vadd_graphOn_univ]  refine φ, T, ?_, ?_  · have : (Nat.card T : )  (Nat.card S : ) ^ (10 : ) := by calc      (Nat.card T : )  Nat.card (c + {(0 : G)} ×ˢ (H₁ : Set G')) := by        norm_cast; apply Nat.card_image_le (toFinite _)      _  Nat.card c * Nat.card H₁ := by        norm_cast        apply natCard_add_le.trans        rw [Set.card_singleton_prod] ; rfl      _  Nat.card c * ((Nat.card H / Nat.card A) * Nat.card c) := by gcongr      _ = Nat.card c ^ 2 * (Nat.card H / Nat.card A) := by ring      _  (Nat.card S ^ 5 * Nat.card A ^ (1 / 2 : ) * Nat.card H ^ (-1 / 2 : )) ^ 2          * (Nat.card H / Nat.card A) := by gcongr; exact hcS      _ = (Nat.card S : ) ^ (10 : ) := by        rw [ Real.rpow_two, div_eq_mul_inv, div_eq_mul_inv, div_eq_mul_inv]        have : 0 < Nat.card S := by          have : S.Nonempty := f (0 + 0) - f 0 - f 0, hS 0 0          exact this.natCard_pos S.toFinite        have : 0 < Nat.card A := hA_nonempty.natCard_pos A.toFinite        have : 0 < Nat.card H := H.nonempty.natCard_pos <| toFinite _        simp_rw [ Real.rpow_natCast]        rpow_ring        norm_num    exact_mod_cast this  · intro g    specialize this (g, by simp : (g, f g)  A)    simp only [mem_iUnion, mem_setOf_eq, Prod.mk.injEq, exists_eq_left] at this    obtain t, ht, h := this    rw [ h]    convert ht    abel
Project
Polynomial Freiman-Ruzsa project
License
Apache-2.0
Commit
a177b2e4abe4
Source
PFR/HomPFR.lean:75-175

Reuse this declaration

Bring the exact result into your workflow

The import identifies the source module. Your project still needs the pinned package dependency shown on this page.

What this badge means

This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.

Continue in this project

Related declarations

Project-declaredLean 4.33.0-rc1

Approx hom pfr

approx_hom_pfr

Project documentation

An approximate-homomorphism theorem for finite elementary abelian 22-groups. Let f:GGf:G\to G' and K>0K>0. If at least a proportion K1K^{-1} of pairs (x,y)G2(x,y)\in G^2 satisfy f(x+y)=f(x)+f(y)f(x+y)=f(x)+f(y), then there are an additive homomorphism φ:GG\varphi:G\to G' and a constant cGc\in G' such that f(x)=φ(x)+cf(x)=\varphi(x)+c for at least G/(2144K122)|G|/(2^{144}K^{122}) values of xx.

additive combinatoricsentropyprobability

Source project: Polynomial Freiman-Ruzsa project

Person-level attribution pending.

View proof record
Project-declaredLean 4.33.0-rc1

Better PFR conjecture

better_PFR_conjecture

Plain-language statement

If AF2nA \subset {\bf F}_2^n is finite non-empty with A+AKA|A+A| \leq K|A|, then there exists a subgroup HH of F2n{\bf F}_2^n with HA|H| \leq |A| such that AA can be covered by at most 2K92K^9 translates of HH.

additive combinatoricsentropyprobability

Source project: Polynomial Freiman-Ruzsa project

Person-level attribution pending.

View proof record
Project-declaredLean 4.33.0-rc1

Better PFR conjecture

better_PFR_conjecture'

Project documentation

Polynomial Freiman-Ruzsa theorem with exponent 99, without a finite ambient-group assumption. Let AA be a nonempty finite subset of an elementary abelian 22-group. If A+AKA|A+A|\le K|A|, then there are a finite subspace HH and a finite set cc such that Ac+HA\subseteq c+H, c<2K9|c|<2K^9, and HA|H|\le|A|.

additive combinatoricsentropyprobability

Source project: Polynomial Freiman-Ruzsa project

Person-level attribution pending.

View proof record