Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 3ba4e82

Browse files
committed
feat(data/set/finite): finite_subset_Union, disjoint_mono
1 parent bd26b06 commit 3ba4e82

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

data/set/finite.lean

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ fintype_of_finset (s.to_finset.image f) $ by simp
181181
instance fintype_range [decidable_eq β] (f : α → β) [fintype α] : fintype (range f) :=
182182
fintype_of_finset (finset.univ.image f) $ by simp [range]
183183

184+
theorem finite_range (f : α → β) [fintype α] : finite (range f) :=
185+
by haveI := classical.dec_eq β; exact ⟨by apply_instance⟩
186+
184187
theorem finite_image {s : set α} (f : α → β) : finite s → finite (f '' s)
185188
| ⟨h⟩ := ⟨@set.fintype_image _ _ (classical.dec_eq β) _ _ h⟩
186189

@@ -252,6 +255,16 @@ end finset
252255

253256
namespace set
254257

258+
lemma finite_subset_Union {s : set α} (hs : finite s)
259+
{ι} {t : ι → set α} (h : s ⊆ ⋃ i, t i) : ∃ I : set ι, finite I ∧ s ⊆ ⋃ i ∈ I, t i :=
260+
begin
261+
unfreezeI, cases hs,
262+
have : ∀ x : s, ∃ i, x.1 ∈ t i, {simpa [subset_def] using h},
263+
cases classical.axiom_of_choice this with f hf,
264+
refine ⟨range f, finite_range f, _⟩,
265+
rintro x hx, simp, exact ⟨_, ⟨_, hx, rfl⟩, hf ⟨x, hx⟩⟩
266+
end
267+
255268
lemma infinite_univ_nat : infinite (univ : set ℕ) :=
256269
assume (h : finite (univ : set ℕ)),
257270
let ⟨n, hn⟩ := finset.exists_nat_subset_range h.to_finset in

data/set/lattice.lean

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,15 @@ disjoint.comm.1
561561
theorem disjoint_bot_left {a : α} : disjoint ⊥ a := disjoint_iff.2 bot_inf_eq
562562
theorem disjoint_bot_right {a : α} : disjoint a ⊥ := disjoint_iff.2 inf_bot_eq
563563

564+
theorem disjoint_mono {a b c d : α} (h₁ : a ≤ b) (h₂ : c ≤ d) :
565+
disjoint b d → disjoint a c := le_trans (inf_le_inf h₁ h₂)
566+
567+
theorem disjoint_mono_left {a b c : α} (h : a ≤ b) : disjoint b c → disjoint a c :=
568+
disjoint_mono h (le_refl _)
569+
570+
theorem disjoint_mono_right {a b c : α} (h : b ≤ c) : disjoint a c → disjoint a b :=
571+
disjoint_mono (le_refl _) h
572+
564573
end disjoint
565574

566575
theorem set.disjoint_diff {a b : set α} : disjoint a (b \ a) :=

0 commit comments

Comments
 (0)