Theorem: SimpleGraph.triangle_split_helper
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Counting.lean

tactic: rintro ⟨x, y, z⟩
state_before: α : Type u_1
G G' : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
inst✝ : DecidableEq α
⊢ ((s \ (SimpleGraph.badVertices G ε s t ∪ SimpleGraph.badVertices G ε s u)).biUnion fun x =>
      image (fun x_1 => (x, x_1)) (G.interedges (filter (G.Adj x) t) (filter (G.Adj x) u))) ⊆
    filter
      (fun x =>
        match x with
        | (x, y, z) => G.Adj x y ∧ G.Adj x z ∧ G.Adj y z)
      (s ×ˢ t ×ˢ u)
state_after: case mk.mk
α : Type u_1
G G' : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
inst✝ : DecidableEq α
x y z : α
⊢ ((x, y, z) ∈
      (s \ (SimpleGraph.badVertices G ε s t ∪ SimpleGraph.badVertices G ε s u)).biUnion fun x =>
        image (fun x_1 => (x, x_1)) (G.interedges (filter (G.Adj x) t) (filter (G.Adj x) u))) →
    (x, y, z) ∈
      filter
        (fun x =>
          match x with
          | (x, y, z) => G.Adj x y ∧ G.Adj x z ∧ G.Adj y z)
        (s ×ˢ t ×ˢ u)

tactic: simp only [mem_filter, mem_product, mem_biUnion, mem_sdiff, exists_prop, mem_union,
  mem_image, Prod.exists, and_assoc, exists_imp, and_imp, Prod.mk.inj_iff, mem_interedges_iff]
state_before: case mk.mk
α : Type u_1
G G' : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
inst✝ : DecidableEq α
x y z : α
⊢ ((x, y, z) ∈
      (s \ (SimpleGraph.badVertices G ε s t ∪ SimpleGraph.badVertices G ε s u)).biUnion fun x =>
        image (fun x_1 => (x, x_1)) (G.interedges (filter (G.Adj x) t) (filter (G.Adj x) u))) →
    (x, y, z) ∈
      filter
        (fun x =>
          match x with
          | (x, y, z) => G.Adj x y ∧ G.Adj x z ∧ G.Adj y z)
        (s ×ˢ t ×ˢ u)
state_after: case mk.mk
α : Type u_1
G G' : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
inst✝ : DecidableEq α
x y z : α
⊢ ∀ x_1 ∈ s,
    ¬(x_1 ∈ SimpleGraph.badVertices G ε s t ∨ x_1 ∈ SimpleGraph.badVertices G ε s u) →
      ∀ (x_2 x_3 : α),
        x_2 ∈ t →
          G.Adj x_1 x_2 →
            x_3 ∈ u →
              G.Adj x_1 x_3 →
                G.Adj x_2 x_3 → x_1 = x → x_2 = y → x_3 = z → x ∈ s ∧ y ∈ t ∧ z ∈ u ∧ G.Adj x y ∧ G.Adj x z ∧ G.Adj y z

tactic: rintro x hx - y z hy xy hz xz yz rfl rfl rfl
state_before: case mk.mk
α : Type u_1
G G' : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
inst✝ : DecidableEq α
x y z : α
⊢ ∀ x_1 ∈ s,
    ¬(x_1 ∈ SimpleGraph.badVertices G ε s t ∨ x_1 ∈ SimpleGraph.badVertices G ε s u) →
      ∀ (x_2 x_3 : α),
        x_2 ∈ t →
          G.Adj x_1 x_2 →
            x_3 ∈ u →
              G.Adj x_1 x_3 →
                G.Adj x_2 x_3 → x_1 = x → x_2 = y → x_3 = z → x ∈ s ∧ y ∈ t ∧ z ∈ u ∧ G.Adj x y ∧ G.Adj x z ∧ G.Adj y z
state_after: case mk.mk
α : Type u_1
G G' : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
inst✝ : DecidableEq α
x : α
hx : x ∈ s
y z : α
hy : y ∈ t
xy : G.Adj x y
hz : z ∈ u
xz : G.Adj x z
yz : G.Adj y z
⊢ x ∈ s ∧ y ∈ t ∧ z ∈ u ∧ G.Adj x y ∧ G.Adj x z ∧ G.Adj y z

tactic: exact ⟨hx, hy, hz, xy, xz, yz⟩
state_before: case mk.mk
α : Type u_1
G G' : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
s t u : Finset α
inst✝ : DecidableEq α
x : α
hx : x ∈ s
y z : α
hy : y ∈ t
xy : G.Adj x y
hz : z ∈ u
xz : G.Adj x z
yz : G.Adj y z
⊢ x ∈ s ∧ y ∈ t ∧ z ∈ u ∧ G.Adj x y ∧ G.Adj x z ∧ G.Adj y z
state_after: no goals