Skip to main content
teorth/PFR
Source indexedtheorem · leanprover/lean4:v4.33.0-rc1

approx_hom_pfr'

PFR.ApproxHomPFR · PFR/ApproxHomPFR.lean:287 to 312

Mathematical statement

Exact Lean statement

theorem approx_hom_pfr' [Finite G] (f : G → G') (K : ℝ) (hK : K > 0)
    (hf : K⁻¹ ≤ Finset.dens {x : G × G | f (x.1 + x.2) = f x.1 + f x.2}) :
    ∃ (φ'' : G →+ G'), Nat.card {x | f x = φ'' x} ≥ (Nat.card G / (2 ^ 144 * K ^ 122) - 1)/2

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
theorem approx_hom_pfr' [Finite G] (f : G  G') (K : ) (hK : K > 0)    (hf : K⁻¹  Finset.dens {x : G × G | f (x.1 + x.2) = f x.1 + f x.2}) :     (φ'' : G →+ G'), Nat.card {x | f x = φ'' x}  (Nat.card G / (2 ^ 144 * K ^ 122) - 1)/2 := by  obtain  φ, c, h  := approx_hom_pfr f K hK hf  set A := { x | f x = φ x + c }  obtain  φ', h'  := card_of_slice A  let φ'c : G →+ G' := {    toFun x := (φ' x) • c    map_add' := by intros; simp [add_smul]    map_zero' := by simp  }  use φ + φ'c  rw [ge_iff_le, div_le_iff₀ (by norm_num)]  calc    _  Nat.card A - (1:) := by gcongr    _  (Nat.card ↑A - 1:) := by norm_cast; convert Int.le_natCast_sub _ _; norm_cast    _  2 * Nat.card ↑{x | x  A  φ' x = 1} := by norm_cast    _  _ := by      rw [mul_comm]; gcongr      apply Nat.card_mono      · apply Set.toFinite      intro x      simp only [Set.mem_setOf_eq, AddMonoidHom.add_apply, AddMonoidHom.coe_mk,        ZeroHom.coe_mk, and_imp, A, φ'c]      intro h1 h2      simp [h1, h2]