ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- LinearMap.ker_toSpanSingleton
theorem ker_toSpanSingleton {x : M} (h : x ≠ 0) : LinearMap.ker (toSpanSingleton R M x) = ⊥ 
Arguments: (R : Type u_1) (M : Type u_4) [Ring R] [AddCommGroup M] [Module R M] [NoZeroSMulDivisors R M] {x : M} (h : x ≠ 0)
Goal: LinearMap.ker (LinearMap.toSpanSingleton R M x) = ⊥
-- LinearMap.span_singleton_sup_ker_eq_top
theorem span_singleton_sup_ker_eq_top (f : V →ₗ[K] K) {x : V} (hx : f x ≠ 0) :
    (K ∙ x) ⊔ ker f = ⊤ 
Arguments: {K : Type u_3} {V : Type u_6} [Field K] [AddCommGroup V] [Module K V] (f : V →ₗ[K] K) {x : V} (hx : f x ≠ 0)
Goal: Submodule.span K {x} ⊔ LinearMap.ker f = ⊤
-- LinearEquiv.toSpanNonzeroSingleton_apply
@[simp] theorem toSpanNonzeroSingleton_apply (t : R) :
    LinearEquiv.toSpanNonzeroSingleton R M x h t =
      (⟨t • x, Submodule.smul_mem _ _ (Submodule.mem_span_singleton_self x)⟩ : R ∙ x) 
Arguments: (R : Type u_1) (M : Type u_4) [Ring R] [AddCommGroup M] [Module R M] [NoZeroSMulDivisors R M] (x : M) (h : x ≠ 0) (t : R)
Goal: (LinearEquiv.toSpanNonzeroSingleton R M x h) t = ⟨t • x, ⋯⟩
-- LinearEquiv.toSpanNonzeroSingleton_one
theorem toSpanNonzeroSingleton_one :
    LinearEquiv.toSpanNonzeroSingleton R M x h 1 =
      (⟨x, Submodule.mem_span_singleton_self x⟩ : R ∙ x) 
Arguments: (R : Type u_1) (M : Type u_4) [Ring R] [AddCommGroup M] [Module R M] [NoZeroSMulDivisors R M] (x : M) (h : x ≠ 0)
Goal: (LinearEquiv.toSpanNonzeroSingleton R M x h) 1 = ⟨x, ⋯⟩
-- LinearEquiv.coord_self
theorem coord_self : (coord R M x h) (⟨x, Submodule.mem_span_singleton_self x⟩ : R ∙ x) = 1 
Arguments: (R : Type u_1) (M : Type u_4) [Ring R] [AddCommGroup M] [Module R M] [NoZeroSMulDivisors R M] (x : M) (h : x ≠ 0)
Goal: (LinearEquiv.coord R M x h) ⟨x, ⋯⟩ = 1
-- LinearEquiv.coord_apply_smul
theorem coord_apply_smul (y : Submodule.span R ({x} : Set M)) : coord R M x h y • x = y 
Arguments: (R : Type u_1) (M : Type u_4) [Ring R] [AddCommGroup M] [Module R M] [NoZeroSMulDivisors R M] (x : M) (h : x ≠ 0) (y : ↥(Submodule.span R {x}))
Goal: (LinearEquiv.coord R M x h) y • x = ↑y
-- RatFunc.intDegree_zero
@[simp]
theorem intDegree_zero : intDegree (0 : RatFunc K) = 0 
Arguments: {K : Type u} [Field K]
Goal: RatFunc.intDegree 0 = 0
-- RatFunc.intDegree_one
@[simp]
theorem intDegree_one : intDegree (1 : RatFunc K) = 0 
Arguments: {K : Type u} [Field K]
Goal: RatFunc.intDegree 1 = 0
-- RatFunc.intDegree_C
@[simp]
theorem intDegree_C (k : K) : intDegree (C k) = 0 
Arguments: {K : Type u} [Field K] (k : K)
Goal: (RatFunc.C k).intDegree = 0
-- RatFunc.intDegree_X
@[simp]
theorem intDegree_X : intDegree (X : RatFunc K) = 1 
Arguments: {K : Type u} [Field K]
Goal: RatFunc.X.intDegree = 1
-- RatFunc.intDegree_polynomial
@[simp]
theorem intDegree_polynomial {p : K[X]} :
    intDegree (algebraMap K[X] (RatFunc K) p) = natDegree p 
Arguments: {K : Type u} [Field K] {p : Polynomial K}
Goal: ((algebraMap (Polynomial K) (RatFunc K)) p).intDegree = ↑p.natDegree
-- RatFunc.intDegree_mul
theorem intDegree_mul {x y : RatFunc K} (hx : x ≠ 0) (hy : y ≠ 0) :
    intDegree (x * y) = intDegree x + intDegree y 
Arguments: {K : Type u} [Field K] {x y : RatFunc K} (hx : x ≠ 0) (hy : y ≠ 0)
Goal: (x * y).intDegree = x.intDegree + y.intDegree
-- RatFunc.intDegree_neg
@[simp]
theorem intDegree_neg (x : RatFunc K) : intDegree (-x) = intDegree x 
Arguments: {K : Type u} [Field K] (x : RatFunc K)
Goal: (-x).intDegree = x.intDegree
-- RatFunc.intDegree_add
theorem intDegree_add {x y : RatFunc K} (hxy : x + y ≠ 0) :
    (x + y).intDegree =
      (x.num * y.denom + x.denom * y.num).natDegree - (x.denom * y.denom).natDegree 
Arguments: {K : Type u} [Field K] {x y : RatFunc K} (hxy : x + y ≠ 0)
Goal: (x + y).intDegree = ↑(x.num * y.denom + x.denom * y.num).natDegree - ↑(x.denom * y.denom).natDegree
-- RatFunc.natDegree_num_mul_right_sub_natDegree_denom_mul_left_eq_intDegree
theorem natDegree_num_mul_right_sub_natDegree_denom_mul_left_eq_intDegree {x : RatFunc K}
    (hx : x ≠ 0) {s : K[X]} (hs : s ≠ 0) :
    ((x.num * s).natDegree : ℤ) - (s * x.denom).natDegree = x.intDegree 
Arguments: {K : Type u} [Field K] {x : RatFunc K} (hx : x ≠ 0) {s : Polynomial K} (hs : s ≠ 0)
Goal: ↑(x.num * s).natDegree - ↑(s * x.denom).natDegree = x.intDegree
-- RatFunc.intDegree_add_le
theorem intDegree_add_le {x y : RatFunc K} (hy : y ≠ 0) (hxy : x + y ≠ 0) :
    intDegree (x + y) ≤ max (intDegree x) (intDegree y) 
Arguments: {K : Type u} [Field K] {x y : RatFunc K} (hy : y ≠ 0) (hxy : x + y ≠ 0)
Goal: (x + y).intDegree ≤ max x.intDegree y.intDegree
-- TensorProduct.induction_on
@[elab_as_elim, induction_eliminator]
protected theorem induction_on {motive : M ⊗[R] N → Prop} (z : M ⊗[R] N)
    (zero : motive 0)
    (tmul : ∀ x y, motive <| x ⊗ₜ[R] y)
    (add : ∀ x y, motive x → motive y → motive (x + y)) : motive z 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] {motive : TensorProduct R M N → Prop} (z : TensorProduct R M N) (zero : motive 0) (tmul : ∀ (x : M) (y : N), motive (x ⊗ₜ[R] y)) (add : ∀ (x y : TensorProduct R M N), motive x → motive y → motive (x + y))
Goal: motive z
-- TensorProduct.liftAddHom_tmul
@[simp]
theorem liftAddHom_tmul (f : M →+ N →+ P)
    (hf : ∀ (r : R) (m : M) (n : N), f (r • m) n = f m (r • n)) (m : M) (n : N) :
    liftAddHom f hf (m ⊗ₜ n) = f m n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] (f : M →+ N →+ P) (hf : ∀ (r : R) (m : M) (n : N), (f (r • m)) n = (f m) (r • n)) (m : M) (n : N)
Goal: (TensorProduct.liftAddHom f hf) (m ⊗ₜ[R] n) = (f m) n
-- TensorProduct.zero_tmul
@[simp]
theorem zero_tmul (n : N) : (0 : M) ⊗ₜ[R] n = 0 
Arguments: {R : Type u_1} [CommSemiring R] (M : Type u_4) {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (n : N)
Goal: 0 ⊗ₜ[R] n = 0
-- TensorProduct.add_tmul
theorem add_tmul (m₁ m₂ : M) (n : N) : (m₁ + m₂) ⊗ₜ n = m₁ ⊗ₜ n + m₂ ⊗ₜ[R] n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m₁ m₂ : M) (n : N)
Goal: (m₁ + m₂) ⊗ₜ[R] n = m₁ ⊗ₜ[R] n + m₂ ⊗ₜ[R] n
-- TensorProduct.tmul_zero
@[simp]
theorem tmul_zero (m : M) : m ⊗ₜ[R] (0 : N) = 0 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} (N : Type u_5) [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M)
Goal: m ⊗ₜ[R] 0 = 0
-- TensorProduct.tmul_add
theorem tmul_add (m : M) (n₁ n₂ : N) : m ⊗ₜ (n₁ + n₂) = m ⊗ₜ n₁ + m ⊗ₜ[R] n₂ 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M) (n₁ n₂ : N)
Goal: m ⊗ₜ[R] (n₁ + n₂) = m ⊗ₜ[R] n₁ + m ⊗ₜ[R] n₂
-- TensorProduct.CompatibleSMul.smul_tmul
class CompatibleSMul [DistribMulAction R' N] : Prop where
  smul_tmul : ∀ (r : R') (m : M) (n : N), (r • m) ⊗ₜ n = m ⊗ₜ[R] (r • n)
Arguments: {R : Type u_1} [CommSemiring R] {R' : Type u_2} [Monoid R'] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [DistribMulAction R' M] [DistribMulAction R' N] [self : TensorProduct.CompatibleSMul R R' M N] (r : R') (m : M) (n : N)
Goal: (r • m) ⊗ₜ[R] n = m ⊗ₜ[R] (r • n)
-- TensorProduct.smul_tmul
theorem smul_tmul [DistribMulAction R' N] [CompatibleSMul R R' M N] (r : R') (m : M) (n : N) :
    (r • m) ⊗ₜ n = m ⊗ₜ[R] (r • n) 
Arguments: {R : Type u_1} [CommSemiring R] {R' : Type u_2} [Monoid R'] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [DistribMulAction R' M] [DistribMulAction R' N] [TensorProduct.CompatibleSMul R R' M N] (r : R') (m : M) (n : N)
Goal: (r • m) ⊗ₜ[R] n = m ⊗ₜ[R] (r • n)
-- TensorProduct.SMul.aux_of
theorem SMul.aux_of {R' : Type*} [SMul R' M] (r : R') (m : M) (n : N) :
    SMul.aux r (.of (m, n)) = (r • m) ⊗ₜ[R] n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] {R' : Type u_10} [SMul R' M] (r : R') (m : M) (n : N)
Goal: (TensorProduct.SMul.aux r) (FreeAddMonoid.of (m, n)) = (r • m) ⊗ₜ[R] n
-- TensorProduct.smul_zero
protected theorem smul_zero (r : R') : r • (0 : M ⊗[R] N) = 0 
Arguments: {R : Type u_1} [CommSemiring R] {R' : Type u_2} [Monoid R'] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [DistribMulAction R' M] [SMulCommClass R R' M] (r : R')
Goal: r • 0 = 0
-- TensorProduct.smul_add
protected theorem smul_add (r : R') (x y : M ⊗[R] N) : r • (x + y) = r • x + r • y 
Arguments: {R : Type u_1} [CommSemiring R] {R' : Type u_2} [Monoid R'] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [DistribMulAction R' M] [SMulCommClass R R' M] (r : R') (x y : TensorProduct R M N)
Goal: r • (x + y) = r • x + r • y
-- TensorProduct.zero_smul
protected theorem zero_smul (x : M ⊗[R] N) : (0 : R'') • x = 0 
Arguments: {R : Type u_1} [CommSemiring R] {R'' : Type u_3} [Semiring R''] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module R'' M] [SMulCommClass R R'' M] (x : TensorProduct R M N)
Goal: 0 • x = 0
-- TensorProduct.one_smul
protected theorem one_smul (x : M ⊗[R] N) : (1 : R') • x = x 
Arguments: {R : Type u_1} [CommSemiring R] {R' : Type u_2} [Monoid R'] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [DistribMulAction R' M] [SMulCommClass R R' M] (x : TensorProduct R M N)
Goal: 1 • x = x
-- TensorProduct.add_smul
protected theorem add_smul (r s : R'') (x : M ⊗[R] N) : (r + s) • x = r • x + s • x 
Arguments: {R : Type u_1} [CommSemiring R] {R'' : Type u_3} [Semiring R''] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module R'' M] [SMulCommClass R R'' M] (r s : R'') (x : TensorProduct R M N)
Goal: (r + s) • x = r • x + s • x
-- TensorProduct.smul_tmul'
theorem smul_tmul' (r : R') (m : M) (n : N) : r • m ⊗ₜ[R] n = (r • m) ⊗ₜ n 
Arguments: {R : Type u_1} [CommSemiring R] {R' : Type u_2} [Monoid R'] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [DistribMulAction R' M] [SMulCommClass R R' M] (r : R') (m : M) (n : N)
Goal: r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
-- TensorProduct.tmul_smul
@[simp]
theorem tmul_smul [DistribMulAction R' N] [CompatibleSMul R R' M N] (r : R') (x : M) (y : N) :
    x ⊗ₜ (r • y) = r • x ⊗ₜ[R] y 
Arguments: {R : Type u_1} [CommSemiring R] {R' : Type u_2} [Monoid R'] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [DistribMulAction R' M] [SMulCommClass R R' M] [DistribMulAction R' N] [TensorProduct.CompatibleSMul R R' M N] (r : R') (x : M) (y : N)
Goal: x ⊗ₜ[R] (r • y) = r • x ⊗ₜ[R] y
-- TensorProduct.smul_tmul_smul
theorem smul_tmul_smul (r s : R) (m : M) (n : N) : (r • m) ⊗ₜ[R] (s • n) = (r * s) • m ⊗ₜ[R] n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (r s : R) (m : M) (n : N)
Goal: (r • m) ⊗ₜ[R] (s • n) = (r * s) • m ⊗ₜ[R] n
-- TensorProduct.mk_apply
@[simp]
theorem mk_apply (m : M) (n : N) : mk R M N m n = m ⊗ₜ n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M) (n : N)
Goal: ((TensorProduct.mk R M N) m) n = m ⊗ₜ[R] n
-- TensorProduct.ite_tmul
theorem ite_tmul (x₁ : M) (x₂ : N) (P : Prop) [Decidable P] :
    (if P then x₁ else 0) ⊗ₜ[R] x₂ = if P then x₁ ⊗ₜ x₂ else 0 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (x₁ : M) (x₂ : N) (P : Prop) [Decidable P]
Goal: (if P then x₁ else 0) ⊗ₜ[R] x₂ = if P then x₁ ⊗ₜ[R] x₂ else 0
-- TensorProduct.tmul_ite
theorem tmul_ite (x₁ : M) (x₂ : N) (P : Prop) [Decidable P] :
    (x₁ ⊗ₜ[R] if P then x₂ else 0) = if P then x₁ ⊗ₜ x₂ else 0 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (x₁ : M) (x₂ : N) (P : Prop) [Decidable P]
Goal: (x₁ ⊗ₜ[R] if P then x₂ else 0) = if P then x₁ ⊗ₜ[R] x₂ else 0
-- TensorProduct.sum_tmul
theorem sum_tmul {α : Type*} (s : Finset α) (m : α → M) (n : N) :
    (∑ a ∈ s, m a) ⊗ₜ[R] n = ∑ a ∈ s, m a ⊗ₜ[R] n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] {α : Type u_10} (s : Finset α) (m : α → M) (n : N)
Goal: (∑ a ∈ s, m a) ⊗ₜ[R] n = ∑ a ∈ s, m a ⊗ₜ[R] n
-- TensorProduct.tmul_sum
theorem tmul_sum (m : M) {α : Type*} (s : Finset α) (n : α → N) :
    (m ⊗ₜ[R] ∑ a ∈ s, n a) = ∑ a ∈ s, m ⊗ₜ[R] n a 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M) {α : Type u_10} (s : Finset α) (n : α → N)
Goal: m ⊗ₜ[R] ∑ a ∈ s, n a = ∑ a ∈ s, m ⊗ₜ[R] n a
-- TensorProduct.span_tmul_eq_top
theorem span_tmul_eq_top : Submodule.span R { t : M ⊗[R] N | ∃ m n, m ⊗ₜ n = t } = ⊤ 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N]
Goal: Submodule.span R {t | ∃ m n, m ⊗ₜ[R] n = t} = ⊤
-- TensorProduct.map₂_mk_top_top_eq_top
@[simp]
theorem map₂_mk_top_top_eq_top : Submodule.map₂ (mk R M N) ⊤ ⊤ = ⊤ 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N]
Goal: Submodule.map₂ (TensorProduct.mk R M N) ⊤ ⊤ = ⊤
-- TensorProduct.exists_eq_tmul_of_forall
theorem exists_eq_tmul_of_forall (x : TensorProduct R M N)
    (h : ∀ (m₁ m₂ : M) (n₁ n₂ : N), ∃ m n, m₁ ⊗ₜ n₁ + m₂ ⊗ₜ n₂ = m ⊗ₜ[R] n) :
    ∃ m n, x = m ⊗ₜ n 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (x : TensorProduct R M N) (h : ∀ (m₁ m₂ : M) (n₁ n₂ : N), ∃ m n, m₁ ⊗ₜ[R] n₁ + m₂ ⊗ₜ[R] n₂ = m ⊗ₜ[R] n)
Goal: ∃ m n, x = m ⊗ₜ[R] n
-- TensorProduct.liftAux_tmul
theorem liftAux_tmul (m n) : liftAux f (m ⊗ₜ n) = f m n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : M →ₗ[R] N →ₗ[R] P) (m : M) (n : N)
Goal: (TensorProduct.liftAux f) (m ⊗ₜ[R] n) = (f m) n
-- TensorProduct.liftAux.smul
@[simp]
theorem liftAux.smul (r : R) (x) : liftAux f (r • x) = r • liftAux f x 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] {f : M →ₗ[R] N →ₗ[R] P} (r : R) (x : TensorProduct R M N)
Goal: (TensorProduct.liftAux f) (r • x) = r • (TensorProduct.liftAux f) x
-- TensorProduct.lift.tmul
@[simp]
theorem lift.tmul (x y) : lift f (x ⊗ₜ y) = f x y 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] {f : M →ₗ[R] N →ₗ[R] P} (x : M) (y : N)
Goal: (TensorProduct.lift f) (x ⊗ₜ[R] y) = (f x) y
-- TensorProduct.lift.tmul'
@[simp]
theorem lift.tmul' (x y) : (lift f).1 (x ⊗ₜ y) = f x y 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] {f : M →ₗ[R] N →ₗ[R] P} (x : M) (y : N)
Goal: (TensorProduct.lift f).toAddHom (x ⊗ₜ[R] y) = (f x) y
-- TensorProduct.ext'
theorem ext' {g h : M ⊗[R] N →ₗ[R] P} (H : ∀ x y, g (x ⊗ₜ y) = h (x ⊗ₜ y)) : g = h 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] {g h : TensorProduct R M N →ₗ[R] P} (H : ∀ (x : M) (y : N), g (x ⊗ₜ[R] y) = h (x ⊗ₜ[R] y))
Goal: g = h
-- TensorProduct.lift.unique
theorem lift.unique {g : M ⊗[R] N →ₗ[R] P} (H : ∀ x y, g (x ⊗ₜ y) = f x y) : g = lift f 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] {f : M →ₗ[R] N →ₗ[R] P} {g : TensorProduct R M N →ₗ[R] P} (H : ∀ (x : M) (y : N), g (x ⊗ₜ[R] y) = (f x) y)
Goal: g = TensorProduct.lift f
-- TensorProduct.lift_mk
theorem lift_mk : lift (mk R M N) = LinearMap.id 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N]
Goal: TensorProduct.lift (TensorProduct.mk R M N) = LinearMap.id
-- TensorProduct.lift_compr₂
theorem lift_compr₂ (g : P →ₗ[R] Q) : lift (f.compr₂ g) = g.comp (lift f) 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} {Q : Type u_7} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] {f : M →ₗ[R] N →ₗ[R] P} (g : P →ₗ[R] Q)
Goal: TensorProduct.lift (f.compr₂ g) = g ∘ₗ TensorProduct.lift f
-- TensorProduct.lift_mk_compr₂
theorem lift_mk_compr₂ (f : M ⊗ N →ₗ[R] P) : lift ((mk R M N).compr₂ f) = f 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : TensorProduct R M N →ₗ[R] P)
Goal: TensorProduct.lift ((TensorProduct.mk R M N).compr₂ f) = f
-- TensorProduct.ext
theorem ext {g h : M ⊗ N →ₗ[R] P} (H : (mk R M N).compr₂ g = (mk R M N).compr₂ h) : g = h 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] {g h : TensorProduct R M N →ₗ[R] P} (H : (TensorProduct.mk R M N).compr₂ g = (TensorProduct.mk R M N).compr₂ h)
Goal: g = h
-- TensorProduct.uncurry_apply
@[simp]
theorem uncurry_apply (f : M →ₗ[R] N →ₗ[R] P) (m : M) (n : N) :
    uncurry R M N P f (m ⊗ₜ n) = f m n 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : M →ₗ[R] N →ₗ[R] P) (m : M) (n : N)
Goal: ((TensorProduct.uncurry R M N P) f) (m ⊗ₜ[R] n) = (f m) n
-- TensorProduct.lift.equiv_apply
@[simp]
theorem lift.equiv_apply (f : M →ₗ[R] N →ₗ[R] P) (m : M) (n : N) :
    lift.equiv R M N P f (m ⊗ₜ n) = f m n 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) (P : Type u_6) [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : M →ₗ[R] N →ₗ[R] P) (m : M) (n : N)
Goal: ((TensorProduct.lift.equiv R M N P) f) (m ⊗ₜ[R] n) = (f m) n
-- TensorProduct.lift.equiv_symm_apply
@[simp]
theorem lift.equiv_symm_apply (f : M ⊗[R] N →ₗ[R] P) (m : M) (n : N) :
    (lift.equiv R M N P).symm f m n = f (m ⊗ₜ n) 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) (P : Type u_6) [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : TensorProduct R M N →ₗ[R] P) (m : M) (n : N)
Goal: (((TensorProduct.lift.equiv R M N P).symm f) m) n = f (m ⊗ₜ[R] n)
-- TensorProduct.lcurry_apply
@[simp]
theorem lcurry_apply (f : M ⊗[R] N →ₗ[R] P) (m : M) (n : N) : lcurry R M N P f m n = f (m ⊗ₜ n) 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : TensorProduct R M N →ₗ[R] P) (m : M) (n : N)
Goal: (((TensorProduct.lcurry R M N P) f) m) n = f (m ⊗ₜ[R] n)
-- TensorProduct.curry_apply
@[simp]
theorem curry_apply (f : M ⊗ N →ₗ[R] P) (m : M) (n : N) : curry f m n = f (m ⊗ₜ n) 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : TensorProduct R M N →ₗ[R] P) (m : M) (n : N)
Goal: ((TensorProduct.curry f) m) n = f (m ⊗ₜ[R] n)
-- TensorProduct.curry_injective
theorem curry_injective : Function.Injective (curry : (M ⊗[R] N →ₗ[R] P) → M →ₗ[R] N →ₗ[R] P) 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P]
Goal: Function.Injective TensorProduct.curry
-- TensorProduct.ext_threefold
theorem ext_threefold {g h : (M ⊗[R] N) ⊗[R] P →ₗ[R] Q}
    (H : ∀ x y z, g (x ⊗ₜ y ⊗ₜ z) = h (x ⊗ₜ y ⊗ₜ z)) : g = h 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} {Q : Type u_7} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] {g h : TensorProduct R (TensorProduct R M N) P →ₗ[R] Q} (H : ∀ (x : M) (y : N) (z : P), g ((x ⊗ₜ[R] y) ⊗ₜ[R] z) = h ((x ⊗ₜ[R] y) ⊗ₜ[R] z))
Goal: g = h
-- TensorProduct.ext_fourfold
theorem ext_fourfold {g h : ((M ⊗[R] N) ⊗[R] P) ⊗[R] Q →ₗ[R] S}
    (H : ∀ w x y z, g (w ⊗ₜ x ⊗ₜ y ⊗ₜ z) = h (w ⊗ₜ x ⊗ₜ y ⊗ₜ z)) : g = h 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} {Q : Type u_7} {S : Type u_8} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [AddCommMonoid S] [Module R M] [Module R N] [Module R P] [Module R Q] [Module R S] {g h : TensorProduct R (TensorProduct R (TensorProduct R M N) P) Q →ₗ[R] S} (H : ∀ (w : M) (x : N) (y : P) (z : Q), g (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z) = h (((w ⊗ₜ[R] x) ⊗ₜ[R] y) ⊗ₜ[R] z))
Goal: g = h
-- TensorProduct.ext_fourfold'
theorem ext_fourfold' {φ ψ : (M ⊗[R] N) ⊗[R] P ⊗[R] Q →ₗ[R] S}
    (H : ∀ w x y z, φ (w ⊗ₜ x ⊗ₜ (y ⊗ₜ z)) = ψ (w ⊗ₜ x ⊗ₜ (y ⊗ₜ z))) : φ = ψ 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} {N : Type u_5} {P : Type u_6} {Q : Type u_7} {S : Type u_8} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [AddCommMonoid S] [Module R M] [Module R N] [Module R P] [Module R Q] [Module R S] {φ ψ : TensorProduct R (TensorProduct R M N) (TensorProduct R P Q) →ₗ[R] S} (H : ∀ (w : M) (x : N) (y : P) (z : Q), φ ((w ⊗ₜ[R] x) ⊗ₜ[R] y ⊗ₜ[R] z) = ψ ((w ⊗ₜ[R] x) ⊗ₜ[R] y ⊗ₜ[R] z))
Goal: φ = ψ
-- TensorProduct.lid_tmul
@[simp]
theorem lid_tmul (m : M) (r : R) : (TensorProduct.lid R M : R ⊗ M → M) (r ⊗ₜ m) = r • m 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} [AddCommMonoid M] [Module R M] (m : M) (r : R)
Goal: (TensorProduct.lid R M) (r ⊗ₜ[R] m) = r • m
-- TensorProduct.lid_symm_apply
@[simp]
theorem lid_symm_apply (m : M) : (TensorProduct.lid R M).symm m = 1 ⊗ₜ m 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} [AddCommMonoid M] [Module R M] (m : M)
Goal: (TensorProduct.lid R M).symm m = 1 ⊗ₜ[R] m
-- TensorProduct.comm_tmul
@[simp]
theorem comm_tmul (m : M) (n : N) : (TensorProduct.comm R M N) (m ⊗ₜ n) = n ⊗ₜ m 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M) (n : N)
Goal: (TensorProduct.comm R M N) (m ⊗ₜ[R] n) = n ⊗ₜ[R] m
-- TensorProduct.comm_symm_tmul
@[simp]
theorem comm_symm_tmul (m : M) (n : N) : (TensorProduct.comm R M N).symm (n ⊗ₜ m) = m ⊗ₜ n 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M) (n : N)
Goal: (TensorProduct.comm R M N).symm (n ⊗ₜ[R] m) = m ⊗ₜ[R] n
-- TensorProduct.lift_comp_comm_eq
lemma lift_comp_comm_eq  (f : M →ₗ[R] N →ₗ[R] P) :
    lift f ∘ₗ TensorProduct.comm R N M = lift f.flip 
Arguments: (R : Type u_1) [CommSemiring R] (M : Type u_4) (N : Type u_5) {P : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (f : M →ₗ[R] N →ₗ[R] P)
Goal: TensorProduct.lift f ∘ₗ ↑(TensorProduct.comm R N M) = TensorProduct.lift f.flip
-- TensorProduct.rid_tmul
@[simp]
theorem rid_tmul (m : M) (r : R) : (TensorProduct.rid R M) (m ⊗ₜ r) = r • m 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} [AddCommMonoid M] [Module R M] (m : M) (r : R)
Goal: (TensorProduct.rid R M) (m ⊗ₜ[R] r) = r • m
-- TensorProduct.rid_symm_apply
@[simp]
theorem rid_symm_apply (m : M) : (TensorProduct.rid R M).symm m = m ⊗ₜ 1 
Arguments: {R : Type u_1} [CommSemiring R] {M : Type u_4} [AddCommMonoid M] [Module R M] (m : M)
Goal: (TensorProduct.rid R M).symm m = m ⊗ₜ[R] 1