ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- GenContFract.terminates_iff_rat
theorem terminates_iff_rat (v : K) : (of v).Terminates ↔ ∃ q : ℚ, v = (q : K) 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] (v : K)
Goal: (GenContFract.of v).Terminates ↔ ∃ q, v = ↑q
-- GenContFract.of_convs_eq_convs'
theorem of_convs_eq_convs' : (of v).convs = (of v).convs' 
Arguments: {K : Type u_1} (v : K) [LinearOrderedField K] [FloorRing K]
Goal: (GenContFract.of v).convs = (GenContFract.of v).convs'
-- GenContFract.convs_succ
theorem convs_succ (n : ℕ) :
    (of v).convs (n + 1) = ⌊v⌋ + 1 / (of (Int.fract v)⁻¹).convs n 
Arguments: {K : Type u_1} (v : K) [LinearOrderedField K] [FloorRing K] (n : ℕ)
Goal: (GenContFract.of v).convs (n + 1) = ↑⌊v⌋ + 1 / (GenContFract.of (Int.fract v)⁻¹).convs n
-- GenContFract.of_convergence_epsilon
theorem of_convergence_epsilon :
    ∀ ε > (0 : K), ∃ N : ℕ, ∀ n ≥ N, |v - (of v).convs n| < ε 
Arguments: {K : Type u_1} (v : K) [LinearOrderedField K] [FloorRing K] [Archimedean K] (ε : K)
Goal: ε > 0 → ∃ N, ∀ n ≥ N, |v - (GenContFract.of v).convs n| < ε
-- GenContFract.of_convergence
theorem of_convergence [TopologicalSpace K] [OrderTopology K] :
    Filter.Tendsto (of v).convs Filter.atTop <| 𝓝 v 
Arguments: {K : Type u_1} (v : K) [LinearOrderedField K] [FloorRing K] [Archimedean K] [TopologicalSpace K] [OrderTopology K]
Goal: Filter.Tendsto (GenContFract.of v).convs Filter.atTop (𝓝 v)
-- AddSubsemigroup.mem_iSup_of_directed
@[to_additive]
theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
    (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i 
Arguments: {ι : Sort u_1} {M : Type u_2} [Add M] {S : ι → AddSubsemigroup M} (hS : Directed (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
-- Subsemigroup.mem_iSup_of_directed
@[to_additive]
theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
    (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i 
Arguments: {ι : Sort u_1} {M : Type u_2} [Mul M] {S : ι → Subsemigroup M} (hS : Directed (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
-- Subsemigroup.coe_iSup_of_directed
@[to_additive]
theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
    ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, S i 
Arguments: {ι : Sort u_1} {M : Type u_2} [Mul M] {S : ι → Subsemigroup M} (hS : Directed (fun x x_1 => x ≤ x_1) S)
Goal: ↑(⨆ i, S i) = ⋃ i, ↑(S i)
-- AddSubsemigroup.coe_iSup_of_directed
@[to_additive]
theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
    ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, S i 
Arguments: {ι : Sort u_1} {M : Type u_2} [Add M] {S : ι → AddSubsemigroup M} (hS : Directed (fun x x_1 => x ≤ x_1) S)
Goal: ↑(⨆ i, S i) = ⋃ i, ↑(S i)
-- AddSubsemigroup.mem_sSup_of_directed_on
@[to_additive]
theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
    x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s 
Arguments: {M : Type u_2} [Add M] {S : Set (AddSubsemigroup M)} (hS : DirectedOn (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
-- Subsemigroup.mem_sSup_of_directed_on
@[to_additive]
theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
    x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s 
Arguments: {M : Type u_2} [Mul M] {S : Set (Subsemigroup M)} (hS : DirectedOn (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
-- AddSubsemigroup.coe_sSup_of_directed_on
@[to_additive]
theorem coe_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
    (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s 
Arguments: {M : Type u_2} [Add M] {S : Set (AddSubsemigroup M)} (hS : DirectedOn (fun x x_1 => x ≤ x_1) S)
Goal: ↑(sSup S) = ⋃ s ∈ S, ↑s
-- Subsemigroup.coe_sSup_of_directed_on
@[to_additive]
theorem coe_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
    (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s 
Arguments: {M : Type u_2} [Mul M] {S : Set (Subsemigroup M)} (hS : DirectedOn (fun x x_1 => x ≤ x_1) S)
Goal: ↑(sSup S) = ⋃ s ∈ S, ↑s
-- AddSubsemigroup.mem_sup_left
@[to_additive]
theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T 
Arguments: {M : Type u_2} [Add M] {S T : AddSubsemigroup M} {x : M}
Goal: x ∈ S → x ∈ S ⊔ T
-- Subsemigroup.mem_sup_left
@[to_additive]
theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T 
Arguments: {M : Type u_2} [Mul M] {S T : Subsemigroup M} {x : M}
Goal: x ∈ S → x ∈ S ⊔ T
-- Subsemigroup.mem_sup_right
@[to_additive]
theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T 
Arguments: {M : Type u_2} [Mul M] {S T : Subsemigroup M} {x : M}
Goal: x ∈ T → x ∈ S ⊔ T
-- AddSubsemigroup.mem_sup_right
@[to_additive]
theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T 
Arguments: {M : Type u_2} [Add M] {S T : AddSubsemigroup M} {x : M}
Goal: x ∈ T → x ∈ S ⊔ T
-- Subsemigroup.mul_mem_sup
@[to_additive]
theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T 
Arguments: {M : Type u_2} [Mul M] {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T)
Goal: x * y ∈ S ⊔ T
-- AddSubsemigroup.add_mem_sup
@[to_additive]
theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T 
Arguments: {M : Type u_2} [Add M] {S T : AddSubsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T)
Goal: x + y ∈ S ⊔ T
-- Subsemigroup.mem_iSup_of_mem
@[to_additive]
theorem mem_iSup_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ iSup S 
Arguments: {ι : Sort u_1} {M : Type u_2} [Mul M] {S : ι → Subsemigroup M} (i : ι) {x : M}
Goal: x ∈ S i → x ∈ iSup S
-- AddSubsemigroup.mem_iSup_of_mem
@[to_additive]
theorem mem_iSup_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ iSup S 
Arguments: {ι : Sort u_1} {M : Type u_2} [Add M] {S : ι → AddSubsemigroup M} (i : ι) {x : M}
Goal: x ∈ S i → x ∈ iSup S
-- Subsemigroup.mem_sSup_of_mem
@[to_additive]
theorem mem_sSup_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
    ∀ {x : M}, x ∈ s → x ∈ sSup S 
Arguments: {M : Type u_2} [Mul M] {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) {x : M}
Goal: x ∈ s → x ∈ sSup S
-- AddSubsemigroup.mem_sSup_of_mem
@[to_additive]
theorem mem_sSup_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
    ∀ {x : M}, x ∈ s → x ∈ sSup S 
Arguments: {M : Type u_2} [Add M] {S : Set (AddSubsemigroup M)} {s : AddSubsemigroup M} (hs : s ∈ S) {x : M}
Goal: x ∈ s → x ∈ sSup S
-- Subsemigroup.iSup_induction
@[to_additive (attr := elab_as_elim)
"An induction principle for elements of `⨆ i, S i`. If `C` holds all
elements of `S i` for all `i`, and is preserved under addition, then it holds for all elements of
the supremum of `S`."]
theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
    (mem : ∀ i, ∀ x₂ ∈ S i, C x₂) (mul : ∀ x y, C x → C y → C (x * y)) : C x₁ 
Arguments: {ι : Sort u_1} {M : Type u_2} [Mul M] (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i) (mem : ∀ (i : ι), ∀ x₂ ∈ S i, C x₂) (mul : ∀ (x y : M), C x → C y → C (x * y))
Goal: C x₁
-- AddSubsemigroup.iSup_induction
@[to_additive (attr := elab_as_elim)
"An induction principle for elements of `⨆ i, S i`. If `C` holds all
elements of `S i` for all `i`, and is preserved under addition, then it holds for all elements of
the supremum of `S`."]
theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
    (mem : ∀ i, ∀ x₂ ∈ S i, C x₂) (mul : ∀ x y, C x → C y → C (x * y)) : C x₁ 
Arguments: {ι : Sort u_1} {M : Type u_2} [Add M] (S : ι → AddSubsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i) (mem : ∀ (i : ι), ∀ x₂ ∈ S i, C x₂) (mul : ∀ (x y : M), C x → C y → C (x + y))
Goal: C x₁
-- Subsemigroup.iSup_induction'
@[to_additive (attr := elab_as_elim)
"A dependent version of `AddSubsemigroup.iSup_induction`."]
theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
    (mem : ∀ (i) (x) (hxS : x ∈ S i), C x (mem_iSup_of_mem i ‹_›))
    (mul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x₁ : M}
    (hx₁ : x₁ ∈ ⨆ i, S i) : C x₁ hx₁ 
Arguments: {ι : Sort u_1} {M : Type u_2} [Mul M] (S : ι → Subsemigroup M) {C : (x : M) → x ∈ ⨆ i, S i → Prop} (mem : ∀ (i : ι) (x : M) (hxS : x ∈ S i), C x ⋯) (mul : ∀ (x y : M) (hx : x ∈ ⨆ i, S i) (hy : y ∈ ⨆ i, S i), C x hx → C y hy → C (x * y) ⋯) {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
Goal: C x₁ hx₁
-- AddSubsemigroup.iSup_induction'
@[to_additive (attr := elab_as_elim)
"A dependent version of `AddSubsemigroup.iSup_induction`."]
theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
    (mem : ∀ (i) (x) (hxS : x ∈ S i), C x (mem_iSup_of_mem i ‹_›))
    (mul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x₁ : M}
    (hx₁ : x₁ ∈ ⨆ i, S i) : C x₁ hx₁ 
Arguments: {ι : Sort u_1} {M : Type u_2} [Add M] (S : ι → AddSubsemigroup M) {C : (x : M) → x ∈ ⨆ i, S i → Prop} (mem : ∀ (i : ι) (x : M) (hxS : x ∈ S i), C x ⋯) (mul : ∀ (x y : M) (hx : x ∈ ⨆ i, S i) (hy : y ∈ ⨆ i, S i), C x hx → C y hy → C (x + y) ⋯) {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
Goal: C x₁ hx₁
-- MulMemClass.mul_mem
class MulMemClass (S : Type*) (M : Type*) [Mul M] [SetLike S M] : Prop where
    mul_mem : ∀ {s : S} {a b : M}, a ∈ s → b ∈ s → a * b ∈ s
Arguments: {S : Type u_4} {M : Type u_5} [Mul M] [SetLike S M] [self : MulMemClass S M] {s : S} {a b : M}
Goal: a ∈ s → b ∈ s → a * b ∈ s
-- AddMemClass.add_mem
class AddMemClass (S : Type*) (M : Type*) [Add M] [SetLike S M] : Prop where
    add_mem : ∀ {s : S} {a b : M}, a ∈ s → b ∈ s → a + b ∈ s
Arguments: {S : Type u_4} {M : Type u_5} [Add M] [SetLike S M] [self : AddMemClass S M] {s : S} {a b : M}
Goal: a ∈ s → b ∈ s → a + b ∈ s
-- Subsemigroup.mul_mem'
structure Subsemigroup (M : Type*) [Mul M] where
    carrier : Set M
    mul_mem' {a b} : a ∈ carrier → b ∈ carrier → a * b ∈ carrier
Arguments: {M : Type u_4} [Mul M] (self : Subsemigroup M) {a b : M}
Goal: a ∈ self.carrier → b ∈ self.carrier → a * b ∈ self.carrier
-- AddSubsemigroup.add_mem'
structure AddSubsemigroup (M : Type*) [Add M] where
    carrier : Set M
    add_mem' {a b} : a ∈ carrier → b ∈ carrier → a + b ∈ carrier
Arguments: {M : Type u_4} [Add M] (self : AddSubsemigroup M) {a b : M}
Goal: a ∈ self.carrier → b ∈ self.carrier → a + b ∈ self.carrier
-- Subsemigroup.mem_carrier
@[to_additive (attr := simp)]
theorem mem_carrier {s : Subsemigroup M} {x : M} : x ∈ s.carrier ↔ x ∈ s 
Arguments: {M : Type u_1} [Mul M] {s : Subsemigroup M} {x : M}
Goal: x ∈ s.carrier ↔ x ∈ s
-- AddSubsemigroup.mem_carrier
@[to_additive (attr := simp)]
theorem mem_carrier {s : Subsemigroup M} {x : M} : x ∈ s.carrier ↔ x ∈ s 
Arguments: {M : Type u_1} [Add M] {s : AddSubsemigroup M} {x : M}
Goal: x ∈ s.carrier ↔ x ∈ s
-- Subsemigroup.mem_mk
@[to_additive (attr := simp)]
theorem mem_mk {s : Set M} {x : M} (h_mul) : x ∈ mk s h_mul ↔ x ∈ s 
Arguments: {M : Type u_1} [Mul M] {s : Set M} {x : M} (h_mul : ∀ {a b : M}, a ∈ s → b ∈ s → a * b ∈ s)
Goal: x ∈ { carrier := s, mul_mem' := h_mul } ↔ x ∈ s
-- AddSubsemigroup.mem_mk
@[to_additive (attr := simp)]
theorem mem_mk {s : Set M} {x : M} (h_mul) : x ∈ mk s h_mul ↔ x ∈ s 
Arguments: {M : Type u_1} [Add M] {s : Set M} {x : M} (h_mul : ∀ {a b : M}, a ∈ s → b ∈ s → a + b ∈ s)
Goal: x ∈ { carrier := s, add_mem' := h_mul } ↔ x ∈ s
-- Subsemigroup.coe_set_mk
@[to_additive (attr := simp, norm_cast)]
theorem coe_set_mk {s : Set M} (h_mul) : (mk s h_mul : Set M) = s 
Arguments: {M : Type u_1} [Mul M] {s : Set M} (h_mul : ∀ {a b : M}, a ∈ s → b ∈ s → a * b ∈ s)
Goal: ↑{ carrier := s, mul_mem' := h_mul } = s
-- AddSubsemigroup.coe_set_mk
@[to_additive (attr := simp, norm_cast)]
theorem coe_set_mk {s : Set M} (h_mul) : (mk s h_mul : Set M) = s 
Arguments: {M : Type u_1} [Add M] {s : Set M} (h_mul : ∀ {a b : M}, a ∈ s → b ∈ s → a + b ∈ s)
Goal: ↑{ carrier := s, add_mem' := h_mul } = s
-- AddSubsemigroup.mk_le_mk
@[to_additive (attr := simp)]
theorem mk_le_mk {s t : Set M} (h_mul) (h_mul') : mk s h_mul ≤ mk t h_mul' ↔ s ⊆ t 
Arguments: {M : Type u_1} [Add M] {s t : Set M} (h_mul : ∀ {a b : M}, a ∈ s → b ∈ s → a + b ∈ s) (h_mul' : ∀ {a b : M}, a ∈ t → b ∈ t → a + b ∈ t)
Goal: { carrier := s, add_mem' := h_mul } ≤ { carrier := t, add_mem' := h_mul' } ↔ s ⊆ t
-- Subsemigroup.mk_le_mk
@[to_additive (attr := simp)]
theorem mk_le_mk {s t : Set M} (h_mul) (h_mul') : mk s h_mul ≤ mk t h_mul' ↔ s ⊆ t 
Arguments: {M : Type u_1} [Mul M] {s t : Set M} (h_mul : ∀ {a b : M}, a ∈ s → b ∈ s → a * b ∈ s) (h_mul' : ∀ {a b : M}, a ∈ t → b ∈ t → a * b ∈ t)
Goal: { carrier := s, mul_mem' := h_mul } ≤ { carrier := t, mul_mem' := h_mul' } ↔ s ⊆ t
-- AddSubsemigroup.ext
@[to_additive (attr := ext) "Two `AddSubsemigroup`s are equal if they have the same elements."]
theorem ext {S T : Subsemigroup M} (h : ∀ x, x ∈ S ↔ x ∈ T) : S = T 
Arguments: {M : Type u_1} [Add M] {S T : AddSubsemigroup M} (h : ∀ (x : M), x ∈ S ↔ x ∈ T)
Goal: S = T
-- Subsemigroup.ext
@[to_additive (attr := ext) "Two `AddSubsemigroup`s are equal if they have the same elements."]
theorem ext {S T : Subsemigroup M} (h : ∀ x, x ∈ S ↔ x ∈ T) : S = T 
Arguments: {M : Type u_1} [Mul M] {S T : Subsemigroup M} (h : ∀ (x : M), x ∈ S ↔ x ∈ T)
Goal: S = T
-- AddSubsemigroup.coe_copy
@[to_additive (attr := simp)]
theorem coe_copy {s : Set M} (hs : s = S) : (S.copy s hs : Set M) = s 
Arguments: {M : Type u_1} [Add M] {S : AddSubsemigroup M} {s : Set M} (hs : s = ↑S)
Goal: ↑(S.copy s hs) = s
-- Subsemigroup.coe_copy
@[to_additive (attr := simp)]
theorem coe_copy {s : Set M} (hs : s = S) : (S.copy s hs : Set M) = s 
Arguments: {M : Type u_1} [Mul M] {S : Subsemigroup M} {s : Set M} (hs : s = ↑S)
Goal: ↑(S.copy s hs) = s
-- AddSubsemigroup.copy_eq
@[to_additive]
theorem copy_eq {s : Set M} (hs : s = S) : S.copy s hs = S 
Arguments: {M : Type u_1} [Add M] {S : AddSubsemigroup M} {s : Set M} (hs : s = ↑S)
Goal: S.copy s hs = S
-- Subsemigroup.copy_eq
@[to_additive]
theorem copy_eq {s : Set M} (hs : s = S) : S.copy s hs = S 
Arguments: {M : Type u_1} [Mul M] {S : Subsemigroup M} {s : Set M} (hs : s = ↑S)
Goal: S.copy s hs = S
-- AddSubsemigroup.add_mem
@[to_additive "An `AddSubsemigroup` is closed under addition."]
protected theorem mul_mem {x y : M} : x ∈ S → y ∈ S → x * y ∈ S 
Arguments: {M : Type u_1} [Add M] (S : AddSubsemigroup M) {x y : M}
Goal: x ∈ S → y ∈ S → x + y ∈ S
-- Subsemigroup.mul_mem
@[to_additive "An `AddSubsemigroup` is closed under addition."]
protected theorem mul_mem {x y : M} : x ∈ S → y ∈ S → x * y ∈ S 
Arguments: {M : Type u_1} [Mul M] (S : Subsemigroup M) {x y : M}
Goal: x ∈ S → y ∈ S → x * y ∈ S
-- AddSubsemigroup.not_mem_bot
@[to_additive]
theorem not_mem_bot {x : M} : x ∉ (⊥ : Subsemigroup M) 
Arguments: {M : Type u_1} [Add M] {x : M}
Goal: x ∉ ⊥
-- Subsemigroup.not_mem_bot
@[to_additive]
theorem not_mem_bot {x : M} : x ∉ (⊥ : Subsemigroup M) 
Arguments: {M : Type u_1} [Mul M] {x : M}
Goal: x ∉ ⊥
-- Subsemigroup.mem_top
@[to_additive (attr := simp)]
theorem mem_top (x : M) : x ∈ (⊤ : Subsemigroup M) 
Arguments: {M : Type u_1} [Mul M] (x : M)
Goal: x ∈ ⊤
-- AddSubsemigroup.mem_top
@[to_additive (attr := simp)]
theorem mem_top (x : M) : x ∈ (⊤ : Subsemigroup M) 
Arguments: {M : Type u_1} [Add M] (x : M)
Goal: x ∈ ⊤
-- AddSubsemigroup.coe_top
@[to_additive (attr := simp)]
theorem coe_top : ((⊤ : Subsemigroup M) : Set M) = Set.univ 
Arguments: {M : Type u_1} [Add M]
Goal: ↑⊤ = Set.univ
-- Subsemigroup.coe_top
@[to_additive (attr := simp)]
theorem coe_top : ((⊤ : Subsemigroup M) : Set M) = Set.univ 
Arguments: {M : Type u_1} [Mul M]
Goal: ↑⊤ = Set.univ
-- AddSubsemigroup.coe_bot
@[to_additive (attr := simp)]
theorem coe_bot : ((⊥ : Subsemigroup M) : Set M) = ∅ 
Arguments: {M : Type u_1} [Add M]
Goal: ↑⊥ = ∅
-- Subsemigroup.coe_bot
@[to_additive (attr := simp)]
theorem coe_bot : ((⊥ : Subsemigroup M) : Set M) = ∅ 
Arguments: {M : Type u_1} [Mul M]
Goal: ↑⊥ = ∅
-- Subsemigroup.coe_inf
@[to_additive (attr := simp)]
theorem coe_inf (p p' : Subsemigroup M) : ((p ⊓ p' : Subsemigroup M) : Set M) = (p : Set M) ∩ p' 
Arguments: {M : Type u_1} [Mul M] (p p' : Subsemigroup M)
Goal: ↑(p ⊓ p') = ↑p ∩ ↑p'
-- AddSubsemigroup.coe_inf
@[to_additive (attr := simp)]
theorem coe_inf (p p' : Subsemigroup M) : ((p ⊓ p' : Subsemigroup M) : Set M) = (p : Set M) ∩ p' 
Arguments: {M : Type u_1} [Add M] (p p' : AddSubsemigroup M)
Goal: ↑(p ⊓ p') = ↑p ∩ ↑p'
-- Subsemigroup.mem_inf
@[to_additive (attr := simp)]
theorem mem_inf {p p' : Subsemigroup M} {x : M} : x ∈ p ⊓ p' ↔ x ∈ p ∧ x ∈ p' 
Arguments: {M : Type u_1} [Mul M] {p p' : Subsemigroup M} {x : M}
Goal: x ∈ p ⊓ p' ↔ x ∈ p ∧ x ∈ p'
-- AddSubsemigroup.mem_inf
@[to_additive (attr := simp)]
theorem mem_inf {p p' : Subsemigroup M} {x : M} : x ∈ p ⊓ p' ↔ x ∈ p ∧ x ∈ p' 
Arguments: {M : Type u_1} [Add M] {p p' : AddSubsemigroup M} {x : M}
Goal: x ∈ p ⊓ p' ↔ x ∈ p ∧ x ∈ p'
-- AddSubsemigroup.coe_sInf
@[to_additive (attr := simp, norm_cast)]
theorem coe_sInf (S : Set (Subsemigroup M)) : ((sInf S : Subsemigroup M) : Set M) = ⋂ s ∈ S, ↑s 
Arguments: {M : Type u_1} [Add M] (S : Set (AddSubsemigroup M))
Goal: ↑(sInf S) = ⋂ s ∈ S, ↑s
-- Subsemigroup.coe_sInf
@[to_additive (attr := simp, norm_cast)]
theorem coe_sInf (S : Set (Subsemigroup M)) : ((sInf S : Subsemigroup M) : Set M) = ⋂ s ∈ S, ↑s 
Arguments: {M : Type u_1} [Mul M] (S : Set (Subsemigroup M))
Goal: ↑(sInf S) = ⋂ s ∈ S, ↑s
-- AddSubsemigroup.mem_sInf
@[to_additive]
theorem mem_sInf {S : Set (Subsemigroup M)} {x : M} : x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p 
Arguments: {M : Type u_1} [Add M] {S : Set (AddSubsemigroup M)} {x : M}
Goal: x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p
-- Subsemigroup.mem_sInf
@[to_additive]
theorem mem_sInf {S : Set (Subsemigroup M)} {x : M} : x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p 
Arguments: {M : Type u_1} [Mul M] {S : Set (Subsemigroup M)} {x : M}
Goal: x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p
-- Subsemigroup.mem_iInf
@[to_additive]
theorem mem_iInf {ι : Sort*} {S : ι → Subsemigroup M} {x : M} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i 
Arguments: {M : Type u_1} [Mul M] {ι : Sort u_4} {S : ι → Subsemigroup M} {x : M}
Goal: x ∈ ⨅ i, S i ↔ ∀ (i : ι), x ∈ S i
-- AddSubsemigroup.mem_iInf
@[to_additive]
theorem mem_iInf {ι : Sort*} {S : ι → Subsemigroup M} {x : M} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i 
Arguments: {M : Type u_1} [Add M] {ι : Sort u_4} {S : ι → AddSubsemigroup M} {x : M}
Goal: x ∈ ⨅ i, S i ↔ ∀ (i : ι), x ∈ S i
-- Subsemigroup.coe_iInf
@[to_additive (attr := simp, norm_cast)]
theorem coe_iInf {ι : Sort*} {S : ι → Subsemigroup M} : (↑(⨅ i, S i) : Set M) = ⋂ i, S i 
Arguments: {M : Type u_1} [Mul M] {ι : Sort u_4} {S : ι → Subsemigroup M}
Goal: ↑(⨅ i, S i) = ⋂ i, ↑(S i)
-- AddSubsemigroup.coe_iInf
@[to_additive (attr := simp, norm_cast)]
theorem coe_iInf {ι : Sort*} {S : ι → Subsemigroup M} : (↑(⨅ i, S i) : Set M) = ⋂ i, S i 
Arguments: {M : Type u_1} [Add M] {ι : Sort u_4} {S : ι → AddSubsemigroup M}
Goal: ↑(⨅ i, S i) = ⋂ i, ↑(S i)
-- Subsemigroup.subsingleton_of_subsingleton
@[to_additive]
theorem subsingleton_of_subsingleton [Subsingleton (Subsemigroup M)] : Subsingleton M 
Arguments: {M : Type u_1} [Mul M] [Subsingleton (Subsemigroup M)]
Goal: Subsingleton M
-- AddSubsemigroup.subsingleton_of_subsingleton
@[to_additive]
theorem subsingleton_of_subsingleton [Subsingleton (Subsemigroup M)] : Subsingleton M 
Arguments: {M : Type u_1} [Add M] [Subsingleton (AddSubsemigroup M)]
Goal: Subsingleton M
-- Subsemigroup.mem_closure
@[to_additive]
theorem mem_closure {x : M} : x ∈ closure s ↔ ∀ S : Subsemigroup M, s ⊆ S → x ∈ S 
Arguments: {M : Type u_1} [Mul M] {s : Set M} {x : M}
Goal: x ∈ Subsemigroup.closure s ↔ ∀ (S : Subsemigroup M), s ⊆ ↑S → x ∈ S
-- AddSubsemigroup.mem_closure
@[to_additive]
theorem mem_closure {x : M} : x ∈ closure s ↔ ∀ S : Subsemigroup M, s ⊆ S → x ∈ S 
Arguments: {M : Type u_1} [Add M] {s : Set M} {x : M}
Goal: x ∈ AddSubsemigroup.closure s ↔ ∀ (S : AddSubsemigroup M), s ⊆ ↑S → x ∈ S
-- AddSubsemigroup.subset_closure
@[to_additive (attr := simp, aesop safe 20 apply (rule_sets := [SetLike]))
  "The `AddSubsemigroup` generated by a set includes the set."]
theorem subset_closure : s ⊆ closure s 
Arguments: {M : Type u_1} [Add M] {s : Set M}
Goal: s ⊆ ↑(AddSubsemigroup.closure s)
-- Subsemigroup.subset_closure
@[to_additive (attr := simp, aesop safe 20 apply (rule_sets := [SetLike]))
  "The `AddSubsemigroup` generated by a set includes the set."]
theorem subset_closure : s ⊆ closure s 
Arguments: {M : Type u_1} [Mul M] {s : Set M}
Goal: s ⊆ ↑(Subsemigroup.closure s)
-- Subsemigroup.not_mem_of_not_mem_closure
@[to_additive]
theorem not_mem_of_not_mem_closure {P : M} (hP : P ∉ closure s) : P ∉ s 
Arguments: {M : Type u_1} [Mul M] {s : Set M} {P : M} (hP : P ∉ Subsemigroup.closure s)
Goal: P ∉ s
-- AddSubsemigroup.not_mem_of_not_mem_closure
@[to_additive]
theorem not_mem_of_not_mem_closure {P : M} (hP : P ∉ closure s) : P ∉ s 
Arguments: {M : Type u_1} [Add M] {s : Set M} {P : M} (hP : P ∉ AddSubsemigroup.closure s)
Goal: P ∉ s
-- AddSubsemigroup.closure_le
@[to_additive (attr := simp)
  "An additive subsemigroup `S` includes `closure s` if and only if it includes `s`"]
theorem closure_le : closure s ≤ S ↔ s ⊆ S 
Arguments: {M : Type u_1} [Add M] {s : Set M} {S : AddSubsemigroup M}
Goal: AddSubsemigroup.closure s ≤ S ↔ s ⊆ ↑S
-- Subsemigroup.closure_le
@[to_additive (attr := simp)
  "An additive subsemigroup `S` includes `closure s` if and only if it includes `s`"]
theorem closure_le : closure s ≤ S ↔ s ⊆ S 
Arguments: {M : Type u_1} [Mul M] {s : Set M} {S : Subsemigroup M}
Goal: Subsemigroup.closure s ≤ S ↔ s ⊆ ↑S
-- Subsemigroup.closure_mono
@[to_additive "Additive subsemigroup closure of a set is monotone in its argument: if `s ⊆ t`,
  then `closure s ≤ closure t`"]
theorem closure_mono ⦃s t : Set M⦄ (h : s ⊆ t) : closure s ≤ closure t 
Arguments: {M : Type u_1} [Mul M] ⦃s t : Set M⦄ (h : s ⊆ t)
Goal: Subsemigroup.closure s ≤ Subsemigroup.closure t
-- AddSubsemigroup.closure_mono
@[to_additive "Additive subsemigroup closure of a set is monotone in its argument: if `s ⊆ t`,
  then `closure s ≤ closure t`"]
theorem closure_mono ⦃s t : Set M⦄ (h : s ⊆ t) : closure s ≤ closure t 
Arguments: {M : Type u_1} [Add M] ⦃s t : Set M⦄ (h : s ⊆ t)
Goal: AddSubsemigroup.closure s ≤ AddSubsemigroup.closure t
-- AddSubsemigroup.closure_eq_of_le
@[to_additive]
theorem closure_eq_of_le (h₁ : s ⊆ S) (h₂ : S ≤ closure s) : closure s = S 
Arguments: {M : Type u_1} [Add M] {s : Set M} {S : AddSubsemigroup M} (h₁ : s ⊆ ↑S) (h₂ : S ≤ AddSubsemigroup.closure s)
Goal: AddSubsemigroup.closure s = S
-- Subsemigroup.closure_eq_of_le
@[to_additive]
theorem closure_eq_of_le (h₁ : s ⊆ S) (h₂ : S ≤ closure s) : closure s = S 
Arguments: {M : Type u_1} [Mul M] {s : Set M} {S : Subsemigroup M} (h₁ : s ⊆ ↑S) (h₂ : S ≤ Subsemigroup.closure s)
Goal: Subsemigroup.closure s = S
-- AddSubsemigroup.closure_induction
@[to_additive (attr := elab_as_elim) "An induction principle for additive closure membership. If `p`
  holds for all elements of `s`, and is preserved under addition, then `p` holds for all
  elements of the additive closure of `s`."]
theorem closure_induction {p : M → Prop} {x} (h : x ∈ closure s) (mem : ∀ x ∈ s, p x)
    (mul : ∀ x y, p x → p y → p (x * y)) : p x 
Arguments: {M : Type u_1} [Add M] {s : Set M} {p : M → Prop} {x : M} (h : x ∈ AddSubsemigroup.closure s) (mem : ∀ x ∈ s, p x) (mul : ∀ (x y : M), p x → p y → p (x + y))
Goal: p x
-- Subsemigroup.closure_induction
@[to_additive (attr := elab_as_elim) "An induction principle for additive closure membership. If `p`
  holds for all elements of `s`, and is preserved under addition, then `p` holds for all
  elements of the additive closure of `s`."]
theorem closure_induction {p : M → Prop} {x} (h : x ∈ closure s) (mem : ∀ x ∈ s, p x)
    (mul : ∀ x y, p x → p y → p (x * y)) : p x 
Arguments: {M : Type u_1} [Mul M] {s : Set M} {p : M → Prop} {x : M} (h : x ∈ Subsemigroup.closure s) (mem : ∀ x ∈ s, p x) (mul : ∀ (x y : M), p x → p y → p (x * y))
Goal: p x