Theorem: SimpleGraph.ComponentCompl.infinite_iff_in_all_ranges
File: Mathlib/Combinatorics/SimpleGraph/Ends/Defs.lean

tactic: constructor
state_before: V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
⊢ C.supp.Infinite ↔ ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
state_after: case mp
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
⊢ C.supp.Infinite → ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C

case mpr
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
⊢ (∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C) → C.supp.Infinite

tactic: rintro Cinf L h
state_before: case mp
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
⊢ C.supp.Infinite → ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
state_after: case mp
V : Type u
G : SimpleGraph V
K✝ L✝ L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
Cinf : C.supp.Infinite
L : Finset V
h : K ⊆ L
⊢ ∃ D, hom h D = C

tactic: obtain ⟨v, ⟨vK, rfl⟩, vL⟩ := Set.Infinite.nonempty (Set.Infinite.diff Cinf L.finite_toSet)
state_before: case mp
V : Type u
G : SimpleGraph V
K✝ L✝ L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
Cinf : C.supp.Infinite
L : Finset V
h : K ⊆ L
⊢ ∃ D, hom h D = C
state_after: case mp.intro.intro.intro
V : Type u
G : SimpleGraph V
K✝ L✝ L' M : Set V
K L : Finset V
h : K ⊆ L
v : V
vL : v ∉ ↑L
vK : v ∉ ↑K
Cinf : (G.componentComplMk vK).supp.Infinite
⊢ ∃ D, hom h D = G.componentComplMk vK

tactic: exact ⟨componentComplMk _ vL, rfl⟩
state_before: case mp.intro.intro.intro
V : Type u
G : SimpleGraph V
K✝ L✝ L' M : Set V
K L : Finset V
h : K ⊆ L
v : V
vL : v ∉ ↑L
vK : v ∉ ↑K
Cinf : (G.componentComplMk vK).supp.Infinite
⊢ ∃ D, hom h D = G.componentComplMk vK
state_after: no goals

tactic: rintro h Cfin
state_before: case mpr
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
⊢ (∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C) → C.supp.Infinite
state_after: case mpr
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
⊢ False

tactic: obtain ⟨D, e⟩ := h (K ∪ Cfin.toFinset) Finset.subset_union_left
state_before: case mpr
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
⊢ False
state_after: case mpr.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
⊢ False

tactic: obtain ⟨v, vD⟩ := D.nonempty
state_before: case mpr.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
⊢ False
state_after: case mpr.intro.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
v : V
vD : v ∈ ↑D
⊢ False

tactic: let Ddis := D.disjoint_right
state_before: case mpr.intro.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
v : V
vD : v ∈ ↑D
⊢ False
state_after: case mpr.intro.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
v : V
vD : v ∈ ↑D
Ddis : Disjoint ↑(K ∪ Cfin.toFinset) ↑D := ComponentCompl.disjoint_right D
⊢ False

tactic: simp_rw [Finset.coe_union, Set.Finite.coe_toFinset, Set.disjoint_union_left,
  Set.disjoint_iff] at Ddis
state_before: case mpr.intro.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
v : V
vD : v ∈ ↑D
Ddis : Disjoint ↑(K ∪ Cfin.toFinset) ↑D := ComponentCompl.disjoint_right D
⊢ False
state_after: case mpr.intro.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
v : V
vD : v ∈ ↑D
Ddis : ↑K ∩ ↑D ⊆ ∅ ∧ C.supp ∩ ↑D ⊆ ∅
⊢ False

tactic: exact Ddis.right ⟨(ComponentCompl.hom_eq_iff_le _ _ _).mp e vD, vD⟩
state_before: case mpr.intro.intro
V : Type u
G : SimpleGraph V
K✝ L L' M : Set V
K : Finset V
C : G.ComponentCompl ↑K
h : ∀ (L : Finset V) (h : K ⊆ L), ∃ D, hom h D = C
Cfin : C.supp.Finite
D : G.ComponentCompl ↑(K ∪ Cfin.toFinset)
e : hom ⋯ D = C
v : V
vD : v ∈ ↑D
Ddis : ↑K ∩ ↑D ⊆ ∅ ∧ C.supp ∩ ↑D ⊆ ∅
⊢ False
state_after: no goals