File: Mathlib/Combinatorics/SimpleGraph/Ends/Defs.lean

full_name: SimpleGraph.ComponentCompl
code: /-- The components outside a given set of vertices `K` -/
abbrev ComponentCompl 
goal: Type u

full_name: SimpleGraph.componentComplMk
code: /-- The connected component of `v` in `G.induce Kᶜ`. -/
abbrev componentComplMk (G : SimpleGraph V) {v : V} (vK : v ∉ K) : G.ComponentCompl K 
goal: G.ComponentCompl K

full_name: SimpleGraph.ComponentCompl.supp
code: /-- The set of vertices of `G` making up the connected component `C` -/
def ComponentCompl.supp (C : G.ComponentCompl K) : Set V 
goal: Set V

full_name: SimpleGraph.ComponentCompl.supp_injective
code: @[ext]
theorem ComponentCompl.supp_injective :
    Function.Injective (ComponentCompl.supp : G.ComponentCompl K → Set V) 
goal: Function.Injective SimpleGraph.ComponentCompl.supp

full_name: SimpleGraph.ComponentCompl.supp_inj
code: theorem ComponentCompl.supp_inj {C D : G.ComponentCompl K} : C.supp = D.supp ↔ C = D 
goal: C.supp = D.supp ↔ C = D

full_name: SimpleGraph.ComponentCompl.setLike
code: instance ComponentCompl.setLike : SetLike (G.ComponentCompl K) V 
goal: SetLike (G.ComponentCompl K) V

full_name: SimpleGraph.ComponentCompl.mem_supp_iff
code: @[simp]
theorem ComponentCompl.mem_supp_iff {v : V} {C : ComponentCompl G K} :
    v ∈ C ↔ ∃ vK : v ∉ K, G.componentComplMk vK = C 
goal: v ∈ C ↔ ∃ (vK : v ∉ K), G.componentComplMk vK = C

full_name: SimpleGraph.componentComplMk_mem
code: theorem componentComplMk_mem (G : SimpleGraph V) {v : V} (vK : v ∉ K) : v ∈ G.componentComplMk vK 
goal: v ∈ G.componentComplMk vK

full_name: SimpleGraph.componentComplMk_eq_of_adj
code: theorem componentComplMk_eq_of_adj (G : SimpleGraph V) {v w : V} (vK : v ∉ K) (wK : w ∉ K)
    (a : G.Adj v w) : G.componentComplMk vK = G.componentComplMk wK 
goal: G.componentComplMk vK = G.componentComplMk wK

full_name: SimpleGraph.componentCompl_nonempty_of_infinite
code: /-- In an infinite graph, the set of components out of a finite set is nonempty. -/
instance componentCompl_nonempty_of_infinite (G : SimpleGraph V) [Infinite V] (K : Finset V) :
    Nonempty (G.ComponentCompl K) 
goal: Nonempty (G.ComponentCompl ↑K)

full_name: SimpleGraph.ComponentCompl.lift
code: /-- A `ComponentCompl` specialization of `Quot.lift`, where soundness has to be proved only
for adjacent vertices.
-/
protected def lift {β : Sort*} (f : ∀ ⦃v⦄ (_ : v ∉ K), β)
    (h : ∀ ⦃v w⦄ (hv : v ∉ K) (hw : w ∉ K), G.Adj v w → f hv = f hw) : G.ComponentCompl K → β 
goal: G.ComponentCompl K → β

full_name: SimpleGraph.ComponentCompl.ind
code: @[elab_as_elim] -- Porting note: added
protected theorem ind {β : G.ComponentCompl K → Prop}
    (f : ∀ ⦃v⦄ (hv : v ∉ K), β (G.componentComplMk hv)) : ∀ C : G.ComponentCompl K, β C 
goal: β C

full_name: SimpleGraph.ComponentCompl.coeGraph
code: /-- The induced graph on the vertices `C`. -/
protected abbrev coeGraph (C : ComponentCompl G K) : SimpleGraph C 
goal: SimpleGraph ↥C

full_name: SimpleGraph.ComponentCompl.coe_inj
code: theorem coe_inj {C D : G.ComponentCompl K} : (C : Set V) = (D : Set V) ↔ C = D 
goal: ↑C = ↑D ↔ C = D

full_name: SimpleGraph.ComponentCompl.nonempty
code: @[simp]
protected theorem nonempty (C : G.ComponentCompl K) : (C : Set V).Nonempty 
goal: (↑C).Nonempty

full_name: SimpleGraph.ComponentCompl.exists_eq_mk
code: protected theorem exists_eq_mk (C : G.ComponentCompl K) :
    ∃ (v : _) (h : v ∉ K), G.componentComplMk h = C 
goal: ∃ v, ∃ (h : v ∉ K), G.componentComplMk h = C

full_name: SimpleGraph.ComponentCompl.disjoint_right
code: protected theorem disjoint_right (C : G.ComponentCompl K) : Disjoint K C 
goal: Disjoint K ↑C

full_name: SimpleGraph.ComponentCompl.not_mem_of_mem
code: theorem not_mem_of_mem {C : G.ComponentCompl K} {c : V} (cC : c ∈ C) : c ∉ K 
goal: c ∉ K

full_name: SimpleGraph.ComponentCompl.pairwise_disjoint
code: protected theorem pairwise_disjoint :
    Pairwise fun C D : G.ComponentCompl K => Disjoint (C : Set V) (D : Set V) 
goal: Pairwise fun C D => Disjoint ↑C ↑D

full_name: SimpleGraph.ComponentCompl.mem_of_adj
code: /-- Any vertex adjacent to a vertex of `C` and not lying in `K` must lie in `C`.
-/
theorem mem_of_adj : ∀ {C : G.ComponentCompl K} (c d : V), c ∈ C → d ∉ K → G.Adj c d → d ∈ C 
goal: c ∈ C → d ∉ K → G.Adj c d → d ∈ C

full_name: SimpleGraph.ComponentCompl.exists_adj_boundary_pair
code: /--
Assuming `G` is preconnected and `K` not empty, given any connected component `C` outside of `K`,
there exists a vertex `k ∈ K` adjacent to a vertex `v ∈ C`.
-/
theorem exists_adj_boundary_pair (Gc : G.Preconnected) (hK : K.Nonempty) :
    ∀ C : G.ComponentCompl K, ∃ ck : V × V, ck.1 ∈ C ∧ ck.2 ∈ K ∧ G.Adj ck.1 ck.2 
goal: ∃ ck, ck.1 ∈ C ∧ ck.2 ∈ K ∧ G.Adj ck.1 ck.2

full_name: SimpleGraph.ComponentCompl.hom
code: /--
If `K ⊆ L`, the components outside of `L` are all contained in a single component outside of `K`.
-/
abbrev hom (h : K ⊆ L) (C : G.ComponentCompl L) : G.ComponentCompl K 
goal: G.ComponentCompl K

full_name: SimpleGraph.ComponentCompl.subset_hom
code: theorem subset_hom (C : G.ComponentCompl L) (h : K ⊆ L) : (C : Set V) ⊆ (C.hom h : Set V) 
goal: ↑C ⊆ ↑(SimpleGraph.ComponentCompl.hom h C)

full_name: SimpleGraph.componentComplMk_mem_hom
code: theorem _root_.SimpleGraph.componentComplMk_mem_hom
    (G : SimpleGraph V) {v : V} (vK : v ∉ K) (h : L ⊆ K) :
    v ∈ (G.componentComplMk vK).hom h 
goal: v ∈ SimpleGraph.ComponentCompl.hom h (G.componentComplMk vK)

full_name: SimpleGraph.ComponentCompl.hom_eq_iff_le
code: theorem hom_eq_iff_le (C : G.ComponentCompl L) (h : K ⊆ L) (D : G.ComponentCompl K) :
    C.hom h = D ↔ (C : Set V) ⊆ (D : Set V) 
goal: SimpleGraph.ComponentCompl.hom h C = D ↔ ↑C ⊆ ↑D

full_name: SimpleGraph.ComponentCompl.hom_eq_iff_not_disjoint
code: theorem hom_eq_iff_not_disjoint (C : G.ComponentCompl L) (h : K ⊆ L) (D : G.ComponentCompl K) :
    C.hom h = D ↔ ¬Disjoint (C : Set V) (D : Set V) 
goal: SimpleGraph.ComponentCompl.hom h C = D ↔ ¬Disjoint ↑C ↑D

full_name: SimpleGraph.ComponentCompl.hom_refl
code: theorem hom_refl (C : G.ComponentCompl L) : C.hom (subset_refl L) = C 
goal: SimpleGraph.ComponentCompl.hom ⋯ C = C

full_name: SimpleGraph.ComponentCompl.hom_trans
code: theorem hom_trans (C : G.ComponentCompl L) (h : K ⊆ L) (h' : M ⊆ K) :
    C.hom (h'.trans h) = (C.hom h).hom h' 
goal: SimpleGraph.ComponentCompl.hom ⋯ C = SimpleGraph.ComponentCompl.hom h' (SimpleGraph.ComponentCompl.hom h C)

full_name: SimpleGraph.ComponentCompl.hom_mk
code: theorem hom_mk {v : V} (vnL : v ∉ L) (h : K ⊆ L) :
    (G.componentComplMk vnL).hom h = G.componentComplMk (Set.not_mem_subset h vnL) 
goal: SimpleGraph.ComponentCompl.hom h (G.componentComplMk vnL) = G.componentComplMk ⋯

full_name: SimpleGraph.ComponentCompl.hom_infinite
code: theorem hom_infinite (C : G.ComponentCompl L) (h : K ⊆ L) (Cinf : (C : Set V).Infinite) :
    (C.hom h : Set V).Infinite 
goal: (↑(SimpleGraph.ComponentCompl.hom h C)).Infinite

full_name: SimpleGraph.ComponentCompl.infinite_iff_in_all_ranges
code: theorem infinite_iff_in_all_ranges {K : Finset V} (C : G.ComponentCompl K) :
    C.supp.Infinite ↔ ∀ (L) (h : K ⊆ L), ∃ D : G.ComponentCompl L, D.hom h = C 
goal: C.supp.Infinite ↔ ∀ (L : Finset V) (h : K ⊆ L), ∃ D, SimpleGraph.ComponentCompl.hom h D = C

full_name: SimpleGraph.componentCompl_finite
code: /-- For a locally finite preconnected graph, the number of components outside of any finite set
is finite. -/
instance componentCompl_finite [LocallyFinite G] [Gpc : Fact G.Preconnected] (K : Finset V) :
    Finite (G.ComponentCompl K) 
goal: Finite (G.ComponentCompl ↑K)

full_name: SimpleGraph.componentComplFunctor_map
code: /--
The functor assigning, to a finite set in `V`, the set of connected components in its complement.
-/
@[simps]
def componentComplFunctor : (Finset V)ᵒᵖ ⥤ Type u 
goal: ∀ {X Y : (Finset V)ᵒᵖ} (f : X ⟶ Y) (C : G.ComponentCompl ↑(Opposite.unop X)),
  G.componentComplFunctor.map f C = SimpleGraph.ComponentCompl.hom ⋯ C

full_name: SimpleGraph.componentComplFunctor_obj
code: /--
The functor assigning, to a finite set in `V`, the set of connected components in its complement.
-/
@[simps]
def componentComplFunctor : (Finset V)ᵒᵖ ⥤ Type u 
goal: G.componentComplFunctor.obj K = G.ComponentCompl ↑(Opposite.unop K)

full_name: SimpleGraph.componentComplFunctor
code: /--
The functor assigning, to a finite set in `V`, the set of connected components in its complement.
-/
@[simps]
def componentComplFunctor : (Finset V)ᵒᵖ ⥤ Type u 
goal: CategoryTheory.Functor (Finset V)ᵒᵖ (Type u)

full_name: SimpleGraph.end
code: /-- The end of a graph, defined as the sections of the functor `component_compl_functor` . -/
protected def «end» 
goal: Set ((j : (Finset V)ᵒᵖ) → G.componentComplFunctor.obj j)

full_name: SimpleGraph.end_hom_mk_of_mk
code: theorem end_hom_mk_of_mk {s} (sec : s ∈ G.end) {K L : (Finset V)ᵒᵖ} (h : L ⟶ K) {v : V}
    (vnL : v ∉ L.unop) (hs : s L = G.componentComplMk vnL) :
    s K = G.componentComplMk (Set.not_mem_subset (le_of_op_hom h : _ ⊆ _) vnL) 
goal: s K = G.componentComplMk ⋯

full_name: SimpleGraph.infinite_iff_in_eventualRange
code: theorem infinite_iff_in_eventualRange {K : (Finset V)ᵒᵖ} (C : G.componentComplFunctor.obj K) :
    C.supp.Infinite ↔ C ∈ G.componentComplFunctor.eventualRange K 
goal: (SimpleGraph.ComponentCompl.supp C).Infinite ↔ C ∈ G.componentComplFunctor.eventualRange K