awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
rw :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N)
rw₁ :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N)
        ((rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u) :
      S ⊗[R] N)
rw₂ rw₃ :
  Eq (α := S ⊗[R] N)
    ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N)
        ((rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u) :
      S ⊗[R] N)
    ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N)
        ((rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u) :
      S ⊗[R] N)
⊢ Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)

Tactic:
rw [← ht, ← hu, rTensor_baseChange]

Premises used: LinearMap.rTensor_baseChange
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
⊢ Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)

Tactic:
have hu' : (A.val.toLinearMap.rTensor N) (f.baseChange (↥A) u) = 0 := by
    rw [← ht, ← hu, rTensor_baseChange]
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
hu' :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)
obtain :
  ∀ (B : Subalgebra R S) (hB : B.FG) (hAB : A ≤ B)
    (hu' :
      Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
        ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          TensorProduct.{u_1, u_2, u_4} R (↥B) N)
        (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)),
    ∃ (A : Subalgebra R S) (_ : A.FG) (u : TensorProduct.{u_1, u_2, u_3} R (↥A) M),
      Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥A) N)
          ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u : TensorProduct.{u_1, u_2, u_4} R (↥A) N)
          (0 : TensorProduct.{u_1, u_2, u_4} R (↥A) N) ∧
        (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
⊢ ∃ (A : Subalgebra R S) (_ : A.FG) (u : TensorProduct.{u_1, u_2, u_3} R (↥A) M),
    Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥A) N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u : TensorProduct.{u_1, u_2, u_4} R (↥A) N)
        (0 : TensorProduct.{u_1, u_2, u_4} R (↥A) N) ∧
      (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t

Tactic:
obtain ⟨B, hB, hAB, hu'⟩ := this hu'
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
hu'_1 :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)
B : Subalgebra R S
hB : B.FG
hAB : A ≤ B
hu' :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
h :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
      ((LinearMap.baseChange (↥B) f : (a : ↥B ⊗[R] M) → ↥B ⊗[R] N)
          ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) :
        TensorProduct.{u_1, u_2, u_4} R (↥B) N)
      (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N) ∧
    (rTensor M B.val.toLinearMap : (a : ↥B ⊗[R] M) → S ⊗[R] M)
        ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) =
      t
⊢ ∃ (A : Subalgebra R S) (_ : A.FG) (u : TensorProduct.{u_1, u_2, u_3} R (↥A) M),
    Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥A) N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u : TensorProduct.{u_1, u_2, u_4} R (↥A) N)
        (0 : TensorProduct.{u_1, u_2, u_4} R (↥A) N) ∧
      (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t

Tactic:
use B, hB, rTensor M (Subalgebra.inclusion hAB).toLinearMap u

Premises used: AlgHom.toLinearMap, Subalgebra.inclusion, DFunLike.coe, LinearMap.rTensor
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
hu'_1 :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)
B : Subalgebra R S
hB : B.FG
hAB : A ≤ B
hu' :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
h :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((LinearMap.baseChange (↥B) f : (a : ↥B ⊗[R] M) → ↥B ⊗[R] N)
        ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
h₁ :
  (rTensor M B.val.toLinearMap : (a : ↥B ⊗[R] M) → S ⊗[R] M)
      ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) =
    t
⊢ Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
      ((LinearMap.baseChange (↥B) f : (a : ↥B ⊗[R] M) → ↥B ⊗[R] N)
          ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) :
        TensorProduct.{u_1, u_2, u_4} R (↥B) N)
      (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N) ∧
    (rTensor M B.val.toLinearMap : (a : ↥B ⊗[R] M) → S ⊗[R] M)
        ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) =
      t

Tactic:
constructor
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
hu'_1 :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)
B : Subalgebra R S
hB : B.FG
hAB : A ≤ B
hu' :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
h :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((rTensor N (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
h₁ h₂ : Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N) 0 0
⊢ Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((LinearMap.baseChange (↥B) f : (a : ↥B ⊗[R] M) → ↥B ⊗[R] N)
        ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)

Tactic:
rw [← rTensor_baseChange, hu']

Premises used: LinearMap.rTensor_baseChange
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
hu'_1 :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)
B : Subalgebra R S
hB : B.FG
hAB : A ≤ B
hu' :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
h :
  Eq (α := S ⊗[R] M)
    ((rTensor M (B.val.toLinearMap ∘ₗ (Subalgebra.inclusion hAB).toLinearMap) : (a : ↥A ⊗[R] M) → S ⊗[R] M) u :
      S ⊗[R] M)
    ((rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u : S ⊗[R] M)
⊢ (rTensor M B.val.toLinearMap : (a : ↥B ⊗[R] M) → S ⊗[R] M)
      ((rTensor M (Subalgebra.inclusion hAB).toLinearMap : (a : ↥A ⊗[R] M) → ↥B ⊗[R] M) u) =
    t

Tactic:
rw [← comp_apply, ← rTensor_comp, ← hu]

Premises used: LinearMap.comp_apply, LinearMap.rTensor_comp
-- Module: Mathlib.RingTheory.TensorProduct.DirectLimitFG
Goal:
R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
inst : CommSemiring R
inst_1 : Semiring S
inst_2 : Algebra R S
inst_3 : AddCommMonoid M
inst_4 : Module R M
inst_5 : AddCommMonoid N
inst_6 : Module R N
f : M →ₗ[R] N
t : S ⊗[R] M
ht : Eq (α := S ⊗[R] N) ((LinearMap.baseChange S f : (a : S ⊗[R] M) → S ⊗[R] N) t : S ⊗[R] N) (0 : S ⊗[R] N)
A : Subalgebra R S
hA : A.FG
ht_memA : Membership.mem (γ := Submodule R (S ⊗[R] M)) (range (rTensor M A.val.toLinearMap)) t
u : TensorProduct.{u_1, u_2, u_3} R (↥A) M
hu : (rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u = t
this :
  ∀
    (h :
      Eq (α := S ⊗[R] N)
        ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
            ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
          S ⊗[R] N)
        (0 : S ⊗[R] N)),
    ∃ (B : Subalgebra R S),
      B.FG ∧
        ∃ (x : A ≤ B),
          Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
                ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
              TensorProduct.{u_1, u_2, u_4} R (↥B) N)
            (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
hu'_1 :
  Eq (α := S ⊗[R] N)
    ((rTensor N A.val.toLinearMap : (a : ↥A ⊗[R] N) → S ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      S ⊗[R] N)
    (0 : S ⊗[R] N)
B : Subalgebra R S
hB : B.FG
hAB : A ≤ B
hu' :
  Eq (α := TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    ((rTensor N (Subalgebra.inclusion ⋯).toLinearMap : (a : ↥A ⊗[R] N) → ↥B ⊗[R] N)
        ((LinearMap.baseChange (↥A) f : (a : ↥A ⊗[R] M) → ↥A ⊗[R] N) u) :
      TensorProduct.{u_1, u_2, u_4} R (↥B) N)
    (0 : TensorProduct.{u_1, u_2, u_4} R (↥B) N)
⊢ Eq (α := S ⊗[R] M)
    ((rTensor M (B.val.toLinearMap ∘ₗ (Subalgebra.inclusion hAB).toLinearMap) : (a : ↥A ⊗[R] M) → S ⊗[R] M) u :
      S ⊗[R] M)
    ((rTensor M A.val.toLinearMap : (a : ↥A ⊗[R] M) → S ⊗[R] M) u : S ⊗[R] M)

Tactic:
congr
-- Module: Mathlib.RingTheory.TensorProduct.Finite
Goal:
R : Type u_1
M : Type u_2
N : Type u_3
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
⊢ ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    Eq (α := N ⊗[R] M) (0 : N ⊗[R] M) ((rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y : N ⊗[R] M)

Tactic:
⟨⊥, fg_bot, 0, rfl⟩

Premises used: Bot.bot, Exists.intro, Submodule.fg_bot, OfNat.ofNat, rfl
-- Module: Mathlib.RingTheory.TensorProduct.Finite
Goal:
R : Type u_1
M : Type u_2
N : Type u_3
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
⊢ ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    Eq (α := N ⊗[R] M) (0 : N ⊗[R] M) ((rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y : N ⊗[R] M)

Tactic:
exact ⟨⊥, fg_bot, 0, rfl⟩
-- Module: Mathlib.RingTheory.TensorProduct.Finite
Goal:
R : Type u_1
M : Type u_2
N : Type u_3
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
i : N
m : M
⊢ ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    Eq (α := N ⊗[R] M) (i ⊗ₜ[R] m) ((rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y)

Tactic:
⟨R ∙ i, fg_span_singleton i, ⟨i, mem_span_singleton_self _⟩ ⊗ₜ[R] m, rfl⟩

Premises used: Submodule.mem_span_singleton_self, Subtype.mk, Exists.intro, Submodule.span, Submodule.fg_span_singleton, TensorProduct.tmul, Singleton.singleton, rfl
-- Module: Mathlib.RingTheory.TensorProduct.Finite
Goal:
R : Type u_1
M : Type u_2
N : Type u_3
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
i : N
m : M
⊢ ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    Eq (α := N ⊗[R] M) (i ⊗ₜ[R] m) ((rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y)

Tactic:
exact ⟨R ∙ i, fg_span_singleton i, ⟨i, mem_span_singleton_self _⟩ ⊗ₜ[R] m, rfl⟩
-- Module: Mathlib.RingTheory.TensorProduct.Finite
Goal:
R : Type u_1
M : Type u_2
N : Type u_3
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
x₁ x₂ : N ⊗[R] M
ihx₁ :
  ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    x₁ = (rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y
ihx₂ :
  ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    x₂ = (rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y
add :
  ∀ (J₁ : Submodule R N) (fg₁ : J₁.FG) (y₁ : TensorProduct.{u_1, u_3, u_2} R (↥J₁) M),
    ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
      HAdd.hAdd (α := N ⊗[R] M) ((rTensor M J₁.subtype : (a : ↥J₁ ⊗[R] M) → N ⊗[R] M) y₁ : N ⊗[R] M) x₂ =
        (rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y
⊢ ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    x₁ + x₂ = (rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y

Tactic:
obtain ⟨J₁, fg₁, y₁, rfl⟩ := ihx₁

Premises used: rfl
-- Module: Mathlib.RingTheory.TensorProduct.Finite
Goal:
R : Type u_1
M : Type u_2
N : Type u_3
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
x₂ : N ⊗[R] M
ihx₂ :
  ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    x₂ = (rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y
J₁ : Submodule R N
fg₁ : J₁.FG
y₁ : TensorProduct.{u_1, u_3, u_2} R (↥J₁) M
add :
  ∀ (J₂ : Submodule R N) (fg₂ : J₂.FG) (y₂ : TensorProduct.{u_1, u_3, u_2} R (↥J₂) M),
    ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
      HAdd.hAdd (α := N ⊗[R] M) (β := N ⊗[R] M) ((rTensor M J₁.subtype : (a : ↥J₁ ⊗[R] M) → N ⊗[R] M) y₁ : N ⊗[R] M)
          ((rTensor M J₂.subtype : (a : ↥J₂ ⊗[R] M) → N ⊗[R] M) y₂ : N ⊗[R] M) =
        (rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y
⊢ ∃ (J : Submodule R N) (_ : J.FG) (y : TensorProduct.{u_1, u_3, u_2} R (↥J) M),
    HAdd.hAdd (α := N ⊗[R] M) ((rTensor M J₁.subtype : (a : ↥J₁ ⊗[R] M) → N ⊗[R] M) y₁ : N ⊗[R] M) x₂ =
      (rTensor M J.subtype : (a : ↥J ⊗[R] M) → N ⊗[R] M) y

Tactic:
obtain ⟨J₂, fg₂, y₂, rfl⟩ := ihx₂

Premises used: rfl