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

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t : Finset ι
f : ι → α
i : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
⊢ (Finset.image g 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✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι
hi : i ∈ Finset.image g s
hit : i ∉ t
⊢ Disjoint (f i) (t.sup f)
tactic: intro t ht i hi hit
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι
hi : i ∈ Finset.image g s
hit : i ∉ t
⊢ Disjoint (f i) (t.sup f)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι
hi : ∃ a ∈ s, g a = i
hit : i ∉ t
⊢ Disjoint (f i) (t.sup f)
tactic: rw [mem_image] at hi
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι
hi : ∃ a ∈ s, g a = i
hit : i ∉ t
⊢ Disjoint (f i) (t.sup f)
state_after: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
⊢ Disjoint (f (g i)) (t.sup f)
tactic: obtain ⟨i, hi, rfl⟩ := hi
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
⊢ Disjoint (f (g i)) (t.sup f)
state_after: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
⊢ Disjoint (f (g i)) (t.sup f)
tactic: haveI : DecidableEq ι' := Classical.decEq _
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
⊢ Disjoint (f (g i)) (t.sup f)
state_after: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
⊢ t ⊆ Finset.image g (s.erase i)
tactic: suffices hts : t ⊆ (s.erase i).image g by
    refine (supIndep_iff_disjoint_erase.1 hs i hi).mono_right ((sup_mono hts).trans ?_)
    rw [sup_image]
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
⊢ t ⊆ Finset.image g (s.erase i)
state_after: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
j : ι
hjt : j ∈ t
⊢ j ∈ Finset.image g (s.erase i)
tactic: rintro j hjt
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
j : ι
hjt : j ∈ t
⊢ j ∈ Finset.image g (s.erase i)
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
j : ι'
hj : j ∈ s
hjt : g j ∈ t
⊢ g j ∈ Finset.image g (s.erase i)
tactic: obtain ⟨j, hj, rfl⟩ := mem_image.1 (ht hjt)
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝² : Lattice α
inst✝¹ : OrderBot α
s✝ t✝ : Finset ι
f : ι → α
i✝ : ι
inst✝ : DecidableEq ι
s : Finset ι'
g : ι' → ι
hs : s.SupIndep (f ∘ g)
t : Finset ι
ht : t ⊆ Finset.image g s
i : ι'
hi : i ∈ s
hit : g i ∉ t
this : DecidableEq ι'
j : ι'
hj : j ∈ s
hjt : g j ∈ t
⊢ g j ∈ Finset.image g (s.erase i)
state_after: no goals
tactic: exact mem_image_of_mem _ (mem_erase.2 ⟨ne_of_apply_ne g (ne_of_mem_of_not_mem hjt hit), hj⟩)