Documentation

ExponentialRamsey.Prereq.Ramsey

Ramsey numbers #

Define edge labellings, monochromatic subsets and ramsey numbers, and prove basic properties of these.

def SimpleGraph.EdgeLabelling {V : Type u_1} (G : SimpleGraph V) (K : Type u_5) :
Type (max u_1 u_5)

An edge labelling of a simple graph G with labels in type K. Sometimes this is called an edge-colouring, but we reserve that terminology for labellings where incident edges cannot share a label.

Equations
Instances For
    @[reducible, inline]
    abbrev SimpleGraph.TopEdgeLabelling (V : Type u_5) (K : Type u_6) :
    Type (max u_5 u_6)

    An edge labelling of the complete graph on V with labels in type K. Sometimes this is called an edge-colouring, but we reserve that terminology for labellings where incident edges cannot share a label.

    Equations
    Instances For
      def SimpleGraph.EdgeLabelling.get {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (C : G.EdgeLabelling K) (x y : V) (h : G.Adj x y) :
      K

      Convenience function to get the colour of the edge x ~ y in the colouring of the complete graph on V.

      Equations
      Instances For
        theorem SimpleGraph.EdgeLabelling.get_swap {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} (x y : V) (h : G.Adj x y) :
        C.get y x = C.get x y h
        theorem SimpleGraph.EdgeLabelling.ext_get {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C C' : G.EdgeLabelling K} (h : ∀ (x y : V) (h : G.Adj x y), C.get x y h = C'.get x y h) :
        C = C'
        theorem SimpleGraph.EdgeLabelling.ext_get_iff {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C C' : G.EdgeLabelling K} :
        C = C' ∀ (x y : V) (h : G.Adj x y), C.get x y h = C'.get x y h
        def SimpleGraph.EdgeLabelling.compRight {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {K' : Type u_4} (C : G.EdgeLabelling K) (f : KK') :

        Compose an edge-labelling with a function on the colour set.

        Equations
        Instances For
          def SimpleGraph.EdgeLabelling.pullback {V : Type u_1} {V' : Type u_2} {G : SimpleGraph V} {G' : SimpleGraph V'} {K : Type u_3} (C : G.EdgeLabelling K) (f : G' ↪g G) :

          Compose an edge-labelling with a graph embedding.

          Equations
          Instances For
            @[simp]
            theorem SimpleGraph.EdgeLabelling.pullback_apply {V : Type u_1} {V' : Type u_2} {G : SimpleGraph V} {G' : SimpleGraph V'} {K : Type u_3} {C : G.EdgeLabelling K} {f : G' ↪g G} (e : G'.edgeSet) :
            C.pullback f e = C (f.mapEdgeSet e)
            @[simp]
            theorem SimpleGraph.EdgeLabelling.pullback_get {V : Type u_1} {V' : Type u_2} {G : SimpleGraph V} {G' : SimpleGraph V'} {K : Type u_3} {C : G.EdgeLabelling K} {f : G' ↪g G} (x y : V') (h : G'.Adj x y) :
            (C.pullback f).get x y h = C.get (f x) (f y)
            @[simp]
            theorem SimpleGraph.EdgeLabelling.compRight_apply {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {K' : Type u_4} {C : G.EdgeLabelling K} (f : KK') (e : G.edgeSet) :
            C.compRight f e = f (C e)
            @[simp]
            theorem SimpleGraph.EdgeLabelling.compRight_get {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {K' : Type u_4} {C : G.EdgeLabelling K} (f : KK') (x y : V) (h : G.Adj x y) :
            (C.compRight f).get x y h = f (C.get x y h)
            def SimpleGraph.EdgeLabelling.mk {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (f : (x y : V) → G.Adj x yK) (f_symm : ∀ (x y : V) (H : G.Adj x y), f y x = f x y H) :

            Construct an edge labelling from a symmetric function taking values everywhere except the diagonal.

            Equations
            Instances For
              theorem SimpleGraph.EdgeLabelling.mk_get {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (f : (x y : V) → G.Adj x yK) (f_symm : ∀ (x y : V) (H : G.Adj x y), f y x = f x y H) (x y : V) (h : G.Adj x y) :
              (mk f f_symm).get x y h = f x y h
              def SimpleGraph.EdgeLabelling.MonochromaticOf {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (C : G.EdgeLabelling K) (m : Set V) (c : K) :

              χ.MonochromaticOf m c says that every edge in m is assigned the colour c by m.

              Equations
              Instances For
                theorem SimpleGraph.EdgeLabelling.monochromaticOf_iff_pairwise {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} [DecidableRel G.Adj] (C : G.EdgeLabelling K) {m : Set V} {c : K} :
                C.MonochromaticOf m c m.Pairwise fun (x y : V) => ∀ (h : G.Adj x y), C.get x y h = c
                def SimpleGraph.EdgeLabelling.labelGraph {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (C : G.EdgeLabelling K) (k : K) :

                Given an edge labelling and a choice of label k, construct the graph corresponding to the edges labelled k.

                Equations
                Instances For
                  theorem SimpleGraph.EdgeLabelling.labelGraph_adj {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} {k : K} (x y : V) :
                  (C.labelGraph k).Adj x y ∃ (H : G.Adj x y), C s(x, y), H = k
                  theorem SimpleGraph.EdgeLabelling.labelGraph_le {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (C : G.EdgeLabelling K) {k : K} :
                  theorem SimpleGraph.EdgeLabelling.iSup_labelGraph {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (C : G.EdgeLabelling K) :
                  ⨆ (k : K), C.labelGraph k = G
                  @[reducible, inline]
                  abbrev SimpleGraph.TopEdgeLabelling.pullback {V : Type u_1} {V' : Type u_2} {K : Type u_3} (C : TopEdgeLabelling V K) (f : V' V) :

                  Compose an edge-labelling, by an injection into the vertex type. This must be an injection, else we don't know how to colour x ~ y in the case f x = f y.

                  Equations
                  Instances For
                    @[simp]
                    theorem SimpleGraph.TopEdgeLabelling.monochromaticOf_iff_ne_of_adj {V : Type u_1} {K : Type u_3} (C : TopEdgeLabelling V K) (m : Set V) (c : K) :
                    EdgeLabelling.MonochromaticOf C m c ∀ ⦃x : V⦄, x m∀ ⦃y : V⦄, y m∀ (h : x y), EdgeLabelling.get C x y h = c
                    @[simp]
                    theorem SimpleGraph.TopEdgeLabelling.labelGraph_adj {V : Type u_1} {K : Type u_3} {C : TopEdgeLabelling V K} {k : K} (x y : V) :
                    (EdgeLabelling.labelGraph C k).Adj x y ∃ (H : x y), EdgeLabelling.get C x y H = k

                    From a simple graph on V, construct the edge labelling on the complete graph of V given where edges are labelled 1 and non-edges are labelled 0.

                    Equations
                    Instances For
                      @[simp]
                      theorem SimpleGraph.toTopEdgeLabelling_get {V : Type u_1} {G : SimpleGraph V} [DecidableRel G.Adj] {x y : V} (H : x y) :
                      @[simp]
                      theorem SimpleGraph.EdgeLabelling.monochromaticOf_empty {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {c : K} {C : G.EdgeLabelling K} :
                      @[simp]
                      theorem SimpleGraph.EdgeLabelling.monochromaticOf_singleton {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {c : K} {C : G.EdgeLabelling K} {x : V} :
                      theorem SimpleGraph.EdgeLabelling.monochromatic_finset_singleton {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {c : K} {C : G.EdgeLabelling K} {x : V} :
                      theorem SimpleGraph.EdgeLabelling.monochromatic_subsingleton {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {m : Set V} {c : K} {C : G.EdgeLabelling K} (hm : m.Subsingleton) :
                      theorem SimpleGraph.EdgeLabelling.MonochromaticOf.compRight {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {K' : Type u_4} {m : Set V} {c : K} {C : G.EdgeLabelling K} (e : KK') (h : C.MonochromaticOf m c) :
                      theorem SimpleGraph.EdgeLabelling.monochromaticOf_injective {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {K' : Type u_4} {m : Set V} {c : K} {C : G.EdgeLabelling K} (e : KK') (he : Function.Injective e) :
                      theorem SimpleGraph.EdgeLabelling.MonochromaticOf.subset {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {m : Set V} {c : K} {C : G.EdgeLabelling K} {m' : Set V} (h' : m' m) (h : C.MonochromaticOf m c) :
                      theorem SimpleGraph.EdgeLabelling.MonochromaticOf.image {V : Type u_1} {V' : Type u_2} {G : SimpleGraph V} {G' : SimpleGraph V'} {K : Type u_3} {m : Set V} {c : K} {C : G'.EdgeLabelling K} {f : G ↪g G'} (h : (C.pullback f).MonochromaticOf m c) :
                      C.MonochromaticOf (f '' m) c
                      theorem SimpleGraph.EdgeLabelling.MonochromaticOf.map {V : Type u_1} {V' : Type u_2} {G : SimpleGraph V} {G' : SimpleGraph V'} {K : Type u_3} {c : K} {C : G'.EdgeLabelling K} {f : G ↪g G'} {m : Finset V} (h : (C.pullback f).MonochromaticOf (↑m) c) :
                      def SimpleGraph.EdgeLabelling.MonochromaticBetween {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} (C : G.EdgeLabelling K) (X Y : Set V) (k : K) :

                      The predicate χ.MonochromaticBetween X Y k says every edge between X and Y is labelled k by the labelling χ.

                      Equations
                      Instances For
                        @[simp]
                        @[simp]
                        theorem SimpleGraph.EdgeLabelling.monochromaticBetween_singleton_left {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} {x : V} {Y : Set V} {k : K} :
                        C.MonochromaticBetween {x} Y k ∀ ⦃y : V⦄, y Y∀ (h : G.Adj x y), C.get x y h = k
                        theorem SimpleGraph.EdgeLabelling.monochromaticBetween_singleton_right {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} {y : V} {X : Set V} {k : K} :
                        C.MonochromaticBetween X {y} k ∀ ⦃x : V⦄, x X∀ (h : G.Adj x y), C.get x y h = k
                        theorem SimpleGraph.EdgeLabelling.MonochromaticBetween.subset_left {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} {X Y Z : Set V} {k : K} (hYZ : C.MonochromaticBetween Y Z k) (hXY : X Y) :
                        theorem SimpleGraph.EdgeLabelling.MonochromaticBetween.subset_right {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} {X Y Z : Set V} {k : K} (hXZ : C.MonochromaticBetween X Z k) (hXY : Y Z) :
                        theorem SimpleGraph.EdgeLabelling.MonochromaticBetween.subset {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} {W X Y Z : Set V} {k : K} (hWX : C.MonochromaticBetween W X k) (hYW : Y W) (hZX : Z X) :
                        theorem SimpleGraph.EdgeLabelling.MonochromaticBetween.image {V : Type u_1} {V' : Type u_2} {G : SimpleGraph V} {G' : SimpleGraph V'} {K : Type u_3} {C : G'.EdgeLabelling K} {X Y : Set V} {k : K} {f : G ↪g G'} (hXY : (C.pullback f).MonochromaticBetween X Y k) :
                        C.MonochromaticBetween (f '' X) (f '' Y) k
                        theorem SimpleGraph.EdgeLabelling.MonochromaticBetween.symm {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {C : G.EdgeLabelling K} {X Y : Set V} {k : K} (hXY : C.MonochromaticBetween X Y k) :
                        theorem SimpleGraph.EdgeLabelling.monochromaticOf_insert {V : Type u_1} {G : SimpleGraph V} {K : Type u_3} {m : Set V} {c : K} {C : G.EdgeLabelling K} [DecidableEq V] {y : V} :
                        theorem SimpleGraph.TopEdgeLabelling.monochromaticOf_insert {V : Type u_1} {K : Type u_3} [DecidableEq V] {C : TopEdgeLabelling V K} {c : K} {m : Set V} {x : V} (hx : xm) :
                        EdgeLabelling.MonochromaticOf C (insert x m) c EdgeLabelling.MonochromaticOf C m c ∀ ⦃y : V⦄ (H : y m), EdgeLabelling.get C x y = c
                        theorem SimpleGraph.TopEdgeLabelling.Disjoint.monochromaticBetween {V : Type u_1} {K : Type u_3} {C : TopEdgeLabelling V K} {X Y : Set V} {k : K} (h : Disjoint X Y) :
                        EdgeLabelling.MonochromaticBetween C X Y k ∀ ⦃x : V⦄ (hx : x X) ⦃y : V⦄ (hy : y Y), EdgeLabelling.get C x y = k
                        def SimpleGraph.IsRamseyValid {K : Type u_3} (V : Type u_5) (n : K) :

                        The predicate is_ramsey_valid V n says that the type V is large enough to guarantee a clique of size n k for some colour k : K.

                        Equations
                        Instances For
                          theorem SimpleGraph.IsRamseyValid.exists_zero_of_isEmpty {V : Type u_1} {K : Type u_3} [IsEmpty V] {n : K} (h : IsRamseyValid V n) :
                          ∃ (c : K), n c = 0
                          theorem SimpleGraph.isRamseyValid_of_zero {V : Type u_1} {K : Type u_3} {n : K} (c : K) (hc : n c = 0) :
                          theorem SimpleGraph.isRamseyValid_of_exists_zero {V : Type u_1} {K : Type u_3} (n : K) (h : ∃ (c : K), n c = 0) :
                          theorem SimpleGraph.IsRamseyValid.mono_right {V : Type u_1} {K : Type u_3} {n n' : K} (h : n n') (h' : IsRamseyValid V n') :
                          theorem SimpleGraph.isRamseyValid_iff_eq {V : Type u_1} {K : Type u_3} {n : K} :
                          IsRamseyValid V n ∀ (C : TopEdgeLabelling V K), ∃ (m : Finset V) (c : K), EdgeLabelling.MonochromaticOf C (↑m) c n c = m.card
                          theorem SimpleGraph.isRamseyValid_iff_embedding {V : Type u_1} {K : Type u_3} {n : K} :
                          theorem SimpleGraph.IsRamseyValid.embedding {V : Type u_1} {V' : Type u_2} {K : Type u_3} {n : K} (f : V V') (h' : IsRamseyValid V n) :
                          theorem SimpleGraph.IsRamseyValid.card_fin {V : Type u_1} {K : Type u_3} [Fintype V] {N : } {n : K} (h : N Fintype.card V) (h' : IsRamseyValid (Fin N) n) :
                          theorem SimpleGraph.IsRamseyValid.equiv_left {V : Type u_1} {V' : Type u_2} {K : Type u_3} (n : K) (f : V V') :
                          theorem SimpleGraph.IsRamseyValid.equiv_right {V : Type u_1} {K : Type u_3} {K' : Type u_4} {n : K} (f : K' K) (h : IsRamseyValid V n) :
                          IsRamseyValid V (n f)
                          theorem SimpleGraph.isRamseyValid_equiv_right {V : Type u_1} {K : Type u_3} {K' : Type u_4} {n : K} (f : K' K) :
                          theorem SimpleGraph.ramsey_base {V : Type u_1} {K : Type u_3} [Nonempty V] {n : K} (hn : ∃ (k : K), n k 1) :
                          theorem SimpleGraph.ramsey_base' {V : Type u_1} {K : Type u_3} [Fintype V] (n : K) (hn : ∃ (k : K), n k 1) (hV : 1 Fintype.card V) :
                          theorem SimpleGraph.isRamseyValid_min {V : Type u_1} {K : Type u_3} [Fintype V] [Nonempty K] {n : K} {n' : } (h : IsRamseyValid V n) (hn : ∀ (k : K), n' n k) :
                          theorem SimpleGraph.isRamseyValid_unique {V : Type u_1} {K : Type u_3} [Fintype V] [Unique K] {n : K} (hV : n default Fintype.card V) :
                          theorem SimpleGraph.IsRamseyValid.remove_twos {V : Type u_1} {K : Type u_3} {n : K} (h : IsRamseyValid V n) :
                          IsRamseyValid V fun (k : { k : K // n k 2 }) => n k
                          theorem SimpleGraph.IsRamseyValid.of_remove_twos {V : Type u_1} {K : Type u_3} {n : K} (h : IsRamseyValid V fun (k : { k : K // n k 2 }) => n k) :
                          theorem SimpleGraph.isRamseyValid_iff_remove_twos {V : Type u_1} {K : Type u_3} (n : K) :
                          (IsRamseyValid V fun (k : { k : K // n k 2 }) => n k) IsRamseyValid V n
                          theorem SimpleGraph.isRamseyValid_two {V : Type u_1} {K : Type u_3} {K' : Type u_4} {n : K} {n' : K'} (f : K'K) (hf : ∀ (x : K'), n' x 2n (f x) 2) (hf_inj : ∀ (x y : K'), n' x 2n' y 2f x = f yx = y) (hf_surj : ∀ (x : K), n x 2∃ (y : K'), n' y 2 f y = x) (hf_comm : ∀ (x : K'), n' x 2n (f x) = n' x) :
                          theorem SimpleGraph.ramsey_fin_induct_aux {K : Type u_3} {V : Type u_5} [DecidableEq K] {n : K} (N : K) {C : TopEdgeLabelling V K} (m : KFinset V) (x : V) (hN : ∀ (k : K), IsRamseyValid (Fin (N k)) (Function.update n k (n k - 1))) (hx : ∀ (k : K), xm k) (h : ∃ (k : K), N k (m k).card) (hm : ∀ (k : K) (y : V) (hy : y m k), EdgeLabelling.get C x y = k) :
                          ∃ (m : Finset V) (c : K), EdgeLabelling.MonochromaticOf C (↑m) c n c m.card
                          theorem SimpleGraph.ramsey_fin_induct {K : Type u_3} [DecidableEq K] [Fintype K] (n N : K) (hN : ∀ (k : K), IsRamseyValid (Fin (N k)) (Function.update n k (n k - 1))) :
                          IsRamseyValid (Fin (k : K, (N k - 1) + 2)) n
                          theorem SimpleGraph.ramsey_fin_exists {K : Type u_3} [Finite K] (n : K) :
                          ∃ (N : ), IsRamseyValid (Fin N) n
                          theorem SimpleGraph.ramsey_fin_induct' {K : Type u_3} [DecidableEq K] [Fintype K] (n N : K) (hn : ∀ (k : K), 2 n k) (hN : ∀ (k : K), IsRamseyValid (Fin (N k)) (Function.update n k (n k - 1))) :
                          IsRamseyValid (Fin (k : K, N k + 2 - Fintype.card K)) n
                          theorem SimpleGraph.ramsey_fin_induct_two {i j Ni Nj : } (hi : 2 i) (hj : 2 j) (hi' : IsRamseyValid (Fin Ni) ![i - 1, j]) (hj' : IsRamseyValid (Fin Nj) ![i, j - 1]) :
                          IsRamseyValid (Fin (Ni + Nj)) ![i, j]
                          theorem SimpleGraph.ramsey_fin_induct_two_evens {i j Ni Nj : } (hi : 2 i) (hj : 2 j) (hNi : Even Ni) (hNj : Even Nj) (hi' : IsRamseyValid (Fin Ni) ![i - 1, j]) (hj' : IsRamseyValid (Fin Nj) ![i, j - 1]) :
                          IsRamseyValid (Fin (Ni + Nj - 1)) ![i, j]
                          theorem SimpleGraph.ramsey_fin_induct_three {i j k Ni Nj Nk : } (hi : 2 i) (hj : 2 j) (hk : 2 k) (hi' : IsRamseyValid (Fin Ni) ![i - 1, j, k]) (hj' : IsRamseyValid (Fin Nj) ![i, j - 1, k]) (hk' : IsRamseyValid (Fin Nk) ![i, j, k - 1]) :
                          IsRamseyValid (Fin (Ni + Nj + Nk - 1)) ![i, j, k]
                          def SimpleGraph.ramseyNumber {K : Type u_3} [DecidableEq K] [Fintype K] (n : K) :

                          Given a tuple n : K → ℕ of naturals indexed by K, define the ramsey number as the smallest N such that any labelling of the complete graph on N vertices with K labels contains a subset of size n k in which every edge is labelled k. While this definition is computable, it is not at all efficient to compute.

                          Equations
                          Instances For
                            theorem SimpleGraph.ramseyNumber_spec {V : Type u_1} {K : Type u_3} {n : K} [Fintype V] [DecidableEq K] [Fintype K] (h : ramseyNumber n Fintype.card V) :
                            theorem SimpleGraph.ramseyNumber_min_fin {K : Type u_3} {n : K} {N : } [DecidableEq K] [Fintype K] (hN : IsRamseyValid (Fin N) n) :
                            theorem SimpleGraph.ramseyNumber_min {V : Type u_1} {K : Type u_3} {n : K} [Fintype V] [DecidableEq K] [Fintype K] (hN : IsRamseyValid V n) :
                            theorem SimpleGraph.ramseyNumber_eq_of {K : Type u_3} {n : K} {N : } [DecidableEq K] [Fintype K] (h : IsRamseyValid (Fin (N + 1)) n) (h' : ¬IsRamseyValid (Fin N) n) :
                            theorem SimpleGraph.ramseyNumber_congr {K : Type u_3} {K' : Type u_4} [DecidableEq K'] [Fintype K'] {n : K} [DecidableEq K] [Fintype K] {n' : K'} (h : ∀ (N : ), IsRamseyValid (Fin N) n IsRamseyValid (Fin N) n') :
                            theorem SimpleGraph.ramseyNumber_equiv {K : Type u_3} {K' : Type u_4} [DecidableEq K'] [Fintype K'] {n : K} [DecidableEq K] [Fintype K] (f : K' K) :
                            theorem SimpleGraph.ramseyNumber.eq_zero_iff {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] :
                            ramseyNumber n = 0 ∃ (c : K), n c = 0
                            theorem SimpleGraph.ramseyNumber.exists_zero_of_eq_zero {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] (h : ramseyNumber n = 0) :
                            ∃ (c : K), n c = 0
                            theorem SimpleGraph.ramseyNumber_exists_zero {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] (c : K) (hc : n c = 0) :
                            theorem SimpleGraph.ramseyNumber_pos {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] :
                            0 < ramseyNumber n ∀ (c : K), n c 0
                            theorem SimpleGraph.ramseyNumber_le_one {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] (hc : ∃ (c : K), n c 1) :
                            theorem SimpleGraph.ramseyNumber_ge_min {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] [Nonempty K] (i : ) (hk : ∀ (k : K), i n k) :
                            theorem SimpleGraph.exists_le_of_ramseyNumber_le {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] [Nonempty K] (i : ) (hi : ramseyNumber n i) :
                            ∃ (k : K), n k i
                            @[simp]
                            theorem SimpleGraph.ramseyNumber_empty {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] [IsEmpty K] :
                            theorem SimpleGraph.exists_le_one_of_ramseyNumber_le_one {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] (hi : ramseyNumber n 1) :
                            ∃ (k : K), n k 1
                            theorem SimpleGraph.ramseyNumber_eq_one {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] (hc : ∃ (c : K), n c = 1) (hc' : ∀ (c : K), n c 0) :
                            theorem SimpleGraph.ramseyNumber_eq_one_iff {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] :
                            ((∃ (c : K), n c = 1) ∀ (c : K), n c 0) ramseyNumber n = 1
                            theorem SimpleGraph.ramseyNumber.mono {K : Type u_3} [DecidableEq K] [Fintype K] {n n' : K} (h : n n') :
                            theorem SimpleGraph.ramseyNumber.mono_two {a b c d : } (hab : a b) (hcd : c d) :
                            theorem SimpleGraph.ramseyNumber_remove_two {K : Type u_3} {K' : Type u_4} [DecidableEq K'] [Fintype K'] [DecidableEq K] [Fintype K] {n : K} {n' : K'} (f : K'K) (hf : ∀ (x : K'), n' x 2n (f x) 2) (hf_inj : ∀ (x y : K'), n' x 2n' y 2f x = f yx = y) (hf_surj : ∀ (x : K), n x 2∃ (y : K'), n' y 2 f y = x) (hf_comm : ∀ (x : K'), n' x 2n (f x) = n' x) :
                            theorem SimpleGraph.ramseyNumber_cons_one_of_one_le {i : } {n : Fin i} (h : ∀ (k : Fin i), n k 0) :
                            theorem SimpleGraph.ramseyNumber_multicolour_bound {K : Type u_3} {n : K} [DecidableEq K] [Fintype K] (h : ∀ (k : K), 2 n k) :
                            ramseyNumber n k : K, ramseyNumber (Function.update n k (n k - 1)) + 2 - Fintype.card K
                            theorem SimpleGraph.ramseyNumber_two_colour_bound_even {i j : } (Ni Nj : ) (hi : 2 i) (hj : 2 j) (hNi : ramseyNumber ![i - 1, j] Ni) (hNj : ramseyNumber ![i, j - 1] Nj) (hNi' : Even Ni) (hNj' : Even Nj) :
                            ramseyNumber ![i, j] Ni + Nj - 1
                            theorem SimpleGraph.ramseyNumber_three_colour_bound {i j k : } (hi : 2 i) (hj : 2 j) (hk : 2 k) :

                            The diagonal ramsey number, defined by R(k, k).

                            Equations
                            Instances For
                              @[irreducible]

                              A good bound when i is small and j is large. For i = 1, 2 this is equality (as long as j ≠ 0), and for i = 3 and i = 4 it is the best possible polynomial upper bound, although lower order improvements are available.

                              A simplification of ramsey_number_le_right_pow_left which is more convenient for asymptotic reasoning. A good bound when i is small and j is very large.