ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Function.Surjective.rightDistribClass
theorem rightDistribClass [Mul α] [Add α] [RightDistribClass α] (add : ∀ x y, f (x + y) = f x + f y)
    (mul : ∀ x y, f (x * y) = f x * f y) : RightDistribClass β 
Arguments: {α : Type u_1} {β : Type u_2} [Add β] [Mul β] (f : α → β) (hf : Function.Surjective f) [Mul α] [Add α] [RightDistribClass α] (add : ∀ (x y : α), f (x + y) = f x + f y) (mul : ∀ (x y : α), f (x * y) = f x * f y)
Goal: RightDistribClass β
-- Set.add_mem_centralizer
@[simp]
theorem add_mem_centralizer [Distrib M] (ha : a ∈ centralizer S) (hb : b ∈ centralizer S) :
    a + b ∈ centralizer S 
Arguments: {M : Type u_1} {S : Set M} {a b : M} [Distrib M] (ha : a ∈ S.centralizer) (hb : b ∈ S.centralizer)
Goal: a + b ∈ S.centralizer
-- Set.neg_mem_centralizer
@[simp]
theorem neg_mem_centralizer [Mul M] [HasDistribNeg M] (ha : a ∈ centralizer S) :
    -a ∈ centralizer S 
Arguments: {M : Type u_1} {S : Set M} {a : M} [Mul M] [HasDistribNeg M] (ha : a ∈ S.centralizer)
Goal: -a ∈ S.centralizer
-- Subalgebra.rank_sup_eq_rank_left_mul_rank_of_free
theorem rank_sup_eq_rank_left_mul_rank_of_free :
    Module.rank R ↥(A ⊔ B) = Module.rank R A * Module.rank A (Algebra.adjoin A (B : Set S)) 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] (A B : Subalgebra R S) [Module.Free R ↥A] [Module.Free ↥A ↥(Algebra.adjoin ↥A ↑B)]
Goal: Module.rank R ↥(A ⊔ B) = Module.rank R ↥A * Module.rank ↥A ↥(Algebra.adjoin ↥A ↑B)
-- Subalgebra.rank_sup_eq_rank_right_mul_rank_of_free
theorem rank_sup_eq_rank_right_mul_rank_of_free :
    Module.rank R ↥(A ⊔ B) = Module.rank R B * Module.rank B (Algebra.adjoin B (A : Set S)) 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] (A B : Subalgebra R S) [Module.Free R ↥B] [Module.Free ↥B ↥(Algebra.adjoin ↥B ↑A)]
Goal: Module.rank R ↥(A ⊔ B) = Module.rank R ↥B * Module.rank ↥B ↥(Algebra.adjoin ↥B ↑A)
-- Subalgebra.finrank_sup_eq_finrank_left_mul_finrank_of_free
theorem finrank_sup_eq_finrank_left_mul_finrank_of_free :
    finrank R ↥(A ⊔ B) = finrank R A * finrank A (Algebra.adjoin A (B : Set S)) 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] (A B : Subalgebra R S) [Module.Free R ↥A] [Module.Free ↥A ↥(Algebra.adjoin ↥A ↑B)]
Goal: FiniteDimensional.finrank R ↥(A ⊔ B) =
  FiniteDimensional.finrank R ↥A * FiniteDimensional.finrank ↥A ↥(Algebra.adjoin ↥A ↑B)
-- Subalgebra.finrank_sup_eq_finrank_right_mul_finrank_of_free
theorem finrank_sup_eq_finrank_right_mul_finrank_of_free :
    finrank R ↥(A ⊔ B) = finrank R B * finrank B (Algebra.adjoin B (A : Set S)) 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] (A B : Subalgebra R S) [Module.Free R ↥B] [Module.Free ↥B ↥(Algebra.adjoin ↥B ↑A)]
Goal: FiniteDimensional.finrank R ↥(A ⊔ B) =
  FiniteDimensional.finrank R ↥B * FiniteDimensional.finrank ↥B ↥(Algebra.adjoin ↥B ↑A)
-- Subalgebra.finrank_left_dvd_finrank_sup_of_free
theorem finrank_left_dvd_finrank_sup_of_free :
    finrank R A ∣ finrank R ↥(A ⊔ B) 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] (A B : Subalgebra R S) [Module.Free R ↥A] [Module.Free ↥A ↥(Algebra.adjoin ↥A ↑B)]
Goal: FiniteDimensional.finrank R ↥A ∣ FiniteDimensional.finrank R ↥(A ⊔ B)
-- Subalgebra.finrank_right_dvd_finrank_sup_of_free
theorem finrank_right_dvd_finrank_sup_of_free :
    finrank R B ∣ finrank R ↥(A ⊔ B) 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] (A B : Subalgebra R S) [Module.Free R ↥B] [Module.Free ↥B ↥(Algebra.adjoin ↥B ↑A)]
Goal: FiniteDimensional.finrank R ↥B ∣ FiniteDimensional.finrank R ↥(A ⊔ B)
-- SubMulAction.algebraMap_mem
theorem algebraMap_mem (r : R) : algebraMap R A r ∈ (1 : SubMulAction R A) 
Arguments: {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (r : R)
Goal: (algebraMap R A) r ∈ 1
-- SubMulAction.mem_one'
theorem mem_one' {x : A} : x ∈ (1 : SubMulAction R A) ↔ ∃ y, algebraMap R A y = x 
Arguments: {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] {x : A}
Goal: x ∈ 1 ↔ ∃ y, (algebraMap R A) y = x
-- Submodule.one_eq_range
theorem one_eq_range : (1 : Submodule R A) = LinearMap.range (Algebra.linearMap R A) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: 1 = LinearMap.range (Algebra.linearMap R A)
-- Submodule.le_one_toAddSubmonoid
theorem le_one_toAddSubmonoid : 1 ≤ (1 : Submodule R A).toAddSubmonoid 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: 1 ≤ Submodule.toAddSubmonoid 1
-- Submodule.algebraMap_mem
theorem algebraMap_mem (r : R) : algebraMap R A r ∈ (1 : Submodule R A) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (r : R)
Goal: (algebraMap R A) r ∈ 1
-- Submodule.mem_one
@[simp]
theorem mem_one {x : A} : x ∈ (1 : Submodule R A) ↔ ∃ y, algebraMap R A y = x 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {x : A}
Goal: x ∈ 1 ↔ ∃ y, (algebraMap R A) y = x
-- Submodule.toSubMulAction_one
@[simp]
theorem toSubMulAction_one : (1 : Submodule R A).toSubMulAction = 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: Submodule.toSubMulAction 1 = 1
-- Submodule.one_eq_span
theorem one_eq_span : (1 : Submodule R A) = R ∙ 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: 1 = Submodule.span R {1}
-- Submodule.one_eq_span_one_set
theorem one_eq_span_one_set : (1 : Submodule R A) = span R 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: 1 = Submodule.span R 1
-- Submodule.one_le
theorem one_le : (1 : Submodule R A) ≤ P ↔ (1 : A) ∈ P 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {P : Submodule R A}
Goal: 1 ≤ P ↔ 1 ∈ P
-- Submodule.map_one
protected theorem map_one {A'} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A') :
    map f.toLinearMap (1 : Submodule R A) = 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {A' : Type u_1} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A')
Goal: Submodule.map f.toLinearMap 1 = 1
-- Submodule.map_op_one
@[simp]
theorem map_op_one :
    map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) (1 : Submodule R A) = 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: Submodule.map (↑(MulOpposite.opLinearEquiv R)) 1 = 1
-- Submodule.comap_op_one
@[simp]
theorem comap_op_one :
    comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) (1 : Submodule R Aᵐᵒᵖ) = 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: Submodule.comap (↑(MulOpposite.opLinearEquiv R)) 1 = 1
-- Submodule.map_unop_one
@[simp]
theorem map_unop_one :
    map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) (1 : Submodule R Aᵐᵒᵖ) = 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: Submodule.map (↑(MulOpposite.opLinearEquiv R).symm) 1 = 1
-- Submodule.comap_unop_one
@[simp]
theorem comap_unop_one :
    comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) (1 : Submodule R A) = 1 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A]
Goal: Submodule.comap (↑(MulOpposite.opLinearEquiv R).symm) 1 = 1
-- Submodule.mul_mem_mul
theorem mul_mem_mul (hm : m ∈ M) (hn : n ∈ N) : m * n ∈ M * N 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {M N : Submodule R A} {m n : A} (hm : m ∈ M) (hn : n ∈ N)
Goal: m * n ∈ M * N
-- Submodule.mul_le
theorem mul_le : M * N ≤ P ↔ ∀ m ∈ M, ∀ n ∈ N, m * n ∈ P 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {M N P : Submodule R A}
Goal: M * N ≤ P ↔ ∀ m ∈ M, ∀ n ∈ N, m * n ∈ P
-- Submodule.mul_toAddSubmonoid
theorem mul_toAddSubmonoid (M N : Submodule R A) :
    (M * N).toAddSubmonoid = M.toAddSubmonoid * N.toAddSubmonoid 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R A)
Goal: (M * N).toAddSubmonoid = M.toAddSubmonoid * N.toAddSubmonoid
-- Submodule.mul_induction_on
@[elab_as_elim]
protected theorem mul_induction_on {C : A → Prop} {r : A} (hr : r ∈ M * N)
    (hm : ∀ m ∈ M, ∀ n ∈ N, C (m * n)) (ha : ∀ x y, C x → C y → C (x + y)) : C r 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {M N : Submodule R A} {C : A → Prop} {r : A} (hr : r ∈ M * N) (hm : ∀ m ∈ M, ∀ n ∈ N, C (m * n)) (ha : ∀ (x y : A), C x → C y → C (x + y))
Goal: C r
-- Submodule.mul_induction_on'
@[elab_as_elim]
protected theorem mul_induction_on' {C : ∀ r, r ∈ M * N → Prop}
    (mem_mul_mem : ∀ m (hm : m ∈ M) n (hn : n ∈ N), C (m * n) (mul_mem_mul hm hn))
    (add : ∀ x hx y hy, C x hx → C y hy → C (x + y) (add_mem hx hy)) {r : A} (hr : r ∈ M * N) :
    C r hr 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {M N : Submodule R A} {C : (r : A) → r ∈ M * N → Prop} (mem_mul_mem : ∀ (m : A) (hm : m ∈ M) (n : A) (hn : n ∈ N), C (m * n) ⋯) (add : ∀ (x : A) (hx : x ∈ M * N) (y : A) (hy : y ∈ M * N), C x hx → C y hy → C (x + y) ⋯) {r : A} (hr : r ∈ M * N)
Goal: C r hr
-- Submodule.span_mul_span
theorem span_mul_span : span R S * span R T = span R (S * T) 
Arguments: (R : Type u) [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (S T : Set A)
Goal: Submodule.span R S * Submodule.span R T = Submodule.span R (S * T)
-- Submodule.mul_bot
@[simp]
theorem mul_bot : M * ⊥ = ⊥ 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A)
Goal: M * ⊥ = ⊥
-- Submodule.bot_mul
@[simp]
theorem bot_mul : ⊥ * M = ⊥ 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A)
Goal: ⊥ * M = ⊥
-- Submodule.one_mul
protected theorem one_mul : (1 : Submodule R A) * M = M 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A)
Goal: 1 * M = M
-- Submodule.mul_one
protected theorem mul_one : M * 1 = M 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A)
Goal: M * 1 = M
-- Submodule.mul_le_mul
@[mono]
theorem mul_le_mul (hmp : M ≤ P) (hnq : N ≤ Q) : M * N ≤ P * Q 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {M N P Q : Submodule R A} (hmp : M ≤ P) (hnq : N ≤ Q)
Goal: M * N ≤ P * Q
-- Submodule.mul_le_mul_left
theorem mul_le_mul_left (h : M ≤ N) : M * P ≤ N * P 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {M N P : Submodule R A} (h : M ≤ N)
Goal: M * P ≤ N * P
-- Submodule.mul_le_mul_right
theorem mul_le_mul_right (h : N ≤ P) : M * N ≤ M * P 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {M N P : Submodule R A} (h : N ≤ P)
Goal: M * N ≤ M * P
-- Submodule.mul_sup
theorem mul_sup : M * (N ⊔ P) = M * N ⊔ M * P 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N P : Submodule R A)
Goal: M * (N ⊔ P) = M * N ⊔ M * P
-- Submodule.sup_mul
theorem sup_mul : (M ⊔ N) * P = M * P ⊔ N * P 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N P : Submodule R A)
Goal: (M ⊔ N) * P = M * P ⊔ N * P
-- Submodule.mul_subset_mul
theorem mul_subset_mul : (↑M : Set A) * (↑N : Set A) ⊆ (↑(M * N) : Set A) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R A)
Goal: ↑M * ↑N ⊆ ↑(M * N)
-- Submodule.map_mul
protected theorem map_mul {A'} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A') :
    map f.toLinearMap (M * N) = map f.toLinearMap M * map f.toLinearMap N 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R A) {A' : Type u_1} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A')
Goal: Submodule.map f.toLinearMap (M * N) = Submodule.map f.toLinearMap M * Submodule.map f.toLinearMap N
-- Submodule.map_op_mul
theorem map_op_mul :
    map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) (M * N) =
      map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) N *
        map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) M 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R A)
Goal: Submodule.map (↑(MulOpposite.opLinearEquiv R)) (M * N) =
  Submodule.map (↑(MulOpposite.opLinearEquiv R)) N * Submodule.map (↑(MulOpposite.opLinearEquiv R)) M
-- Submodule.comap_unop_mul
theorem comap_unop_mul :
    comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) (M * N) =
      comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) N *
        comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) M 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R A)
Goal: Submodule.comap (↑(MulOpposite.opLinearEquiv R).symm) (M * N) =
  Submodule.comap (↑(MulOpposite.opLinearEquiv R).symm) N * Submodule.comap (↑(MulOpposite.opLinearEquiv R).symm) M
-- Submodule.map_unop_mul
theorem map_unop_mul (M N : Submodule R Aᵐᵒᵖ) :
    map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) (M * N) =
      map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) N *
        map (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ).symm : Aᵐᵒᵖ →ₗ[R] A) M 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R Aᵐᵒᵖ)
Goal: Submodule.map (↑(MulOpposite.opLinearEquiv R).symm) (M * N) =
  Submodule.map (↑(MulOpposite.opLinearEquiv R).symm) N * Submodule.map (↑(MulOpposite.opLinearEquiv R).symm) M
-- Submodule.comap_op_mul
theorem comap_op_mul (M N : Submodule R Aᵐᵒᵖ) :
    comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) (M * N) =
      comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) N *
        comap (↑(opLinearEquiv R : A ≃ₗ[R] Aᵐᵒᵖ) : A →ₗ[R] Aᵐᵒᵖ) M 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R Aᵐᵒᵖ)
Goal: Submodule.comap (↑(MulOpposite.opLinearEquiv R)) (M * N) =
  Submodule.comap (↑(MulOpposite.opLinearEquiv R)) N * Submodule.comap (↑(MulOpposite.opLinearEquiv R)) M
-- Submodule.restrictScalars_mul
lemma restrictScalars_mul {A B C} [CommSemiring A] [CommSemiring B] [Semiring C]
    [Algebra A B] [Algebra A C] [Algebra B C] [IsScalarTower A B C] {I J : Submodule B C} :
  (I * J).restrictScalars A = I.restrictScalars A * J.restrictScalars A 
Arguments: {A : Type u_1} {B : Type u_2} {C : Type u_3} [CommSemiring A] [CommSemiring B] [Semiring C] [Algebra A B] [Algebra A C] [Algebra B C] [IsScalarTower A B C] {I J : Submodule B C}
Goal: Submodule.restrictScalars A (I * J) = Submodule.restrictScalars A I * Submodule.restrictScalars A J
-- Submodule.mem_span_mul_finite_of_mem_span_mul
theorem mem_span_mul_finite_of_mem_span_mul {R A} [Semiring R] [AddCommMonoid A] [Mul A]
    [Module R A] {S : Set A} {S' : Set A} {x : A} (hx : x ∈ span R (S * S')) :
    ∃ T T' : Finset A, ↑T ⊆ S ∧ ↑T' ⊆ S' ∧ x ∈ span R (T * T' : Set A) 
Arguments: {R : Type u_1} {A : Type u_2} [Semiring R] [AddCommMonoid A] [Mul A] [Module R A] {S S' : Set A} {x : A} (hx : x ∈ Submodule.span R (S * S'))
Goal: ∃ T T', ↑T ⊆ S ∧ ↑T' ⊆ S' ∧ x ∈ Submodule.span R (↑T * ↑T')
-- Submodule.mul_eq_span_mul_set
theorem mul_eq_span_mul_set (s t : Submodule R A) : s * t = span R ((s : Set A) * (t : Set A)) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (s t : Submodule R A)
Goal: s * t = Submodule.span R (↑s * ↑t)
-- Submodule.iSup_mul
theorem iSup_mul (s : ι → Submodule R A) (t : Submodule R A) : (⨆ i, s i) * t = ⨆ i, s i * t 
Arguments: {ι : Sort uι} {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (s : ι → Submodule R A) (t : Submodule R A)
Goal: (⨆ i, s i) * t = ⨆ i, s i * t
-- Submodule.mul_iSup
theorem mul_iSup (t : Submodule R A) (s : ι → Submodule R A) : (t * ⨆ i, s i) = ⨆ i, t * s i 
Arguments: {ι : Sort uι} {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (t : Submodule R A) (s : ι → Submodule R A)
Goal: t * ⨆ i, s i = ⨆ i, t * s i
-- Submodule.mem_span_mul_finite_of_mem_mul
theorem mem_span_mul_finite_of_mem_mul {P Q : Submodule R A} {x : A} (hx : x ∈ P * Q) :
    ∃ T T' : Finset A, (T : Set A) ⊆ P ∧ (T' : Set A) ⊆ Q ∧ x ∈ span R (T * T' : Set A) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {P Q : Submodule R A} {x : A} (hx : x ∈ P * Q)
Goal: ∃ T T', ↑T ⊆ ↑P ∧ ↑T' ⊆ ↑Q ∧ x ∈ Submodule.span R (↑T * ↑T')
-- Submodule.mem_span_singleton_mul
theorem mem_span_singleton_mul {x y : A} : x ∈ span R {y} * P ↔ ∃ z ∈ P, y * z = x 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {P : Submodule R A} {x y : A}
Goal: x ∈ Submodule.span R {y} * P ↔ ∃ z ∈ P, y * z = x
-- Submodule.mem_mul_span_singleton
theorem mem_mul_span_singleton {x y : A} : x ∈ P * span R {y} ↔ ∃ z ∈ P, z * y = x 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {P : Submodule R A} {x y : A}
Goal: x ∈ P * Submodule.span R {y} ↔ ∃ z ∈ P, z * y = x
-- Submodule.span_singleton_mul
lemma span_singleton_mul {x : A} {p : Submodule R A} :
    Submodule.span R {x} * p = x • p 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {x : A} {p : Submodule R A}
Goal: Submodule.span R {x} * p = x • p
-- Submodule.mem_smul_iff_inv_mul_mem
lemma mem_smul_iff_inv_mul_mem {S} [Field S] [Algebra R S] {x : S} {p : Submodule R S} {y : S}
    (hx : x ≠ 0) : y ∈ x • p ↔ x⁻¹ * y ∈ p 
Arguments: {R : Type u} [CommSemiring R] {S : Type u_1} [Field S] [Algebra R S] {x : S} {p : Submodule R S} {y : S} (hx : x ≠ 0)
Goal: y ∈ x • p ↔ x⁻¹ * y ∈ p
-- Submodule.mul_mem_smul_iff
lemma mul_mem_smul_iff {S} [CommRing S] [Algebra R S] {x : S} {p : Submodule R S} {y : S}
    (hx : x ∈ nonZeroDivisors S) :
    x * y ∈ x • p ↔ y ∈ p 
Arguments: {R : Type u} [CommSemiring R] {S : Type u_1} [CommRing S] [Algebra R S] {x : S} {p : Submodule R S} {y : S} (hx : x ∈ nonZeroDivisors S)
Goal: x * y ∈ x • p ↔ y ∈ p
-- Submodule.mul_smul_mul_eq_smul_mul_smul
theorem mul_smul_mul_eq_smul_mul_smul (x y : R) : (x * y) • (M * N) = (x • M) * (y • N) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M N : Submodule R A) (x y : R)
Goal: (x * y) • (M * N) = x • M * y • N
-- Submodule.span_pow
theorem span_pow (s : Set A) : ∀ n : ℕ, span R s ^ n = span R (s ^ n)
  
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (s : Set A) (n : ℕ)
Goal: Submodule.span R s ^ n = Submodule.span R (s ^ n)
-- Submodule.pow_eq_span_pow_set
theorem pow_eq_span_pow_set (n : ℕ) : M ^ n = span R ((M : Set A) ^ n) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) (n : ℕ)
Goal: M ^ n = Submodule.span R (↑M ^ n)
-- Submodule.pow_subset_pow
theorem pow_subset_pow {n : ℕ} : (↑M : Set A) ^ n ⊆ ↑(M ^ n : Submodule R A) 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {n : ℕ}
Goal: ↑M ^ n ⊆ ↑(M ^ n)
-- Submodule.pow_mem_pow
theorem pow_mem_pow {x : A} (hx : x ∈ M) (n : ℕ) : x ^ n ∈ M ^ n 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {x : A} (hx : x ∈ M) (n : ℕ)
Goal: x ^ n ∈ M ^ n
-- Submodule.pow_toAddSubmonoid
theorem pow_toAddSubmonoid {n : ℕ} (h : n ≠ 0) : (M ^ n).toAddSubmonoid = M.toAddSubmonoid ^ n 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {n : ℕ} (h : n ≠ 0)
Goal: (M ^ n).toAddSubmonoid = M.toAddSubmonoid ^ n
-- Submodule.le_pow_toAddSubmonoid
theorem le_pow_toAddSubmonoid {n : ℕ} : M.toAddSubmonoid ^ n ≤ (M ^ n).toAddSubmonoid 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {n : ℕ}
Goal: M.toAddSubmonoid ^ n ≤ (M ^ n).toAddSubmonoid
-- Submodule.pow_induction_on_left'
@[elab_as_elim]
protected theorem pow_induction_on_left' {C : ∀ (n : ℕ) (x), x ∈ M ^ n → Prop}
    (algebraMap : ∀ r : R, C 0 (algebraMap _ _ r) (algebraMap_mem r))
    (add : ∀ x y i hx hy, C i x hx → C i y hy → C i (x + y) (add_mem ‹_› ‹_›))
    (mem_mul : ∀ m (hm : m ∈ M), ∀ (i x hx), C i x hx → C i.succ (m * x)
      ((pow_succ' M i).symm ▸ (mul_mem_mul hm hx)))
    -- Porting note: swapped argument order to match order of `C`
    {n : ℕ} {x : A}
    (hx : x ∈ M ^ n) : C n x hx 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {C : (n : ℕ) → (x : A) → x ∈ M ^ n → Prop} (algebraMap : ∀ (r : R), C 0 ((algebraMap R A) r) ⋯) (add : ∀ (x y : A) (i : ℕ) (hx : x ∈ M ^ i) (hy : y ∈ M ^ i), C i x hx → C i y hy → C i (x + y) ⋯) (mem_mul : ∀ (m : A) (hm : m ∈ M) (i : ℕ) (x : A) (hx : x ∈ M ^ i), C i x hx → C i.succ (m * x) ⋯) {n : ℕ} {x : A} (hx : x ∈ M ^ n)
Goal: C n x hx
-- Submodule.pow_induction_on_right'
@[elab_as_elim]
protected theorem pow_induction_on_right' {C : ∀ (n : ℕ) (x), x ∈ M ^ n → Prop}
    (algebraMap : ∀ r : R, C 0 (algebraMap _ _ r) (algebraMap_mem r))
    (add : ∀ x y i hx hy, C i x hx → C i y hy → C i (x + y) (add_mem ‹_› ‹_›))
    (mul_mem :
      ∀ i x hx, C i x hx →
        ∀ m (hm : m ∈ M), C i.succ (x * m) (mul_mem_mul hx hm))
    -- Porting note: swapped argument order to match order of `C`
    {n : ℕ} {x : A} (hx : x ∈ M ^ n) : C n x hx 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {C : (n : ℕ) → (x : A) → x ∈ M ^ n → Prop} (algebraMap : ∀ (r : R), C 0 ((algebraMap R A) r) ⋯) (add : ∀ (x y : A) (i : ℕ) (hx : x ∈ M ^ i) (hy : y ∈ M ^ i), C i x hx → C i y hy → C i (x + y) ⋯) (mul_mem : ∀ (i : ℕ) (x : A) (hx : x ∈ M ^ i), C i x hx → ∀ (m : A) (hm : m ∈ M), C i.succ (x * m) ⋯) {n : ℕ} {x : A} (hx : x ∈ M ^ n)
Goal: C n x hx
-- Submodule.pow_induction_on_left
@[elab_as_elim]
protected theorem pow_induction_on_left {C : A → Prop} (hr : ∀ r : R, C (algebraMap _ _ r))
    (hadd : ∀ x y, C x → C y → C (x + y)) (hmul : ∀ m ∈ M, ∀ (x), C x → C (m * x)) {x : A} {n : ℕ}
    (hx : x ∈ M ^ n) : C x 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {C : A → Prop} (hr : ∀ (r : R), C ((algebraMap R A) r)) (hadd : ∀ (x y : A), C x → C y → C (x + y)) (hmul : ∀ m ∈ M, ∀ (x : A), C x → C (m * x)) {x : A} {n : ℕ} (hx : x ∈ M ^ n)
Goal: C x
-- Submodule.pow_induction_on_right
@[elab_as_elim]
protected theorem pow_induction_on_right {C : A → Prop} (hr : ∀ r : R, C (algebraMap _ _ r))
    (hadd : ∀ x y, C x → C y → C (x + y)) (hmul : ∀ x, C x → ∀ m ∈ M, C (x * m)) {x : A} {n : ℕ}
    (hx : x ∈ M ^ n) : C x 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {C : A → Prop} (hr : ∀ (r : R), C ((algebraMap R A) r)) (hadd : ∀ (x y : A), C x → C y → C (x + y)) (hmul : ∀ (x : A), C x → ∀ m ∈ M, C (x * m)) {x : A} {n : ℕ} (hx : x ∈ M ^ n)
Goal: C x
-- Submodule.mapHom_apply
@[simps]
def mapHom {A'} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A') :
    Submodule R A →*₀ Submodule R A' 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] {A' : Type u_1} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A') (p : Submodule R A)
Goal: (Submodule.mapHom f) p = Submodule.map f.toLinearMap p
-- Submodule.equivOpposite_symm_apply
@[simps apply symm_apply]
def equivOpposite : Submodule R Aᵐᵒᵖ ≃+* (Submodule R A)ᵐᵒᵖ 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (p : (Submodule R A)ᵐᵒᵖ)
Goal: Submodule.equivOpposite.symm p = Submodule.comap (↑(MulOpposite.opLinearEquiv R).symm) (MulOpposite.unop p)
-- Submodule.equivOpposite_apply
@[simps apply symm_apply]
def equivOpposite : Submodule R Aᵐᵒᵖ ≃+* (Submodule R A)ᵐᵒᵖ 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (p : Submodule R Aᵐᵒᵖ)
Goal: Submodule.equivOpposite p = MulOpposite.op (Submodule.comap (↑(MulOpposite.opLinearEquiv R)) p)
-- Submodule.map_pow
protected theorem map_pow {A'} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A') (n : ℕ) :
    map f.toLinearMap (M ^ n) = map f.toLinearMap M ^ n 
Arguments: {R : Type u} [CommSemiring R] {A : Type v} [Semiring A] [Algebra R A] (M : Submodule R A) {A' : Type u_1} [Semiring A'] [Algebra R A'] (f : A →ₐ[R] A') (n : ℕ)
Goal: Submodule.map f.toLinearMap (M ^ n) = Submodule.map f.toLinearMap M ^ n