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.instDecidableEqV.decEq (x✝ x✝¹ : V) :
          Decidable (x✝ = x✝¹)
          Equations
          Instances For
            @[implicit_reducible]
            Equations
            Equations
            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
                          @[implicit_reducible]
                          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
                                      @[implicit_reducible]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      @[implicit_reducible]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      @[implicit_reducible]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      @[implicit_reducible]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      @[implicit_reducible]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      @[implicit_reducible]
                                      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.