ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subgroup.card_le_one_iff_eq_bot
@[to_additive card_le_one_iff_eq_bot]
theorem card_le_one_iff_eq_bot [Finite H] : Nat.card H ≤ 1 ↔ H = ⊥ 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) [Finite ↥H]
Goal: Nat.card ↥H ≤ 1 ↔ H = ⊥
-- AddSubgroup.eq_bot_iff_card
@[to_additive] lemma eq_bot_iff_card : H = ⊥ ↔ Nat.card H = 1 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H = ⊥ ↔ Nat.card ↥H = 1
-- Subgroup.eq_bot_iff_card
@[to_additive] lemma eq_bot_iff_card : H = ⊥ ↔ Nat.card H = 1 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H = ⊥ ↔ Nat.card ↥H = 1
-- Subgroup.one_lt_card_iff_ne_bot
@[to_additive one_lt_card_iff_ne_bot]
theorem one_lt_card_iff_ne_bot [Finite H] : 1 < Nat.card H ↔ H ≠ ⊥ 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) [Finite ↥H]
Goal: 1 < Nat.card ↥H ↔ H ≠ ⊥
-- AddSubgroup.one_lt_card_iff_ne_bot
@[to_additive one_lt_card_iff_ne_bot]
theorem one_lt_card_iff_ne_bot [Finite H] : 1 < Nat.card H ↔ H ≠ ⊥ 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [Finite ↥H]
Goal: 1 < Nat.card ↥H ↔ H ≠ ⊥
-- AddSubgroup.card_le_card_addGroup
@[to_additive]
theorem card_le_card_group [Finite G] : Nat.card H ≤ Nat.card G 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [Finite G]
Goal: Nat.card ↥H ≤ Nat.card G
-- Subgroup.card_le_card_group
@[to_additive]
theorem card_le_card_group [Finite G] : Nat.card H ≤ Nat.card G 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) [Finite G]
Goal: Nat.card ↥H ≤ Nat.card G
-- Subgroup.pi_mem_of_mulSingle_mem_aux
@[to_additive]
theorem pi_mem_of_mulSingle_mem_aux [DecidableEq η] (I : Finset η) {H : Subgroup (∀ i, f i)}
    (x : ∀ i, f i) (h1 : ∀ i, i ∉ I → x i = 1) (h2 : ∀ i, i ∈ I → Pi.mulSingle i (x i) ∈ H) :
    x ∈ H 
Arguments: {η : Type u_3} {f : η → Type u_4} [(i : η) → Group (f i)] [DecidableEq η] (I : Finset η) {H : Subgroup ((i : η) → f i)} (x : (i : η) → f i) (h1 : ∀ i ∉ I, x i = 1) (h2 : ∀ i ∈ I, Pi.mulSingle i (x i) ∈ H)
Goal: x ∈ H
-- AddSubgroup.pi_mem_of_single_mem_aux
@[to_additive]
theorem pi_mem_of_mulSingle_mem_aux [DecidableEq η] (I : Finset η) {H : Subgroup (∀ i, f i)}
    (x : ∀ i, f i) (h1 : ∀ i, i ∉ I → x i = 1) (h2 : ∀ i, i ∈ I → Pi.mulSingle i (x i) ∈ H) :
    x ∈ H 
Arguments: {η : Type u_3} {f : η → Type u_4} [(i : η) → AddGroup (f i)] [DecidableEq η] (I : Finset η) {H : AddSubgroup ((i : η) → f i)} (x : (i : η) → f i) (h1 : ∀ i ∉ I, x i = 0) (h2 : ∀ i ∈ I, Pi.single i (x i) ∈ H)
Goal: x ∈ H
-- AddSubgroup.pi_mem_of_single_mem
@[to_additive]
theorem pi_mem_of_mulSingle_mem [Finite η] [DecidableEq η] {H : Subgroup (∀ i, f i)} (x : ∀ i, f i)
    (h : ∀ i, Pi.mulSingle i (x i) ∈ H) : x ∈ H 
Arguments: {η : Type u_3} {f : η → Type u_4} [(i : η) → AddGroup (f i)] [Finite η] [DecidableEq η] {H : AddSubgroup ((i : η) → f i)} (x : (i : η) → f i) (h : ∀ (i : η), Pi.single i (x i) ∈ H)
Goal: x ∈ H
-- Subgroup.pi_mem_of_mulSingle_mem
@[to_additive]
theorem pi_mem_of_mulSingle_mem [Finite η] [DecidableEq η] {H : Subgroup (∀ i, f i)} (x : ∀ i, f i)
    (h : ∀ i, Pi.mulSingle i (x i) ∈ H) : x ∈ H 
Arguments: {η : Type u_3} {f : η → Type u_4} [(i : η) → Group (f i)] [Finite η] [DecidableEq η] {H : Subgroup ((i : η) → f i)} (x : (i : η) → f i) (h : ∀ (i : η), Pi.mulSingle i (x i) ∈ H)
Goal: x ∈ H
-- AddSubgroup.pi_le_iff
@[to_additive "For finite index types, the `Subgroup.pi` is generated by the embeddings of the
 additive groups."]
theorem pi_le_iff [DecidableEq η] [Finite η] {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i, f i)} :
    pi univ H ≤ J ↔ ∀ i : η, map (MonoidHom.mulSingle f i) (H i) ≤ J 
Arguments: {η : Type u_3} {f : η → Type u_4} [(i : η) → AddGroup (f i)] [DecidableEq η] [Finite η] {H : (i : η) → AddSubgroup (f i)} {J : AddSubgroup ((i : η) → f i)}
Goal: AddSubgroup.pi Set.univ H ≤ J ↔ ∀ (i : η), AddSubgroup.map (AddMonoidHom.single f i) (H i) ≤ J
-- Subgroup.pi_le_iff
@[to_additive "For finite index types, the `Subgroup.pi` is generated by the embeddings of the
 additive groups."]
theorem pi_le_iff [DecidableEq η] [Finite η] {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i, f i)} :
    pi univ H ≤ J ↔ ∀ i : η, map (MonoidHom.mulSingle f i) (H i) ≤ J 
Arguments: {η : Type u_3} {f : η → Type u_4} [(i : η) → Group (f i)] [DecidableEq η] [Finite η] {H : (i : η) → Subgroup (f i)} {J : Subgroup ((i : η) → f i)}
Goal: Subgroup.pi Set.univ H ≤ J ↔ ∀ (i : η), Subgroup.map (MonoidHom.mulSingle f i) (H i) ≤ J
-- Subgroup.mem_normalizer_fintype
theorem mem_normalizer_fintype {S : Set G} [Finite S] {x : G} (h : ∀ n, n ∈ S → x * n * x⁻¹ ∈ S) :
    x ∈ Subgroup.setNormalizer S 
Arguments: {G : Type u_1} [Group G] {S : Set G} [Finite ↑S] {x : G} (h : ∀ n ∈ S, x * n * x⁻¹ ∈ S)
Goal: x ∈ Subgroup.setNormalizer S
-- GenContFract.IntFractPair.nth_stream_fr_nonneg_lt_one
theorem nth_stream_fr_nonneg_lt_one {ifp_n : IntFractPair K}
    (nth_stream_eq : IntFractPair.stream v n = some ifp_n) : 0 ≤ ifp_n.fr ∧ ifp_n.fr < 1 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {ifp_n : GenContFract.IntFractPair K} (nth_stream_eq : GenContFract.IntFractPair.stream v n = some ifp_n)
Goal: 0 ≤ ifp_n.fr ∧ ifp_n.fr < 1
-- GenContFract.IntFractPair.nth_stream_fr_nonneg
theorem nth_stream_fr_nonneg {ifp_n : IntFractPair K}
    (nth_stream_eq : IntFractPair.stream v n = some ifp_n) : 0 ≤ ifp_n.fr 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {ifp_n : GenContFract.IntFractPair K} (nth_stream_eq : GenContFract.IntFractPair.stream v n = some ifp_n)
Goal: 0 ≤ ifp_n.fr
-- GenContFract.IntFractPair.nth_stream_fr_lt_one
theorem nth_stream_fr_lt_one {ifp_n : IntFractPair K}
    (nth_stream_eq : IntFractPair.stream v n = some ifp_n) : ifp_n.fr < 1 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {ifp_n : GenContFract.IntFractPair K} (nth_stream_eq : GenContFract.IntFractPair.stream v n = some ifp_n)
Goal: ifp_n.fr < 1
-- GenContFract.IntFractPair.one_le_succ_nth_stream_b
theorem one_le_succ_nth_stream_b {ifp_succ_n : IntFractPair K}
    (succ_nth_stream_eq : IntFractPair.stream v (n + 1) = some ifp_succ_n) : 1 ≤ ifp_succ_n.b 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {ifp_succ_n : GenContFract.IntFractPair K} (succ_nth_stream_eq : GenContFract.IntFractPair.stream v (n + 1) = some ifp_succ_n)
Goal: 1 ≤ ifp_succ_n.b
-- GenContFract.IntFractPair.succ_nth_stream_b_le_nth_stream_fr_inv
theorem succ_nth_stream_b_le_nth_stream_fr_inv {ifp_n ifp_succ_n : IntFractPair K}
    (nth_stream_eq : IntFractPair.stream v n = some ifp_n)
    (succ_nth_stream_eq : IntFractPair.stream v (n + 1) = some ifp_succ_n) :
    (ifp_succ_n.b : K) ≤ ifp_n.fr⁻¹ 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {ifp_n ifp_succ_n : GenContFract.IntFractPair K} (nth_stream_eq : GenContFract.IntFractPair.stream v n = some ifp_n) (succ_nth_stream_eq : GenContFract.IntFractPair.stream v (n + 1) = some ifp_succ_n)
Goal: ↑ifp_succ_n.b ≤ ifp_n.fr⁻¹
-- GenContFract.of_one_le_get?_partDen
theorem of_one_le_get?_partDen {b : K}
    (nth_partDen_eq : (of v).partDens.get? n = some b) : 1 ≤ b 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {b : K} (nth_partDen_eq : (GenContFract.of v).partDens.get? n = some b)
Goal: 1 ≤ b
-- GenContFract.of_partNum_eq_one_and_exists_int_partDen_eq
theorem of_partNum_eq_one_and_exists_int_partDen_eq {gp : GenContFract.Pair K}
    (nth_s_eq : (of v).s.get? n = some gp) : gp.a = 1 ∧ ∃ z : ℤ, gp.b = (z : K) 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {gp : GenContFract.Pair K} (nth_s_eq : (GenContFract.of v).s.get? n = some gp)
Goal: gp.a = 1 ∧ ∃ z, gp.b = ↑z
-- GenContFract.of_partNum_eq_one
theorem of_partNum_eq_one {a : K} (nth_partNum_eq : (of v).partNums.get? n = some a) :
    a = 1 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {a : K} (nth_partNum_eq : (GenContFract.of v).partNums.get? n = some a)
Goal: a = 1
-- GenContFract.exists_int_eq_of_partDen
theorem exists_int_eq_of_partDen {b : K}
    (nth_partDen_eq : (of v).partDens.get? n = some b) : ∃ z : ℤ, b = (z : K) 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {b : K} (nth_partDen_eq : (GenContFract.of v).partDens.get? n = some b)
Goal: ∃ z, b = ↑z
-- GenContFract.of_isSimpContFract
theorem GenContFract.of_isSimpContFract :
    (of v).IsSimpContFract 
Arguments: {K : Type u_1} (v : K) [LinearOrderedField K] [FloorRing K]
Goal: (GenContFract.of v).IsSimpContFract
-- SimpContFract.of_isContFract
theorem SimpContFract.of_isContFract :
    (SimpContFract.of v).IsContFract 
Arguments: {K : Type u_1} (v : K) [LinearOrderedField K] [FloorRing K]
Goal: (SimpContFract.of v).IsContFract
-- GenContFract.fib_le_of_contsAux_b
theorem fib_le_of_contsAux_b :
    n ≤ 1 ∨ ¬(of v).TerminatedAt (n - 2) → (fib n : K) ≤ ((of v).contsAux n).b 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K]
Goal: n ≤ 1 ∨ ¬(GenContFract.of v).TerminatedAt (n - 2) → ↑(Nat.fib n) ≤ ((GenContFract.of v).contsAux n).b
-- GenContFract.succ_nth_fib_le_of_nth_den
theorem succ_nth_fib_le_of_nth_den (hyp : n = 0 ∨ ¬(of v).TerminatedAt (n - 1)) :
    (fib (n + 1) : K) ≤ (of v).dens n 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] (hyp : n = 0 ∨ ¬(GenContFract.of v).TerminatedAt (n - 1))
Goal: ↑(Nat.fib (n + 1)) ≤ (GenContFract.of v).dens n
-- GenContFract.zero_le_of_contsAux_b
theorem zero_le_of_contsAux_b : 0 ≤ ((of v).contsAux n).b 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K]
Goal: 0 ≤ ((GenContFract.of v).contsAux n).b
-- GenContFract.zero_le_of_den
theorem zero_le_of_den : 0 ≤ (of v).dens n 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K]
Goal: 0 ≤ (GenContFract.of v).dens n
-- GenContFract.le_of_succ_succ_get?_contsAux_b
theorem le_of_succ_succ_get?_contsAux_b {b : K}
    (nth_partDen_eq : (of v).partDens.get? n = some b) :
    b * ((of v).contsAux <| n + 1).b ≤ ((of v).contsAux <| n + 2).b 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {b : K} (nth_partDen_eq : (GenContFract.of v).partDens.get? n = some b)
Goal: b * ((GenContFract.of v).contsAux (n + 1)).b ≤ ((GenContFract.of v).contsAux (n + 2)).b
-- GenContFract.le_of_succ_get?_den
theorem le_of_succ_get?_den {b : K}
    (nth_partDenom_eq : (of v).partDens.get? n = some b) :
    b * (of v).dens n ≤ (of v).dens (n + 1) 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {b : K} (nth_partDenom_eq : (GenContFract.of v).partDens.get? n = some b)
Goal: b * (GenContFract.of v).dens n ≤ (GenContFract.of v).dens (n + 1)
-- GenContFract.of_den_mono
theorem of_den_mono : (of v).dens n ≤ (of v).dens (n + 1) 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K]
Goal: (GenContFract.of v).dens n ≤ (GenContFract.of v).dens (n + 1)
-- GenContFract.sub_convs_eq
theorem sub_convs_eq {ifp : IntFractPair K}
    (stream_nth_eq : IntFractPair.stream v n = some ifp) :
    let g := of v
    let B := (g.contsAux (n + 1)).b
    let pB := (g.contsAux n).b
    v - g.convs n = if ifp.fr = 0 then 0 else (-1) ^ n / (B * (ifp.fr⁻¹ * B + pB)) 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {ifp : GenContFract.IntFractPair K} (stream_nth_eq : GenContFract.IntFractPair.stream v n = some ifp)
Goal: let g := GenContFract.of v;
let B := (g.contsAux (n + 1)).b;
let pB := (g.contsAux n).b;
v - g.convs n = if ifp.fr = 0 then 0 else (-1) ^ n / (B * (ifp.fr⁻¹ * B + pB))
-- GenContFract.abs_sub_convs_le
theorem abs_sub_convs_le (not_terminatedAt_n : ¬(of v).TerminatedAt n) :
    |v - (of v).convs n| ≤ 1 / ((of v).dens n * ((of v).dens <| n + 1)) 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] (not_terminatedAt_n : ¬(GenContFract.of v).TerminatedAt n)
Goal: |v - (GenContFract.of v).convs n| ≤ 1 / ((GenContFract.of v).dens n * (GenContFract.of v).dens (n + 1))
-- GenContFract.abs_sub_convergents_le'
theorem abs_sub_convergents_le' {b : K}
    (nth_partDen_eq : (of v).partDens.get? n = some b) :
    |v - (of v).convs n| ≤ 1 / (b * (of v).dens n * (of v).dens n) 
Arguments: {K : Type u_1} {v : K} {n : ℕ} [LinearOrderedField K] [FloorRing K] {b : K} (nth_partDen_eq : (GenContFract.of v).partDens.get? n = some b)
Goal: |v - (GenContFract.of v).convs n| ≤ 1 / (b * (GenContFract.of v).dens n * (GenContFract.of v).dens n)
-- Function.mulSupport_along_fiber_finite_of_finite
@[to_additive (attr := simp)]
lemma mulSupport_along_fiber_finite_of_finite (f : α × β → γ) (a : α) (h : (mulSupport f).Finite) :
    (mulSupport fun b ↦ f (a, b)).Finite 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [One γ] (f : α × β → γ) (a : α) (h : (Function.mulSupport f).Finite)
Goal: (Function.mulSupport fun b => f (a, b)).Finite
-- Function.support_along_fiber_finite_of_finite
@[to_additive (attr := simp)]
lemma mulSupport_along_fiber_finite_of_finite (f : α × β → γ) (a : α) (h : (mulSupport f).Finite) :
    (mulSupport fun b ↦ f (a, b)).Finite 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [Zero γ] (f : α × β → γ) (a : α) (h : (Function.support f).Finite)
Goal: (Function.support fun b => f (a, b)).Finite
-- Prod.smul_fst
@[to_additive (attr := simp)] lemma smul_fst : (a • x).1 = a • x.1 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [SMul M α] [SMul M β] (a : M) (x : α × β)
Goal: (a • x).1 = a • x.1
-- Prod.vadd_fst
@[to_additive (attr := simp)] lemma smul_fst : (a • x).1 = a • x.1 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [VAdd M α] [VAdd M β] (a : M) (x : α × β)
Goal: (a +ᵥ x).1 = a +ᵥ x.1
-- Prod.smul_snd
@[to_additive (attr := simp)] lemma smul_snd : (a • x).2 = a • x.2 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [SMul M α] [SMul M β] (a : M) (x : α × β)
Goal: (a • x).2 = a • x.2
-- Prod.vadd_snd
@[to_additive (attr := simp)] lemma smul_snd : (a • x).2 = a • x.2 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [VAdd M α] [VAdd M β] (a : M) (x : α × β)
Goal: (a +ᵥ x).2 = a +ᵥ x.2
-- Prod.smul_mk
@[to_additive (attr := simp)]
lemma smul_mk (a : M) (b : α) (c : β) : a • (b, c) = (a • b, a • c) 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [SMul M α] [SMul M β] (a : M) (b : α) (c : β)
Goal: a • (b, c) = (a • b, a • c)
-- Prod.vadd_mk
@[to_additive (attr := simp)]
lemma smul_mk (a : M) (b : α) (c : β) : a • (b, c) = (a • b, a • c) 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [VAdd M α] [VAdd M β] (a : M) (b : α) (c : β)
Goal: a +ᵥ (b, c) = (a +ᵥ b, a +ᵥ c)
-- Prod.vadd_def
@[to_additive]
lemma smul_def (a : M) (x : α × β) : a • x = (a • x.1, a • x.2) 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [VAdd M α] [VAdd M β] (a : M) (x : α × β)
Goal: a +ᵥ x = (a +ᵥ x.1, a +ᵥ x.2)
-- Prod.smul_def
@[to_additive]
lemma smul_def (a : M) (x : α × β) : a • x = (a • x.1, a • x.2) 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [SMul M α] [SMul M β] (a : M) (x : α × β)
Goal: a • x = (a • x.1, a • x.2)
-- Prod.vadd_swap
@[to_additive (attr := simp)] lemma smul_swap : (a • x).swap = a • x.swap 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [VAdd M α] [VAdd M β] (a : M) (x : α × β)
Goal: (a +ᵥ x).swap = a +ᵥ x.swap
-- Prod.smul_swap
@[to_additive (attr := simp)] lemma smul_swap : (a • x).swap = a • x.swap 
Arguments: {M : Type u_1} {α : Type u_5} {β : Type u_6} [SMul M α] [SMul M β] (a : M) (x : α × β)
Goal: (a • x).swap = a • x.swap
-- Prod.pow_fst
@[to_additive existing (attr := simp) (reorder := 6 7) smul_fst]
lemma pow_fst (p : α × β) (c : E) : (p ^ c).fst = p.fst ^ c 
Arguments: {E : Type u_4} {α : Type u_5} {β : Type u_6} [Pow α E] [Pow β E] (p : α × β) (c : E)
Goal: (p ^ c).1 = p.1 ^ c
-- Prod.pow_snd
@[to_additive existing (attr := simp) (reorder := 6 7) smul_snd]
lemma pow_snd (p : α × β) (c : E) : (p ^ c).snd = p.snd ^ c 
Arguments: {E : Type u_4} {α : Type u_5} {β : Type u_6} [Pow α E] [Pow β E] (p : α × β) (c : E)
Goal: (p ^ c).2 = p.2 ^ c
-- Prod.pow_mk
@[to_additive existing (attr := simp) (reorder := 6 7) smul_mk]
lemma pow_mk (c : E) (a : α) (b : β) : Prod.mk a b ^ c = Prod.mk (a ^ c) (b ^ c) 
Arguments: {E : Type u_4} {α : Type u_5} {β : Type u_6} [Pow α E] [Pow β E] (c : E) (a : α) (b : β)
Goal: (a, b) ^ c = (a ^ c, b ^ c)
-- Prod.pow_def
@[to_additive existing (reorder := 6 7) smul_def]
lemma pow_def (p : α × β) (c : E) : p ^ c = (p.1 ^ c, p.2 ^ c) 
Arguments: {E : Type u_4} {α : Type u_5} {β : Type u_6} [Pow α E] [Pow β E] (p : α × β) (c : E)
Goal: p ^ c = (p.1 ^ c, p.2 ^ c)
-- Prod.pow_swap
@[to_additive existing (attr := simp) (reorder := 6 7) smul_swap]
lemma pow_swap (p : α × β) (c : E) : (p ^ c).swap = p.swap ^ c 
Arguments: {E : Type u_4} {α : Type u_5} {β : Type u_6} [Pow α E] [Pow β E] (p : α × β) (c : E)
Goal: (p ^ c).swap = p.swap ^ c
-- smulMulHom_apply
@[simps]
def smulMulHom [Monoid α] [Mul β] [MulAction α β] [IsScalarTower α β β] [SMulCommClass α β β] :
    α × β →ₙ* β 
Arguments: {α : Type u_5} {β : Type u_6} [Monoid α] [Mul β] [MulAction α β] [IsScalarTower α β β] [SMulCommClass α β β] (a : α × β)
Goal: smulMulHom a = a.1 • a.2
-- smulMonoidHom_apply
@[simps]
def smulMonoidHom [Monoid α] [MulOneClass β] [MulAction α β] [IsScalarTower α β β]
    [SMulCommClass α β β] : α × β →* β 
Arguments: {α : Type u_5} {β : Type u_6} [Monoid α] [MulOneClass β] [MulAction α β] [IsScalarTower α β β] [SMulCommClass α β β]
Goal: ∀ (a : α × β), smulMonoidHom a = smulMulHom.toFun a
-- AddSubmonoid.add_subset
@[to_additive]
theorem mul_subset {S : Submonoid M} (hs : s ⊆ S) (ht : t ⊆ S) : s * t ⊆ S 
Arguments: {M : Type u_3} [AddMonoid M] {s t : Set M} {S : AddSubmonoid M} (hs : s ⊆ ↑S) (ht : t ⊆ ↑S)
Goal: s + t ⊆ ↑S
-- Submonoid.mul_subset
@[to_additive]
theorem mul_subset {S : Submonoid M} (hs : s ⊆ S) (ht : t ⊆ S) : s * t ⊆ S 
Arguments: {M : Type u_3} [Monoid M] {s t : Set M} {S : Submonoid M} (hs : s ⊆ ↑S) (ht : t ⊆ ↑S)
Goal: s * t ⊆ ↑S
-- AddSubmonoid.add_subset_closure
@[to_additive]
theorem mul_subset_closure (hs : s ⊆ u) (ht : t ⊆ u) : s * t ⊆ Submonoid.closure u 
Arguments: {M : Type u_3} [AddMonoid M] {s t u : Set M} (hs : s ⊆ u) (ht : t ⊆ u)
Goal: s + t ⊆ ↑(AddSubmonoid.closure u)
-- Submonoid.mul_subset_closure
@[to_additive]
theorem mul_subset_closure (hs : s ⊆ u) (ht : t ⊆ u) : s * t ⊆ Submonoid.closure u 
Arguments: {M : Type u_3} [Monoid M] {s t u : Set M} (hs : s ⊆ u) (ht : t ⊆ u)
Goal: s * t ⊆ ↑(Submonoid.closure u)
-- Submonoid.coe_mul_self_eq
@[to_additive]
theorem coe_mul_self_eq (s : Submonoid M) : (s : Set M) * s = s 
Arguments: {M : Type u_3} [Monoid M] (s : Submonoid M)
Goal: ↑s * ↑s = ↑s
-- AddSubmonoid.coe_add_self_eq
@[to_additive]
theorem coe_mul_self_eq (s : Submonoid M) : (s : Set M) * s = s 
Arguments: {M : Type u_3} [AddMonoid M] (s : AddSubmonoid M)
Goal: ↑s + ↑s = ↑s
-- AddSubmonoid.closure_add_le
@[to_additive]
theorem closure_mul_le (S T : Set M) : closure (S * T) ≤ closure S ⊔ closure T 
Arguments: {M : Type u_3} [AddMonoid M] (S T : Set M)
Goal: AddSubmonoid.closure (S + T) ≤ AddSubmonoid.closure S ⊔ AddSubmonoid.closure T
-- Submonoid.closure_mul_le
@[to_additive]
theorem closure_mul_le (S T : Set M) : closure (S * T) ≤ closure S ⊔ closure T 
Arguments: {M : Type u_3} [Monoid M] (S T : Set M)
Goal: Submonoid.closure (S * T) ≤ Submonoid.closure S ⊔ Submonoid.closure T
-- Submonoid.sup_eq_closure_mul
@[to_additive]
theorem sup_eq_closure_mul (H K : Submonoid M) : H ⊔ K = closure ((H : Set M) * (K : Set M)) 
Arguments: {M : Type u_3} [Monoid M] (H K : Submonoid M)
Goal: H ⊔ K = Submonoid.closure (↑H * ↑K)
-- AddSubmonoid.sup_eq_closure_add
@[to_additive]
theorem sup_eq_closure_mul (H K : Submonoid M) : H ⊔ K = closure ((H : Set M) * (K : Set M)) 
Arguments: {M : Type u_3} [AddMonoid M] (H K : AddSubmonoid M)
Goal: H ⊔ K = AddSubmonoid.closure (↑H + ↑K)
-- AddSubmonoid.nsmul_vadd_mem_closure_vadd
@[to_additive]
theorem pow_smul_mem_closure_smul {N : Type*} [CommMonoid N] [MulAction M N] [IsScalarTower M N N]
    (r : M) (s : Set N) {x : N} (hx : x ∈ closure s) : ∃ n : ℕ, r ^ n • x ∈ closure (r • s) 
Arguments: {M : Type u_3} [AddMonoid M] {N : Type u_6} [AddCommMonoid N] [AddAction M N] [VAddAssocClass M N N] (r : M) (s : Set N) {x : N} (hx : x ∈ AddSubmonoid.closure s)
Goal: ∃ n, n • r +ᵥ x ∈ AddSubmonoid.closure (r +ᵥ s)
-- Submonoid.pow_smul_mem_closure_smul
@[to_additive]
theorem pow_smul_mem_closure_smul {N : Type*} [CommMonoid N] [MulAction M N] [IsScalarTower M N N]
    (r : M) (s : Set N) {x : N} (hx : x ∈ closure s) : ∃ n : ℕ, r ^ n • x ∈ closure (r • s) 
Arguments: {M : Type u_3} [Monoid M] {N : Type u_6} [CommMonoid N] [MulAction M N] [IsScalarTower M N N] (r : M) (s : Set N) {x : N} (hx : x ∈ Submonoid.closure s)
Goal: ∃ n, r ^ n • x ∈ Submonoid.closure (r • s)
-- Submonoid.coe_inv
@[to_additive (attr := simp)]
theorem coe_inv (S : Submonoid G) : ↑S⁻¹ = (S : Set G)⁻¹ 
Arguments: {G : Type u_2} [Group G] (S : Submonoid G)
Goal: ↑S⁻¹ = (↑S)⁻¹
-- AddSubmonoid.coe_neg
@[to_additive (attr := simp)]
theorem coe_inv (S : Submonoid G) : ↑S⁻¹ = (S : Set G)⁻¹ 
Arguments: {G : Type u_2} [AddGroup G] (S : AddSubmonoid G)
Goal: ↑(-S) = -↑S
-- AddSubmonoid.mem_neg
@[to_additive (attr := simp)]
theorem mem_inv {g : G} {S : Submonoid G} : g ∈ S⁻¹ ↔ g⁻¹ ∈ S 
Arguments: {G : Type u_2} [AddGroup G] {g : G} {S : AddSubmonoid G}
Goal: g ∈ -S ↔ -g ∈ S
-- Submonoid.mem_inv
@[to_additive (attr := simp)]
theorem mem_inv {g : G} {S : Submonoid G} : g ∈ S⁻¹ ↔ g⁻¹ ∈ S 
Arguments: {G : Type u_2} [Group G] {g : G} {S : Submonoid G}
Goal: g ∈ S⁻¹ ↔ g⁻¹ ∈ S
-- Submonoid.inv_le_inv
@[to_additive (attr := simp)]
theorem inv_le_inv (S T : Submonoid G) : S⁻¹ ≤ T⁻¹ ↔ S ≤ T 
Arguments: {G : Type u_2} [Group G] (S T : Submonoid G)
Goal: S⁻¹ ≤ T⁻¹ ↔ S ≤ T
-- AddSubmonoid.neg_le_neg
@[to_additive (attr := simp)]
theorem inv_le_inv (S T : Submonoid G) : S⁻¹ ≤ T⁻¹ ↔ S ≤ T 
Arguments: {G : Type u_2} [AddGroup G] (S T : AddSubmonoid G)
Goal: -S ≤ -T ↔ S ≤ T
-- AddSubmonoid.neg_le
@[to_additive]
theorem inv_le (S T : Submonoid G) : S⁻¹ ≤ T ↔ S ≤ T⁻¹ 
Arguments: {G : Type u_2} [AddGroup G] (S T : AddSubmonoid G)
Goal: -S ≤ T ↔ S ≤ -T
-- Submonoid.inv_le
@[to_additive]
theorem inv_le (S T : Submonoid G) : S⁻¹ ≤ T ↔ S ≤ T⁻¹ 
Arguments: {G : Type u_2} [Group G] (S T : Submonoid G)
Goal: S⁻¹ ≤ T ↔ S ≤ T⁻¹
-- AddSubmonoid.negOrderIso_symm_apply_coe
@[to_additive (attr := simps!) "Pointwise negation of additive submonoids as an order isomorphism"]
def invOrderIso : Submonoid G ≃o Submonoid G 
Arguments: {G : Type u_2} [AddGroup G]
Goal: ∀ (a : AddSubmonoid G), ↑((RelIso.symm AddSubmonoid.negOrderIso) a) = -↑a
-- Submonoid.invOrderIso_apply_coe
@[to_additive (attr := simps!) "Pointwise negation of additive submonoids as an order isomorphism"]
def invOrderIso : Submonoid G ≃o Submonoid G 
Arguments: {G : Type u_2} [Group G]
Goal: ∀ (a : Submonoid G), ↑(Submonoid.invOrderIso a) = (↑a)⁻¹
-- Submonoid.invOrderIso_symm_apply_coe
@[to_additive (attr := simps!) "Pointwise negation of additive submonoids as an order isomorphism"]
def invOrderIso : Submonoid G ≃o Submonoid G 
Arguments: {G : Type u_2} [Group G]
Goal: ∀ (a : Submonoid G), ↑((RelIso.symm Submonoid.invOrderIso) a) = (↑a)⁻¹
-- AddSubmonoid.negOrderIso_apply_coe
@[to_additive (attr := simps!) "Pointwise negation of additive submonoids as an order isomorphism"]
def invOrderIso : Submonoid G ≃o Submonoid G 
Arguments: {G : Type u_2} [AddGroup G]
Goal: ∀ (a : AddSubmonoid G), ↑(AddSubmonoid.negOrderIso a) = -↑a
-- AddSubmonoid.closure_neg
@[to_additive]
theorem closure_inv (s : Set G) : closure s⁻¹ = (closure s)⁻¹ 
Arguments: {G : Type u_2} [AddGroup G] (s : Set G)
Goal: AddSubmonoid.closure (-s) = -AddSubmonoid.closure s
-- Submonoid.closure_inv
@[to_additive]
theorem closure_inv (s : Set G) : closure s⁻¹ = (closure s)⁻¹ 
Arguments: {G : Type u_2} [Group G] (s : Set G)
Goal: Submonoid.closure s⁻¹ = (Submonoid.closure s)⁻¹
-- Submonoid.inv_inf
@[to_additive (attr := simp)]
theorem inv_inf (S T : Submonoid G) : (S ⊓ T)⁻¹ = S⁻¹ ⊓ T⁻¹ 
Arguments: {G : Type u_2} [Group G] (S T : Submonoid G)
Goal: (S ⊓ T)⁻¹ = S⁻¹ ⊓ T⁻¹
-- AddSubmonoid.neg_inf
@[to_additive (attr := simp)]
theorem inv_inf (S T : Submonoid G) : (S ⊓ T)⁻¹ = S⁻¹ ⊓ T⁻¹ 
Arguments: {G : Type u_2} [AddGroup G] (S T : AddSubmonoid G)
Goal: -(S ⊓ T) = -S ⊓ -T