diff --git a/src/data/set/basic.lean b/src/data/set/basic.lean index 65186679fda41..44ec83e6f10b7 100644 --- a/src/data/set/basic.lean +++ b/src/data/set/basic.lean @@ -715,12 +715,18 @@ rfl @[simp] theorem union_singleton : s ∪ {a} = insert a s := by rw [union_comm, singleton_union] -theorem singleton_inter_eq_empty : {a} ∩ s = ∅ ↔ a ∉ s := +@[simp] theorem singleton_inter_eq_empty : {a} ∩ s = ∅ ↔ a ∉ s := by simp [eq_empty_iff_forall_not_mem] -theorem inter_singleton_eq_empty : s ∩ {a} = ∅ ↔ a ∉ s := +@[simp] theorem inter_singleton_eq_empty : s ∩ {a} = ∅ ↔ a ∉ s := by rw [inter_comm, singleton_inter_eq_empty] +@[simp] theorem singleton_inter_nonempty : ({a} ∩ s).nonempty ↔ a ∈ s := +by rw [← ne_empty_iff_nonempty, ne.def, singleton_inter_eq_empty, not_not] + +@[simp] theorem inter_singleton_nonempty : (s ∩ {a}).nonempty ↔ a ∈ s := +by rw [inter_comm, singleton_inter_nonempty] + lemma nmem_singleton_empty {s : set α} : s ∉ ({∅} : set (set α)) ↔ s.nonempty := by rw [mem_singleton_iff, ← ne.def, ne_empty_iff_nonempty] @@ -1240,9 +1246,6 @@ ext $ λ x, ⟨λ ⟨y, _, h⟩, h ▸ mem_singleton _, by { simp only [eq_empty_iff_forall_not_mem], exact ⟨λ H a ha, H _ ⟨_, ha, rfl⟩, λ H b ⟨_, ha, _⟩, H _ ha⟩ } -lemma inter_singleton_nonempty {s : set α} {a : α} : (s ∩ {a}).nonempty ↔ a ∈ s := -by finish [set.nonempty] - -- TODO(Jeremy): there is an issue with - t unfolding to compl t theorem mem_compl_image (t : set α) (S : set (set α)) : t ∈ compl '' S ↔ tᶜ ∈ S := @@ -1362,6 +1365,10 @@ lemma image_preimage_inter (f : α → β) (s : set α) (t : set β) : f '' (f ⁻¹' t ∩ s) = t ∩ f '' s := by simp only [inter_comm, image_inter_preimage] +@[simp] lemma image_inter_nonempty_iff {f : α → β} {s : set α} {t : set β} : + (f '' s ∩ t).nonempty ↔ (s ∩ f ⁻¹' t).nonempty := +by rw [←image_inter_preimage, nonempty_image_iff] + lemma image_diff_preimage {f : α → β} {s : set α} {t : set β} : f '' (s \ f ⁻¹' t) = f '' s \ t := by simp_rw [diff_eq, ← preimage_compl, image_inter_preimage] diff --git a/src/data/set/function.lean b/src/data/set/function.lean index 483e4eea5e4ae..2300a3c4b0e00 100644 --- a/src/data/set/function.lean +++ b/src/data/set/function.lean @@ -128,6 +128,8 @@ theorem eq_on.maps_to_iff (H : eq_on f₁ f₂ s) : maps_to f₁ s t ↔ maps_to theorem maps_to.comp (h₁ : maps_to g t p) (h₂ : maps_to f s t) : maps_to (g ∘ f) s p := λ x h, h₁ (h₂ h) +theorem maps_to_id (s : set α) : maps_to id s s := λ x, id + theorem maps_to.iterate {f : α → α} {s : set α} (h : maps_to f s s) : ∀ n, maps_to (f^[n]) s s | 0 := λ _, id