Skip to content

Commit 95f0051

Browse files
committed
chore(Order/CompleteLattice/Finset): use to_dual
1 parent 9987a7e commit 95f0051

1 file changed

Lines changed: 24 additions & 47 deletions

File tree

Mathlib/Order/CompleteLattice/Finset.lean

Lines changed: 24 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ variable {ι' : Sort*} [CompleteLattice α]
3232
/-- Supremum of `s i`, `i : ι`, is equal to the supremum over `t : Finset ι` of suprema
3333
`⨆ i ∈ t, s i`. This version assumes `ι` is a `Type*`. See `iSup_eq_iSup_finset'` for a version
3434
that works for `ι : Sort*`. -/
35+
@[to_dual
36+
/-- Infimum of `s i`, `i : ι`, is equal to the infimum over `t : Finset ι` of infima
37+
`⨅ i ∈ t, s i`. This version assumes `ι` is a `Type*`. See `iInf_eq_iInf_finset'` for a version
38+
that works for `ι : Sort*`. -/]
3539
theorem iSup_eq_iSup_finset (s : ι → α) : ⨆ i, s i = ⨆ t : Finset ι, ⨆ i ∈ t, s i := by
3640
classical
3741
refine le_antisymm ?_ ?_
@@ -41,23 +45,14 @@ theorem iSup_eq_iSup_finset (s : ι → α) : ⨆ i, s i = ⨆ t : Finset ι,
4145
/-- Supremum of `s i`, `i : ι`, is equal to the supremum over `t : Finset ι` of suprema
4246
`⨆ i ∈ t, s i`. This version works for `ι : Sort*`. See `iSup_eq_iSup_finset` for a version
4347
that assumes `ι : Type*` but has no `PLift`s. -/
48+
@[to_dual
49+
/-- Infimum of `s i`, `i : ι`, is equal to the infimum over `t : Finset ι` of infima
50+
`⨅ i ∈ t, s i`. This version works for `ι : Sort*`. See `iInf_eq_iInf_finset` for a version
51+
that assumes `ι : Type*` but has no `PLift`s. -/]
4452
theorem iSup_eq_iSup_finset' (s : ι' → α) :
4553
⨆ i, s i = ⨆ t : Finset (PLift ι'), ⨆ i ∈ t, s (PLift.down i) := by
4654
rw [← iSup_eq_iSup_finset, ← Equiv.plift.surjective.iSup_comp]; rfl
4755

48-
/-- Infimum of `s i`, `i : ι`, is equal to the infimum over `t : Finset ι` of infima
49-
`⨅ i ∈ t, s i`. This version assumes `ι` is a `Type*`. See `iInf_eq_iInf_finset'` for a version
50-
that works for `ι : Sort*`. -/
51-
theorem iInf_eq_iInf_finset (s : ι → α) : ⨅ i, s i = ⨅ (t : Finset ι) (i ∈ t), s i :=
52-
@iSup_eq_iSup_finset αᵒᵈ _ _ _
53-
54-
/-- Infimum of `s i`, `i : ι`, is equal to the infimum over `t : Finset ι` of infima
55-
`⨅ i ∈ t, s i`. This version works for `ι : Sort*`. See `iInf_eq_iInf_finset` for a version
56-
that assumes `ι : Type*` but has no `PLift`s. -/
57-
theorem iInf_eq_iInf_finset' (s : ι' → α) :
58-
⨅ i, s i = ⨅ t : Finset (PLift ι'), ⨅ i ∈ t, s (PLift.down i) :=
59-
@iSup_eq_iSup_finset' αᵒᵈ _ _ _
60-
6156
end Lattice
6257

6358
namespace Set
@@ -124,64 +119,46 @@ end minimal
124119

125120
section Lattice
126121

122+
@[to_dual]
127123
theorem iSup_coe [SupSet β] (f : α → β) (s : Finset α) : ⨆ x ∈ (↑s : Set α), f x = ⨆ x ∈ s, f x :=
128124
rfl
129125

130-
theorem iInf_coe [InfSet β] (f : α → β) (s : Finset α) : ⨅ x ∈ (↑s : Set α), f x = ⨅ x ∈ s, f x :=
131-
rfl
132-
133126
variable [CompleteLattice β]
134127

128+
@[to_dual]
135129
theorem iSup_singleton (a : α) (s : α → β) : ⨆ x ∈ ({a} : Finset α), s x = s a := by simp
136130

137-
theorem iInf_singleton (a : α) (s : α → β) : ⨅ x ∈ ({a} : Finset α), s x = s a := by simp
138-
131+
@[to_dual]
139132
theorem iSup_option_toFinset (o : Option α) (f : α → β) : ⨆ x ∈ o.toFinset, f x = ⨆ x ∈ o, f x := by
140133
simp
141134

142-
theorem iInf_option_toFinset (o : Option α) (f : α → β) : ⨅ x ∈ o.toFinset, f x = ⨅ x ∈ o, f x :=
143-
@iSup_option_toFinset _ βᵒᵈ _ _ _
144-
145135
variable [DecidableEq α]
146136

137+
@[to_dual]
147138
theorem iSup_union {f : α → β} {s t : Finset α} :
148-
⨆ x ∈ s ∪ t, f x = (⨆ x ∈ s, f x) ⊔ ⨆ x ∈ t, f x := by simp [iSup_or, iSup_sup_eq]
149-
150-
theorem iInf_union {f : α → β} {s t : Finset α} :
151-
⨅ x ∈ s ∪ t, f x = (⨅ x ∈ s, f x) ⊓ ⨅ x ∈ t, f x :=
152-
@iSup_union α βᵒᵈ _ _ _ _ _
139+
⨆ x ∈ s ∪ t, f x = (⨆ x ∈ s, f x) ⊔ ⨆ x ∈ t, f x := by
140+
simpa using _root_.iSup_union
153141

142+
@[to_dual]
154143
theorem iSup_insert (a : α) (s : Finset α) (t : α → β) :
155144
⨆ x ∈ insert a s, t x = t a ⊔ ⨆ x ∈ s, t x := by
156-
rw [insert_eq]
157-
simp only [iSup_union, Finset.iSup_singleton]
158-
159-
theorem iInf_insert (a : α) (s : Finset α) (t : α → β) :
160-
⨅ x ∈ insert a s, t x = t a ⊓ ⨅ x ∈ s, t x :=
161-
@iSup_insert α βᵒᵈ _ _ _ _ _
145+
simpa using _root_.iSup_insert
162146

147+
@[to_dual]
163148
theorem iSup_finset_image {f : γ → α} {g : α → β} {s : Finset γ} :
164-
⨆ x ∈ s.image f, g x = ⨆ y ∈ s, g (f y) := by rw [← iSup_coe, coe_image, iSup_image, iSup_coe]
165-
166-
theorem iInf_finset_image {f : γ → α} {g : α → β} {s : Finset γ} :
167-
⨅ x ∈ s.image f, g x = ⨅ y ∈ s, g (f y) := by rw [← iInf_coe, coe_image, iInf_image, iInf_coe]
149+
⨆ x ∈ s.image f, g x = ⨆ y ∈ s, g (f y) := by
150+
simpa using _root_.iSup_image
168151

152+
@[to_dual]
169153
theorem iSup_insert_update {x : α} {t : Finset α} (f : α → β) {s : β} (hx : x ∉ t) :
170154
⨆ i ∈ insert x t, Function.update f x s i = s ⊔ ⨆ i ∈ t, f i := by
171-
simp only [Finset.iSup_insert, update_self]
172-
rcongr (i hi); apply update_of_ne; rintro rfl; exact hx hi
173-
174-
theorem iInf_insert_update {x : α} {t : Finset α} (f : α → β) {s : β} (hx : x ∉ t) :
175-
⨅ i ∈ insert x t, update f x s i = s ⊓ ⨅ i ∈ t, f i :=
176-
@iSup_insert_update α βᵒᵈ _ _ _ _ f _ hx
155+
rw [Finset.iSup_insert]
156+
grind
177157

158+
@[to_dual]
178159
theorem iSup_biUnion (s : Finset γ) (t : γ → Finset α) (f : α → β) :
179160
⨆ y ∈ s.biUnion t, f y = ⨆ (x ∈ s) (y ∈ t x), f y := by simp [@iSup_comm _ α, iSup_and]
180161

181-
theorem iInf_biUnion (s : Finset γ) (t : γ → Finset α) (f : α → β) :
182-
⨅ y ∈ s.biUnion t, f y = ⨅ (x ∈ s) (y ∈ t x), f y :=
183-
@iSup_biUnion _ βᵒᵈ _ _ _ _ _ _
184-
185162
end Lattice
186163

187164
theorem set_biUnion_coe (s : Finset α) (t : α → Set β) : ⋃ x ∈ (↑s : Set α), t x = ⋃ x ∈ s, t x :=
@@ -211,7 +188,7 @@ theorem set_biInter_option_toFinset (o : Option α) (f : α → Set β) :
211188

212189
theorem subset_set_biUnion_of_mem {s : Finset α} {f : α → Set β} {x : α} (h : x ∈ s) :
213190
f x ⊆ ⋃ y ∈ s, f y :=
214-
show f x ≤ ⨆ y ∈ s, f y from le_iSup_of_le x <| by simp only [h, iSup_pos, le_refl]
191+
le_iSup_of_le x <| by simp [h]
215192

216193
variable [DecidableEq α]
217194

0 commit comments

Comments
 (0)