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

Commit 146d73c

Browse files
committed
feat(data/set): add finite_image_iff_on
1 parent 84a5f4d commit 146d73c

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/data/set/finite.lean

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ Authors: Johannes Hölzl, Mario Carneiro
55
66
Finite sets.
77
-/
8-
import data.set.lattice data.nat.basic logic.function
9-
data.fintype
8+
import logic.function
9+
import data.nat.basic data.fintype data.set.lattice data.set.function
1010

1111
open set lattice function
1212

@@ -219,10 +219,18 @@ begin
219219
simp [I _, (injective_of_partial_inv I).eq_iff]
220220
end
221221

222-
theorem finite_of_finite_image {s : set α} {f : α → β}
223-
(I : injective f) : finite (f '' s) → finite s | ⟨hs⟩ :=
224-
by haveI := classical.dec_eq β; exact
225-
⟨fintype_of_fintype_image _ (partial_inv_of_injective I)⟩
222+
theorem finite_of_finite_image_on {s : set α} {f : α → β} (hi : set.inj_on f s) :
223+
finite (f '' s) → finite s | ⟨h⟩ :=
224+
⟨@fintype.of_injective _ _ h (λa:s, ⟨f a.1, mem_image_of_mem f a.2⟩) $
225+
assume a b eq, subtype.eq $ hi a.2 b.2 $ subtype.ext.1 eq⟩
226+
227+
theorem finite_image_iff_on {s : set α} {f : α → β} (hi : inj_on f s) :
228+
finite (f '' s) ↔ finite s :=
229+
⟨finite_of_finite_image_on hi, finite_image _⟩
230+
231+
theorem finite_of_finite_image {s : set α} {f : α → β} (I : injective f) :
232+
finite (f '' s) → finite s :=
233+
finite_of_finite_image_on (assume _ _ _ _ eq, I eq)
226234

227235
theorem finite_preimage {s : set β} {f : α → β}
228236
(I : injective f) (h : finite s) : finite (f ⁻¹' s) :=

0 commit comments

Comments
 (0)