Theorem: Set.pairwiseDisjoint_filter
File: Mathlib/Data/Finset/Basic.lean

tactic: rintro i - j - h u hi hj x hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t : Finset α
⊢ s.PairwiseDisjoint fun x => filter (fun x_1 => f x_1 = x) t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t : Finset α
i j : β
h : i ≠ j
u : Finset α
hi : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) i
hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) j
x : α
hx : x ∈ u
⊢ x ∈ ⊥

tactic: obtain ⟨-, rfl⟩ : x ∈ t ∧ f x = i := by simpa using hi hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t : Finset α
i j : β
h : i ≠ j
u : Finset α
hi : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) i
hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) j
x : α
hx : x ∈ u
⊢ x ∈ ⊥
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t : Finset α
j : β
u : Finset α
hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) j
x : α
hx : x ∈ u
h : f x ≠ j
hi : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) (f x)
⊢ x ∈ ⊥

tactic: obtain ⟨-, rfl⟩ : x ∈ t ∧ f x = j := by simpa using hj hx
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t : Finset α
j : β
u : Finset α
hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) j
x : α
hx : x ∈ u
h : f x ≠ j
hi : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) (f x)
⊢ x ∈ ⊥
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t u : Finset α
x : α
hx : x ∈ u
hi hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) (f x)
h : f x ≠ f x
⊢ x ∈ ⊥

tactic: contradiction
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t u : Finset α
x : α
hx : x ∈ u
hi hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) (f x)
h : f x ≠ f x
⊢ x ∈ ⊥
state_after: no goals

tactic: simpa using hi hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t : Finset α
i j : β
h : i ≠ j
u : Finset α
hi : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) i
hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) j
x : α
hx : x ∈ u
⊢ x ∈ t ∧ f x = i
state_after: no goals

tactic: simpa using hj hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq β
f : α → β
s : Set β
t : Finset α
j : β
u : Finset α
hj : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) j
x : α
hx : x ∈ u
h : f x ≠ j
hi : u ≤ (fun x => filter (fun x_1 => f x_1 = x) t) (f x)
⊢ x ∈ t ∧ f x = j
state_after: no goals