ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subsemiring.subset_closure
@[simp, aesop safe 20 apply (rule_sets := [SetLike])]
theorem subset_closure {s : Set R} : s ⊆ closure s 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R}
Goal: s ⊆ ↑(Subsemiring.closure s)
-- Subsemiring.not_mem_of_not_mem_closure
theorem not_mem_of_not_mem_closure {s : Set R} {P : R} (hP : P ∉ closure s) : P ∉ s 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R} {P : R} (hP : P ∉ Subsemiring.closure s)
Goal: P ∉ s
-- Subsemiring.closure_le
@[simp]
theorem closure_le {s : Set R} {t : Subsemiring R} : closure s ≤ t ↔ s ⊆ t 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R} {t : Subsemiring R}
Goal: Subsemiring.closure s ≤ t ↔ s ⊆ ↑t
-- Subsemiring.closure_mono
theorem closure_mono ⦃s t : Set R⦄ (h : s ⊆ t) : closure s ≤ closure t 
Arguments: {R : Type u} [NonAssocSemiring R] ⦃s t : Set R⦄ (h : s ⊆ t)
Goal: Subsemiring.closure s ≤ Subsemiring.closure t
-- Subsemiring.closure_eq_of_le
theorem closure_eq_of_le {s : Set R} {t : Subsemiring R} (h₁ : s ⊆ t) (h₂ : t ≤ closure s) :
    closure s = t 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R} {t : Subsemiring R} (h₁ : s ⊆ ↑t) (h₂ : t ≤ Subsemiring.closure s)
Goal: Subsemiring.closure s = t
-- Subsemiring.mem_map_equiv
theorem mem_map_equiv {f : R ≃+* S} {K : Subsemiring R} {x : S} :
    x ∈ K.map (f : R →+* S) ↔ f.symm x ∈ K 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {f : R ≃+* S} {K : Subsemiring R} {x : S}
Goal: x ∈ Subsemiring.map (↑f) K ↔ f.symm x ∈ K
-- Subsemiring.map_equiv_eq_comap_symm
theorem map_equiv_eq_comap_symm (f : R ≃+* S) (K : Subsemiring R) :
    K.map (f : R →+* S) = K.comap f.symm 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S) (K : Subsemiring R)
Goal: Subsemiring.map (↑f) K = Subsemiring.comap (↑f.symm) K
-- Subsemiring.comap_equiv_eq_map_symm
theorem comap_equiv_eq_map_symm (f : R ≃+* S) (K : Subsemiring S) :
    K.comap (f : R →+* S) = K.map f.symm 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S) (K : Subsemiring S)
Goal: Subsemiring.comap (↑f) K = Subsemiring.map (↑f.symm) K
-- Submonoid.subsemiringClosure_coe
theorem subsemiringClosure_coe :
    (M.subsemiringClosure : Set R) = AddSubmonoid.closure (M : Set R) 
Arguments: {R : Type u} [NonAssocSemiring R] (M : Submonoid R)
Goal: ↑M.subsemiringClosure = ↑(AddSubmonoid.closure ↑M)
-- Submonoid.subsemiringClosure_toAddSubmonoid
theorem subsemiringClosure_toAddSubmonoid :
    M.subsemiringClosure.toAddSubmonoid = AddSubmonoid.closure (M : Set R) 
Arguments: {R : Type u} [NonAssocSemiring R] (M : Submonoid R)
Goal: M.subsemiringClosure.toAddSubmonoid = AddSubmonoid.closure ↑M
-- Submonoid.subsemiringClosure_eq_closure
theorem subsemiringClosure_eq_closure : M.subsemiringClosure = Subsemiring.closure (M : Set R) 
Arguments: {R : Type u} [NonAssocSemiring R] (M : Submonoid R)
Goal: M.subsemiringClosure = Subsemiring.closure ↑M
-- Subsemiring.closure_submonoid_closure
@[simp]
theorem closure_submonoid_closure (s : Set R) : closure ↑(Submonoid.closure s) = closure s 
Arguments: {R : Type u} [NonAssocSemiring R] (s : Set R)
Goal: Subsemiring.closure ↑(Submonoid.closure s) = Subsemiring.closure s
-- Subsemiring.coe_closure_eq
theorem coe_closure_eq (s : Set R) :
    (closure s : Set R) = AddSubmonoid.closure (Submonoid.closure s : Set R) 
Arguments: {R : Type u} [NonAssocSemiring R] (s : Set R)
Goal: ↑(Subsemiring.closure s) = ↑(AddSubmonoid.closure ↑(Submonoid.closure s))
-- Subsemiring.mem_closure_iff
theorem mem_closure_iff {s : Set R} {x} :
    x ∈ closure s ↔ x ∈ AddSubmonoid.closure (Submonoid.closure s : Set R) 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R} {x : R}
Goal: x ∈ Subsemiring.closure s ↔ x ∈ AddSubmonoid.closure ↑(Submonoid.closure s)
-- Subsemiring.closure_addSubmonoid_closure
@[simp]
theorem closure_addSubmonoid_closure {s : Set R} :
    closure ↑(AddSubmonoid.closure s) = closure s 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R}
Goal: Subsemiring.closure ↑(AddSubmonoid.closure s) = Subsemiring.closure s
-- Subsemiring.closure_induction
@[elab_as_elim]
theorem closure_induction {s : Set R} {p : R → Prop} {x} (h : x ∈ closure s) (mem : ∀ x ∈ s, p x)
    (zero : p 0) (one : p 1) (add : ∀ x y, p x → p y → p (x + y))
    (mul : ∀ x y, p x → p y → p (x * y)) : p x 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R} {p : R → Prop} {x : R} (h : x ∈ Subsemiring.closure s) (mem : ∀ x ∈ s, p x) (zero : p 0) (one : p 1) (add : ∀ (x y : R), p x → p y → p (x + y)) (mul : ∀ (x y : R), p x → p y → p (x * y))
Goal: p x
-- Subsemiring.closure_induction'
@[elab_as_elim]
theorem closure_induction' {s : Set R} {p : ∀ x, x ∈ closure s → Prop}
    (mem : ∀ (x) (h : x ∈ s), p x (subset_closure h))
    (zero : p 0 (zero_mem _)) (one : p 1 (one_mem _))
    (add : ∀ x hx y hy, p x hx → p y hy → p (x + y) (add_mem hx hy))
    (mul : ∀ x hx y hy, p x hx → p y hy → p (x * y) (mul_mem hx hy))
    {a : R} (ha : a ∈ closure s) : p a ha 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R} {p : (x : R) → x ∈ Subsemiring.closure s → Prop} (mem : ∀ (x : R) (h : x ∈ s), p x ⋯) (zero : p 0 ⋯) (one : p 1 ⋯) (add :
  ∀ (x : R) (hx : x ∈ Subsemiring.closure s) (y : R) (hy : y ∈ Subsemiring.closure s), p x hx → p y hy → p (x + y) ⋯) (mul :
  ∀ (x : R) (hx : x ∈ Subsemiring.closure s) (y : R) (hy : y ∈ Subsemiring.closure s), p x hx → p y hy → p (x * y) ⋯) {a : R} (ha : a ∈ Subsemiring.closure s)
Goal: p a ha
-- Subsemiring.closure_induction₂
@[elab_as_elim]
theorem closure_induction₂ {s : Set R} {p : R → R → Prop} {x} {y : R} (hx : x ∈ closure s)
    (hy : y ∈ closure s) (Hs : ∀ x ∈ s, ∀ y ∈ s, p x y) (H0_left : ∀ x, p 0 x)
    (H0_right : ∀ x, p x 0) (H1_left : ∀ x, p 1 x) (H1_right : ∀ x, p x 1)
    (Hadd_left : ∀ x₁ x₂ y, p x₁ y → p x₂ y → p (x₁ + x₂) y)
    (Hadd_right : ∀ x y₁ y₂, p x y₁ → p x y₂ → p x (y₁ + y₂))
    (Hmul_left : ∀ x₁ x₂ y, p x₁ y → p x₂ y → p (x₁ * x₂) y)
    (Hmul_right : ∀ x y₁ y₂, p x y₁ → p x y₂ → p x (y₁ * y₂)) : p x y 
Arguments: {R : Type u} [NonAssocSemiring R] {s : Set R} {p : R → R → Prop} {x y : R} (hx : x ∈ Subsemiring.closure s) (hy : y ∈ Subsemiring.closure s) (Hs : ∀ x ∈ s, ∀ y ∈ s, p x y) (H0_left : ∀ (x : R), p 0 x) (H0_right : ∀ (x : R), p x 0) (H1_left : ∀ (x : R), p 1 x) (H1_right : ∀ (x : R), p x 1) (Hadd_left : ∀ (x₁ x₂ y : R), p x₁ y → p x₂ y → p (x₁ + x₂) y) (Hadd_right : ∀ (x y₁ y₂ : R), p x y₁ → p x y₂ → p x (y₁ + y₂)) (Hmul_left : ∀ (x₁ x₂ y : R), p x₁ y → p x₂ y → p (x₁ * x₂) y) (Hmul_right : ∀ (x y₁ y₂ : R), p x y₁ → p x y₂ → p x (y₁ * y₂))
Goal: p x y
-- Subsemiring.mem_closure_iff_exists_list
theorem mem_closure_iff_exists_list {R} [Semiring R] {s : Set R} {x} :
    x ∈ closure s ↔ ∃ L : List (List R), (∀ t ∈ L, ∀ y ∈ t, y ∈ s) ∧ (L.map List.prod).sum = x 
Arguments: {R : Type u_1} [Semiring R] {s : Set R} {x : R}
Goal: x ∈ Subsemiring.closure s ↔ ∃ L, (∀ t ∈ L, ∀ y ∈ t, y ∈ s) ∧ (List.map List.prod L).sum = x
-- Subsemiring.closure_eq
theorem closure_eq (s : Subsemiring R) : closure (s : Set R) = s 
Arguments: {R : Type u} [NonAssocSemiring R] (s : Subsemiring R)
Goal: Subsemiring.closure ↑s = s
-- Subsemiring.closure_empty
@[simp]
theorem closure_empty : closure (∅ : Set R) = ⊥ 
Arguments: {R : Type u} [NonAssocSemiring R]
Goal: Subsemiring.closure ∅ = ⊥
-- Subsemiring.closure_univ
@[simp]
theorem closure_univ : closure (Set.univ : Set R) = ⊤ 
Arguments: {R : Type u} [NonAssocSemiring R]
Goal: Subsemiring.closure Set.univ = ⊤
-- Subsemiring.closure_union
theorem closure_union (s t : Set R) : closure (s ∪ t) = closure s ⊔ closure t 
Arguments: {R : Type u} [NonAssocSemiring R] (s t : Set R)
Goal: Subsemiring.closure (s ∪ t) = Subsemiring.closure s ⊔ Subsemiring.closure t
-- Subsemiring.closure_iUnion
theorem closure_iUnion {ι} (s : ι → Set R) : closure (⋃ i, s i) = ⨆ i, closure (s i) 
Arguments: {R : Type u} [NonAssocSemiring R] {ι : Sort u_1} (s : ι → Set R)
Goal: Subsemiring.closure (⋃ i, s i) = ⨆ i, Subsemiring.closure (s i)
-- Subsemiring.closure_sUnion
theorem closure_sUnion (s : Set (Set R)) : closure (⋃₀ s) = ⨆ t ∈ s, closure t 
Arguments: {R : Type u} [NonAssocSemiring R] (s : Set (Set R))
Goal: Subsemiring.closure (⋃₀ s) = ⨆ t ∈ s, Subsemiring.closure t
-- Subsemiring.map_sup
theorem map_sup (s t : Subsemiring R) (f : R →+* S) : (s ⊔ t).map f = s.map f ⊔ t.map f 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (s t : Subsemiring R) (f : R →+* S)
Goal: Subsemiring.map f (s ⊔ t) = Subsemiring.map f s ⊔ Subsemiring.map f t
-- Subsemiring.map_iSup
theorem map_iSup {ι : Sort*} (f : R →+* S) (s : ι → Subsemiring R) :
    (iSup s).map f = ⨆ i, (s i).map f 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {ι : Sort u_1} (f : R →+* S) (s : ι → Subsemiring R)
Goal: Subsemiring.map f (iSup s) = ⨆ i, Subsemiring.map f (s i)
-- Subsemiring.comap_inf
theorem comap_inf (s t : Subsemiring S) (f : R →+* S) : (s ⊓ t).comap f = s.comap f ⊓ t.comap f 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (s t : Subsemiring S) (f : R →+* S)
Goal: Subsemiring.comap f (s ⊓ t) = Subsemiring.comap f s ⊓ Subsemiring.comap f t
-- Subsemiring.comap_iInf
theorem comap_iInf {ι : Sort*} (f : R →+* S) (s : ι → Subsemiring S) :
    (iInf s).comap f = ⨅ i, (s i).comap f 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {ι : Sort u_1} (f : R →+* S) (s : ι → Subsemiring S)
Goal: Subsemiring.comap f (iInf s) = ⨅ i, Subsemiring.comap f (s i)
-- Subsemiring.map_bot
@[simp]
theorem map_bot (f : R →+* S) : (⊥ : Subsemiring R).map f = ⊥ 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S)
Goal: Subsemiring.map f ⊥ = ⊥
-- Subsemiring.comap_top
@[simp]
theorem comap_top (f : R →+* S) : (⊤ : Subsemiring S).comap f = ⊤ 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S)
Goal: Subsemiring.comap f ⊤ = ⊤
-- Subsemiring.coe_prod
@[norm_cast]
theorem coe_prod (s : Subsemiring R) (t : Subsemiring S) :
    (s.prod t : Set (R × S)) = (s : Set R) ×ˢ (t : Set S) 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (s : Subsemiring R) (t : Subsemiring S)
Goal: ↑(s.prod t) = ↑s ×ˢ ↑t
-- Subsemiring.mem_prod
theorem mem_prod {s : Subsemiring R} {t : Subsemiring S} {p : R × S} :
    p ∈ s.prod t ↔ p.1 ∈ s ∧ p.2 ∈ t 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {s : Subsemiring R} {t : Subsemiring S} {p : R × S}
Goal: p ∈ s.prod t ↔ p.1 ∈ s ∧ p.2 ∈ t
-- Subsemiring.prod_mono
@[mono]
theorem prod_mono ⦃s₁ s₂ : Subsemiring R⦄ (hs : s₁ ≤ s₂) ⦃t₁ t₂ : Subsemiring S⦄ (ht : t₁ ≤ t₂) :
    s₁.prod t₁ ≤ s₂.prod t₂ 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] ⦃s₁ s₂ : Subsemiring R⦄ (hs : s₁ ≤ s₂) ⦃t₁ t₂ : Subsemiring S⦄ (ht : t₁ ≤ t₂)
Goal: s₁.prod t₁ ≤ s₂.prod t₂
-- Subsemiring.prod_mono_right
theorem prod_mono_right (s : Subsemiring R) : Monotone fun t : Subsemiring S => s.prod t 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (s : Subsemiring R)
Goal: Monotone fun t => s.prod t
-- Subsemiring.prod_mono_left
theorem prod_mono_left (t : Subsemiring S) : Monotone fun s : Subsemiring R => s.prod t 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (t : Subsemiring S)
Goal: Monotone fun s => s.prod t
-- Subsemiring.prod_top
theorem prod_top (s : Subsemiring R) : s.prod (⊤ : Subsemiring S) = s.comap (RingHom.fst R S) 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (s : Subsemiring R)
Goal: s.prod ⊤ = Subsemiring.comap (RingHom.fst R S) s
-- Subsemiring.top_prod
theorem top_prod (s : Subsemiring S) : (⊤ : Subsemiring R).prod s = s.comap (RingHom.snd R S) 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (s : Subsemiring S)
Goal: ⊤.prod s = Subsemiring.comap (RingHom.snd R S) s
-- Subsemiring.top_prod_top
@[simp]
theorem top_prod_top : (⊤ : Subsemiring R).prod (⊤ : Subsemiring S) = ⊤ 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: ⊤.prod ⊤ = ⊤
-- Subsemiring.mem_iSup_of_directed
theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {S : ι → Subsemiring R} (hS : Directed (· ≤ ·) S)
    {x : R} : (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i 
Arguments: {R : Type u} [NonAssocSemiring R] {ι : Sort u_1} [hι : Nonempty ι] {S : ι → Subsemiring R} (hS : Directed (fun x x_1 => x ≤ x_1) S) {x : R}
Goal: x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
-- Subsemiring.coe_iSup_of_directed
theorem coe_iSup_of_directed {ι} [hι : Nonempty ι] {S : ι → Subsemiring R}
    (hS : Directed (· ≤ ·) S) : ((⨆ i, S i : Subsemiring R) : Set R) = ⋃ i, S i 
Arguments: {R : Type u} [NonAssocSemiring R] {ι : Sort u_1} [hι : Nonempty ι] {S : ι → Subsemiring R} (hS : Directed (fun x x_1 => x ≤ x_1) S)
Goal: ↑(⨆ i, S i) = ⋃ i, ↑(S i)
-- Subsemiring.mem_sSup_of_directedOn
theorem mem_sSup_of_directedOn {S : Set (Subsemiring R)} (Sne : S.Nonempty)
    (hS : DirectedOn (· ≤ ·) S) {x : R} : x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s 
Arguments: {R : Type u} [NonAssocSemiring R] {S : Set (Subsemiring R)} (Sne : S.Nonempty) (hS : DirectedOn (fun x x_1 => x ≤ x_1) S) {x : R}
Goal: x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
-- Subsemiring.coe_sSup_of_directedOn
theorem coe_sSup_of_directedOn {S : Set (Subsemiring R)} (Sne : S.Nonempty)
    (hS : DirectedOn (· ≤ ·) S) : (↑(sSup S) : Set R) = ⋃ s ∈ S, ↑s 
Arguments: {R : Type u} [NonAssocSemiring R] {S : Set (Subsemiring R)} (Sne : S.Nonempty) (hS : DirectedOn (fun x x_1 => x ≤ x_1) S)
Goal: ↑(sSup S) = ⋃ s ∈ S, ↑s
-- RingHom.restrict_apply
@[simp]
theorem restrict_apply (f : R →+* S) {s : σR} (x : s) : f.domRestrict s x = f x 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {σR : Type u_1} [SetLike σR R] [SubsemiringClass σR R] (f : R →+* S) {s : σR} (x : ↥s)
Goal: (f.domRestrict s) x = f ↑x
-- RingHom.coe_restrict_apply
@[simp]
theorem coe_restrict_apply (f : R →+* S) (s' : σR) (s : σS) (h : ∀ x ∈ s', f x ∈ s) (x : s') :
    (f.restrict s' s h x : S) = f x 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {σR : Type u_1} {σS : Type u_2} [SetLike σR R] [SetLike σS S] [SubsemiringClass σR R] [SubsemiringClass σS S] (f : R →+* S) (s' : σR) (s : σS) (h : ∀ x ∈ s', f x ∈ s) (x : ↥s')
Goal: ↑((f.restrict s' s h) x) = f ↑x
-- RingHom.comp_restrict
@[simp]
theorem comp_restrict (f : R →+* S) (s' : σR) (s : σS) (h : ∀ x ∈ s', f x ∈ s) :
    (SubsemiringClass.subtype s).comp (f.restrict s' s h) = f.comp (SubsemiringClass.subtype s') 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {σR : Type u_1} {σS : Type u_2} [SetLike σR R] [SetLike σS S] [SubsemiringClass σR R] [SubsemiringClass σS S] (f : R →+* S) (s' : σR) (s : σS) (h : ∀ x ∈ s', f x ∈ s)
Goal: (SubsemiringClass.subtype s).comp (f.restrict s' s h) = f.comp (SubsemiringClass.subtype s')
-- RingHom.coe_rangeSRestrict
@[simp]
theorem coe_rangeSRestrict (f : R →+* S) (x : R) : (f.rangeSRestrict x : S) = f x 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (x : R)
Goal: ↑(f.rangeSRestrict x) = f x
-- RingHom.rangeSRestrict_surjective
theorem rangeSRestrict_surjective (f : R →+* S) : Function.Surjective f.rangeSRestrict 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S)
Goal: Function.Surjective ⇑f.rangeSRestrict
-- RingHom.rangeS_top_iff_surjective
theorem rangeS_top_iff_surjective {f : R →+* S} :
    f.rangeS = (⊤ : Subsemiring S) ↔ Function.Surjective f 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {f : R →+* S}
Goal: f.rangeS = ⊤ ↔ Function.Surjective ⇑f
-- RingHom.rangeS_top_of_surjective
@[simp]
theorem rangeS_top_of_surjective (f : R →+* S) (hf : Function.Surjective f) :
    f.rangeS = (⊤ : Subsemiring S) 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (hf : Function.Surjective ⇑f)
Goal: f.rangeS = ⊤
-- RingHom.eqLocusS_same
@[simp]
theorem eqLocusS_same (f : R →+* S) : f.eqLocusS f = ⊤ 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S)
Goal: f.eqLocusS f = ⊤
-- RingHom.eqOn_sclosure
theorem eqOn_sclosure {f g : R →+* S} {s : Set R} (h : Set.EqOn f g s) : Set.EqOn f g (closure s) 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {f g : R →+* S} {s : Set R} (h : Set.EqOn (⇑f) (⇑g) s)
Goal: Set.EqOn ⇑f ⇑g ↑(Subsemiring.closure s)
-- RingHom.eq_of_eqOn_stop
theorem eq_of_eqOn_stop {f g : R →+* S} (h : Set.EqOn f g (⊤ : Subsemiring R)) : f = g 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {f g : R →+* S} (h : Set.EqOn ⇑f ⇑g ↑⊤)
Goal: f = g
-- RingHom.eq_of_eqOn_sdense
theorem eq_of_eqOn_sdense {s : Set R} (hs : closure s = ⊤) {f g : R →+* S} (h : s.EqOn f g) :
    f = g 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {s : Set R} (hs : Subsemiring.closure s = ⊤) {f g : R →+* S} (h : Set.EqOn (⇑f) (⇑g) s)
Goal: f = g
-- RingHom.sclosure_preimage_le
theorem sclosure_preimage_le (f : R →+* S) (s : Set S) : closure (f ⁻¹' s) ≤ (closure s).comap f 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (s : Set S)
Goal: Subsemiring.closure (⇑f ⁻¹' s) ≤ Subsemiring.comap f (Subsemiring.closure s)
-- RingHom.map_closureS
theorem map_closureS (f : R →+* S) (s : Set R) : (closure s).map f = closure (f '' s) 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (s : Set R)
Goal: Subsemiring.map f (Subsemiring.closure s) = Subsemiring.closure (⇑f '' s)
-- Subsemiring.rangeS_subtype
@[simp]
theorem rangeS_subtype (s : Subsemiring R) : s.subtype.rangeS = s 
Arguments: {R : Type u} [NonAssocSemiring R] (s : Subsemiring R)
Goal: s.subtype.rangeS = s
-- Subsemiring.range_fst
@[simp]
theorem range_fst : (fst R S).rangeS = ⊤ 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: (RingHom.fst R S).rangeS = ⊤
-- Subsemiring.range_snd
@[simp]
theorem range_snd : (snd R S).rangeS = ⊤ 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S]
Goal: (RingHom.snd R S).rangeS = ⊤
-- Subsemiring.prod_bot_sup_bot_prod
@[simp]
theorem prod_bot_sup_bot_prod (s : Subsemiring R) (t : Subsemiring S) :
    s.prod ⊥ ⊔ prod ⊥ t = s.prod t 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (s : Subsemiring R) (t : Subsemiring S)
Goal: s.prod ⊥ ⊔ ⊥.prod t = s.prod t
-- RingEquiv.ofLeftInverseS_apply
@[simp]
theorem ofLeftInverseS_apply {g : S → R} {f : R →+* S} (h : Function.LeftInverse g f) (x : R) :
    ↑(ofLeftInverseS h x) = f x 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {g : S → R} {f : R →+* S} (h : Function.LeftInverse g ⇑f) (x : R)
Goal: ↑((RingEquiv.ofLeftInverseS h) x) = f x
-- RingEquiv.ofLeftInverseS_symm_apply
@[simp]
theorem ofLeftInverseS_symm_apply {g : S → R} {f : R →+* S} (h : Function.LeftInverse g f)
    (x : f.rangeS) : (ofLeftInverseS h).symm x = g x 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {g : S → R} {f : R →+* S} (h : Function.LeftInverse g ⇑f) (x : ↥f.rangeS)
Goal: (RingEquiv.ofLeftInverseS h).symm x = g ↑x
-- RingEquiv.subsemiringMap_apply_coe
@[simps!]
def subsemiringMap (e : R ≃+* S) (s : Subsemiring R) : s ≃+* s.map e.toRingHom 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (e : R ≃+* S) (s : Subsemiring R) (x : ↑↑s.toAddSubmonoid)
Goal: ↑((e.subsemiringMap s) x) = e ↑x
-- RingEquiv.subsemiringMap_symm_apply_coe
@[simps!]
def subsemiringMap (e : R ≃+* S) (s : Subsemiring R) : s ≃+* s.map e.toRingHom 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (e : R ≃+* S) (s : Subsemiring R) (y : ↑(⇑↑e.toAddEquiv '' ↑s.toAddSubmonoid))
Goal: ↑((e.subsemiringMap s).symm y) = (↑e).symm ↑y
-- Subsemiring.smul_def
theorem smul_def [SMul R' α] {S : Subsemiring R'} (g : S) (m : α) : g • m = (g : R') • m 
Arguments: {R' : Type u_1} {α : Type u_2} [NonAssocSemiring R'] [SMul R' α] {S : Subsemiring R'} (g : ↥S) (m : α)
Goal: g • m = ↑g • m
-- Subsemiring.map_comap_eq
theorem map_comap_eq (f : R →+* S) (t : Subsemiring S) : (t.comap f).map f = t ⊓ f.rangeS 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (t : Subsemiring S)
Goal: Subsemiring.map f (Subsemiring.comap f t) = t ⊓ f.rangeS
-- Subsemiring.map_comap_eq_self
theorem map_comap_eq_self
    {f : R →+* S} {t : Subsemiring S} (h : t ≤ f.rangeS) : (t.comap f).map f = t 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {f : R →+* S} {t : Subsemiring S} (h : t ≤ f.rangeS)
Goal: Subsemiring.map f (Subsemiring.comap f t) = t
-- Subsemiring.map_comap_eq_self_of_surjective
theorem map_comap_eq_self_of_surjective
    {f : R →+* S} (hf : Function.Surjective f) (t : Subsemiring S) : (t.comap f).map f = t 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {f : R →+* S} (hf : Function.Surjective ⇑f) (t : Subsemiring S)
Goal: Subsemiring.map f (Subsemiring.comap f t) = t
-- Subsemiring.comap_map_eq_self_of_injective
theorem comap_map_eq_self_of_injective
    {f : R →+* S} (hf : Function.Injective f) (s : Subsemiring R) : (s.map f).comap f = s 
Arguments: {R : Type u} {S : Type v} [NonAssocSemiring R] [NonAssocSemiring S] {f : R →+* S} (hf : Function.Injective ⇑f) (s : Subsemiring R)
Goal: Subsemiring.comap f (Subsemiring.map f s) = s
-- IsRelPrime.of_squarefree_mul
theorem IsRelPrime.of_squarefree_mul [CommMonoid R] {m n : R} (h : Squarefree (m * n)) :
    IsRelPrime m n 
Arguments: {R : Type u_1} [CommMonoid R] {m n : R} (h : Squarefree (m * n))
Goal: IsRelPrime m n
-- IsUnit.squarefree
@[simp]
theorem IsUnit.squarefree [CommMonoid R] {x : R} (h : IsUnit x) : Squarefree x 
Arguments: {R : Type u_1} [CommMonoid R] {x : R} (h : IsUnit x)
Goal: Squarefree x
-- squarefree_one
theorem squarefree_one [CommMonoid R] : Squarefree (1 : R) 
Arguments: {R : Type u_1} [CommMonoid R]
Goal: Squarefree 1
-- not_squarefree_zero
@[simp]
theorem not_squarefree_zero [MonoidWithZero R] [Nontrivial R] : ¬Squarefree (0 : R) 
Arguments: {R : Type u_1} [MonoidWithZero R] [Nontrivial R]
Goal: ¬Squarefree 0
-- Squarefree.ne_zero
theorem Squarefree.ne_zero [MonoidWithZero R] [Nontrivial R] {m : R} (hm : Squarefree (m : R)) :
    m ≠ 0 
Arguments: {R : Type u_1} [MonoidWithZero R] [Nontrivial R] {m : R} (hm : Squarefree m)
Goal: m ≠ 0
-- Irreducible.squarefree
@[simp]
theorem Irreducible.squarefree [CommMonoid R] {x : R} (h : Irreducible x) : Squarefree x 
Arguments: {R : Type u_1} [CommMonoid R] {x : R} (h : Irreducible x)
Goal: Squarefree x
-- Prime.squarefree
@[simp]
theorem Prime.squarefree [CancelCommMonoidWithZero R] {x : R} (h : Prime x) : Squarefree x 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x : R} (h : Prime x)
Goal: Squarefree x
-- Squarefree.of_mul_left
theorem Squarefree.of_mul_left [CommMonoid R] {m n : R} (hmn : Squarefree (m * n)) : Squarefree m 
Arguments: {R : Type u_1} [CommMonoid R] {m n : R} (hmn : Squarefree (m * n))
Goal: Squarefree m
-- Squarefree.of_mul_right
theorem Squarefree.of_mul_right [CommMonoid R] {m n : R} (hmn : Squarefree (m * n)) :
    Squarefree n 
Arguments: {R : Type u_1} [CommMonoid R] {m n : R} (hmn : Squarefree (m * n))
Goal: Squarefree n
-- Squarefree.squarefree_of_dvd
theorem Squarefree.squarefree_of_dvd [CommMonoid R] {x y : R} (hdvd : x ∣ y) (hsq : Squarefree y) :
    Squarefree x 
Arguments: {R : Type u_1} [CommMonoid R] {x y : R} (hdvd : x ∣ y) (hsq : Squarefree y)
Goal: Squarefree x
-- Squarefree.eq_zero_or_one_of_pow_of_not_isUnit
theorem Squarefree.eq_zero_or_one_of_pow_of_not_isUnit [CommMonoid R] {x : R} {n : ℕ}
    (h : Squarefree (x ^ n)) (h' : ¬ IsUnit x) :
    n = 0 ∨ n = 1 
Arguments: {R : Type u_1} [CommMonoid R] {x : R} {n : ℕ} (h : Squarefree (x ^ n)) (h' : ¬IsUnit x)
Goal: n = 0 ∨ n = 1
-- Squarefree.gcd_right
theorem Squarefree.gcd_right (a : α) {b : α} (hb : Squarefree b) : Squarefree (gcd a b) 
Arguments: {α : Type u_2} [CancelCommMonoidWithZero α] [GCDMonoid α] (a : α) {b : α} (hb : Squarefree b)
Goal: Squarefree (gcd a b)