Theorem: Finset.supIndep_attach
File: Mathlib/Order/SupIndep.lean

tactic: refine ⟨fun h t ht i his hit => ?_, SupIndep.attach⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t : Finset ι
f : ι → α
i : ι
⊢ (s.attach.SupIndep fun a => f ↑a) ↔ s.SupIndep f
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ Disjoint (f i) (t.sup f)

tactic: classical
convert h (filter_subset (fun (i : { x // x ∈ s }) => (i : ι) ∈ t) _) (mem_attach _ ⟨i, ‹_›⟩)
  fun hi => hit <| by simpa using hi using 1
refine eq_of_forall_ge_iff ?_
simp only [Finset.sup_le_iff, mem_filter, mem_attach, true_and_iff, Function.comp_apply,
  Subtype.forall, Subtype.coe_mk]
exact fun a => forall_congr' fun j => ⟨fun h _ => h, fun h hj => h (ht hj) hj⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ Disjoint (f i) (t.sup f)
state_after: no goals

tactic: convert h (filter_subset (fun (i : { x // x ∈ s }) => (i : ι) ∈ t) _) (mem_attach _ ⟨i, ‹_›⟩)
  fun hi => hit <| by simpa using hi using 1
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ Disjoint (f i) (t.sup f)
state_after: case h.e'_5
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ t.sup f = (filter (fun i => ↑i ∈ t) s.attach).sup fun a => f ↑a

tactic: refine eq_of_forall_ge_iff ?_
state_before: case h.e'_5
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ t.sup f = (filter (fun i => ↑i ∈ t) s.attach).sup fun a => f ↑a
state_after: case h.e'_5
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ ∀ (c : α), t.sup f ≤ c ↔ ((filter (fun i => ↑i ∈ t) s.attach).sup fun a => f ↑a) ≤ c

tactic: simp only [Finset.sup_le_iff, mem_filter, mem_attach, true_and_iff, Function.comp_apply,
  Subtype.forall, Subtype.coe_mk]
state_before: case h.e'_5
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ ∀ (c : α), t.sup f ≤ c ↔ ((filter (fun i => ↑i ∈ t) s.attach).sup fun a => f ↑a) ≤ c
state_after: case h.e'_5
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ ∀ (c : α), (∀ b ∈ t, f b ≤ c) ↔ ∀ a ∈ s, a ∈ t → f a ≤ c

tactic: exact fun a => forall_congr' fun j => ⟨fun h _ => h, fun h hj => h (ht hj) hj⟩
state_before: case h.e'_5
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
⊢ ∀ (c : α), (∀ b ∈ t, f b ≤ c) ↔ ∀ a ∈ s, a ∈ t → f a ≤ c
state_after: no goals

tactic: simpa using hi
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t✝ : Finset ι
f : ι → α
i✝ : ι
h : s.attach.SupIndep fun a => f ↑a
t : Finset ι
ht : t ⊆ s
i : ι
his : i ∈ s
hit : i ∉ t
hi : ⟨i, his⟩ ∈ filter (fun i => ↑i ∈ t) s.attach
⊢ i ∈ t
state_after: no goals