Theorem: SimpleGraph.TripartiteFromTriangles.locallyLinear
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Tripartite.lean

tactic: refine ⟨?_, fun x y hxy ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
⊢ (graph t).LocallyLinear
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
⊢ (graph t).EdgeDisjointTriangles

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x✝ : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
x y : α ⊕ β ⊕ γ
hxy : (graph t).Adj x y
⊢ ∃ s, (graph t).IsNClique 3 s ∧ x ∈ s ∧ y ∈ s

tactic: unfold EdgeDisjointTriangles
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
⊢ (graph t).EdgeDisjointTriangles
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
⊢ ((graph t).cliqueSet 3).Pairwise fun x y => (↑x ∩ ↑y).Subsingleton

tactic: convert map_toTriangle_disjoint t
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
⊢ ((graph t).cliqueSet 3).Pairwise fun x y => (↑x ∩ ↑y).Subsingleton
state_after: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
⊢ (graph t).cliqueSet 3 = ↑(map toTriangle t)

tactic: rw [cliqueSet_eq_image, coe_map]
state_before: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
⊢ (graph t).cliqueSet 3 = ↑(map toTriangle t)
state_after: no goals

tactic: obtain ⟨z, hz, hxy⟩ := exists_mem_toTriangle hxy
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x✝ : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
x y : α ⊕ β ⊕ γ
hxy : (graph t).Adj x y
⊢ ∃ s, (graph t).IsNClique 3 s ∧ x ∈ s ∧ y ∈ s
state_after: case refine_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x✝ : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
x y : α ⊕ β ⊕ γ
hxy✝ : (graph t).Adj x y
z : α × β × γ
hz : z ∈ t
hxy : x ∈ toTriangle z ∧ y ∈ toTriangle z
⊢ ∃ s, (graph t).IsNClique 3 s ∧ x ∈ s ∧ y ∈ s

tactic: exact ⟨_, toTriangle_is3Clique hz, hxy⟩
state_before: case refine_2.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x✝ : α × β × γ
ε : 𝕜
inst✝¹ : ExplicitDisjoint t
inst✝ : NoAccidental t
x y : α ⊕ β ⊕ γ
hxy✝ : (graph t).Adj x y
z : α × β × γ
hz : z ∈ t
hxy : x ∈ toTriangle z ∧ y ∈ toTriangle z
⊢ ∃ s, (graph t).IsNClique 3 s ∧ x ∈ s ∧ y ∈ s
state_after: no goals