awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
inst_11 : Algebra.IsPushout R S A B
r : S
x : TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]
⊢ HSMul.hSMul (α := Module.End S (TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]))
      ((Algebra.pushoutDesc B (Algebra.lsmul R S (TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]))
              (Algebra.lsmul R S (TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])) ⋯ :
            (a : B) → Module.End S (S ⊗[R] Ω[A⁄R]))
          ((algebraMap S B : (a : S) → B) r) :
        Module.End S (TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]))
      x =
    r • x

Tactic:
simp only [Algebra.pushoutDesc_left, Module.End.smul_def, Algebra.lsmul_coe]

Premises used: Module.End.smul_def, Algebra.pushoutDesc_left, Algebra.lsmul_coe
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
x : TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]
⊢ (LinearMap.liftBaseChange S
          ((↑R :
              {S M : Type u_3} →
                {M₂ : Type u_4} →
                  [inst : Semiring R] →
                    [inst_11 : Semiring S] →
                      [inst_12 : AddCommMonoid M] →
                        [inst_13 : AddCommMonoid M₂] →
                          [inst_14 : Module R M] →
                            [inst_15 : Module R M₂] →
                              [inst_16 : Module S M] →
                                [inst_17 : Module S M₂] →
                                  [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
            (map R S A B)) :
        (a : S ⊗[R] Ω[A⁄R]) → Ω[B⁄S])
      (HSMul.hSMul (α := B) 0 x) =
    HSMul.hSMul (α := B) (β := Ω[B⁄S]) 0
      ((LinearMap.liftBaseChange S
              ((↑R :
                  {S M : Type u_3} →
                    {M₂ : Type u_4} →
                      [inst : Semiring R] →
                        [inst_11 : Semiring S] →
                          [inst_12 : AddCommMonoid M] →
                            [inst_13 : AddCommMonoid M₂] →
                              [inst_14 : Module R M] →
                                [inst_15 : Module R M₂] →
                                  [inst_16 : Module S M] →
                                    [inst_17 : Module S M₂] →
                                      [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
                (map R S A B)) :
            (a : S ⊗[R] Ω[A⁄R]) → Ω[B⁄S])
          x :
        Ω[B⁄S])

Tactic:
simp only [zero_smul, map_zero]

Premises used: map_zero, zero_smul
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
a : A
⊢ (LinearMap.liftBaseChange S
          ((↑R :
              {S M : Type u_3} →
                {M₂ : Type u_4} →
                  [inst : Semiring R] →
                    [inst_11 : Semiring S] →
                      [inst_12 : AddCommMonoid M] →
                        [inst_13 : AddCommMonoid M₂] →
                          [inst_14 : Module R M] →
                            [inst_15 : Module R M₂] →
                              [inst_16 : Module S M] →
                                [inst_17 : Module S M₂] →
                                  [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
            (map R S A B)) :
        (a : S ⊗[R] Ω[A⁄R]) → Ω[B⁄S])
      (HSMul.hSMul (α := B) (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
        ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) a : B) 0) =
    HSMul.hSMul (α := B) (β := Ω[B⁄S]) ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) a : B)
      ((LinearMap.liftBaseChange S
            ((↑R :
                {S M : Type u_3} →
                  {M₂ : Type u_4} →
                    [inst : Semiring R] →
                      [inst_11 : Semiring S] →
                        [inst_12 : AddCommMonoid M] →
                          [inst_13 : AddCommMonoid M₂] →
                            [inst_14 : Module R M] →
                              [inst_15 : Module R M₂] →
                                [inst_16 : Module S M] →
                                  [inst_17 : Module S M₂] →
                                    [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
              (map R S A B)) :
          (a : S ⊗[R] Ω[A⁄R]) → Ω[B⁄S])
        0)

Tactic:
simp only [smul_zero, map_zero]

Premises used: smul_zero, map_zero
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
a : A
x : S
y : Ω[A⁄R]
⊢ (LinearMap.liftBaseChange S
          ((↑R :
              {S M : Type u_3} →
                {M₂ : Type u_4} →
                  [inst : Semiring R] →
                    [inst_11 : Semiring S] →
                      [inst_12 : AddCommMonoid M] →
                        [inst_13 : AddCommMonoid M₂] →
                          [inst_14 : Module R M] →
                            [inst_15 : Module R M₂] →
                              [inst_16 : Module S M] →
                                [inst_17 : Module S M₂] →
                                  [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
            (map R S A B)) :
        (a : S ⊗[R] Ω[A⁄R]) → Ω[B⁄S])
      (HSMul.hSMul (α := B) (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
        ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) a : B) (x ⊗ₜ[R] y)) =
    HSMul.hSMul (α := B) (β := Ω[B⁄S]) ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) a : B)
      ((LinearMap.liftBaseChange S
              ((↑R :
                  {S M : Type u_3} →
                    {M₂ : Type u_4} →
                      [inst : Semiring R] →
                        [inst_11 : Semiring S] →
                          [inst_12 : AddCommMonoid M] →
                            [inst_13 : AddCommMonoid M₂] →
                              [inst_14 : Module R M] →
                                [inst_15 : Module R M₂] →
                                  [inst_16 : Module S M] →
                                    [inst_17 : Module S M₂] →
                                      [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
                (map R S A B)) :
            (a : S ⊗[R] Ω[A⁄R]) → Ω[B⁄S])
          (x ⊗ₜ[R] y) :
        Ω[B⁄S])

Tactic:
simp [smul_comm]

Premises used: SMulCommClass.smul_comm
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
rw :
  Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      ((algebraMap A B : (a : A) → B) 1))
    0
⊢ Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      1)
    0

Tactic:
rw [← (algebraMap A B).map_one]

Premises used: Algebra.algebraMap, RingHom.map_one
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
⊢ Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      ((algebraMap A B : (a : A) → B) 1))
    0

Tactic:
(h.out.lift_eq _ _).trans ?_

Premises used: Algebra.IsPushout.out, IsBaseChange.lift_eq, Eq.trans
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
refine :
  Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    (((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R]) : (a : A) → S ⊗[R] Ω[A⁄R])
      1)
    0
⊢ Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      ((algebraMap A B : (a : A) → B) 1))
    0

Tactic:
refine (h.out.lift_eq _ _).trans ?_

Premises used: Algebra.IsPushout.out, IsBaseChange.lift_eq, Eq.trans
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
rw : Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) (1 ⊗ₜ[R] 0) 0
rw₁ rw₂ : Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) 0 0
⊢ Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    (1 ⊗ₜ[R] (D R A : (a : A) → Ω[A⁄R]) 1 : TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    (0 : TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])

Tactic:
rw [Derivation.map_one_eq_zero, TensorProduct.tmul_zero]

Premises used: Derivation.map_one_eq_zero, TensorProduct.tmul_zero
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
b : B
z : A
tmul :
  (IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      (HMul.hMul (α := B) ((algebraMap A B : (a : A) → B) z : B) b) =
    HSMul.hSMul (α := B) (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) ((algebraMap A B : (a : A) → B) z : B)
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            b :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) +
      HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) b
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((algebraMap A B : (a : A) → B) z) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
⊢ (IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      (HMul.hMul (α := B) ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) z : B) b) =
    HSMul.hSMul (α := B) (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
        ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) z : B)
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            b :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) +
      HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) b
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) z) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])

Tactic:
dsimp
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
z m : A
tmul :
  (IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      ((algebraMap A B : (a : A) → B) (z * m)) =
    HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) z
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((algebraMap A B : (a : A) → B) m) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) +
      HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) m
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((algebraMap A B : (a : A) → B) z) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
⊢ (IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      (HMul.hMul (α := B) (β := B) ((algebraMap A B : (a : A) → B) z : B)
        ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) m : B)) =
    HSMul.hSMul (α := B) (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) ((algebraMap A B : (a : A) → B) z : B)
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) m) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) +
      HSMul.hSMul (α := B) (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
        ((AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B) : (a : A) → B) m : B)
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((algebraMap A B : (a : A) → B) z) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])

Tactic:
simp only [AlgHom.toLinearMap_apply, IsScalarTower.coe_toAlgHom',
          algebraMap_smul, ← map_mul]

Premises used: IsScalarTower.coe_toAlgHom', AlgHom.toLinearMap_apply, algebraMap_smul, map_mul
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
z m : A
tmul :
  ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R]) : (a : A) → S ⊗[R] Ω[A⁄R])
      (z * m) =
    HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) z
        (((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R]) :
              (a : A) → S ⊗[R] Ω[A⁄R])
            m :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) +
      HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) m
        (((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R]) :
              (a : A) → S ⊗[R] Ω[A⁄R])
            z :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
⊢ (IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
          ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
        (a : B) → S ⊗[R] Ω[A⁄R])
      ((algebraMap A B : (a : A) → B) (z * m)) =
    HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) z
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((algebraMap A B : (a : A) → B) m) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) +
      HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) m
        ((IsBaseChange.lift (f := AlgHom.toLinearMap (IsScalarTower.toAlgHom R A B)) ⋯
                ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R])) :
              (a : B) → S ⊗[R] Ω[A⁄R])
            ((algebraMap A B : (a : A) → B) z) :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])

Tactic:
rw [← IsScalarTower.toAlgHom_apply R, ← AlgHom.toLinearMap_apply, h.out.lift_eq,
          ← IsScalarTower.toAlgHom_apply R, ← AlgHom.toLinearMap_apply, h.out.lift_eq,
          ← IsScalarTower.toAlgHom_apply R, ← AlgHom.toLinearMap_apply, h.out.lift_eq]

Premises used: AlgHom.toLinearMap_apply, Algebra.IsPushout.out, IsBaseChange.lift_eq, IsScalarTower.toAlgHom_apply
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
h : Algebra.IsPushout R S A B
z m : A
⊢ ((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R]) : (a : A) → S ⊗[R] Ω[A⁄R])
      (z * m) =
    HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) z
        (((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R]) :
              (a : A) → S ⊗[R] Ω[A⁄R])
            m :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) +
      HSMul.hSMul (β := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R]) m
        (((mk R S Ω[A⁄R] : (a : S) → Ω[A⁄R] →ₗ[R] S ⊗[R] Ω[A⁄R]) 1 ∘ₗ (↑(D R A) : A →ₗ[R] Ω[A⁄R]) :
              (a : A) → S ⊗[R] Ω[A⁄R])
            z :
          TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])

Tactic:
simp only [LinearMap.coe_comp, Derivation.coeFn_coe, Function.comp_apply,
          Derivation.leibniz, mk_apply, mulActionBaseChange_smul_tmul, TensorProduct.tmul_add]

Premises used: TensorProduct.mk_apply, Derivation.leibniz, Derivation.coeFn_coe, LinearMap.coe_comp, TensorProduct.tmul_add, Function.comp_apply, KaehlerDifferential.mulActionBaseChange_smul_tmul
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
inst_11 : Algebra.IsPushout R S A B
x : A
⊢ Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    ((derivationTensorProduct R S A B : (a : B) → S ⊗[R] Ω[A⁄R]) ((algebraMap A B : (a : A) → B) x) :
      TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    (1 ⊗ₜ[R] (D R A : (a : A) → Ω[A⁄R]) x : TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])

Tactic:
IsBaseChange.lift_eq _ _ _

Premises used: TensorProduct.tmul, AddCon.toQuotient, IsBaseChange.lift_eq
-- Module: Mathlib.RingTheory.Kaehler.TensorProduct
Goal:
R : Type u_1
S : Type u_2
A : Type u_3
B : Type u_4
inst : CommRing R
inst_1 : CommRing S
inst_2 : Algebra R S
inst_3 : CommRing A
inst_4 : CommRing B
inst_5 : Algebra R A
inst_6 : Algebra R B
inst_7 : Algebra A B
inst_8 : Algebra S B
inst_9 : IsScalarTower R A B
inst_10 : IsScalarTower R S B
inst_11 : Algebra.IsPushout R S A B
⊢ Eq (α := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R] →ₗ[S] TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    ((↑S :
            {S_1 M : Type u_4} →
              {M₂ : Type (max u_2 u_3)} →
                [inst : Semiring S] →
                  [inst_12 : Semiring S_1] →
                    [inst_13 : AddCommMonoid M] →
                      [inst_14 : AddCommMonoid M₂] →
                        [inst_15 : Module S M] →
                          [inst_16 : Module S M₂] →
                            [inst_17 : Module S_1 M] →
                              [inst_18 : Module S_1 M₂] →
                                [LinearMap.CompatibleSMul M M₂ S S_1] → (fₗ : M →ₗ[S_1] M₂) → M →ₗ[S] M₂)
          (Derivation.liftKaehlerDifferential (R := S) (S := B) (M := TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
            (derivationTensorProduct R S A B)) ∘ₗ
        LinearMap.liftBaseChange S
          ((↑R :
              {S M : Type u_3} →
                {M₂ : Type u_4} →
                  [inst : Semiring R] →
                    [inst_12 : Semiring S] →
                      [inst_13 : AddCommMonoid M] →
                        [inst_14 : AddCommMonoid M₂] →
                          [inst_15 : Module R M] →
                            [inst_16 : Module R M₂] →
                              [inst_17 : Module S M] →
                                [inst_18 : Module S M₂] →
                                  [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
            (map R S A B)) :
      TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R] →ₗ[S] TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])
    (LinearMap.id : TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R] →ₗ[S] TensorProduct.{u_1, u_2, u_3} R S Ω[A⁄R])

Tactic:
LinearMap.restrictScalars_injective R ?_

Premises used: LinearMap.restrictScalars_injective