# mathlibdocumentation

combinatorics.simple_graph.clique

# Graph cliques #

This file defines cliques in simple graphs. A clique is a set of vertices that are pairwise adjacent.

## Main declarations #

• simple_graph.is_clique: Predicate for a set of vertices to be a clique.
• simple_graph.is_n_clique: Predicate for a set of vertices to be a n-clique.
• simple_graph.clique_finset: Finset of n-cliques of a graph.
• simple_graph.clique_free: Predicate for a graph to have no n-cliques.

## TODO #

• Clique numbers
• Do we need clique_set, a version of clique_finset for infinite graphs?

### Cliques #

@[reducible]
def simple_graph.is_clique {α : Type u_1} (G : simple_graph α) (s : set α) :
Prop

A clique in a graph is a set of vertices that are pairwise adjacent.

theorem simple_graph.is_clique_iff {α : Type u_1} (G : simple_graph α) {s : set α} :
theorem simple_graph.is_clique_iff_induce_eq {α : Type u_1} (G : simple_graph α) {s : set α} :

A clique is a set of vertices whose induced graph is complete.

@[protected, instance]
Equations
theorem simple_graph.is_clique.mono {α : Type u_1} {G H : simple_graph α} {s : set α} (h : G H) :
G.is_clique sH.is_clique s
theorem simple_graph.is_clique.subset {α : Type u_1} {G : simple_graph α} {s t : set α} (h : t s) :
G.is_clique sG.is_clique t
@[simp]
theorem simple_graph.is_clique_bot_iff {α : Type u_1} {s : set α} :
theorem simple_graph.is_clique.subsingleton {α : Type u_1} {s : set α} :

Alias of the forward direction of simple_graph.is_clique_bot_iff.

### n-cliques #

structure simple_graph.is_n_clique {α : Type u_1} (G : simple_graph α) (n : ) (s : finset α) :
Prop

A n-clique in a graph is a set of n vertices which are pairwise connected.

Instances for simple_graph.is_n_clique
theorem simple_graph.is_n_clique_iff {α : Type u_1} (G : simple_graph α) {n : } {s : finset α} :
@[protected, instance]
def simple_graph.is_n_clique.decidable {α : Type u_1} (G : simple_graph α) [decidable_eq α] [decidable_rel G.adj] {n : } {s : finset α} :
Equations
theorem simple_graph.is_n_clique.mono {α : Type u_1} {G H : simple_graph α} {n : } {s : finset α} (h : G H) :
G.is_n_clique n sH.is_n_clique n s
@[simp]
theorem simple_graph.is_n_clique_bot_iff {α : Type u_1} {n : } {s : finset α} :
s n 1 s.card = n
theorem simple_graph.is_3_clique_triple_iff {α : Type u_1} {G : simple_graph α} [decidable_eq α] {a b c : α} :
theorem simple_graph.is_3_clique_iff {α : Type u_1} {G : simple_graph α} {s : finset α} [decidable_eq α] :
G.is_n_clique 3 s ∃ (a b c : α), G.adj a b G.adj a c G.adj b c s = {a, b, c}

### Graphs without cliques #

def simple_graph.clique_free {α : Type u_1} (G : simple_graph α) (n : ) :
Prop

G.clique_free n means that G has no n-cliques.

Equations
theorem simple_graph.not_clique_free_of_top_embedding {α : Type u_1} {G : simple_graph α} {n : } (f : ↪g G) :
noncomputable def simple_graph.top_embedding_of_not_clique_free {α : Type u_1} {G : simple_graph α} {n : } (h : ¬G.clique_free n) :

An embedding of a complete graph that witnesses the fact that the graph is not clique-free.

Equations
theorem simple_graph.not_clique_free_iff {α : Type u_1} {G : simple_graph α} (n : ) :
theorem simple_graph.clique_free_iff {α : Type u_1} {G : simple_graph α} {n : } :
theorem simple_graph.clique_free_bot {α : Type u_1} {n : } (h : 2 n) :
theorem simple_graph.clique_free.mono {α : Type u_1} {G : simple_graph α} {m n : } (h : m n) :
theorem simple_graph.clique_free.anti {α : Type u_1} {G H : simple_graph α} {n : } (h : G H) :
theorem simple_graph.clique_free_of_card_lt {α : Type u_1} {G : simple_graph α} {n : } [fintype α] (hc : < n) :

See simple_graph.clique_free_chromatic_number_succ for a tighter bound.

### Set of cliques #

def simple_graph.clique_set {α : Type u_1} (G : simple_graph α) (n : ) :
set (finset α)

The n-cliques in a graph as a set.

Equations
theorem simple_graph.mem_clique_set_iff {α : Type u_1} (G : simple_graph α) {n : } {s : finset α} :
@[simp]
theorem simple_graph.clique_set_eq_empty_iff {α : Type u_1} (G : simple_graph α) {n : } :
@[protected]
theorem simple_graph.clique_free.clique_set {α : Type u_1} (G : simple_graph α) {n : } :

Alias of the reverse direction of simple_graph.clique_set_eq_empty_iff.

theorem simple_graph.clique_set_mono {α : Type u_1} {G H : simple_graph α} {n : } (h : G H) :
theorem simple_graph.clique_set_mono' {α : Type u_1} {G H : simple_graph α} (h : G H) :

### Finset of cliques #

def simple_graph.clique_finset {α : Type u_1} (G : simple_graph α) [fintype α] [decidable_eq α] [decidable_rel G.adj] (n : ) :

The n-cliques in a graph as a finset.

Equations
theorem simple_graph.mem_clique_finset_iff {α : Type u_1} (G : simple_graph α) [fintype α] [decidable_eq α] [decidable_rel G.adj] {n : } {s : finset α} :
@[simp]
theorem simple_graph.coe_clique_finset {α : Type u_1} (G : simple_graph α) [fintype α] [decidable_eq α] [decidable_rel G.adj] (n : ) :
@[simp]
theorem simple_graph.clique_finset_eq_empty_iff {α : Type u_1} (G : simple_graph α) [fintype α] [decidable_eq α] [decidable_rel G.adj] {n : } :
@[protected]
theorem simple_graph.clique_free.clique_finset {α : Type u_1} (G : simple_graph α) [fintype α] [decidable_eq α] [decidable_rel G.adj] {n : } :
G.clique_free n =

Alias of the reverse direction of simple_graph.clique_finset_eq_empty_iff.

theorem simple_graph.clique_finset_mono {α : Type u_1} {G : simple_graph α} (H : simple_graph α) [fintype α] [decidable_eq α] [decidable_rel G.adj] {n : } [decidable_rel H.adj] (h : G H) :