Documentation

Analysis.Misc.erdos_613

def hasMonoStar {V : Type u_1} (G : SimpleGraph V) (color : Sym2 VFin 2) (col : Fin 2) (k : ) :

“Color-col monochromatic star of size k”: there is a center x and a set S of k distinct neighbors of x such that every edge {x,y} with y ∈ S is present in G and colored col. (No restriction on edges inside S.)

Equations
Instances For
    def hasMonoTriangle {V : Type u_1} (G : SimpleGraph V) (color : Sym2 VFin 2) (col : Fin 2) :

    “Color-col monochromatic triangle”: there exist a b c with all three edges present in G and colored col. (Adjacency already forces distinctness.)

    Equations
    Instances For

      Statement (n = 5 case of Pikhurko’s counterexample). There exists a simple graph on 16 vertices with exactly 44 edges such that for every 2‑coloring of unordered pairs, either color 0 contains a K_{1,5} (a 5‑edge star) or color 1 contains a K₃ (a triangle).

      This only states the claim (as a Prop). You can later prove it from the explicit construction, or assume it as an axiom while you develop the rest.

      Equations
      Instances For
        inductive PikhurkoN5.V :

        Vertex type with 2 + 5 + 3 + 5 + 1 = 16 vertices.

        Instances For
          def PikhurkoN5.GAdj :
          VVProp

          Adjacency relation for the Pikhurko n=5 counterexample.

          • Inside A1 and inside A2: cliques.
          • Between A1B1 and A2B2: complete bipartite.
          • Inside B1 and B2: no edges.
          • No edges between the two blocks {A1,B1} and {A2,B2}.
          • apex is connected to every non-apex vertex.
          Equations
          Instances For

            The graph G on 16 vertices used for the n=5 counterexample.

            Equations
            Instances For

              Convenience simp lemmas. These are optional but help when you start proving properties about colorings later on.

              @[simp]
              theorem PikhurkoN5.adj_A1A1 {i j : Fin 2} :
              G.Adj (V.A1 i) (V.A1 j) i j
              @[simp]
              theorem PikhurkoN5.adj_A2A2 {i j : Fin 3} :
              G.Adj (V.A2 i) (V.A2 j) i j
              @[simp]
              theorem PikhurkoN5.adj_A1B1 {i : Fin 2} {j : Fin 5} :
              G.Adj (V.A1 i) (V.B1 j)
              @[simp]
              theorem PikhurkoN5.adj_B1A1 {i : Fin 5} {j : Fin 2} :
              G.Adj (V.B1 i) (V.A1 j)
              @[simp]
              theorem PikhurkoN5.adj_A2B2 {i : Fin 3} {j : Fin 5} :
              G.Adj (V.A2 i) (V.B2 j)
              @[simp]
              theorem PikhurkoN5.adj_B2A2 {i : Fin 3} {j : Fin 5} :
              G.Adj (V.B2 j) (V.A2 i)
              @[simp]
              theorem PikhurkoN5.no_adj_B1B1 {j j' : Fin 5} :
              ¬G.Adj (V.B1 j) (V.B1 j')
              @[simp]
              theorem PikhurkoN5.no_adj_B2B2 {j j' : Fin 5} :
              ¬G.Adj (V.B2 j) (V.B2 j')
              @[simp]
              theorem PikhurkoN5.no_cross_blocks_A1B2 {i : Fin 2} {j : Fin 5} :
              ¬G.Adj (V.A1 i) (V.B2 j)
              @[simp]
              theorem PikhurkoN5.no_cross_blocks_A2B1 {i : Fin 3} {j : Fin 5} :
              ¬G.Adj (V.A2 i) (V.B1 j)
              @[simp]
              theorem PikhurkoN5.no_cross_blocks_B1A2 {i : Fin 3} {j : Fin 5} :
              ¬G.Adj (V.B1 j) (V.A2 i)
              @[simp]
              theorem PikhurkoN5.no_cross_blocks_B1B2 {i j : Fin 5} :
              ¬G.Adj (V.B1 j) (V.B2 i)
              @[simp]
              theorem PikhurkoN5.no_cross_blocks_A2A1 {i : Fin 2} {j : Fin 3} :
              ¬G.Adj (V.A2 j) (V.A1 i)

              An explicit equivalence showing V has 2+5+3+5+1 = 16 elements.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                |V| = 16. Useful for quick cardinality arithmetic.

                Degree computations #

                We compute the degree of each vertex kind. We’ll use your [simp] adjacency lemmas from Approach A:

                deg(apex) = 15.

                theorem PikhurkoN5.degree_A1 (i : Fin 2) :
                G.degree (V.A1 i) = 7

                deg(A1 i) = 7 for each i.

                theorem PikhurkoN5.degree_B1 (j : Fin 5) :
                G.degree (V.B1 j) = 3

                deg(B1 j) = 3 for each j. (Two A1s + apex.)

                theorem PikhurkoN5.degree_A2 (i : Fin 3) :
                G.degree (V.A2 i) = 8

                deg(A2 i) = 8 for each i. (Two inside A2 + five in B2 + apex.)

                theorem PikhurkoN5.degree_B2 (j : Fin 5) :
                G.degree (V.B2 j) = 4

                deg(B2 j) = 4 for each j. (Three A2s + apex.)

                Edge count via the handshaking lemma #

                We now sum the degrees and divide by 2.

                Small utilities #

                theorem PikhurkoN5.Finset.exists_subset_card_eq {α : Type u_1} (s : Finset α) {k : } (hk : k s.card) :
                ts, t.card = k

                In Fin 2, saying “equals 1” is the same as “not equal to 0”.

                Red neighbors of the apex are ≥ 11 if there is no blue star K_{1,5} #

                noncomputable def PikhurkoN5.blueNeighbors (color : Sym2 VFin 2) :

                The set of blue neighbors of apex in color class 0.

                Equations
                Instances For
                  noncomputable def PikhurkoN5.redNeighbors (color : Sym2 VFin 2) :

                  The set of red neighbors of apex in color class 1.

                  Equations
                  Instances For
                    theorem PikhurkoN5.blueNeighbors_card_le_4 (color : Sym2 VFin 2) (hNoBlueStar : ¬hasMonoStar G color 0 5) :

                    If there is no blue K_{1,5}, then the apex has at most 4 blue neighbors.

                    theorem PikhurkoN5.red_from_apex_at_least_11 (color : Sym2 VFin 2) (hNoBlueStar : ¬hasMonoStar G color 0 5) :
                    (redNeighbors color).card 11

                    If there is no blue K_{1,5}, then at least 11 neighbors of apex are red.

                    Membership in the first block {A1, B1}.

                    Equations
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      noncomputable def PikhurkoN5.redBlock1 (color : Sym2 VFin 2) :

                      Red neighbors of apex that lie in the first block {A1,B1}.

                      Equations
                      Instances For
                        noncomputable def PikhurkoN5.redBlock2 (color : Sym2 VFin 2) :

                        Red neighbors of apex that lie in the second block {A2,B2}.

                        We implement this as the complement of inBlock1 inside redNeighbors. Since apexredNeighbors color, this is exactly the {A2,B2} part.

                        Equations
                        Instances For
                          theorem PikhurkoN5.redBlocks_partition_card (color : Sym2 VFin 2) :
                          (redBlock1 color).card + (redBlock2 color).card = (redNeighbors color).card

                          Partition of the red neighbors of apex into the two blocks.

                          theorem PikhurkoN5.exists_block_receives_at_least_6_red (color : Sym2 VFin 2) (hNoBlueStar : ¬hasMonoStar G color 0 5) :
                          (redBlock1 color).card 6 (redBlock2 color).card 6

                          Pigeonhole step. If there is no blue K_{1,5}, then one of the two blocks receives at least six red edges from apex.

                          Part / block predicates #

                          Recognizes the clique side A1.

                          Equations
                          Instances For

                            Recognizes the independent side B1.

                            Equations
                            Instances For

                              Recognizes the clique side A2.

                              Equations
                              Instances For

                                Recognizes the independent side B2.

                                Equations
                                Instances For
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  @[simp]
                                  @[simp]
                                  @[simp]
                                  @[simp]

                                  Splitting the apex red neighbors by parts #

                                  noncomputable def PikhurkoN5.redBlock1A1 (color : Sym2 VFin 2) :

                                  Further refine redBlock1 into its A1 and B1 parts.

                                  Equations
                                  Instances For
                                    noncomputable def PikhurkoN5.redBlock1B1 (color : Sym2 VFin 2) :
                                    Equations
                                    Instances For
                                      noncomputable def PikhurkoN5.redBlock2A2 (color : Sym2 VFin 2) :

                                      Further refine redBlock2 into its A2 and B2 parts.

                                      Equations
                                      Instances For
                                        noncomputable def PikhurkoN5.redBlock2B2 (color : Sym2 VFin 2) :
                                        Equations
                                        Instances For
                                          theorem PikhurkoN5.redBlock1_eq_union (color : Sym2 VFin 2) :

                                          redBlock1 is exactly the disjoint union of its A1 and B1 parts.

                                          theorem PikhurkoN5.redBlock2_eq_union (color : Sym2 VFin 2) :

                                          redBlock2 is exactly the disjoint union of its A2 and B2 parts.

                                          theorem PikhurkoN5.redA1_redB1_disjoint (color : Sym2 VFin 2) :

                                          The two parts of redBlock1 are disjoint.

                                          theorem PikhurkoN5.redA2_redB2_disjoint (color : Sym2 VFin 2) :

                                          The two parts of redBlock2 are disjoint.

                                          theorem PikhurkoN5.redBlock1_card_eq_sum (color : Sym2 VFin 2) :
                                          (redBlock1 color).card = (redBlock1A1 color).card + (redBlock1B1 color).card

                                          Cardinal decompositions of the blocks.

                                          Bounding the B-parts by 5 #

                                          All B1-vertices as a finset (image of Fin 5).

                                          Equations
                                          Instances For

                                            All B2-vertices as a finset (image of Fin 5).

                                            Equations
                                            Instances For

                                              Existence of a red neighbor in the clique parts A1 / A2 #

                                              theorem PikhurkoN5.exists_red_A1_of_block1_ge6 (color : Sym2 VFin 2) (h6 : 6 (redBlock1 color).card) :
                                              ∃ (i : Fin 2), G.Adj V.apex (V.A1 i) color s(V.apex, V.A1 i) = 1

                                              If block 1 receives at least 6 red neighbors from apex, then one of them lies in A1.

                                              theorem PikhurkoN5.exists_red_A2_of_block2_ge6 (color : Sym2 VFin 2) (h6 : 6 (redBlock2 color).card) :
                                              ∃ (i : Fin 3), G.Adj V.apex (V.A2 i) color s(V.apex, V.A2 i) = 1

                                              If block 2 receives at least 6 red neighbors from apex, then one of them lies in A2.

                                              theorem PikhurkoN5.exists_red_clique_neighbor (color : Sym2 VFin 2) (hNoBlueStar : ¬hasMonoStar G color 0 5) :
                                              (∃ (i : Fin 2), G.Adj V.apex (V.A1 i) color s(V.apex, V.A1 i) = 1) ∃ (i : Fin 3), G.Adj V.apex (V.A2 i) color s(V.apex, V.A2 i) = 1

                                              Corollary: under the “no blue star” hypothesis, there is a red neighbor of apex in the appropriate clique A1 or A2.

                                              Helpers: the chosen clique vertex lies in the corresponding red block #

                                              theorem PikhurkoN5.A1_mem_redBlock1_of_red (color : Sym2 VFin 2) (i : Fin 2) (_hAdj : G.Adj V.apex (V.A1 i)) (hRed : color s(V.apex, V.A1 i) = 1) :
                                              theorem PikhurkoN5.A2_mem_redBlock2_of_red (color : Sym2 VFin 2) (i : Fin 3) (_hAdj : G.Adj V.apex (V.A2 i)) (hRed : color s(V.apex, V.A2 i) = 1) :

                                              Triangle-or-star from Block 1 #

                                              theorem PikhurkoN5.triangle_or_blueStar_from_block1 (color : Sym2 VFin 2) (h6 : 6 (redBlock1 color).card) (i : Fin 2) (hAdj : G.Adj V.apex (V.A1 i)) (hRedApexA1 : color s(V.apex, V.A1 i) = 1) :
                                              hasMonoTriangle G color 1 hasMonoStar G color 0 5

                                              If Block 1 has at least 6 red apex-neighbors, and one of them is A1 i with a red edge from apex, then either we have a red triangle, or a blue K_{1,5} centered at A1 i.

                                              Triangle-or-star from Block 2 (same proof pattern) #

                                              theorem PikhurkoN5.triangle_or_blueStar_from_block2 (color : Sym2 VFin 2) (h6 : 6 (redBlock2 color).card) (i : Fin 3) (hAdj : G.Adj V.apex (V.A2 i)) (hRedApexA2 : color s(V.apex, V.A2 i) = 1) :
                                              hasMonoTriangle G color 1 hasMonoStar G color 0 5

                                              Final step: no blue K_{1,5} ⇒ a red triangle #

                                              theorem PikhurkoN5.red_triangle_of_no_blue_star (color : Sym2 VFin 2) (hNoBlueStar : ¬hasMonoStar G color 0 5) :

                                              Main step (n=5): If there is no blue K_{1,5}, then the red color class contains a triangle.