Documentation

Formalizations.NumberTheory.PrescribedMoments.CubicModels

Cayley and Segre cubics, Newton's identities, and subsets of 𝔽_p with e₁ = e₃ = 0 #

Main results #

References #

Part 1: prop:modelos #

Part (2): Cayley's nodal cubic #

noncomputable def P3c.cayleyF {R : Type u_1} [CommRing R] :

F = 2x₁³+xβ‚‚Β³+x₃³+xβ‚„Β³-(2x₁+xβ‚‚+x₃+xβ‚„)Β³ (indices 0..3).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    noncomputable def P3c.cayleyStd {R : Type u_1} [CommRing R] :
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def P3c.nodeMat {R : Type u_1} [CommRing R] :
      Matrix (Fin 4) (Fin 4) R

      Matrix whose columns are the four nodes.

      Equations
      • P3c.nodeMat = !![1, 1, 1, 1; -1, -1, -1, 1; -1, -1, 1, -1; -1, 1, -1, -1]
      Instances For
        theorem P3c.cayley_identity {R : Type u_1} [CommRing R] :
        (MvPolynomial.aeval fun (i : Fin 4) => βˆ‘ j : Fin 4, MvPolynomial.C (nodeMat i j) * MvPolynomial.X j) cayleyF = 24 * cayleyStd
        theorem P3c.det_nodeMat {R : Type u_1} [CommRing R] :
        theorem P3c.node_singular {R : Type u_1} [CommRing R] (j : Fin 4) :
        (MvPolynomial.eval fun (i : Fin 4) => nodeMat i j) cayleyF = 0 ∧ βˆ€ (i : Fin 4), (MvPolynomial.eval fun (i : Fin 4) => nodeMat i j) ((MvPolynomial.pderiv i) cayleyF) = 0
        theorem P3c.eval_pderiv_cayleyF {R : Type u_1} [CommRing R] (x : Fin 4 β†’ R) :
        (MvPolynomial.eval x) ((MvPolynomial.pderiv 0) cayleyF) = 6 * x 0 ^ 2 - 6 * (2 * x 0 + x 1 + x 2 + x 3) ^ 2 ∧ βˆ€ (i : Fin 4), i β‰  0 β†’ (MvPolynomial.eval x) ((MvPolynomial.pderiv i) cayleyF) = 3 * x i ^ 2 - 3 * (2 * x 0 + x 1 + x 2 + x 3) ^ 2
        theorem P3c.cayley_sing_classification {k : Type u_2} [Field k] (h6 : 6 β‰  0) (x : Fin 4 β†’ k) (hx : x β‰  0) (hsing : βˆ€ (i : Fin 4), (MvPolynomial.eval x) ((MvPolynomial.pderiv i) cayleyF) = 0) :
        βˆƒ (j : Fin 4) (c : k), c β‰  0 ∧ x = c β€’ fun (i : Fin 4) => nodeMat i j

        The singular points of F = 0 in β„™Β³ (char k ∀ 6) are exactly the four nodes.

        theorem P3c.cayleyF_eq_elim {R : Type u_1} [CommRing R] (x : Fin 4 β†’ R) :
        2 * x 0 ^ 3 + x 1 ^ 3 + x 2 ^ 3 + x 3 ^ 3 + (-(2 * x 0 + x 1 + x 2 + x 3)) ^ 3 = (MvPolynomial.eval x) cayleyF

        F is the cubic of V_(2,1^4) after eliminating xβ‚… = -(2x₁+xβ‚‚+x₃+xβ‚„).

        theorem P3c.prop_modelos_cayley {k : Type u_2} [Field k] (h6 : 6 β‰  0) :

        prop:modelos (2): over a field with char k ∀ 6, M is invertible (det M = -8 β‰  0) and F ∘ M = 24 Β· (uβ‚€u₁uβ‚‚ + uβ‚€u₁u₃ + uβ‚€uβ‚‚u₃ + u₁uβ‚‚u₃) with 24 β‰  0: V_(2,1^4) is projectively equivalent over k to Cayley's cubic, with no rescaling.

        theorem P3c.prop_modelos_cayley_nodes {k : Type u_2} [Field k] (h6 : 6 β‰  0) (x : Fin 4 β†’ k) (hx : x β‰  0) :
        (βˆ€ (i : Fin 4), (MvPolynomial.eval x) ((MvPolynomial.pderiv i) cayleyF) = 0) ↔ βˆƒ (j : Fin 4) (c : k), c β‰  0 ∧ x = c β€’ fun (i : Fin 4) => nodeMat i j

        prop:modelos (2), the nodes: over a field with char k ∀ 6, the singular points of F = 0 in β„™Β³ are exactly the four columns of M (up to a nonzero scalar).

        Part (1): the Segre cubic #

        noncomputable def P3c.segreL {R : Type u_1} [CommRing R] :

        Linear form Ξ£ yα΅’ of the Segre cubic.

        Equations
        Instances For
          noncomputable def P3c.segreG {R : Type u_1} [CommRing R] :

          Cubic form Ξ£ yα΅’Β³ of the Segre cubic.

          Equations
          Instances For
            def P3c.segreNode {R : Type u_1} [CommRing R] (A : Finset (Fin 6)) :
            Fin 6 β†’ R

            The sign vector with +1 on A and -1 off A.

            Equations
            Instances For
              theorem P3c.eval_pderiv_segreL {R : Type u_1} [CommRing R] (y : Fin 6 β†’ R) (i : Fin 6) :
              theorem P3c.eval_pderiv_segreG {R : Type u_1} [CommRing R] (y : Fin 6 β†’ R) (i : Fin 6) :
              theorem P3c.sum_segreNode {R : Type u_1} [CommRing R] (A : Finset (Fin 6)) :
              βˆ‘ i : Fin 6, segreNode A i = 2 * ↑A.card - 6
              theorem P3c.segre_sing_classification {k : Type u_2} [Field k] (h6 : 6 β‰  0) (y : Fin 6 β†’ k) (hy : y β‰  0) (hL : (MvPolynomial.eval y) segreL = 0) (hrank : βˆƒ (a : k) (b : k), (a β‰  0 ∨ b β‰  0) ∧ βˆ€ (i : Fin 6), a * (MvPolynomial.eval y) ((MvPolynomial.pderiv i) segreL) + b * (MvPolynomial.eval y) ((MvPolynomial.pderiv i) segreG) = 0) :
              βˆƒ (s : k), s β‰  0 ∧ βˆƒ (A : Finset (Fin 6)), A.card = 3 ∧ y = s β€’ segreNode A
              theorem P3c.segreNode_compl {R : Type u_1} [CommRing R] (A : Finset (Fin 6)) :

              The nodes come in antipodal pairs A ↔ Aᢜ (same projective point).

              #{A βŠ† [6] : #A = 3} = 20, i.e. ten projective nodes after A ~ Aᢜ.

              theorem P3c.prop_modelos_segre {k : Type u_2} [Field k] (h6 : 6 β‰  0) (y : Fin 6 β†’ k) (hy : y β‰  0) :
              ((MvPolynomial.eval y) segreL = 0 ∧ (MvPolynomial.eval y) segreG = 0 ∧ βˆƒ (a : k) (b : k), (a β‰  0 ∨ b β‰  0) ∧ βˆ€ (i : Fin 6), a * (MvPolynomial.eval y) ((MvPolynomial.pderiv i) segreL) + b * (MvPolynomial.eval y) ((MvPolynomial.pderiv i) segreG) = 0) ↔ βˆƒ (s : k), s β‰  0 ∧ βˆƒ (A : Finset (Fin 6)), A.card = 3 ∧ y = s β€’ segreNode A

              prop:modelos (1): over a field with char k ∀ 6, the singular points of {Ξ£yα΅’ = Ξ£yα΅’Β³ = 0} βŠ‚ ℙ⁡ (points where the 2Γ—6 Jacobian has rank < 2) are exactly the multiples of the sign vectors with three +1 and three -1.

              Part 2: lem:newton and prop:n34 #

              def P3c.moment {R : Type u_1} [CommRing R] (j : β„•) (T : Finset R) :
              R

              Power sum M_j(T) = Σ_{t∈T} t^j.

              Equations
              Instances For
                def P3c.esym {R : Type u_1} [CommRing R] (j : β„•) (T : Finset R) :
                R

                Elementary symmetric function e_j(T).

                Equations
                Instances For
                  theorem P3c.newton_three {R : Type u_1} [CommRing R] (T : Finset R) :
                  3 * esym 3 T = moment 3 T - esym 1 T * moment 2 T + esym 2 T * moment 1 T
                  theorem P3c.esym_one {R : Type u_1} [CommRing R] (T : Finset R) :
                  esym 1 T = moment 1 T
                  theorem P3c.moments_iff_esym {R : Type u_1} [CommRing R] [IsDomain R] (h3 : 3 β‰  0) (T : Finset R) :
                  moment 1 T = 0 ∧ moment 3 T = 0 ↔ esym 1 T = 0 ∧ esym 3 T = 0

                  M₁ = M₃ = 0 ⇔ e₁ = e₃ = 0 when 3 β‰  0 in a domain.

                  theorem P3c.prod_sub_eq_sum_esym {R : Type u_1} [CommRing R] (T : Finset R) (x : R) :
                  ∏ t ∈ T, (x - t) = βˆ‘ j ∈ Finset.range (T.card + 1), (-1) ^ j * esym j T * x ^ (T.card - j)

                  Value of ∏_{t∈T} (x - t) in terms of the e_j.

                  noncomputable def P3c.coeffZ {R : Type u_1} [CommRing R] (P : Polynomial R) (m : β„€) :
                  R

                  Coefficient of X^m for an integer exponent m (zero when m < 0), so that "the coefficient of X^{n-3}" is meaningful for every n.

                  Equations
                  Instances For
                    theorem P3c.coeffZ_prod {R : Type u_1} [CommRing R] (T : Finset R) (j : β„•) :
                    coeffZ (∏ t ∈ T, (Polynomial.X - Polynomial.C t)) (↑T.card - ↑j) = (-1) ^ j * esym j T
                    theorem P3c.lem_newton_domain {R : Type u_1} [CommRing R] [IsDomain R] (h3 : 3 β‰  0) (T : Finset R) :
                    moment 1 T = 0 ∧ moment 3 T = 0 ↔ coeffZ (∏ t ∈ T, (Polynomial.X - Polynomial.C t)) (↑T.card - 1) = 0 ∧ coeffZ (∏ t ∈ T, (Polynomial.X - Polynomial.C t)) (↑T.card - 3) = 0

                    lem:newton, over any domain in which 3 β‰  0.

                    def P3c.SymmNeg {R : Type u_1} [Ring R] (T : Finset R) :

                    T = -T (as a property: T is stable under negation).

                    Equations
                    Instances For
                      theorem P3c.two_ne_zero_zmod {p : β„•} (hp3 : 3 < p) :
                      2 β‰  0
                      theorem P3c.three_ne_zero_zmod {p : β„•} (hp3 : 3 < p) :
                      3 β‰  0
                      theorem P3c.moment_odd_eq_zero {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) {T : Finset (ZMod p)} (hT : SymmNeg T) {j : β„•} (hj : Odd j) :
                      moment j T = 0

                      A set stable under negation has vanishing odd power sums (p odd).

                      theorem P3c.n34_esym_iff_symm {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) (T : Finset (ZMod p)) (hn : T.card ≀ 4) :
                      esym 1 T = 0 ∧ esym 3 T = 0 ↔ SymmNeg T

                      prop:n34, first claim: for p > 3 and #T ≀ 4, e₁ = e₃ = 0 ⇔ T = -T.

                      theorem P3c.lem_newton {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) (T : Finset (ZMod p)) :
                      moment 1 T = 0 ∧ moment 3 T = 0 ↔ coeffZ (∏ t ∈ T, (Polynomial.X - Polynomial.C t)) (↑T.card - 1) = 0 ∧ coeffZ (∏ t ∈ T, (Polynomial.X - Polynomial.C t)) (↑T.card - 3) = 0

                      lem:newton (p > 3): M₁(T) = M₃(T) = 0 iff the coefficients of X^{n-1} and X^{n-3} in ∏_{t∈T} (X - t) vanish, n = #T.

                      def P3c.C13 (n p : β„•) [NeZero p] :

                      C(n,p): number of n-subsets T βŠ† 𝔽_p with M₁(T) = M₃(T) = 0.

                      Equations
                      Instances For
                        def P3c.halfReps (p : β„•) [NeZero p] :

                        Representatives of the antipodal pairs: {x : 1 ≀ val x ≀ p/2}.

                        Equations
                        Instances For
                          theorem P3c.card_halfReps (p : β„•) [NeZero p] :
                          (halfReps p).card = p / 2
                          theorem P3c.halfReps_xor {p : β„•} [Fact (Nat.Prime p)] (hodd : p % 2 = 1) {x : ZMod p} (hx : x β‰  0) :

                          For x β‰  0 and p odd, exactly one of x, -x is a representative.

                          theorem P3c.card_symm {p : β„•} [Fact (Nat.Prime p)] (hodd : p % 2 = 1) {T : Finset (ZMod p)} (hT : SymmNeg T) :
                          T.card = 2 * {x ∈ T | x ∈ halfReps p}.card + if 0 ∈ T then 1 else 0

                          Cardinality of a negation-stable set: #T = 2·#(T ∩ H) + [0 ∈ T].

                          def P3c.symmOf {p : β„•} (b : Bool) (S : Finset (ZMod p)) :

                          The negation-stable set generated by S βŠ† H, with 0 added iff b.

                          Equations
                          Instances For
                            theorem P3c.symmOf_symm {p : β„•} (b : Bool) (S : Finset (ZMod p)) :
                            theorem P3c.symmOf_filter {p : β„•} [Fact (Nat.Prime p)] (hodd : p % 2 = 1) (b : Bool) {S : Finset (ZMod p)} (hS : S βŠ† halfReps p) :
                            {x ∈ symmOf b S | x ∈ halfReps p} = S
                            theorem P3c.zero_mem_symmOf_iff {p : β„•} [Fact (Nat.Prime p)] (b : Bool) {S : Finset (ZMod p)} (hS : S βŠ† halfReps p) :
                            theorem P3c.symm_ext {p : β„•} [Fact (Nat.Prime p)] (hodd : p % 2 = 1) {T T' : Finset (ZMod p)} (hT : SymmNeg T) (hT' : SymmNeg T') (h0 : 0 ∈ T ↔ 0 ∈ T') (hf : {x ∈ T | x ∈ halfReps p} = {x ∈ T' | x ∈ halfReps p}) :
                            T = T'

                            Two negation-stable sets with the same representatives and the same 0-status coincide.

                            theorem P3c.card_symm_sets {p : β„•} [Fact (Nat.Prime p)] (hodd : p % 2 = 1) (b : Bool) (k : β„•) :
                            {T ∈ Finset.powersetCard (2 * k + if b = true then 1 else 0) Finset.univ | SymmNeg T ∧ (0 ∈ T ↔ b = true)}.card = (p / 2).choose k

                            Counting negation-stable n-sets with prescribed 0-status: they are in bijection with k-subsets of H, n = 2k + [b].

                            theorem P3c.odd_of_prime {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) :
                            p % 2 = 1
                            theorem P3c.moments_iff_symm {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) (T : Finset (ZMod p)) (hn : T.card ≀ 4) :

                            For #T = n ≀ 4: M₁ = M₃ = 0 ⇔ T = -T (lem:newton + first claim of prop:n34).

                            theorem P3c.C_eq_card_symm {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) (b : Bool) (k : β„•) (hk : (2 * k + if b = true then 1 else 0) ≀ 4) (hpar : βˆ€ (T : Finset (ZMod p)), (T.card = 2 * k + if b = true then 1 else 0) β†’ SymmNeg T β†’ (0 ∈ T ↔ b = true)) :
                            C13 (2 * k + if b = true then 1 else 0) p = (p / 2).choose k
                            theorem P3c.prop_n34_three {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) :
                            2 * C13 3 p = p - 1 ∧ C13 3 p = (p - 1) / 2

                            prop:n34, n = 3: C(3,p) = (p-1)/2 (and 2Β·C(3,p) = p-1).

                            theorem P3c.prop_n34_four {p : β„•} [Fact (Nat.Prime p)] (hp3 : 3 < p) :
                            8 * C13 4 p = (p - 1) * (p - 3) ∧ C13 4 p = (p - 1) * (p - 3) / 8

                            prop:n34, n = 4: C(4,p) = (p-1)(p-3)/8 (and 8Β·C(4,p) = (p-1)(p-3)).