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 : aB) (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 bB to the unique c ∈ B such that a-b=c-d for some dB.

        Equations
        Instances For
          noncomputable def Mainstep.g [Hypotheses] {a : ZMod N} (ha : aB) (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 : aB) (b : { x : ZMod N // x B }) :
            a - b = (f ha b) - (g ha b)
            theorem Mainstep.f_def' [Hypotheses] {a : ZMod N} (ha : aB) (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 : aB) :

            f_a is an involution.

            theorem Mainstep.f_fixed [Hypotheses] {a : ZMod N} {ha : aB} {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 : aB) :
            Equations
            Instances For
              theorem Mainstep.f_second_fixed [Hypotheses] {a : ZMod N} {ha : aB} {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)