Documentation

Analysis.Misc.erdos_707

Formalizing a proof (the prime case of) Erdos problem #707 recently proven by Alexeev, ChatGPT, Lean, and Mixon at https://borisalexeev.com/papers/erdos707.html, following Theorem 8 proven on page 5

A perfect difference set is a set where every nonzero element is uniquely representable as a difference of two elements of the set.

Equations
Instances For
    def IsPerfectDifferenceSet.map {N : ℕ} (B : Finset (ZMod N)) (p : { x : ZMod N // x ∈ B } × { x : ZMod N // x ∈ B } ⊕ Unit) :
    ZMod N ⊕ { x : ZMod N // x ∈ B }
    Equations
    Instances For
      theorem IsPerfectDifferenceSet.card {N : ℕ} [NeZero N] {B : Finset (ZMod N)} (hdiff : IsPerfectDifferenceSet B) :
      B.card * B.card + 1 = N + B.card

      We will show that the following hypotheses are inconsistent; this is the bulk of the proof of Theorem 8.

      Instances
        theorem Mainstep.mul_two_inj [Hypotheses] {x y : ZMod N} (h : 2 * x = 2 * y) :
        x = y
        theorem Mainstep.diff_uniq [Hypotheses] {a b c d : { x : ZMod N // x ∈ B }} (ha : a ≠ b) (hsub : ↑a - ↑b = ↑c - ↑d) :
        a = c ∧ b = d
        noncomputable def Mainstep.f [Hypotheses] {a : ZMod N} (ha : a ∉ B) (b : { x : ZMod N // x ∈ B }) :
        { x : ZMod N // x ∈ B }

        Given a perfect difference set B and an element a not in B, the function f_a maps each b ∈ B to the unique c ∈ B such that a-b=c-d for some d ∈ B.

        Equations
        Instances For
          noncomputable def Mainstep.g [Hypotheses] {a : ZMod N} (ha : a ∉ B) (b : { x : ZMod N // x ∈ B }) :
          { x : ZMod N // x ∈ B }

          Though not defined in Theorem 8, it is convenient to also introduce the companion function g_a, defined to be the d element.

          Equations
          Instances For
            theorem Mainstep.f_def [Hypotheses] {a : ZMod N} (ha : a ∉ B) (b : { x : ZMod N // x ∈ B }) :
            a - ↑b = ↑(f ha b) - ↑(g ha b)
            theorem Mainstep.f_def' [Hypotheses] {a : ZMod N} (ha : a ∉ B) (b c d : { x : ZMod N // x ∈ B }) :
            a - ↑b = ↑c - ↑d ↔ c = f ha b ∧ d = g ha b
            theorem Mainstep.f_inv [Hypotheses] {a : ZMod N} (ha : a ∉ B) :

            f_a is an involution.

            theorem Mainstep.f_fixed [Hypotheses] {a : ZMod N} {ha : a ∉ B} {b : { x : ZMod N // x ∈ B }} (hb : f ha b = b) :
            2 * ↑b = a + ↑(g ha b)

            Fixed points of f_a satisfy 2f_a(b) = a + g_a(b).

            noncomputable def Mainstep.z2_vact [Hypotheses] {a : ZMod N} (ha : a ∉ B) :
            Equations
            Instances For
              theorem Mainstep.f_second_fixed [Hypotheses] {a : ZMod N} {ha : a ∉ B} {b : { x : ZMod N // x ∈ B }} (hb : f ha b = b) :
              ∃ (c : { x : ZMod N // x ∈ B }), c ≠ b ∧ f ha c = c

              If there is one fixed point, there is another.

              theorem Mainstep.two_mul_sub_one_notin [Hypotheses] {x : { x : ZMod N // x ∈ B }} (hx : ↑x ≠ 2) :
              2 * (↑x - 1) ∉ B
              theorem Mainstep.first_fixed [Hypotheses] {x : { x : ZMod N // x ∈ B }} (hx : ↑x ≠ 2) :
              f ⋯ x = x
              theorem Mainstep.second_fixed [Hypotheses] {x : { x : ZMod N // x ∈ B }} (hx : ↑x ≠ 2) :
              ∃ (b : { x : ZMod N // x ∈ B }), b ≠ x ∧ f ⋯ b = b
              noncomputable def Mainstep.b [Hypotheses] (x : { x : ZMod N // x ∈ B }) :
              { x : ZMod N // x ∈ B }
              Equations
              Instances For
                noncomputable def Mainstep.d [Hypotheses] (x : { x : ZMod N // x ∈ B }) :
                { x : ZMod N // x ∈ B }
                Equations
                Instances For
                  theorem Mainstep.b_neq [Hypotheses] {x : { x : ZMod N // x ∈ B }} (hx : ↑x ≠ 2) :
                  b x ≠ x
                  theorem Mainstep.bd_ident [Hypotheses] (x : { x : ZMod N // x ∈ B }) :
                  2 * ↑(b x) = 2 * (↑x - 1) + ↑(d x)