ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Set.injective_piecewise_iff
theorem injective_piecewise_iff {f g : α → β} :
    Injective (s.piecewise f g) ↔
      InjOn f s ∧ InjOn g sᶜ ∧ ∀ x ∈ s, ∀ y ∉ s, f x ≠ g y 
Arguments: {α : Type u_1} {β : Type u_2} (s : Set α) [(j : α) → Decidable (j ∈ s)] {f g : α → β}
Goal: Function.Injective (s.piecewise f g) ↔ Set.InjOn f s ∧ Set.InjOn g sᶜ ∧ ∀ x ∈ s, ∀ y ∉ s, f x ≠ g y
-- Set.piecewise_mem_pi
theorem piecewise_mem_pi {δ : α → Type*} {t : Set α} {t' : ∀ i, Set (δ i)} {f g} (hf : f ∈ pi t t')
    (hg : g ∈ pi t t') : s.piecewise f g ∈ pi t t' 
Arguments: {α : Type u_1} (s : Set α) [(j : α) → Decidable (j ∈ s)] {δ : α → Type u_7} {t : Set α} {t' : (i : α) → Set (δ i)} {f g : (i : α) → δ i} (hf : f ∈ t.pi t') (hg : g ∈ t.pi t')
Goal: s.piecewise f g ∈ t.pi t'
-- Set.pi_piecewise
@[simp]
theorem pi_piecewise {ι : Type*} {α : ι → Type*} (s s' : Set ι) (t t' : ∀ i, Set (α i))
    [∀ x, Decidable (x ∈ s')] : pi s (s'.piecewise t t') = pi (s ∩ s') t ∩ pi (s \ s') t' 
Arguments: {ι : Type u_7} {α : ι → Type u_8} (s s' : Set ι) (t t' : (i : ι) → Set (α i)) [(x : ι) → Decidable (x ∈ s')]
Goal: s.pi (s'.piecewise t t') = (s ∩ s').pi t ∩ (s \ s').pi t'
-- Set.univ_pi_piecewise
theorem univ_pi_piecewise {ι : Type*} {α : ι → Type*} (s : Set ι) (t t' : ∀ i, Set (α i))
    [∀ x, Decidable (x ∈ s)] : pi univ (s.piecewise t t') = pi s t ∩ pi sᶜ t' 
Arguments: {ι : Type u_7} {α : ι → Type u_8} (s : Set ι) (t t' : (i : ι) → Set (α i)) [(x : ι) → Decidable (x ∈ s)]
Goal: Set.univ.pi (s.piecewise t t') = s.pi t ∩ sᶜ.pi t'
-- Set.univ_pi_piecewise_univ
theorem univ_pi_piecewise_univ {ι : Type*} {α : ι → Type*} (s : Set ι) (t : ∀ i, Set (α i))
    [∀ x, Decidable (x ∈ s)] : pi univ (s.piecewise t fun _ => univ) = pi s t 
Arguments: {ι : Type u_7} {α : ι → Type u_8} (s : Set ι) (t : (i : ι) → Set (α i)) [(x : ι) → Decidable (x ∈ s)]
Goal: Set.univ.pi (s.piecewise t fun x => Set.univ) = s.pi t
-- StrictMonoOn.injOn
theorem StrictMonoOn.injOn [LinearOrder α] [Preorder β] {f : α → β} {s : Set α}
    (H : StrictMonoOn f s) : s.InjOn f 
Arguments: {α : Type u_1} {β : Type u_2} [LinearOrder α] [Preorder β] {f : α → β} {s : Set α} (H : StrictMonoOn f s)
Goal: Set.InjOn f s
-- StrictAntiOn.injOn
theorem StrictAntiOn.injOn [LinearOrder α] [Preorder β] {f : α → β} {s : Set α}
    (H : StrictAntiOn f s) : s.InjOn f 
Arguments: {α : Type u_1} {β : Type u_2} [LinearOrder α] [Preorder β] {f : α → β} {s : Set α} (H : StrictAntiOn f s)
Goal: Set.InjOn f s
-- StrictMonoOn.comp
theorem StrictMonoOn.comp [Preorder α] [Preorder β] [Preorder γ] {g : β → γ} {f : α → β} {s : Set α}
    {t : Set β} (hg : StrictMonoOn g t) (hf : StrictMonoOn f s) (hs : Set.MapsTo f s t) :
    StrictMonoOn (g ∘ f) s 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [Preorder α] [Preorder β] [Preorder γ] {g : β → γ} {f : α → β} {s : Set α} {t : Set β} (hg : StrictMonoOn g t) (hf : StrictMonoOn f s) (hs : Set.MapsTo f s t)
Goal: StrictMonoOn (g ∘ f) s
-- StrictMonoOn.comp_strictAntiOn
theorem StrictMonoOn.comp_strictAntiOn [Preorder α] [Preorder β] [Preorder γ] {g : β → γ}
    {f : α → β} {s : Set α} {t : Set β} (hg : StrictMonoOn g t) (hf : StrictAntiOn f s)
    (hs : Set.MapsTo f s t) : StrictAntiOn (g ∘ f) s 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [Preorder α] [Preorder β] [Preorder γ] {g : β → γ} {f : α → β} {s : Set α} {t : Set β} (hg : StrictMonoOn g t) (hf : StrictAntiOn f s) (hs : Set.MapsTo f s t)
Goal: StrictAntiOn (g ∘ f) s
-- StrictAntiOn.comp
theorem StrictAntiOn.comp [Preorder α] [Preorder β] [Preorder γ] {g : β → γ} {f : α → β} {s : Set α}
    {t : Set β} (hg : StrictAntiOn g t) (hf : StrictAntiOn f s) (hs : Set.MapsTo f s t) :
    StrictMonoOn (g ∘ f) s 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [Preorder α] [Preorder β] [Preorder γ] {g : β → γ} {f : α → β} {s : Set α} {t : Set β} (hg : StrictAntiOn g t) (hf : StrictAntiOn f s) (hs : Set.MapsTo f s t)
Goal: StrictMonoOn (g ∘ f) s
-- StrictAntiOn.comp_strictMonoOn
theorem StrictAntiOn.comp_strictMonoOn [Preorder α] [Preorder β] [Preorder γ] {g : β → γ}
    {f : α → β} {s : Set α} {t : Set β} (hg : StrictAntiOn g t) (hf : StrictMonoOn f s)
    (hs : Set.MapsTo f s t) : StrictAntiOn (g ∘ f) s 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [Preorder α] [Preorder β] [Preorder γ] {g : β → γ} {f : α → β} {s : Set α} {t : Set β} (hg : StrictAntiOn g t) (hf : StrictMonoOn f s) (hs : Set.MapsTo f s t)
Goal: StrictAntiOn (g ∘ f) s
-- strictMono_restrict
@[simp]
theorem strictMono_restrict [Preorder α] [Preorder β] {f : α → β} {s : Set α} :
    StrictMono (s.restrict f) ↔ StrictMonoOn f s 
Arguments: {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] {f : α → β} {s : Set α}
Goal: StrictMono (s.restrict f) ↔ StrictMonoOn f s
-- StrictMono.codRestrict
theorem StrictMono.codRestrict [Preorder α] [Preorder β] {f : α → β} (hf : StrictMono f)
    {s : Set β} (hs : ∀ x, f x ∈ s) : StrictMono (Set.codRestrict f s hs) 
Arguments: {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] {f : α → β} (hf : StrictMono f) {s : Set β} (hs : ∀ (x : α), f x ∈ s)
Goal: StrictMono (Set.codRestrict f s hs)
-- Function.Injective.comp_injOn
theorem Injective.comp_injOn (hg : Injective g) (hf : s.InjOn f) : s.InjOn (g ∘ f) 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {g : β → γ} {s : Set α} (hg : Function.Injective g) (hf : Set.InjOn f s)
Goal: Set.InjOn (g ∘ f) s
-- Function.Surjective.surjOn
theorem Surjective.surjOn (hf : Surjective f) (s : Set β) : SurjOn f univ s 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} (hf : Function.Surjective f) (s : Set β)
Goal: Set.SurjOn f Set.univ s
-- Function.LeftInverse.leftInvOn
theorem LeftInverse.leftInvOn {g : β → α} (h : LeftInverse f g) (s : Set β) : LeftInvOn f g s 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {g : β → α} (h : Function.LeftInverse f g) (s : Set β)
Goal: Set.LeftInvOn f g s
-- Function.RightInverse.rightInvOn
theorem RightInverse.rightInvOn {g : β → α} (h : RightInverse f g) (s : Set α) :
    RightInvOn f g s 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {g : β → α} (h : Function.RightInverse f g) (s : Set α)
Goal: Set.RightInvOn f g s
-- Function.LeftInverse.rightInvOn_range
theorem LeftInverse.rightInvOn_range {g : β → α} (h : LeftInverse f g) :
    RightInvOn f g (range g) 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} {g : β → α} (h : Function.LeftInverse f g)
Goal: Set.RightInvOn f g (Set.range g)
-- Function.Semiconj.mapsTo_image
theorem mapsTo_image (h : Semiconj f fa fb) (ha : MapsTo fa s t) : MapsTo fb (f '' s) (f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} {s t : Set α} (h : Function.Semiconj f fa fb) (ha : Set.MapsTo fa s t)
Goal: Set.MapsTo fb (f '' s) (f '' t)
-- Function.Semiconj.mapsTo_range
theorem mapsTo_range (h : Semiconj f fa fb) : MapsTo fb (range f) (range f) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} (h : Function.Semiconj f fa fb)
Goal: Set.MapsTo fb (Set.range f) (Set.range f)
-- Function.Semiconj.surjOn_image
theorem surjOn_image (h : Semiconj f fa fb) (ha : SurjOn fa s t) : SurjOn fb (f '' s) (f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} {s t : Set α} (h : Function.Semiconj f fa fb) (ha : Set.SurjOn fa s t)
Goal: Set.SurjOn fb (f '' s) (f '' t)
-- Function.Semiconj.surjOn_range
theorem surjOn_range (h : Semiconj f fa fb) (ha : Surjective fa) :
    SurjOn fb (range f) (range f) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} (h : Function.Semiconj f fa fb) (ha : Function.Surjective fa)
Goal: Set.SurjOn fb (Set.range f) (Set.range f)
-- Function.Semiconj.injOn_image
theorem injOn_image (h : Semiconj f fa fb) (ha : InjOn fa s) (hf : InjOn f (fa '' s)) :
    InjOn fb (f '' s) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} {s : Set α} (h : Function.Semiconj f fa fb) (ha : Set.InjOn fa s) (hf : Set.InjOn f (fa '' s))
Goal: Set.InjOn fb (f '' s)
-- Function.Semiconj.injOn_range
theorem injOn_range (h : Semiconj f fa fb) (ha : Injective fa) (hf : InjOn f (range fa)) :
    InjOn fb (range f) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} (h : Function.Semiconj f fa fb) (ha : Function.Injective fa) (hf : Set.InjOn f (Set.range fa))
Goal: Set.InjOn fb (Set.range f)
-- Function.Semiconj.bijOn_image
theorem bijOn_image (h : Semiconj f fa fb) (ha : BijOn fa s t) (hf : InjOn f t) :
    BijOn fb (f '' s) (f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} {s t : Set α} (h : Function.Semiconj f fa fb) (ha : Set.BijOn fa s t) (hf : Set.InjOn f t)
Goal: Set.BijOn fb (f '' s) (f '' t)
-- Function.Semiconj.bijOn_range
theorem bijOn_range (h : Semiconj f fa fb) (ha : Bijective fa) (hf : Injective f) :
    BijOn fb (range f) (range f) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} (h : Function.Semiconj f fa fb) (ha : Function.Bijective fa) (hf : Function.Injective f)
Goal: Set.BijOn fb (Set.range f) (Set.range f)
-- Function.Semiconj.mapsTo_preimage
theorem mapsTo_preimage (h : Semiconj f fa fb) {s t : Set β} (hb : MapsTo fb s t) :
    MapsTo fa (f ⁻¹' s) (f ⁻¹' t) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} (h : Function.Semiconj f fa fb) {s t : Set β} (hb : Set.MapsTo fb s t)
Goal: Set.MapsTo fa (f ⁻¹' s) (f ⁻¹' t)
-- Function.Semiconj.injOn_preimage
theorem injOn_preimage (h : Semiconj f fa fb) {s : Set β} (hb : InjOn fb s)
    (hf : InjOn f (f ⁻¹' s)) : InjOn fa (f ⁻¹' s) 
Arguments: {α : Type u_1} {β : Type u_2} {fa : α → α} {fb : β → β} {f : α → β} (h : Function.Semiconj f fa fb) {s : Set β} (hb : Set.InjOn fb s) (hf : Set.InjOn f (f ⁻¹' s))
Goal: Set.InjOn fa (f ⁻¹' s)
-- Function.update_comp_eq_of_not_mem_range'
theorem update_comp_eq_of_not_mem_range' {α : Sort*} {β : Type*} {γ : β → Sort*} [DecidableEq β]
    (g : ∀ b, γ b) {f : α → β} {i : β} (a : γ i) (h : i ∉ Set.range f) :
    (fun j => update g i a (f j)) = fun j => g (f j) 
Arguments: {α : Sort u_6} {β : Type u_7} {γ : β → Sort u_8} [DecidableEq β] (g : (b : β) → γ b) {f : α → β} {i : β} (a : γ i) (h : i ∉ Set.range f)
Goal: (fun j => Function.update g i a (f j)) = fun j => g (f j)
-- Function.update_comp_eq_of_not_mem_range
theorem update_comp_eq_of_not_mem_range {α : Sort*} {β : Type*} {γ : Sort*} [DecidableEq β]
    (g : β → γ) {f : α → β} {i : β} (a : γ) (h : i ∉ Set.range f) : update g i a ∘ f = g ∘ f 
Arguments: {α : Sort u_6} {β : Type u_7} {γ : Sort u_8} [DecidableEq β] (g : β → γ) {f : α → β} {i : β} (a : γ) (h : i ∉ Set.range f)
Goal: Function.update g i a ∘ f = g ∘ f
-- Function.insert_injOn
theorem insert_injOn (s : Set α) : sᶜ.InjOn fun a => insert a s 
Arguments: {α : Type u_1} (s : Set α)
Goal: Set.InjOn (fun a => insert a s) sᶜ
-- Function.monotoneOn_of_rightInvOn_of_mapsTo
theorem monotoneOn_of_rightInvOn_of_mapsTo {α β : Type*} [PartialOrder α] [LinearOrder β]
    {φ : β → α} {ψ : α → β} {t : Set β} {s : Set α} (hφ : MonotoneOn φ t)
    (φψs : Set.RightInvOn ψ φ s) (ψts : Set.MapsTo ψ s t) : MonotoneOn ψ s 
Arguments: {α : Type u_6} {β : Type u_7} [PartialOrder α] [LinearOrder β] {φ : β → α} {ψ : α → β} {t : Set β} {s : Set α} (hφ : MonotoneOn φ t) (φψs : Set.RightInvOn ψ φ s) (ψts : Set.MapsTo ψ s t)
Goal: MonotoneOn ψ s
-- Function.antitoneOn_of_rightInvOn_of_mapsTo
theorem antitoneOn_of_rightInvOn_of_mapsTo [PartialOrder α] [LinearOrder β]
    {φ : β → α} {ψ : α → β} {t : Set β} {s : Set α} (hφ : AntitoneOn φ t)
    (φψs : Set.RightInvOn ψ φ s) (ψts : Set.MapsTo ψ s t) : AntitoneOn ψ s 
Arguments: {α : Type u_1} {β : Type u_2} [PartialOrder α] [LinearOrder β] {φ : β → α} {ψ : α → β} {t : Set β} {s : Set α} (hφ : AntitoneOn φ t) (φψs : Set.RightInvOn ψ φ s) (ψts : Set.MapsTo ψ s t)
Goal: AntitoneOn ψ s
-- Set.MapsTo.extendDomain
protected lemma MapsTo.extendDomain (h : MapsTo g s t) :
    MapsTo (g.extendDomain f) ((↑) ∘ f '' s) ((↑) ∘ f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {p : β → Prop} [DecidablePred p] {f : α ≃ Subtype p} {g : Equiv.Perm α} {s t : Set α} (h : Set.MapsTo (⇑g) s t)
Goal: Set.MapsTo (⇑(g.extendDomain f)) (Subtype.val ∘ ⇑f '' s) (Subtype.val ∘ ⇑f '' t)
-- Set.SurjOn.extendDomain
protected lemma SurjOn.extendDomain (h : SurjOn g s t) :
    SurjOn (g.extendDomain f) ((↑) ∘ f '' s) ((↑) ∘ f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {p : β → Prop} [DecidablePred p] {f : α ≃ Subtype p} {g : Equiv.Perm α} {s t : Set α} (h : Set.SurjOn (⇑g) s t)
Goal: Set.SurjOn (⇑(g.extendDomain f)) (Subtype.val ∘ ⇑f '' s) (Subtype.val ∘ ⇑f '' t)
-- Set.BijOn.extendDomain
protected lemma BijOn.extendDomain (h : BijOn g s t) :
    BijOn (g.extendDomain f) ((↑) ∘ f '' s) ((↑) ∘ f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {p : β → Prop} [DecidablePred p] {f : α ≃ Subtype p} {g : Equiv.Perm α} {s t : Set α} (h : Set.BijOn (⇑g) s t)
Goal: Set.BijOn (⇑(g.extendDomain f)) (Subtype.val ∘ ⇑f '' s) (Subtype.val ∘ ⇑f '' t)
-- Set.LeftInvOn.extendDomain
protected lemma LeftInvOn.extendDomain (h : LeftInvOn g₁ g₂ s) :
    LeftInvOn (g₁.extendDomain f) (g₂.extendDomain f) ((↑) ∘ f '' s) 
Arguments: {α : Type u_1} {β : Type u_2} {p : β → Prop} [DecidablePred p] {f : α ≃ Subtype p} {g₁ g₂ : Equiv.Perm α} {s : Set α} (h : Set.LeftInvOn (⇑g₁) (⇑g₂) s)
Goal: Set.LeftInvOn (⇑(g₁.extendDomain f)) (⇑(g₂.extendDomain f)) (Subtype.val ∘ ⇑f '' s)
-- Set.RightInvOn.extendDomain
protected lemma RightInvOn.extendDomain (h : RightInvOn g₁ g₂ t) :
    RightInvOn (g₁.extendDomain f) (g₂.extendDomain f) ((↑) ∘ f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {p : β → Prop} [DecidablePred p] {f : α ≃ Subtype p} {g₁ g₂ : Equiv.Perm α} {t : Set α} (h : Set.RightInvOn (⇑g₁) (⇑g₂) t)
Goal: Set.RightInvOn (⇑(g₁.extendDomain f)) (⇑(g₂.extendDomain f)) (Subtype.val ∘ ⇑f '' t)
-- Set.InvOn.extendDomain
protected lemma InvOn.extendDomain (h : InvOn g₁ g₂ s t) :
    InvOn (g₁.extendDomain f) (g₂.extendDomain f) ((↑) ∘ f '' s) ((↑) ∘ f '' t) 
Arguments: {α : Type u_1} {β : Type u_2} {p : β → Prop} [DecidablePred p] {f : α ≃ Subtype p} {g₁ g₂ : Equiv.Perm α} {s t : Set α} (h : Set.InvOn (⇑g₁) (⇑g₂) s t)
Goal: Set.InvOn (⇑(g₁.extendDomain f)) (⇑(g₂.extendDomain f)) (Subtype.val ∘ ⇑f '' s) (Subtype.val ∘ ⇑f '' t)
-- Set.InjOn.prodMap
lemma InjOn.prodMap (h₁ : s₁.InjOn f₁) (h₂ : s₂.InjOn f₂) :
    (s₁ ×ˢ s₂).InjOn fun x ↦ (f₁ x.1, f₂ x.2) 
Arguments: {α₁ : Type u_6} {α₂ : Type u_7} {β₁ : Type u_8} {β₂ : Type u_9} {s₁ : Set α₁} {s₂ : Set α₂} {f₁ : α₁ → β₁} {f₂ : α₂ → β₂} (h₁ : Set.InjOn f₁ s₁) (h₂ : Set.InjOn f₂ s₂)
Goal: Set.InjOn (fun x => (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂)
-- Set.SurjOn.prodMap
lemma SurjOn.prodMap (h₁ : SurjOn f₁ s₁ t₁) (h₂ : SurjOn f₂ s₂ t₂) :
    SurjOn (fun x ↦ (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂) 
Arguments: {α₁ : Type u_6} {α₂ : Type u_7} {β₁ : Type u_8} {β₂ : Type u_9} {s₁ : Set α₁} {s₂ : Set α₂} {t₁ : Set β₁} {t₂ : Set β₂} {f₁ : α₁ → β₁} {f₂ : α₂ → β₂} (h₁ : Set.SurjOn f₁ s₁ t₁) (h₂ : Set.SurjOn f₂ s₂ t₂)
Goal: Set.SurjOn (fun x => (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂)
-- Set.MapsTo.prodMap
lemma MapsTo.prodMap (h₁ : MapsTo f₁ s₁ t₁) (h₂ : MapsTo f₂ s₂ t₂) :
    MapsTo (fun x ↦ (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂) 
Arguments: {α₁ : Type u_6} {α₂ : Type u_7} {β₁ : Type u_8} {β₂ : Type u_9} {s₁ : Set α₁} {s₂ : Set α₂} {t₁ : Set β₁} {t₂ : Set β₂} {f₁ : α₁ → β₁} {f₂ : α₂ → β₂} (h₁ : Set.MapsTo f₁ s₁ t₁) (h₂ : Set.MapsTo f₂ s₂ t₂)
Goal: Set.MapsTo (fun x => (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂)
-- Set.BijOn.prodMap
lemma BijOn.prodMap (h₁ : BijOn f₁ s₁ t₁) (h₂ : BijOn f₂ s₂ t₂) :
    BijOn (fun x ↦ (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂) 
Arguments: {α₁ : Type u_6} {α₂ : Type u_7} {β₁ : Type u_8} {β₂ : Type u_9} {s₁ : Set α₁} {s₂ : Set α₂} {t₁ : Set β₁} {t₂ : Set β₂} {f₁ : α₁ → β₁} {f₂ : α₂ → β₂} (h₁ : Set.BijOn f₁ s₁ t₁) (h₂ : Set.BijOn f₂ s₂ t₂)
Goal: Set.BijOn (fun x => (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂)
-- Set.LeftInvOn.prodMap
lemma LeftInvOn.prodMap (h₁ : LeftInvOn g₁ f₁ s₁) (h₂ : LeftInvOn g₂ f₂ s₂) :
    LeftInvOn (fun x ↦ (g₁ x.1, g₂ x.2)) (fun x ↦ (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) 
Arguments: {α₁ : Type u_6} {α₂ : Type u_7} {β₁ : Type u_8} {β₂ : Type u_9} {s₁ : Set α₁} {s₂ : Set α₂} {f₁ : α₁ → β₁} {f₂ : α₂ → β₂} {g₁ : β₁ → α₁} {g₂ : β₂ → α₂} (h₁ : Set.LeftInvOn g₁ f₁ s₁) (h₂ : Set.LeftInvOn g₂ f₂ s₂)
Goal: Set.LeftInvOn (fun x => (g₁ x.1, g₂ x.2)) (fun x => (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂)
-- Set.RightInvOn.prodMap
lemma RightInvOn.prodMap (h₁ : RightInvOn g₁ f₁ t₁) (h₂ : RightInvOn g₂ f₂ t₂) :
    RightInvOn (fun x ↦ (g₁ x.1, g₂ x.2)) (fun x ↦ (f₁ x.1, f₂ x.2)) (t₁ ×ˢ t₂) 
Arguments: {α₁ : Type u_6} {α₂ : Type u_7} {β₁ : Type u_8} {β₂ : Type u_9} {t₁ : Set β₁} {t₂ : Set β₂} {f₁ : α₁ → β₁} {f₂ : α₂ → β₂} {g₁ : β₁ → α₁} {g₂ : β₂ → α₂} (h₁ : Set.RightInvOn g₁ f₁ t₁) (h₂ : Set.RightInvOn g₂ f₂ t₂)
Goal: Set.RightInvOn (fun x => (g₁ x.1, g₂ x.2)) (fun x => (f₁ x.1, f₂ x.2)) (t₁ ×ˢ t₂)
-- Set.InvOn.prodMap
lemma InvOn.prodMap (h₁ : InvOn g₁ f₁ s₁ t₁) (h₂ : InvOn g₂ f₂ s₂ t₂) :
    InvOn (fun x ↦ (g₁ x.1, g₂ x.2)) (fun x ↦ (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂) 
Arguments: {α₁ : Type u_6} {α₂ : Type u_7} {β₁ : Type u_8} {β₂ : Type u_9} {s₁ : Set α₁} {s₂ : Set α₂} {t₁ : Set β₁} {t₂ : Set β₂} {f₁ : α₁ → β₁} {f₂ : α₂ → β₂} {g₁ : β₁ → α₁} {g₂ : β₂ → α₂} (h₁ : Set.InvOn g₁ f₁ s₁ t₁) (h₂ : Set.InvOn g₂ f₂ s₂ t₂)
Goal: Set.InvOn (fun x => (g₁ x.1, g₂ x.2)) (fun x => (f₁ x.1, f₂ x.2)) (s₁ ×ˢ s₂) (t₁ ×ˢ t₂)
-- Equiv.bijOn'
lemma bijOn' (h₁ : MapsTo e s t) (h₂ : MapsTo e.symm t s) : BijOn e s t 
Arguments: {α : Type u_1} {β : Type u_2} (e : α ≃ β) {s : Set α} {t : Set β} (h₁ : Set.MapsTo (⇑e) s t) (h₂ : Set.MapsTo (⇑e.symm) t s)
Goal: Set.BijOn (⇑e) s t
-- Equiv.bijOn
protected lemma bijOn (h : ∀ a, e a ∈ t ↔ a ∈ s) : BijOn e s t 
Arguments: {α : Type u_1} {β : Type u_2} (e : α ≃ β) {s : Set α} {t : Set β} (h : ∀ (a : α), e a ∈ t ↔ a ∈ s)
Goal: Set.BijOn (⇑e) s t
-- Equiv.invOn
lemma invOn : InvOn e e.symm t s 
Arguments: {α : Type u_1} {β : Type u_2} (e : α ≃ β) {s : Set α} {t : Set β}
Goal: Set.InvOn (⇑e) (⇑e.symm) t s
-- Equiv.bijOn_image
lemma bijOn_image : BijOn e s (e '' s) 
Arguments: {α : Type u_1} {β : Type u_2} (e : α ≃ β) {s : Set α}
Goal: Set.BijOn (⇑e) s (⇑e '' s)
-- Equiv.bijOn_symm_image
lemma bijOn_symm_image : BijOn e.symm (e '' s) s 
Arguments: {α : Type u_1} {β : Type u_2} (e : α ≃ β) {s : Set α}
Goal: Set.BijOn (⇑e.symm) (⇑e '' s) s
-- Equiv.bijOn_symm
@[simp] lemma bijOn_symm : BijOn e.symm t s ↔ BijOn e s t 
Arguments: {α : Type u_1} {β : Type u_2} {e : α ≃ β} {s : Set α} {t : Set β}
Goal: Set.BijOn (⇑e.symm) t s ↔ Set.BijOn (⇑e) s t
-- Equiv.bijOn_swap
lemma bijOn_swap (ha : a ∈ s) (hb : b ∈ s) : BijOn (swap a b) s s 
Arguments: {α : Type u_1} {s : Set α} [DecidableEq α] {a b : α} (ha : a ∈ s) (hb : b ∈ s)
Goal: Set.BijOn (⇑(Equiv.swap a b)) s s
-- ENat.iSup_coe_eq_top
lemma iSup_coe_eq_top : ⨆ i, (f i : ℕ∞) = ⊤ ↔ ¬ BddAbove (range f) 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: ⨆ i, ↑(f i) = ⊤ ↔ ¬BddAbove (Set.range f)
-- ENat.iSup_coe_ne_top
lemma iSup_coe_ne_top : ⨆ i, (f i : ℕ∞) ≠ ⊤ ↔ BddAbove (range f) 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: ⨆ i, ↑(f i) ≠ ⊤ ↔ BddAbove (Set.range f)
-- ENat.iSup_coe_lt_top
lemma iSup_coe_lt_top : ⨆ i, (f i : ℕ∞) < ⊤ ↔ BddAbove (range f) 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: ⨆ i, ↑(f i) < ⊤ ↔ BddAbove (Set.range f)
-- ENat.iInf_coe_eq_top
lemma iInf_coe_eq_top : ⨅ i, (f i : ℕ∞) = ⊤ ↔ IsEmpty ι 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: ⨅ i, ↑(f i) = ⊤ ↔ IsEmpty ι
-- ENat.iInf_coe_ne_top
lemma iInf_coe_ne_top : ⨅ i, (f i : ℕ∞) ≠ ⊤ ↔ Nonempty ι 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: ⨅ i, ↑(f i) ≠ ⊤ ↔ Nonempty ι
-- ENat.iInf_coe_lt_top
lemma iInf_coe_lt_top : ⨅ i, (f i : ℕ∞) < ⊤ ↔ Nonempty ι 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: ⨅ i, ↑(f i) < ⊤ ↔ Nonempty ι
-- ENat.coe_sSup
lemma coe_sSup : BddAbove s → ↑(sSup s) = ⨆ a ∈ s, (a : ℕ∞) 
Arguments: {s : Set ℕ}
Goal: BddAbove s → ↑(sSup s) = ⨆ a ∈ s, ↑a
-- ENat.coe_sInf
lemma coe_sInf (hs : s.Nonempty) : ↑(sInf s) = ⨅ a ∈ s, (a : ℕ∞) 
Arguments: {s : Set ℕ} (hs : s.Nonempty)
Goal: ↑(sInf s) = ⨅ a ∈ s, ↑a
-- ENat.coe_iSup
lemma coe_iSup : BddAbove (range f) → ↑(⨆ i, f i) = ⨆ i, (f i : ℕ∞) 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: BddAbove (Set.range f) → ↑(⨆ i, f i) = ⨆ i, ↑(f i)
-- ENat.coe_iInf
@[norm_cast] lemma coe_iInf [Nonempty ι] : ↑(⨅ i, f i) = ⨅ i, (f i : ℕ∞) 
Arguments: {ι : Sort u_1} {f : ι → ℕ} [Nonempty ι]
Goal: ↑(⨅ i, f i) = ⨅ i, ↑(f i)
-- ENat.iInf_eq_top_of_isEmpty
@[simp]
lemma iInf_eq_top_of_isEmpty [IsEmpty ι] : ⨅ i, (f i : ℕ∞) = ⊤ 
Arguments: {ι : Sort u_1} {f : ι → ℕ} [IsEmpty ι]
Goal: ⨅ i, ↑(f i) = ⊤
-- ENat.iInf_toNat
lemma iInf_toNat : (⨅ i, (f i : ℕ∞)).toNat = ⨅ i, f i 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: (⨅ i, ↑(f i)).toNat = ⨅ i, f i
-- ENat.iInf_eq_zero
lemma iInf_eq_zero : ⨅ i, (f i : ℕ∞) = 0 ↔ ∃ i, f i = 0 
Arguments: {ι : Sort u_1} {f : ι → ℕ}
Goal: ⨅ i, ↑(f i) = 0 ↔ ∃ i, f i = 0
-- ENat.sSup_eq_zero
lemma sSup_eq_zero : sSup s = 0 ↔ ∀ a ∈ s, a = 0 
Arguments: {s : Set ℕ∞}
Goal: sSup s = 0 ↔ ∀ a ∈ s, a = 0
-- ENat.sInf_eq_zero
lemma sInf_eq_zero : sInf s = 0 ↔ 0 ∈ s 
Arguments: {s : Set ℕ∞}
Goal: sInf s = 0 ↔ 0 ∈ s
-- ENat.sSup_eq_zero'
lemma sSup_eq_zero' : sSup s = 0 ↔ s = ∅ ∨ s = {0} 
Arguments: {s : Set ℕ∞}
Goal: sSup s = 0 ↔ s = ∅ ∨ s = {0}
-- Ctop.top_mem
structure Ctop (α σ : Type*) where
  f : σ → Set α
  top : α → σ
  top_mem : ∀ x : α, x ∈ f (top x)
  inter : ∀ (a b) (x : α), x ∈ f a ∩ f b → σ
  inter_mem : ∀ a b x h, x ∈ f (inter a b x h)
  inter_sub : ∀ a b x h, f (inter a b x h) ⊆ f a ∩ f b
Arguments: {α : Type u_1} {σ : Type u_2} (self : Ctop α σ) (x : α)
Goal: x ∈ self.f (self.top x)
-- Ctop.inter_mem
structure Ctop (α σ : Type*) where
  f : σ → Set α
  top : α → σ
  top_mem : ∀ x : α, x ∈ f (top x)
  inter : ∀ (a b) (x : α), x ∈ f a ∩ f b → σ
  inter_mem : ∀ a b x h, x ∈ f (inter a b x h)
  inter_sub : ∀ a b x h, f (inter a b x h) ⊆ f a ∩ f b
Arguments: {α : Type u_1} {σ : Type u_2} (self : Ctop α σ) (a b : σ) (x : α) (h : x ∈ self.f a ∩ self.f b)
Goal: x ∈ self.f (self.inter a b x h)
-- Ctop.inter_sub
structure Ctop (α σ : Type*) where
  f : σ → Set α
  top : α → σ
  top_mem : ∀ x : α, x ∈ f (top x)
  inter : ∀ (a b) (x : α), x ∈ f a ∩ f b → σ
  inter_mem : ∀ a b x h, x ∈ f (inter a b x h)
  inter_sub : ∀ a b x h, f (inter a b x h) ⊆ f a ∩ f b
Arguments: {α : Type u_1} {σ : Type u_2} (self : Ctop α σ) (a b : σ) (x : α) (h : x ∈ self.f a ∩ self.f b)
Goal: self.f (self.inter a b x h) ⊆ self.f a ∩ self.f b
-- Ctop.coe_mk
theorem coe_mk (f T h₁ I h₂ h₃ a) : (@Ctop.mk α σ f T h₁ I h₂ h₃) a = f a 
Arguments: {α : Type u_1} {σ : Type u_3} (f : σ → Set α) (T : α → σ) (h₁ : ∀ (x : α), x ∈ f (T x)) (I : (a b : σ) → (x : α) → x ∈ f a ∩ f b → σ) (h₂ : ∀ (a b : σ) (x : α) (h : x ∈ f a ∩ f b), x ∈ f (I a b x h)) (h₃ : ∀ (a b : σ) (x : α) (h : x ∈ f a ∩ f b), f (I a b x h) ⊆ f a ∩ f b) (a : σ)
Goal: { f := f, top := T, top_mem := h₁, inter := I, inter_mem := h₂, inter_sub := h₃ }.f a = f a
-- Ctop.ofEquiv_val
@[simp]
theorem ofEquiv_val (E : σ ≃ τ) (F : Ctop α σ) (a : τ) : F.ofEquiv E a = F (E.symm a) 
Arguments: {α : Type u_1} {σ : Type u_3} {τ : Type u_4} (E : σ ≃ τ) (F : Ctop α σ) (a : τ)
Goal: (Ctop.ofEquiv E F).f a = F.f (E.symm a)
-- Ctop.toTopsp_isTopologicalBasis
theorem toTopsp_isTopologicalBasis (F : Ctop α σ) :
    @TopologicalSpace.IsTopologicalBasis _ F.toTopsp (Set.range F.f) 
Arguments: {α : Type u_1} {σ : Type u_3} (F : Ctop α σ)
Goal: TopologicalSpace.IsTopologicalBasis (Set.range F.f)
-- Ctop.mem_nhds_toTopsp
@[simp]
theorem mem_nhds_toTopsp (F : Ctop α σ) {s : Set α} {a : α} :
    s ∈ @nhds _ F.toTopsp a ↔ ∃ b, a ∈ F b ∧ F b ⊆ s 
Arguments: {α : Type u_1} {σ : Type u_3} (F : Ctop α σ) {s : Set α} {a : α}
Goal: s ∈ 𝓝 a ↔ ∃ b, a ∈ F.f b ∧ F.f b ⊆ s
-- Ctop.Realizer.eq
structure Ctop.Realizer (α) [T : TopologicalSpace α] where
  σ : Type*
  F : Ctop α σ
  eq : F.toTopsp = T
Arguments: {α : Type u_6} [T : TopologicalSpace α] (self : Ctop.Realizer α)
Goal: self.F.toTopsp = T
-- Ctop.Realizer.is_basis
protected theorem is_basis [T : TopologicalSpace α] (F : Realizer α) :
    TopologicalSpace.IsTopologicalBasis (Set.range F.F.f) 
Arguments: {α : Type u_1} [T : TopologicalSpace α] (F : Ctop.Realizer α)
Goal: TopologicalSpace.IsTopologicalBasis (Set.range F.F.f)