ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- WithOne.coe_mul
@[to_additive (attr := simp, norm_cast)]
lemma coe_mul [Mul α] (a b : α) : (↑(a * b) : WithOne α) = a * b 
Arguments: {α : Type u} [Mul α] (a b : α)
Goal: ↑(a * b) = ↑a * ↑b
-- WithZero.coe_add
@[to_additive (attr := simp, norm_cast)]
lemma coe_mul [Mul α] (a b : α) : (↑(a * b) : WithOne α) = a * b 
Arguments: {α : Type u} [Add α] (a b : α)
Goal: ↑(a + b) = ↑a + ↑b
-- WithOne.coe_inv
@[to_additive (attr := simp, norm_cast)]
theorem coe_inv [Inv α] (a : α) : ((a⁻¹ : α) : WithOne α) = (a : WithOne α)⁻¹ 
Arguments: {α : Type u} [Inv α] (a : α)
Goal: ↑a⁻¹ = (↑a)⁻¹
-- WithZero.coe_neg
@[to_additive (attr := simp, norm_cast)]
theorem coe_inv [Inv α] (a : α) : ((a⁻¹ : α) : WithOne α) = (a : WithOne α)⁻¹ 
Arguments: {α : Type u} [Neg α] (a : α)
Goal: ↑(-a) = -↑a
-- AddSubmonoidClass.coe_list_sum
@[to_additive (attr := norm_cast, simp)]
theorem coe_list_prod (l : List S) : (l.prod : M) = (l.map (↑)).prod 
Arguments: {M : Type u_1} {B : Type u_3} [AddMonoid M] [SetLike B M] [AddSubmonoidClass B M] {S : B} (l : List ↥S)
Goal: ↑l.sum = (List.map Subtype.val l).sum
-- SubmonoidClass.coe_list_prod
@[to_additive (attr := norm_cast, simp)]
theorem coe_list_prod (l : List S) : (l.prod : M) = (l.map (↑)).prod 
Arguments: {M : Type u_1} {B : Type u_3} [Monoid M] [SetLike B M] [SubmonoidClass B M] {S : B} (l : List ↥S)
Goal: ↑l.prod = (List.map Subtype.val l).prod
-- AddSubmonoidClass.coe_multiset_sum
@[to_additive (attr := norm_cast, simp)]
theorem coe_multiset_prod {M} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (m : Multiset S) :
    (m.prod : M) = (m.map (↑)).prod 
Arguments: {B : Type u_3} {S : B} {M : Type u_4} [AddCommMonoid M] [SetLike B M] [AddSubmonoidClass B M] (m : Multiset ↥S)
Goal: ↑m.sum = (Multiset.map Subtype.val m).sum
-- SubmonoidClass.coe_multiset_prod
@[to_additive (attr := norm_cast, simp)]
theorem coe_multiset_prod {M} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (m : Multiset S) :
    (m.prod : M) = (m.map (↑)).prod 
Arguments: {B : Type u_3} {S : B} {M : Type u_4} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (m : Multiset ↥S)
Goal: ↑m.prod = (Multiset.map Subtype.val m).prod
-- AddSubmonoidClass.coe_finset_sum
@[to_additive (attr := norm_cast)] -- Porting note (#10618): removed `simp`, `simp` can prove it
theorem coe_finset_prod {ι M} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (f : ι → S)
    (s : Finset ι) : ↑(∏ i ∈ s, f i) = (∏ i ∈ s, f i : M) 
Arguments: {B : Type u_3} {S : B} {ι : Type u_4} {M : Type u_5} [AddCommMonoid M] [SetLike B M] [AddSubmonoidClass B M] (f : ι → ↥S) (s : Finset ι)
Goal: ↑(∑ i ∈ s, f i) = ∑ i ∈ s, ↑(f i)
-- SubmonoidClass.coe_finset_prod
@[to_additive (attr := norm_cast)] -- Porting note (#10618): removed `simp`, `simp` can prove it
theorem coe_finset_prod {ι M} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (f : ι → S)
    (s : Finset ι) : ↑(∏ i ∈ s, f i) = (∏ i ∈ s, f i : M) 
Arguments: {B : Type u_3} {S : B} {ι : Type u_4} {M : Type u_5} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (f : ι → ↥S) (s : Finset ι)
Goal: ↑(∏ i ∈ s, f i) = ∏ i ∈ s, ↑(f i)
-- list_prod_mem
@[to_additive "Sum of a list of elements in an `AddSubmonoid` is in the `AddSubmonoid`."]
theorem list_prod_mem {l : List M} (hl : ∀ x ∈ l, x ∈ S) : l.prod ∈ S 
Arguments: {M : Type u_1} {B : Type u_3} [Monoid M] [SetLike B M] [SubmonoidClass B M] {S : B} {l : List M} (hl : ∀ x ∈ l, x ∈ S)
Goal: l.prod ∈ S
-- list_sum_mem
@[to_additive "Sum of a list of elements in an `AddSubmonoid` is in the `AddSubmonoid`."]
theorem list_prod_mem {l : List M} (hl : ∀ x ∈ l, x ∈ S) : l.prod ∈ S 
Arguments: {M : Type u_1} {B : Type u_3} [AddMonoid M] [SetLike B M] [AddSubmonoidClass B M] {S : B} {l : List M} (hl : ∀ x ∈ l, x ∈ S)
Goal: l.sum ∈ S
-- multiset_sum_mem
@[to_additive
      "Sum of a multiset of elements in an `AddSubmonoid` of an `AddCommMonoid` is
      in the `AddSubmonoid`."]
theorem multiset_prod_mem {M} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (m : Multiset M)
    (hm : ∀ a ∈ m, a ∈ S) : m.prod ∈ S 
Arguments: {B : Type u_3} {S : B} {M : Type u_4} [AddCommMonoid M] [SetLike B M] [AddSubmonoidClass B M] (m : Multiset M) (hm : ∀ a ∈ m, a ∈ S)
Goal: m.sum ∈ S
-- multiset_prod_mem
@[to_additive
      "Sum of a multiset of elements in an `AddSubmonoid` of an `AddCommMonoid` is
      in the `AddSubmonoid`."]
theorem multiset_prod_mem {M} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (m : Multiset M)
    (hm : ∀ a ∈ m, a ∈ S) : m.prod ∈ S 
Arguments: {B : Type u_3} {S : B} {M : Type u_4} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] (m : Multiset M) (hm : ∀ a ∈ m, a ∈ S)
Goal: m.prod ∈ S
-- sum_mem
@[to_additive
      "Sum of elements in an `AddSubmonoid` of an `AddCommMonoid` indexed by a `Finset`
      is in the `AddSubmonoid`."]
theorem prod_mem {M : Type*} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] {ι : Type*}
    {t : Finset ι} {f : ι → M} (h : ∀ c ∈ t, f c ∈ S) : (∏ c ∈ t, f c) ∈ S 
Arguments: {B : Type u_3} {S : B} {M : Type u_4} [AddCommMonoid M] [SetLike B M] [AddSubmonoidClass B M] {ι : Type u_5} {t : Finset ι} {f : ι → M} (h : ∀ c ∈ t, f c ∈ S)
Goal: ∑ c ∈ t, f c ∈ S
-- prod_mem
@[to_additive
      "Sum of elements in an `AddSubmonoid` of an `AddCommMonoid` indexed by a `Finset`
      is in the `AddSubmonoid`."]
theorem prod_mem {M : Type*} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] {ι : Type*}
    {t : Finset ι} {f : ι → M} (h : ∀ c ∈ t, f c ∈ S) : (∏ c ∈ t, f c) ∈ S 
Arguments: {B : Type u_3} {S : B} {M : Type u_4} [CommMonoid M] [SetLike B M] [SubmonoidClass B M] {ι : Type u_5} {t : Finset ι} {f : ι → M} (h : ∀ c ∈ t, f c ∈ S)
Goal: ∏ c ∈ t, f c ∈ S
-- Submonoid.coe_list_prod
@[to_additive (attr := norm_cast)] -- Porting note (#10618): removed `simp`, `simp` can prove it
theorem coe_list_prod (l : List s) : (l.prod : M) = (l.map (↑)).prod 
Arguments: {M : Type u_1} [Monoid M] (s : Submonoid M) (l : List ↥s)
Goal: ↑l.prod = (List.map Subtype.val l).prod
-- AddSubmonoid.coe_list_sum
@[to_additive (attr := norm_cast)] -- Porting note (#10618): removed `simp`, `simp` can prove it
theorem coe_list_prod (l : List s) : (l.prod : M) = (l.map (↑)).prod 
Arguments: {M : Type u_1} [AddMonoid M] (s : AddSubmonoid M) (l : List ↥s)
Goal: ↑l.sum = (List.map Subtype.val l).sum
-- AddSubmonoid.coe_multiset_sum
@[to_additive (attr := norm_cast)] -- Porting note (#10618): removed `simp`, `simp` can prove it
theorem coe_multiset_prod {M} [CommMonoid M] (S : Submonoid M) (m : Multiset S) :
    (m.prod : M) = (m.map (↑)).prod 
Arguments: {M : Type u_4} [AddCommMonoid M] (S : AddSubmonoid M) (m : Multiset ↥S)
Goal: ↑m.sum = (Multiset.map Subtype.val m).sum
-- Submonoid.coe_multiset_prod
@[to_additive (attr := norm_cast)] -- Porting note (#10618): removed `simp`, `simp` can prove it
theorem coe_multiset_prod {M} [CommMonoid M] (S : Submonoid M) (m : Multiset S) :
    (m.prod : M) = (m.map (↑)).prod 
Arguments: {M : Type u_4} [CommMonoid M] (S : Submonoid M) (m : Multiset ↥S)
Goal: ↑m.prod = (Multiset.map Subtype.val m).prod
-- Submonoid.coe_finset_prod
@[to_additive (attr := norm_cast, simp)]
theorem coe_finset_prod {ι M} [CommMonoid M] (S : Submonoid M) (f : ι → S) (s : Finset ι) :
    ↑(∏ i ∈ s, f i) = (∏ i ∈ s, f i : M) 
Arguments: {ι : Type u_4} {M : Type u_5} [CommMonoid M] (S : Submonoid M) (f : ι → ↥S) (s : Finset ι)
Goal: ↑(∏ i ∈ s, f i) = ∏ i ∈ s, ↑(f i)
-- AddSubmonoid.coe_finset_sum
@[to_additive (attr := norm_cast, simp)]
theorem coe_finset_prod {ι M} [CommMonoid M] (S : Submonoid M) (f : ι → S) (s : Finset ι) :
    ↑(∏ i ∈ s, f i) = (∏ i ∈ s, f i : M) 
Arguments: {ι : Type u_4} {M : Type u_5} [AddCommMonoid M] (S : AddSubmonoid M) (f : ι → ↥S) (s : Finset ι)
Goal: ↑(∑ i ∈ s, f i) = ∑ i ∈ s, ↑(f i)
-- Submonoid.list_prod_mem
@[to_additive "Sum of a list of elements in an `AddSubmonoid` is in the `AddSubmonoid`."]
theorem list_prod_mem {l : List M} (hl : ∀ x ∈ l, x ∈ s) : l.prod ∈ s 
Arguments: {M : Type u_1} [Monoid M] (s : Submonoid M) {l : List M} (hl : ∀ x ∈ l, x ∈ s)
Goal: l.prod ∈ s
-- AddSubmonoid.list_sum_mem
@[to_additive "Sum of a list of elements in an `AddSubmonoid` is in the `AddSubmonoid`."]
theorem list_prod_mem {l : List M} (hl : ∀ x ∈ l, x ∈ s) : l.prod ∈ s 
Arguments: {M : Type u_1} [AddMonoid M] (s : AddSubmonoid M) {l : List M} (hl : ∀ x ∈ l, x ∈ s)
Goal: l.sum ∈ s
-- Submonoid.multiset_prod_mem
@[to_additive
      "Sum of a multiset of elements in an `AddSubmonoid` of an `AddCommMonoid` is
      in the `AddSubmonoid`."]
theorem multiset_prod_mem {M} [CommMonoid M] (S : Submonoid M) (m : Multiset M)
    (hm : ∀ a ∈ m, a ∈ S) : m.prod ∈ S 
Arguments: {M : Type u_4} [CommMonoid M] (S : Submonoid M) (m : Multiset M) (hm : ∀ a ∈ m, a ∈ S)
Goal: m.prod ∈ S
-- AddSubmonoid.multiset_sum_mem
@[to_additive
      "Sum of a multiset of elements in an `AddSubmonoid` of an `AddCommMonoid` is
      in the `AddSubmonoid`."]
theorem multiset_prod_mem {M} [CommMonoid M] (S : Submonoid M) (m : Multiset M)
    (hm : ∀ a ∈ m, a ∈ S) : m.prod ∈ S 
Arguments: {M : Type u_4} [AddCommMonoid M] (S : AddSubmonoid M) (m : Multiset M) (hm : ∀ a ∈ m, a ∈ S)
Goal: m.sum ∈ S
-- AddSubmonoid.multiset_noncommSum_mem
@[to_additive]
theorem multiset_noncommProd_mem (S : Submonoid M) (m : Multiset M) (comm) (h : ∀ x ∈ m, x ∈ S) :
    m.noncommProd comm ∈ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) (m : Multiset M) (comm : {x | x ∈ m}.Pairwise AddCommute) (h : ∀ x ∈ m, x ∈ S)
Goal: m.noncommSum comm ∈ S
-- Submonoid.multiset_noncommProd_mem
@[to_additive]
theorem multiset_noncommProd_mem (S : Submonoid M) (m : Multiset M) (comm) (h : ∀ x ∈ m, x ∈ S) :
    m.noncommProd comm ∈ S 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) (m : Multiset M) (comm : {x | x ∈ m}.Pairwise Commute) (h : ∀ x ∈ m, x ∈ S)
Goal: m.noncommProd comm ∈ S
-- AddSubmonoid.sum_mem
@[to_additive
      "Sum of elements in an `AddSubmonoid` of an `AddCommMonoid` indexed by a `Finset`
      is in the `AddSubmonoid`."]
theorem prod_mem {M : Type*} [CommMonoid M] (S : Submonoid M) {ι : Type*} {t : Finset ι}
    {f : ι → M} (h : ∀ c ∈ t, f c ∈ S) : (∏ c ∈ t, f c) ∈ S 
Arguments: {M : Type u_4} [AddCommMonoid M] (S : AddSubmonoid M) {ι : Type u_5} {t : Finset ι} {f : ι → M} (h : ∀ c ∈ t, f c ∈ S)
Goal: ∑ c ∈ t, f c ∈ S
-- Submonoid.prod_mem
@[to_additive
      "Sum of elements in an `AddSubmonoid` of an `AddCommMonoid` indexed by a `Finset`
      is in the `AddSubmonoid`."]
theorem prod_mem {M : Type*} [CommMonoid M] (S : Submonoid M) {ι : Type*} {t : Finset ι}
    {f : ι → M} (h : ∀ c ∈ t, f c ∈ S) : (∏ c ∈ t, f c) ∈ S 
Arguments: {M : Type u_4} [CommMonoid M] (S : Submonoid M) {ι : Type u_5} {t : Finset ι} {f : ι → M} (h : ∀ c ∈ t, f c ∈ S)
Goal: ∏ c ∈ t, f c ∈ S
-- Submonoid.noncommProd_mem
@[to_additive]
theorem noncommProd_mem (S : Submonoid M) {ι : Type*} (t : Finset ι) (f : ι → M) (comm)
    (h : ∀ c ∈ t, f c ∈ S) : t.noncommProd f comm ∈ S 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) {ι : Type u_4} (t : Finset ι) (f : ι → M) (comm : (↑t).Pairwise fun a b => Commute (f a) (f b)) (h : ∀ c ∈ t, f c ∈ S)
Goal: t.noncommProd f comm ∈ S
-- AddSubmonoid.noncommSum_mem
@[to_additive]
theorem noncommProd_mem (S : Submonoid M) {ι : Type*} (t : Finset ι) (f : ι → M) (comm)
    (h : ∀ c ∈ t, f c ∈ S) : t.noncommProd f comm ∈ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {ι : Type u_4} (t : Finset ι) (f : ι → M) (comm : (↑t).Pairwise fun a b => AddCommute (f a) (f b)) (h : ∀ c ∈ t, f c ∈ S)
Goal: t.noncommSum f comm ∈ S
-- AddSubmonoid.mem_iSup_of_directed
@[to_additive]
theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {S : ι → Submonoid M} (hS : Directed (· ≤ ·) S)
    {x : M} : (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i 
Arguments: {M : Type u_1} [AddZeroClass M] {ι : Sort u_4} [hι : Nonempty ι] {S : ι → AddSubmonoid M} (hS : Directed (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
-- Submonoid.mem_iSup_of_directed
@[to_additive]
theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {S : ι → Submonoid M} (hS : Directed (· ≤ ·) S)
    {x : M} : (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i 
Arguments: {M : Type u_1} [MulOneClass M] {ι : Sort u_4} [hι : Nonempty ι] {S : ι → Submonoid M} (hS : Directed (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ ⨆ i, S i ↔ ∃ i, x ∈ S i
-- Submonoid.coe_iSup_of_directed
@[to_additive]
theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Submonoid M} (hS : Directed (· ≤ ·) S) :
    ((⨆ i, S i : Submonoid M) : Set M) = ⋃ i, S i 
Arguments: {M : Type u_1} [MulOneClass M] {ι : Sort u_4} [Nonempty ι] {S : ι → Submonoid M} (hS : Directed (fun x x_1 => x ≤ x_1) S)
Goal: ↑(⨆ i, S i) = ⋃ i, ↑(S i)
-- AddSubmonoid.coe_iSup_of_directed
@[to_additive]
theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Submonoid M} (hS : Directed (· ≤ ·) S) :
    ((⨆ i, S i : Submonoid M) : Set M) = ⋃ i, S i 
Arguments: {M : Type u_1} [AddZeroClass M] {ι : Sort u_4} [Nonempty ι] {S : ι → AddSubmonoid M} (hS : Directed (fun x x_1 => x ≤ x_1) S)
Goal: ↑(⨆ i, S i) = ⋃ i, ↑(S i)
-- Submonoid.mem_sSup_of_directedOn
@[to_additive]
theorem mem_sSup_of_directedOn {S : Set (Submonoid M)} (Sne : S.Nonempty)
    (hS : DirectedOn (· ≤ ·) S) {x : M} : x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s 
Arguments: {M : Type u_1} [MulOneClass M] {S : Set (Submonoid M)} (Sne : S.Nonempty) (hS : DirectedOn (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
-- AddSubmonoid.mem_sSup_of_directedOn
@[to_additive]
theorem mem_sSup_of_directedOn {S : Set (Submonoid M)} (Sne : S.Nonempty)
    (hS : DirectedOn (· ≤ ·) S) {x : M} : x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s 
Arguments: {M : Type u_1} [AddZeroClass M] {S : Set (AddSubmonoid M)} (Sne : S.Nonempty) (hS : DirectedOn (fun x x_1 => x ≤ x_1) S) {x : M}
Goal: x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
-- AddSubmonoid.coe_sSup_of_directedOn
@[to_additive]
theorem coe_sSup_of_directedOn {S : Set (Submonoid M)} (Sne : S.Nonempty)
    (hS : DirectedOn (· ≤ ·) S) : (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s 
Arguments: {M : Type u_1} [AddZeroClass M] {S : Set (AddSubmonoid M)} (Sne : S.Nonempty) (hS : DirectedOn (fun x x_1 => x ≤ x_1) S)
Goal: ↑(sSup S) = ⋃ s ∈ S, ↑s
-- Submonoid.coe_sSup_of_directedOn
@[to_additive]
theorem coe_sSup_of_directedOn {S : Set (Submonoid M)} (Sne : S.Nonempty)
    (hS : DirectedOn (· ≤ ·) S) : (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s 
Arguments: {M : Type u_1} [MulOneClass M] {S : Set (Submonoid M)} (Sne : S.Nonempty) (hS : DirectedOn (fun x x_1 => x ≤ x_1) S)
Goal: ↑(sSup S) = ⋃ s ∈ S, ↑s
-- Submonoid.mem_sup_left
@[to_additive]
theorem mem_sup_left {S T : Submonoid M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T 
Arguments: {M : Type u_1} [MulOneClass M] {S T : Submonoid M} {x : M}
Goal: x ∈ S → x ∈ S ⊔ T
-- AddSubmonoid.mem_sup_left
@[to_additive]
theorem mem_sup_left {S T : Submonoid M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T 
Arguments: {M : Type u_1} [AddZeroClass M] {S T : AddSubmonoid M} {x : M}
Goal: x ∈ S → x ∈ S ⊔ T
-- Submonoid.mem_sup_right
@[to_additive]
theorem mem_sup_right {S T : Submonoid M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T 
Arguments: {M : Type u_1} [MulOneClass M] {S T : Submonoid M} {x : M}
Goal: x ∈ T → x ∈ S ⊔ T
-- AddSubmonoid.mem_sup_right
@[to_additive]
theorem mem_sup_right {S T : Submonoid M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T 
Arguments: {M : Type u_1} [AddZeroClass M] {S T : AddSubmonoid M} {x : M}
Goal: x ∈ T → x ∈ S ⊔ T
-- AddSubmonoid.add_mem_sup
@[to_additive]
theorem mul_mem_sup {S T : Submonoid M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T 
Arguments: {M : Type u_1} [AddZeroClass M] {S T : AddSubmonoid M} {x y : M} (hx : x ∈ S) (hy : y ∈ T)
Goal: x + y ∈ S ⊔ T
-- Submonoid.mul_mem_sup
@[to_additive]
theorem mul_mem_sup {S T : Submonoid M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T 
Arguments: {M : Type u_1} [MulOneClass M] {S T : Submonoid M} {x y : M} (hx : x ∈ S) (hy : y ∈ T)
Goal: x * y ∈ S ⊔ T
-- Submonoid.mem_iSup_of_mem
@[to_additive]
theorem mem_iSup_of_mem {ι : Sort*} {S : ι → Submonoid M} (i : ι) :
    ∀ {x : M}, x ∈ S i → x ∈ iSup S 
Arguments: {M : Type u_1} [MulOneClass M] {ι : Sort u_4} {S : ι → Submonoid M} (i : ι) {x : M}
Goal: x ∈ S i → x ∈ iSup S
-- AddSubmonoid.mem_iSup_of_mem
@[to_additive]
theorem mem_iSup_of_mem {ι : Sort*} {S : ι → Submonoid M} (i : ι) :
    ∀ {x : M}, x ∈ S i → x ∈ iSup S 
Arguments: {M : Type u_1} [AddZeroClass M] {ι : Sort u_4} {S : ι → AddSubmonoid M} (i : ι) {x : M}
Goal: x ∈ S i → x ∈ iSup S
-- AddSubmonoid.mem_sSup_of_mem
@[to_additive]
theorem mem_sSup_of_mem {S : Set (Submonoid M)} {s : Submonoid M} (hs : s ∈ S) :
    ∀ {x : M}, x ∈ s → x ∈ sSup S 
Arguments: {M : Type u_1} [AddZeroClass M] {S : Set (AddSubmonoid M)} {s : AddSubmonoid M} (hs : s ∈ S) {x : M}
Goal: x ∈ s → x ∈ sSup S
-- Submonoid.mem_sSup_of_mem
@[to_additive]
theorem mem_sSup_of_mem {S : Set (Submonoid M)} {s : Submonoid M} (hs : s ∈ S) :
    ∀ {x : M}, x ∈ s → x ∈ sSup S 
Arguments: {M : Type u_1} [MulOneClass M] {S : Set (Submonoid M)} {s : Submonoid M} (hs : s ∈ S) {x : M}
Goal: x ∈ s → x ∈ sSup S
-- AddSubmonoid.iSup_induction
@[to_additive (attr := elab_as_elim)
      " An induction principle for elements of `⨆ i, S i`.
      If `C` holds for `0` and 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 {ι : Sort*} (S : ι → Submonoid M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i)
    (mem : ∀ (i), ∀ x ∈ S i, C x) (one : C 1) (mul : ∀ x y, C x → C y → C (x * y)) : C x 
Arguments: {M : Type u_1} [AddZeroClass M] {ι : Sort u_4} (S : ι → AddSubmonoid M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i) (mem : ∀ (i : ι), ∀ x ∈ S i, C x) (one : C 0) (mul : ∀ (x y : M), C x → C y → C (x + y))
Goal: C x
-- Submonoid.iSup_induction
@[to_additive (attr := elab_as_elim)
      " An induction principle for elements of `⨆ i, S i`.
      If `C` holds for `0` and 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 {ι : Sort*} (S : ι → Submonoid M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i)
    (mem : ∀ (i), ∀ x ∈ S i, C x) (one : C 1) (mul : ∀ x y, C x → C y → C (x * y)) : C x 
Arguments: {M : Type u_1} [MulOneClass M] {ι : Sort u_4} (S : ι → Submonoid M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i) (mem : ∀ (i : ι), ∀ x ∈ S i, C x) (one : C 1) (mul : ∀ (x y : M), C x → C y → C (x * y))
Goal: C x
-- Submonoid.iSup_induction'
@[to_additive (attr := elab_as_elim) "A dependent version of `AddSubmonoid.iSup_induction`. "]
theorem iSup_induction' {ι : Sort*} (S : ι → Submonoid M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
    (mem : ∀ (i), ∀ (x) (hxS : x ∈ S i), C x (mem_iSup_of_mem i hxS)) (one : C 1 (one_mem _))
    (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: {M : Type u_1} [MulOneClass M] {ι : Sort u_4} (S : ι → Submonoid M) {C : (x : M) → x ∈ ⨆ i, S i → Prop} (mem : ∀ (i : ι) (x : M) (hxS : x ∈ S i), C x ⋯) (one : C 1 ⋯) (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
-- AddSubmonoid.iSup_induction'
@[to_additive (attr := elab_as_elim) "A dependent version of `AddSubmonoid.iSup_induction`. "]
theorem iSup_induction' {ι : Sort*} (S : ι → Submonoid M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
    (mem : ∀ (i), ∀ (x) (hxS : x ∈ S i), C x (mem_iSup_of_mem i hxS)) (one : C 1 (one_mem _))
    (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: {M : Type u_1} [AddZeroClass M] {ι : Sort u_4} (S : ι → AddSubmonoid M) {C : (x : M) → x ∈ ⨆ i, S i → Prop} (mem : ∀ (i : ι) (x : M) (hxS : x ∈ S i), C x ⋯) (one : C 0 ⋯) (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
-- FreeAddMonoid.closure_range_of
@[to_additive]
theorem closure_range_of : closure (Set.range <| @of α) = ⊤ 
Arguments: {α : Type u_4}
Goal: AddSubmonoid.closure (Set.range FreeAddMonoid.of) = ⊤
-- FreeMonoid.closure_range_of
@[to_additive]
theorem closure_range_of : closure (Set.range <| @of α) = ⊤ 
Arguments: {α : Type u_4}
Goal: Submonoid.closure (Set.range FreeMonoid.of) = ⊤
-- Submonoid.closure_singleton_eq
theorem closure_singleton_eq (x : M) : closure ({x} : Set M) = mrange (powersHom M x) 
Arguments: {M : Type u_1} [Monoid M] (x : M)
Goal: Submonoid.closure {x} = MonoidHom.mrange ((powersHom M) x)
-- Submonoid.mem_closure_singleton
theorem mem_closure_singleton {x y : M} : y ∈ closure ({x} : Set M) ↔ ∃ n : ℕ, x ^ n = y 
Arguments: {M : Type u_1} [Monoid M] {x y : M}
Goal: y ∈ Submonoid.closure {x} ↔ ∃ n, x ^ n = y
-- Submonoid.mem_closure_singleton_self
theorem mem_closure_singleton_self {y : M} : y ∈ closure ({y} : Set M) 
Arguments: {M : Type u_1} [Monoid M] {y : M}
Goal: y ∈ Submonoid.closure {y}
-- Submonoid.closure_singleton_one
theorem closure_singleton_one : closure ({1} : Set M) = ⊥ 
Arguments: {M : Type u_1} [Monoid M]
Goal: Submonoid.closure {1} = ⊥
-- Submonoid.card_bot
@[to_additive]
theorem card_bot {_ : Fintype (⊥ : Submonoid M)} : card (⊥ : Submonoid M) = 1 
Arguments: {M : Type u_1} [Monoid M]
Goal: ∀ {x : Fintype ↥⊥}, Fintype.card ↥⊥ = 1
-- AddSubmonoid.card_bot
@[to_additive]
theorem card_bot {_ : Fintype (⊥ : Submonoid M)} : card (⊥ : Submonoid M) = 1 
Arguments: {M : Type u_1} [AddMonoid M]
Goal: ∀ {x : Fintype ↥⊥}, Fintype.card ↥⊥ = 1
-- AddSubmonoid.eq_bot_of_card_le
@[to_additive]
theorem eq_bot_of_card_le (h : card S ≤ 1) : S = ⊥ 
Arguments: {M : Type u_1} [AddMonoid M] {S : AddSubmonoid M} [Fintype ↥S] (h : Fintype.card ↥S ≤ 1)
Goal: S = ⊥
-- Submonoid.eq_bot_of_card_le
@[to_additive]
theorem eq_bot_of_card_le (h : card S ≤ 1) : S = ⊥ 
Arguments: {M : Type u_1} [Monoid M] {S : Submonoid M} [Fintype ↥S] (h : Fintype.card ↥S ≤ 1)
Goal: S = ⊥
-- AddSubmonoid.eq_bot_of_card_eq
@[to_additive]
theorem eq_bot_of_card_eq (h : card S = 1) : S = ⊥ 
Arguments: {M : Type u_1} [AddMonoid M] {S : AddSubmonoid M} [Fintype ↥S] (h : Fintype.card ↥S = 1)
Goal: S = ⊥
-- Submonoid.eq_bot_of_card_eq
@[to_additive]
theorem eq_bot_of_card_eq (h : card S = 1) : S = ⊥ 
Arguments: {M : Type u_1} [Monoid M] {S : Submonoid M} [Fintype ↥S] (h : Fintype.card ↥S = 1)
Goal: S = ⊥
-- Submonoid.card_le_one_iff_eq_bot
@[to_additive card_le_one_iff_eq_bot]
theorem card_le_one_iff_eq_bot : card S ≤ 1 ↔ S = ⊥ 
Arguments: {M : Type u_1} [Monoid M] {S : Submonoid M} [Fintype ↥S]
Goal: Fintype.card ↥S ≤ 1 ↔ S = ⊥
-- AddSubmonoid.card_le_one_iff_eq_bot
@[to_additive card_le_one_iff_eq_bot]
theorem card_le_one_iff_eq_bot : card S ≤ 1 ↔ S = ⊥ 
Arguments: {M : Type u_1} [AddMonoid M] {S : AddSubmonoid M} [Fintype ↥S]
Goal: Fintype.card ↥S ≤ 1 ↔ S = ⊥
-- Submonoid.eq_bot_iff_card
@[to_additive]
lemma eq_bot_iff_card : S = ⊥ ↔ card S = 1 
Arguments: {M : Type u_1} [Monoid M] {S : Submonoid M} [Fintype ↥S]
Goal: S = ⊥ ↔ Fintype.card ↥S = 1
-- AddSubmonoid.eq_bot_iff_card
@[to_additive]
lemma eq_bot_iff_card : S = ⊥ ↔ card S = 1 
Arguments: {M : Type u_1} [AddMonoid M] {S : AddSubmonoid M} [Fintype ↥S]
Goal: S = ⊥ ↔ Fintype.card ↥S = 1
-- FreeAddMonoid.mrange_lift
@[to_additive]
theorem _root_.FreeMonoid.mrange_lift {α} (f : α → M) :
    mrange (FreeMonoid.lift f) = closure (Set.range f) 
Arguments: {M : Type u_1} [AddMonoid M] {α : Type u_4} (f : α → M)
Goal: AddMonoidHom.mrange (FreeAddMonoid.lift f) = AddSubmonoid.closure (Set.range f)
-- FreeMonoid.mrange_lift
@[to_additive]
theorem _root_.FreeMonoid.mrange_lift {α} (f : α → M) :
    mrange (FreeMonoid.lift f) = closure (Set.range f) 
Arguments: {M : Type u_1} [Monoid M] {α : Type u_4} (f : α → M)
Goal: MonoidHom.mrange (FreeMonoid.lift f) = Submonoid.closure (Set.range f)
-- AddSubmonoid.closure_eq_mrange
@[to_additive]
theorem closure_eq_mrange (s : Set M) : closure s = mrange (FreeMonoid.lift ((↑) : s → M)) 
Arguments: {M : Type u_1} [AddMonoid M] (s : Set M)
Goal: AddSubmonoid.closure s = AddMonoidHom.mrange (FreeAddMonoid.lift Subtype.val)
-- Submonoid.closure_eq_mrange
@[to_additive]
theorem closure_eq_mrange (s : Set M) : closure s = mrange (FreeMonoid.lift ((↑) : s → M)) 
Arguments: {M : Type u_1} [Monoid M] (s : Set M)
Goal: Submonoid.closure s = MonoidHom.mrange (FreeMonoid.lift Subtype.val)