File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -369,6 +369,22 @@ theorem image_subset_iff : s.image f ⊆ t ↔ ∀ x ∈ s, f x ∈ t :=
369369 s.image f ⊆ t ↔ f '' ↑s ⊆ ↑t := by norm_cast
370370 _ ↔ _ := Set.image_subset_iff
371371
372+ lemma mapsTo_iff_image_subset : Set.MapsTo f s t ↔ s.image f ⊆ t := by
373+ simp [Set.MapsTo, image_subset_iff]
374+
375+ alias ⟨_root_.Set.MapsTo.finsetImage_subset, _⟩ := mapsTo_iff_image_subset
376+
377+ lemma surjOn_iff_subset_image : Set.SurjOn f s t ↔ t ⊆ s.image f := by
378+ simp only [Set.SurjOn]
379+ norm_cast
380+
381+ alias ⟨_root_.Set.SurjOn.subset_finsetImage, _⟩ := surjOn_iff_subset_image
382+
383+ lemma image_eq_iff_surjOn_mapsTo : s.image f = t ↔ Set.SurjOn f s t ∧ Set.MapsTo f s t := by
384+ grind [mapsTo_iff_image_subset, surjOn_iff_subset_image]
385+
386+ alias ⟨_root_.Set.SurjOn.finsetImage_eq_of_mapsTo, _⟩ := image_eq_iff_surjOn_mapsTo
387+
372388theorem image_mono (f : α → β) : Monotone (Finset.image f) := fun _ _ => image_subset_image
373389
374390lemma image_injective (hf : Injective f) : Injective (image f) := by
@@ -504,6 +520,12 @@ theorem map_erase [DecidableEq α] (f : α ↪ β) (s : Finset α) (a : α) :
504520 simp_rw [map_eq_image]
505521 exact s.image_erase f.2 a
506522
523+ theorem iterate_image [DecidableEq α] (f : α → α) (n : ℕ) :
524+ (Finset.image f)^[n] s = s.image f^[n] := by
525+ induction n with
526+ | zero => simp
527+ | succ n ih => rw [iterate_succ_apply', iterate_succ', ih, image_image]
528+
507529end Image
508530
509531/-! ### filterMap -/
You can’t perform that action at this time.
0 commit comments