ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Set.EqOn.congr_strictMonoOn
theorem EqOn.congr_strictMonoOn (h : s.EqOn f₁ f₂) : StrictMonoOn f₁ s ↔ StrictMonoOn f₂ s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f₁ f₂ : α → β} [Preorder α] [Preorder β] (h : Set.EqOn f₁ f₂ s)
Goal: StrictMonoOn f₁ s ↔ StrictMonoOn f₂ s
-- Set.EqOn.congr_strictAntiOn
theorem EqOn.congr_strictAntiOn (h : s.EqOn f₁ f₂) : StrictAntiOn f₁ s ↔ StrictAntiOn f₂ s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f₁ f₂ : α → β} [Preorder α] [Preorder β] (h : Set.EqOn f₁ f₂ s)
Goal: StrictAntiOn f₁ s ↔ StrictAntiOn f₂ s
-- MonotoneOn.mono
theorem _root_.MonotoneOn.mono (h : MonotoneOn f s) (h' : s₂ ⊆ s) : MonotoneOn f s₂ 
Arguments: {α : Type u_1} {β : Type u_2} {s s₂ : Set α} {f : α → β} [Preorder α] [Preorder β] (h : MonotoneOn f s) (h' : s₂ ⊆ s)
Goal: MonotoneOn f s₂
-- AntitoneOn.mono
theorem _root_.AntitoneOn.mono (h : AntitoneOn f s) (h' : s₂ ⊆ s) : AntitoneOn f s₂ 
Arguments: {α : Type u_1} {β : Type u_2} {s s₂ : Set α} {f : α → β} [Preorder α] [Preorder β] (h : AntitoneOn f s) (h' : s₂ ⊆ s)
Goal: AntitoneOn f s₂
-- StrictMonoOn.mono
theorem _root_.StrictMonoOn.mono (h : StrictMonoOn f s) (h' : s₂ ⊆ s) : StrictMonoOn f s₂ 
Arguments: {α : Type u_1} {β : Type u_2} {s s₂ : Set α} {f : α → β} [Preorder α] [Preorder β] (h : StrictMonoOn f s) (h' : s₂ ⊆ s)
Goal: StrictMonoOn f s₂
-- StrictAntiOn.mono
theorem _root_.StrictAntiOn.mono (h : StrictAntiOn f s) (h' : s₂ ⊆ s) : StrictAntiOn f s₂ 
Arguments: {α : Type u_1} {β : Type u_2} {s s₂ : Set α} {f : α → β} [Preorder α] [Preorder β] (h : StrictAntiOn f s) (h' : s₂ ⊆ s)
Goal: StrictAntiOn f s₂
-- MonotoneOn.monotone
protected theorem _root_.MonotoneOn.monotone (h : MonotoneOn f s) :
    Monotone (f ∘ Subtype.val : s → β) 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β} [Preorder α] [Preorder β] (h : MonotoneOn f s)
Goal: Monotone (f ∘ Subtype.val)
-- AntitoneOn.monotone
protected theorem _root_.AntitoneOn.monotone (h : AntitoneOn f s) :
    Antitone (f ∘ Subtype.val : s → β) 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β} [Preorder α] [Preorder β] (h : AntitoneOn f s)
Goal: Antitone (f ∘ Subtype.val)
-- StrictMonoOn.strictMono
protected theorem _root_.StrictMonoOn.strictMono (h : StrictMonoOn f s) :
    StrictMono (f ∘ Subtype.val : s → β) 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β} [Preorder α] [Preorder β] (h : StrictMonoOn f s)
Goal: StrictMono (f ∘ Subtype.val)
-- StrictAntiOn.strictAnti
protected theorem _root_.StrictAntiOn.strictAnti (h : StrictAntiOn f s) :
    StrictAnti (f ∘ Subtype.val : s → β) 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β} [Preorder α] [Preorder β] (h : StrictAntiOn f s)
Goal: StrictAnti (f ∘ Subtype.val)
-- Set.MapsTo.restrict_commutes
theorem MapsTo.restrict_commutes (f : α → β) (s : Set α) (t : Set β) (h : MapsTo f s t) :
    Subtype.val ∘ h.restrict f s t = f ∘ Subtype.val 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α) (t : Set β) (h : Set.MapsTo f s t)
Goal: Subtype.val ∘ Set.MapsTo.restrict f s t h = f ∘ Subtype.val
-- Set.MapsTo.val_restrict_apply
@[simp]
theorem MapsTo.val_restrict_apply (h : MapsTo f s t) (x : s) : (h.restrict f s t x : β) = f x 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : Set.MapsTo f s t) (x : ↑s)
Goal: ↑(Set.MapsTo.restrict f s t h x) = f ↑x
-- Set.MapsTo.coe_iterate_restrict
theorem MapsTo.coe_iterate_restrict {f : α → α} (h : MapsTo f s s) (x : s) (k : ℕ) :
    h.restrict^[k] x = f^[k] x 
Arguments: {α : Type u_1} {s : Set α} {f : α → α} (h : Set.MapsTo f s s) (x : ↑s) (k : ℕ)
Goal: ↑((Set.MapsTo.restrict f s s h)^[k] x) = f^[k] ↑x
-- Set.codRestrict_restrict
@[simp]
theorem codRestrict_restrict (h : ∀ x : s, f x ∈ t) :
    codRestrict (s.restrict f) t h = MapsTo.restrict f s t fun x hx => h ⟨x, hx⟩ 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : ∀ (x : ↑s), f ↑x ∈ t)
Goal: Set.codRestrict (s.restrict f) t h = Set.MapsTo.restrict f s t ⋯
-- Set.MapsTo.restrict_eq_codRestrict
theorem MapsTo.restrict_eq_codRestrict (h : MapsTo f s t) :
    h.restrict f s t = codRestrict (s.restrict f) t fun x => h x.2 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : Set.MapsTo f s t)
Goal: Set.MapsTo.restrict f s t h = Set.codRestrict (s.restrict f) t ⋯
-- Set.MapsTo.coe_restrict
theorem MapsTo.coe_restrict (h : Set.MapsTo f s t) :
    Subtype.val ∘ h.restrict f s t = s.restrict f 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : Set.MapsTo f s t)
Goal: Subtype.val ∘ Set.MapsTo.restrict f s t h = s.restrict f
-- Set.MapsTo.range_restrict
theorem MapsTo.range_restrict (f : α → β) (s : Set α) (t : Set β) (h : MapsTo f s t) :
    range (h.restrict f s t) = Subtype.val ⁻¹' (f '' s) 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α) (t : Set β) (h : Set.MapsTo f s t)
Goal: Set.range (Set.MapsTo.restrict f s t h) = Subtype.val ⁻¹' (f '' s)
-- Set.mapsTo_iff_exists_map_subtype
theorem mapsTo_iff_exists_map_subtype : MapsTo f s t ↔ ∃ g : s → t, ∀ x : s, f x = g x 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β}
Goal: Set.MapsTo f s t ↔ ∃ g, ∀ (x : ↑s), f ↑x = ↑(g x)
-- Set.mapsTo'
theorem mapsTo' : MapsTo f s t ↔ f '' s ⊆ t 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β}
Goal: Set.MapsTo f s t ↔ f '' s ⊆ t
-- Set.mapsTo_prod_map_diagonal
theorem mapsTo_prod_map_diagonal : MapsTo (Prod.map f f) (diagonal α) (diagonal β) 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β}
Goal: Set.MapsTo (Prod.map f f) (Set.diagonal α) (Set.diagonal β)
-- Set.MapsTo.subset_preimage
theorem MapsTo.subset_preimage {f : α → β} {s : Set α} {t : Set β} (hf : MapsTo f s t) :
    s ⊆ f ⁻¹' t 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {s : Set α} {t : Set β} (hf : Set.MapsTo f s t)
Goal: s ⊆ f ⁻¹' t
-- Set.mapsTo_singleton
@[simp]
theorem mapsTo_singleton {x : α} : MapsTo f {x} t ↔ f x ∈ t 
Arguments: {α : Type u_1} {β : Type u_2} {t : Set β} {f : α → β} {x : α}
Goal: Set.MapsTo f {x} t ↔ f x ∈ t
-- Set.mapsTo_empty
theorem mapsTo_empty (f : α → β) (t : Set β) : MapsTo f ∅ t 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (t : Set β)
Goal: Set.MapsTo f ∅ t
-- Set.mapsTo_empty_iff
@[simp] theorem mapsTo_empty_iff : MapsTo f s ∅ ↔ s = ∅ 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β}
Goal: Set.MapsTo f s ∅ ↔ s = ∅
-- Set.MapsTo.nonempty
theorem MapsTo.nonempty (h : MapsTo f s t) (hs : s.Nonempty) : t.Nonempty 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : Set.MapsTo f s t) (hs : s.Nonempty)
Goal: t.Nonempty
-- Set.MapsTo.image_subset
theorem MapsTo.image_subset (h : MapsTo f s t) : f '' s ⊆ t 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : Set.MapsTo f s t)
Goal: f '' s ⊆ t
-- Set.MapsTo.congr
theorem MapsTo.congr (h₁ : MapsTo f₁ s t) (h : EqOn f₁ f₂ s) : MapsTo f₂ s t 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f₁ f₂ : α → β} (h₁ : Set.MapsTo f₁ s t) (h : Set.EqOn f₁ f₂ s)
Goal: Set.MapsTo f₂ s t
-- Set.EqOn.comp_right
theorem EqOn.comp_right (hg : t.EqOn g₁ g₂) (hf : s.MapsTo f t) : s.EqOn (g₁ ∘ f) (g₂ ∘ f) 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {s : Set α} {t : Set β} {f : α → β} {g₁ g₂ : β → γ} (hg : Set.EqOn g₁ g₂ t) (hf : Set.MapsTo f s t)
Goal: Set.EqOn (g₁ ∘ f) (g₂ ∘ f) s
-- Set.EqOn.mapsTo_iff
theorem EqOn.mapsTo_iff (H : EqOn f₁ f₂ s) : MapsTo f₁ s t ↔ MapsTo f₂ s t 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f₁ f₂ : α → β} (H : Set.EqOn f₁ f₂ s)
Goal: Set.MapsTo f₁ s t ↔ Set.MapsTo f₂ s t
-- Set.MapsTo.comp
theorem MapsTo.comp (h₁ : MapsTo g t p) (h₂ : MapsTo f s t) : MapsTo (g ∘ f) s p 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {s : Set α} {t : Set β} {p : Set γ} {f : α → β} {g : β → γ} (h₁ : Set.MapsTo g t p) (h₂ : Set.MapsTo f s t)
Goal: Set.MapsTo (g ∘ f) s p
-- Set.mapsTo_id
theorem mapsTo_id (s : Set α) : MapsTo id s s 
Arguments: {α : Type u_1} (s : Set α)
Goal: Set.MapsTo id s s
-- Set.MapsTo.iterate
theorem MapsTo.iterate {f : α → α} {s : Set α} (h : MapsTo f s s) : ∀ n, MapsTo f^[n] s s
  
Arguments: {α : Type u_1} {f : α → α} {s : Set α} (h : Set.MapsTo f s s) (n : ℕ)
Goal: Set.MapsTo f^[n] s s
-- Set.MapsTo.iterate_restrict
theorem MapsTo.iterate_restrict {f : α → α} {s : Set α} (h : MapsTo f s s) (n : ℕ) :
    (h.restrict f s s)^[n] = (h.iterate n).restrict _ _ _ 
Arguments: {α : Type u_1} {f : α → α} {s : Set α} (h : Set.MapsTo f s s) (n : ℕ)
Goal: (Set.MapsTo.restrict f s s h)^[n] = Set.MapsTo.restrict f^[n] s s ⋯
-- Set.mapsTo_of_subsingleton'
lemma mapsTo_of_subsingleton' [Subsingleton β] (f : α → β) (h : s.Nonempty → t.Nonempty) :
    MapsTo f s t 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} [Subsingleton β] (f : α → β) (h : s.Nonempty → t.Nonempty)
Goal: Set.MapsTo f s t
-- Set.mapsTo_of_subsingleton
lemma mapsTo_of_subsingleton [Subsingleton α] (f : α → α) (s : Set α) : MapsTo f s s 
Arguments: {α : Type u_1} [Subsingleton α] (f : α → α) (s : Set α)
Goal: Set.MapsTo f s s
-- Set.MapsTo.mono
theorem MapsTo.mono (hf : MapsTo f s₁ t₁) (hs : s₂ ⊆ s₁) (ht : t₁ ⊆ t₂) : MapsTo f s₂ t₂ 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {t₁ t₂ : Set β} {f : α → β} (hf : Set.MapsTo f s₁ t₁) (hs : s₂ ⊆ s₁) (ht : t₁ ⊆ t₂)
Goal: Set.MapsTo f s₂ t₂
-- Set.MapsTo.mono_left
theorem MapsTo.mono_left (hf : MapsTo f s₁ t) (hs : s₂ ⊆ s₁) : MapsTo f s₂ t 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {t : Set β} {f : α → β} (hf : Set.MapsTo f s₁ t) (hs : s₂ ⊆ s₁)
Goal: Set.MapsTo f s₂ t
-- Set.MapsTo.mono_right
theorem MapsTo.mono_right (hf : MapsTo f s t₁) (ht : t₁ ⊆ t₂) : MapsTo f s t₂ 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t₁ t₂ : Set β} {f : α → β} (hf : Set.MapsTo f s t₁) (ht : t₁ ⊆ t₂)
Goal: Set.MapsTo f s t₂
-- Set.MapsTo.union_union
theorem MapsTo.union_union (h₁ : MapsTo f s₁ t₁) (h₂ : MapsTo f s₂ t₂) :
    MapsTo f (s₁ ∪ s₂) (t₁ ∪ t₂) 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {t₁ t₂ : Set β} {f : α → β} (h₁ : Set.MapsTo f s₁ t₁) (h₂ : Set.MapsTo f s₂ t₂)
Goal: Set.MapsTo f (s₁ ∪ s₂) (t₁ ∪ t₂)
-- Set.MapsTo.union
theorem MapsTo.union (h₁ : MapsTo f s₁ t) (h₂ : MapsTo f s₂ t) : MapsTo f (s₁ ∪ s₂) t 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {t : Set β} {f : α → β} (h₁ : Set.MapsTo f s₁ t) (h₂ : Set.MapsTo f s₂ t)
Goal: Set.MapsTo f (s₁ ∪ s₂) t
-- Set.mapsTo_union
@[simp]
theorem mapsTo_union : MapsTo f (s₁ ∪ s₂) t ↔ MapsTo f s₁ t ∧ MapsTo f s₂ t 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {t : Set β} {f : α → β}
Goal: Set.MapsTo f (s₁ ∪ s₂) t ↔ Set.MapsTo f s₁ t ∧ Set.MapsTo f s₂ t
-- Set.MapsTo.inter
theorem MapsTo.inter (h₁ : MapsTo f s t₁) (h₂ : MapsTo f s t₂) : MapsTo f s (t₁ ∩ t₂) 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t₁ t₂ : Set β} {f : α → β} (h₁ : Set.MapsTo f s t₁) (h₂ : Set.MapsTo f s t₂)
Goal: Set.MapsTo f s (t₁ ∩ t₂)
-- Set.MapsTo.inter_inter
theorem MapsTo.inter_inter (h₁ : MapsTo f s₁ t₁) (h₂ : MapsTo f s₂ t₂) :
    MapsTo f (s₁ ∩ s₂) (t₁ ∩ t₂) 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {t₁ t₂ : Set β} {f : α → β} (h₁ : Set.MapsTo f s₁ t₁) (h₂ : Set.MapsTo f s₂ t₂)
Goal: Set.MapsTo f (s₁ ∩ s₂) (t₁ ∩ t₂)
-- Set.mapsTo_inter
@[simp]
theorem mapsTo_inter : MapsTo f s (t₁ ∩ t₂) ↔ MapsTo f s t₁ ∧ MapsTo f s t₂ 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t₁ t₂ : Set β} {f : α → β}
Goal: Set.MapsTo f s (t₁ ∩ t₂) ↔ Set.MapsTo f s t₁ ∧ Set.MapsTo f s t₂
-- Set.mapsTo_univ
theorem mapsTo_univ (f : α → β) (s : Set α) : MapsTo f s univ 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α)
Goal: Set.MapsTo f s Set.univ
-- Set.mapsTo_range
theorem mapsTo_range (f : α → β) (s : Set α) : MapsTo f s (range f) 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α)
Goal: Set.MapsTo f s (Set.range f)
-- Set.mapsTo_image_iff
@[simp]
theorem mapsTo_image_iff {f : α → β} {g : γ → α} {s : Set γ} {t : Set β} :
    MapsTo f (g '' s) t ↔ MapsTo (f ∘ g) s t 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {g : γ → α} {s : Set γ} {t : Set β}
Goal: Set.MapsTo f (g '' s) t ↔ Set.MapsTo (f ∘ g) s t
-- Set.maps_image_to
@[deprecated (since := "2023-12-25")]
lemma maps_image_to (f : α → β) (g : γ → α) (s : Set γ) (t : Set β) :
    MapsTo f (g '' s) t ↔ MapsTo (f ∘ g) s t 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : α → β) (g : γ → α) (s : Set γ) (t : Set β)
Goal: Set.MapsTo f (g '' s) t ↔ Set.MapsTo (f ∘ g) s t
-- Set.MapsTo.comp_left
lemma MapsTo.comp_left (g : β → γ) (hf : MapsTo f s t) : MapsTo (g ∘ f) s (g '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {s : Set α} {t : Set β} {f : α → β} (g : β → γ) (hf : Set.MapsTo f s t)
Goal: Set.MapsTo (g ∘ f) s (g '' t)
-- Set.MapsTo.comp_right
lemma MapsTo.comp_right {s : Set β} {t : Set γ} (hg : MapsTo g s t) (f : α → β) :
    MapsTo (g ∘ f) (f ⁻¹' s) t 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {g : β → γ} {s : Set β} {t : Set γ} (hg : Set.MapsTo g s t) (f : α → β)
Goal: Set.MapsTo (g ∘ f) (f ⁻¹' s) t
-- Set.mapsTo_univ_iff
@[simp]
lemma mapsTo_univ_iff : MapsTo f univ t ↔ ∀ x, f x ∈ t 
Arguments: {α : Type u_1} {β : Type u_2} {t : Set β} {f : α → β}
Goal: Set.MapsTo f Set.univ t ↔ ∀ (x : α), f x ∈ t
-- Set.maps_univ_to
@[deprecated (since := "2023-12-25")]
theorem maps_univ_to (f : α → β) (s : Set β) : MapsTo f univ s ↔ ∀ a, f a ∈ s 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set β)
Goal: Set.MapsTo f Set.univ s ↔ ∀ (a : α), f a ∈ s
-- Set.mapsTo_range_iff
@[simp]
lemma mapsTo_range_iff {g : ι → α} : MapsTo f (range g) t ↔ ∀ i, f (g i) ∈ t 
Arguments: {α : Type u_1} {β : Type u_2} {ι : Sort u_4} {t : Set β} {f : α → β} {g : ι → α}
Goal: Set.MapsTo f (Set.range g) t ↔ ∀ (i : ι), f (g i) ∈ t
-- Set.maps_range_to
@[deprecated mapsTo_range_iff (since := "2023-12-25")]
theorem maps_range_to (f : α → β) (g : γ → α) (s : Set β) :
    MapsTo f (range g) s ↔ MapsTo (f ∘ g) univ s 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : α → β) (g : γ → α) (s : Set β)
Goal: Set.MapsTo f (Set.range g) s ↔ Set.MapsTo (f ∘ g) Set.univ s
-- Set.surjective_mapsTo_image_restrict
theorem surjective_mapsTo_image_restrict (f : α → β) (s : Set α) :
    Surjective ((mapsTo_image f s).restrict f s (f '' s)) 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (s : Set α)
Goal: Function.Surjective (Set.MapsTo.restrict f s (f '' s) ⋯)
-- Set.MapsTo.mem_iff
theorem MapsTo.mem_iff (h : MapsTo f s t) (hc : MapsTo f sᶜ tᶜ) {x} : f x ∈ t ↔ x ∈ s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : Set.MapsTo f s t) (hc : Set.MapsTo f sᶜ tᶜ) {x : α}
Goal: f x ∈ t ↔ x ∈ s
-- Set.image_restrictPreimage
theorem image_restrictPreimage :
    t.restrictPreimage f '' (Subtype.val ⁻¹' s) = Subtype.val ⁻¹' (f '' s) 
Arguments: {α : Type u_1} {β : Type u_2} (s : Set α) (t : Set β) (f : α → β)
Goal: t.restrictPreimage f '' (Subtype.val ⁻¹' s) = Subtype.val ⁻¹' (f '' s)
-- Set.range_restrictPreimage
theorem range_restrictPreimage : range (t.restrictPreimage f) = Subtype.val ⁻¹' range f 
Arguments: {α : Type u_1} {β : Type u_2} (t : Set β) (f : α → β)
Goal: Set.range (t.restrictPreimage f) = Subtype.val ⁻¹' Set.range f
-- Set.restrictPreimage_mk
@[simp]
theorem restrictPreimage_mk (h : a ∈ f ⁻¹' t) : t.restrictPreimage f ⟨a, h⟩ = ⟨f a, h⟩ 
Arguments: {α : Type u_1} {β : Type u_2} (t : Set β) {f : α → β} {a : α} (h : a ∈ f ⁻¹' t)
Goal: t.restrictPreimage f ⟨a, h⟩ = ⟨f a, h⟩
-- Set.image_val_preimage_restrictPreimage
theorem image_val_preimage_restrictPreimage {u : Set t} :
    Subtype.val '' (t.restrictPreimage f ⁻¹' u) = f ⁻¹' (Subtype.val '' u) 
Arguments: {α : Type u_1} {β : Type u_2} (t : Set β) {f : α → β} {u : Set ↑t}
Goal: Subtype.val '' (t.restrictPreimage f ⁻¹' u) = f ⁻¹' (Subtype.val '' u)
-- Set.preimage_restrictPreimage
theorem preimage_restrictPreimage {u : Set t} :
    t.restrictPreimage f ⁻¹' u = (fun a : f ⁻¹' t ↦ f a) ⁻¹' (Subtype.val '' u) 
Arguments: {α : Type u_1} {β : Type u_2} (t : Set β) {f : α → β} {u : Set ↑t}
Goal: t.restrictPreimage f ⁻¹' u = (fun a => f ↑a) ⁻¹' (Subtype.val '' u)
-- Set.restrictPreimage_injective
lemma restrictPreimage_injective (hf : Injective f) : Injective (t.restrictPreimage f) 
Arguments: {α : Type u_1} {β : Type u_2} (t : Set β) {f : α → β} (hf : Function.Injective f)
Goal: Function.Injective (t.restrictPreimage f)
-- Set.restrictPreimage_surjective
lemma restrictPreimage_surjective (hf : Surjective f) : Surjective (t.restrictPreimage f) 
Arguments: {α : Type u_1} {β : Type u_2} (t : Set β) {f : α → β} (hf : Function.Surjective f)
Goal: Function.Surjective (t.restrictPreimage f)
-- Set.restrictPreimage_bijective
lemma restrictPreimage_bijective (hf : Bijective f) : Bijective (t.restrictPreimage f) 
Arguments: {α : Type u_1} {β : Type u_2} (t : Set β) {f : α → β} (hf : Function.Bijective f)
Goal: Function.Bijective (t.restrictPreimage f)
-- Set.Subsingleton.injOn
theorem Subsingleton.injOn (hs : s.Subsingleton) (f : α → β) : InjOn f s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} (hs : s.Subsingleton) (f : α → β)
Goal: Set.InjOn f s
-- Set.injOn_empty
@[simp]
theorem injOn_empty (f : α → β) : InjOn f ∅ 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β)
Goal: Set.InjOn f ∅
-- Set.injOn_singleton
@[simp]
theorem injOn_singleton (f : α → β) (a : α) : InjOn f {a} 
Arguments: {α : Type u_1} {β : Type u_2} (f : α → β) (a : α)
Goal: Set.InjOn f {a}
-- Set.injOn_pair
@[simp] lemma injOn_pair {b : α} : InjOn f {a, b} ↔ f a = f b → a = b 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {a b : α}
Goal: Set.InjOn f {a, b} ↔ f a = f b → a = b
-- Set.InjOn.eq_iff
theorem InjOn.eq_iff {x y} (h : InjOn f s) (hx : x ∈ s) (hy : y ∈ s) : f x = f y ↔ x = y 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β} {x y : α} (h : Set.InjOn f s) (hx : x ∈ s) (hy : y ∈ s)
Goal: f x = f y ↔ x = y
-- Set.InjOn.ne_iff
theorem InjOn.ne_iff {x y} (h : InjOn f s) (hx : x ∈ s) (hy : y ∈ s) : f x ≠ f y ↔ x ≠ y 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β} {x y : α} (h : Set.InjOn f s) (hx : x ∈ s) (hy : y ∈ s)
Goal: f x ≠ f y ↔ x ≠ y
-- Set.InjOn.congr
theorem InjOn.congr (h₁ : InjOn f₁ s) (h : EqOn f₁ f₂ s) : InjOn f₂ s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f₁ f₂ : α → β} (h₁ : Set.InjOn f₁ s) (h : Set.EqOn f₁ f₂ s)
Goal: Set.InjOn f₂ s
-- Set.EqOn.injOn_iff
theorem EqOn.injOn_iff (H : EqOn f₁ f₂ s) : InjOn f₁ s ↔ InjOn f₂ s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f₁ f₂ : α → β} (H : Set.EqOn f₁ f₂ s)
Goal: Set.InjOn f₁ s ↔ Set.InjOn f₂ s
-- Set.InjOn.mono
theorem InjOn.mono (h : s₁ ⊆ s₂) (ht : InjOn f s₂) : InjOn f s₁ 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {f : α → β} (h : s₁ ⊆ s₂) (ht : Set.InjOn f s₂)
Goal: Set.InjOn f s₁
-- Set.injOn_union
theorem injOn_union (h : Disjoint s₁ s₂) :
    InjOn f (s₁ ∪ s₂) ↔ InjOn f s₁ ∧ InjOn f s₂ ∧ ∀ x ∈ s₁, ∀ y ∈ s₂, f x ≠ f y 
Arguments: {α : Type u_1} {β : Type u_2} {s₁ s₂ : Set α} {f : α → β} (h : Disjoint s₁ s₂)
Goal: Set.InjOn f (s₁ ∪ s₂) ↔ Set.InjOn f s₁ ∧ Set.InjOn f s₂ ∧ ∀ x ∈ s₁, ∀ y ∈ s₂, f x ≠ f y
-- Set.injOn_insert
theorem injOn_insert {f : α → β} {s : Set α} {a : α} (has : a ∉ s) :
    Set.InjOn f (insert a s) ↔ Set.InjOn f s ∧ f a ∉ f '' s 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {s : Set α} {a : α} (has : a ∉ s)
Goal: Set.InjOn f (insert a s) ↔ Set.InjOn f s ∧ f a ∉ f '' s
-- Set.injective_iff_injOn_univ
theorem injective_iff_injOn_univ : Injective f ↔ InjOn f univ 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β}
Goal: Function.Injective f ↔ Set.InjOn f Set.univ
-- Set.injOn_of_injective
theorem injOn_of_injective (h : Injective f) {s : Set α} : InjOn f s 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} (h : Function.Injective f) {s : Set α}
Goal: Set.InjOn f s
-- Set.injOn_subtype_val
theorem injOn_subtype_val {s : Set { x // p x }} : Set.InjOn Subtype.val s 
Arguments: {γ : Type u_3} {p : Set γ} {s : Set { x // p x }}
Goal: Set.InjOn Subtype.val s
-- Set.injOn_id
lemma injOn_id (s : Set α) : InjOn id s 
Arguments: {α : Type u_1} (s : Set α)
Goal: Set.InjOn id s
-- Set.InjOn.comp
theorem InjOn.comp (hg : InjOn g t) (hf : InjOn f s) (h : MapsTo f s t) : InjOn (g ∘ f) s 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {s : Set α} {t : Set β} {f : α → β} {g : β → γ} (hg : Set.InjOn g t) (hf : Set.InjOn f s) (h : Set.MapsTo f s t)
Goal: Set.InjOn (g ∘ f) s
-- Set.InjOn.image_of_comp
lemma InjOn.image_of_comp (h : InjOn (g ∘ f) s) : InjOn g (f '' s) 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {s : Set α} {f : α → β} {g : β → γ} (h : Set.InjOn (g ∘ f) s)
Goal: Set.InjOn g (f '' s)
-- Set.InjOn.iterate
lemma InjOn.iterate {f : α → α} {s : Set α} (h : InjOn f s) (hf : MapsTo f s s) :
    ∀ n, InjOn f^[n] s
  
Arguments: {α : Type u_1} {f : α → α} {s : Set α} (h : Set.InjOn f s) (hf : Set.MapsTo f s s) (n : ℕ)
Goal: Set.InjOn f^[n] s
-- Set.injOn_of_subsingleton
lemma injOn_of_subsingleton [Subsingleton α] (f : α → β) (s : Set α) : InjOn f s 
Arguments: {α : Type u_1} {β : Type u_2} [Subsingleton α] (f : α → β) (s : Set α)
Goal: Set.InjOn f s
-- Function.Injective.injOn_range
theorem _root_.Function.Injective.injOn_range (h : Injective (g ∘ f)) : InjOn g (range f) 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {g : β → γ} (h : Function.Injective (g ∘ f))
Goal: Set.InjOn g (Set.range f)
-- Set.injOn_iff_injective
theorem injOn_iff_injective : InjOn f s ↔ Injective (s.restrict f) 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {f : α → β}
Goal: Set.InjOn f s ↔ Function.Injective (s.restrict f)
-- Set.MapsTo.restrict_inj
theorem MapsTo.restrict_inj (h : MapsTo f s t) : Injective (h.restrict f s t) ↔ InjOn f s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {f : α → β} (h : Set.MapsTo f s t)
Goal: Function.Injective (Set.MapsTo.restrict f s t h) ↔ Set.InjOn f s
-- Set.exists_injOn_iff_injective
theorem exists_injOn_iff_injective [Nonempty β] :
    (∃ f : α → β, InjOn f s) ↔ ∃ f : s → β, Injective f 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} [Nonempty β]
Goal: (∃ f, Set.InjOn f s) ↔ ∃ f, Function.Injective f
-- Set.injOn_preimage
theorem injOn_preimage {B : Set (Set β)} (hB : B ⊆ 𝒫 range f) : InjOn (preimage f) B 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {B : Set (Set β)} (hB : B ⊆ 𝒫 Set.range f)
Goal: Set.InjOn (Set.preimage f) B
-- Set.InjOn.mem_of_mem_image
theorem InjOn.mem_of_mem_image {x} (hf : InjOn f s) (hs : s₁ ⊆ s) (h : x ∈ s) (h₁ : f x ∈ f '' s₁) :
    x ∈ s₁ 
Arguments: {α : Type u_1} {β : Type u_2} {s s₁ : Set α} {f : α → β} {x : α} (hf : Set.InjOn f s) (hs : s₁ ⊆ s) (h : x ∈ s) (h₁ : f x ∈ f '' s₁)
Goal: x ∈ s₁
-- Set.InjOn.mem_image_iff
theorem InjOn.mem_image_iff {x} (hf : InjOn f s) (hs : s₁ ⊆ s) (hx : x ∈ s) :
    f x ∈ f '' s₁ ↔ x ∈ s₁ 
Arguments: {α : Type u_1} {β : Type u_2} {s s₁ : Set α} {f : α → β} {x : α} (hf : Set.InjOn f s) (hs : s₁ ⊆ s) (hx : x ∈ s)
Goal: f x ∈ f '' s₁ ↔ x ∈ s₁
-- Set.InjOn.preimage_image_inter
theorem InjOn.preimage_image_inter (hf : InjOn f s) (hs : s₁ ⊆ s) : f ⁻¹' (f '' s₁) ∩ s = s₁ 
Arguments: {α : Type u_1} {β : Type u_2} {s s₁ : Set α} {f : α → β} (hf : Set.InjOn f s) (hs : s₁ ⊆ s)
Goal: f ⁻¹' (f '' s₁) ∩ s = s₁
-- Set.EqOn.cancel_left
theorem EqOn.cancel_left (h : s.EqOn (g ∘ f₁) (g ∘ f₂)) (hg : t.InjOn g) (hf₁ : s.MapsTo f₁ t)
    (hf₂ : s.MapsTo f₂ t) : s.EqOn f₁ f₂ 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {s : Set α} {t : Set β} {f₁ f₂ : α → β} {g : β → γ} (h : Set.EqOn (g ∘ f₁) (g ∘ f₂) s) (hg : Set.InjOn g t) (hf₁ : Set.MapsTo f₁ s t) (hf₂ : Set.MapsTo f₂ s t)
Goal: Set.EqOn f₁ f₂ s
-- Set.InjOn.cancel_left
theorem InjOn.cancel_left (hg : t.InjOn g) (hf₁ : s.MapsTo f₁ t) (hf₂ : s.MapsTo f₂ t) :
    s.EqOn (g ∘ f₁) (g ∘ f₂) ↔ s.EqOn f₁ f₂ 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {s : Set α} {t : Set β} {f₁ f₂ : α → β} {g : β → γ} (hg : Set.InjOn g t) (hf₁ : Set.MapsTo f₁ s t) (hf₂ : Set.MapsTo f₂ s t)
Goal: Set.EqOn (g ∘ f₁) (g ∘ f₂) s ↔ Set.EqOn f₁ f₂ s