awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
i : ↥S
x : A
hx : x ∈ (↑I : Submodule R A)
⊢ Membership.mem (α := A) ((↑I : Submodule R A) * (↑I⁻¹ : Submodule R A))
    ((LinearMap.mulRight R (r (↑i : A) • a i) : (a : A) → A) x : A)

Tactic:
mul_mem_mul hx (I⁻¹.1.smul_mem _ <| hT <| ha i)

Premises used: Units.val, Submodule.mul_mem_mul, Set.Mem, Inv.inv, Submodule.smul_mem
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
i : ↥S
x : A
hx : x ∈ (↑I : Submodule R A)
⊢ Membership.mem (α := A) ((↑I : Submodule R A) * (↑I⁻¹ : Submodule R A))
    ((LinearMap.mulRight R (r (↑i : A) • a i) : (a : A) → A) x : A)

Tactic:
exact mul_mem_mul hx (I⁻¹.1.smul_mem _ <| hT <| ha i)

Premises used: Units.val, Submodule.mul_mem_mul, Inv.inv, Submodule.smul_mem
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
x : ↥(↑I : Submodule R A)
i : ↥S
dsimp :
  (Algebra.linearMap R A : (a : R) → A)
      ((LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯) : (a : ↥(Algebra.linearMap R A).range) → R)
          ((restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
                (a : ↥(↑I : Submodule R A)) → ↥(Algebra.linearMap R A).range)
              x :
            ↥(range (Algebra.linearMap R A))) :
        R) =
    (↑x : A) * r (↑i : A) • a i
⊢ (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i

Tactic:
dsimp [f, ← Algebra.linearMap_apply]

Premises used: Algebra.linearMap_apply
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
x : ↥(↑I : Submodule R A)
i : ↥S
⊢ (Algebra.linearMap R A : (a : R) → A)
      ((LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯) : (a : ↥(Algebra.linearMap R A).range) → R)
          ((restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
                (a : ↥(↑I : Submodule R A)) → ↥(Algebra.linearMap R A).range)
              x :
            ↥(range (Algebra.linearMap R A))) :
        R) =
    (↑x : A) * r (↑i : A) • a i

Tactic:
LinearEquiv.ofInjective_symm_apply ..

Premises used: LinearEquiv.ofInjective_symm_apply
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
x : ↥(↑I : Submodule R A)
i : ↥S
⊢ (Algebra.linearMap R A : (a : R) → A)
      ((LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯) : (a : ↥(Algebra.linearMap R A).range) → R)
          ((restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
                (a : ↥(↑I : Submodule R A)) → ↥(Algebra.linearMap R A).range)
              x :
            ↥(range (Algebra.linearMap R A))) :
        R) =
    (↑x : A) * r (↑i : A) • a i

Tactic:
exact LinearEquiv.ofInjective_symm_apply ..

Premises used: LinearEquiv.ofInjective_symm_apply
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
⊢ ∀ (x : ↥(↑I : Submodule R A)) (i : ↥S),
    (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i

Tactic:
have hf (x : I.1) (i : S) : algebraMap R A (f x i) = x * r i • a i := by
    dsimp [f, ← Algebra.linearMap_apply]
    exact LinearEquiv.ofInjective_symm_apply ..
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
hf :
  ∀ (x : ↥(↑I : Submodule R A)) (i : ↥S),
    (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i
g : (↥S → R) →ₗ[R] ↥(↑I : Submodule R A) :=
  (lsum R (fun (a : ↥S) ↦ R) ℕ :
      (a : (i : ↥S) → R →ₗ[R] ↥(↑I : Submodule R A)) → ((i : ↥S) → R) →ₗ[R] ↥(↑I : Submodule R A))
    fun (i : ↥S) ↦
    toSpanSingleton R (↥(↑I : Submodule R A)) (Subtype.mk (p := fun (x : A) ↦ x ∈ (↑I : Submodule R A)) (b i) ⋯)
x : ↥(↑I : Submodule R A)
simp :
  Eq.{u_4 + 1} (α := A)
    (↑(∑ x_1 : ↥S,
          HSMul.hSMul.{u, u_4, u_4} (α := R) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x x_1 : R)
            (Subtype.mk (p := fun (x : A) ↦ x ∈ (↑I : Submodule R A)) (b x_1) ⋯)) :
      A)
    (↑((LinearMap.id : (a : ↥(↑I : Submodule R A)) → ↥(↑I : Submodule R A)) x) : A)
⊢ Eq.{u_4 + 1} (α := A) (↑((g ∘ₗ f : (a : ↥(↑I : Submodule R A)) → ↥(↑I : Submodule R A)) x) : A)
    (↑((LinearMap.id : (a : ↥(↑I : Submodule R A)) → ↥(↑I : Submodule R A)) x) : A)

Tactic:
simp only [g, lsum_apply, comp_apply, sum_apply, toSpanSingleton_apply, proj_apply]

Premises used: LinearMap.lsum_apply, LinearMap.proj_apply, LinearMap.comp_apply, LinearMap.toSpanSingleton_apply, LinearMap.sum_apply
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
hf :
  ∀ (x : ↥(↑I : Submodule R A)) (i : ↥S),
    (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i
g : (↥S → R) →ₗ[R] ↥(↑I : Submodule R A) :=
  (lsum R (fun (a : ↥S) ↦ R) ℕ :
      (a : (i : ↥S) → R →ₗ[R] ↥(↑I : Submodule R A)) → ((i : ↥S) → R) →ₗ[R] ↥(↑I : Submodule R A))
    fun (i : ↥S) ↦
    toSpanSingleton R (↥(↑I : Submodule R A)) (Subtype.mk (p := fun (x : A) ↦ x ∈ (↑I : Submodule R A)) (b i) ⋯)
⊢ g ∘ₗ f = LinearMap.id

Tactic:
have hgf : g ∘ₗ f = .id := LinearMap.ext fun x ↦ Subtype.ext <| by
    simp only [g, lsum_apply, comp_apply, sum_apply, toSpanSingleton_apply, proj_apply]
    simp_rw [coe_sum, coe_smul, Algebra.smul_def, hf, mul_assoc, ← Finset.mul_sum,
      Algebra.smul_mul_assoc, eq, (Finset.sum_coe_sort ..).trans hr.2, mul_one, id_apply]
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
hf :
  ∀ (x : ↥(↑I : Submodule R A)) (i : ↥S),
    (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i
g : (↥S → R) →ₗ[R] ↥(↑I : Submodule R A) :=
  (lsum R (fun (a : ↥S) ↦ R) ℕ :
      (a : (i : ↥S) → R →ₗ[R] ↥(↑I : Submodule R A)) → ((i : ↥S) → R) →ₗ[R] ↥(↑I : Submodule R A))
    fun (i : ↥S) ↦
    toSpanSingleton R (↥(↑I : Submodule R A)) (Subtype.mk (p := fun (x : A) ↦ x ∈ (↑I : Submodule R A)) (b i) ⋯)
hgf : g ∘ₗ f = LinearMap.id
set :
  let m := mul' R A ∘ₗ lTensor A (↑I : Submodule R A).subtype;
  Projective.{u, u_4} R ↥(↑I : Submodule R A) ∧
    Function.Bijective (α := A ⊗[R] ↥(↑I : Submodule R A)) (β := A) (⇑m : (a : A ⊗[R] ↥(↑I : Submodule R A)) → A)
⊢ Projective.{u, u_4} R ↥(↑I : Submodule R A) ∧
    Function.Bijective (α := A ⊗[R] ↥(↑I : Submodule R A)) (β := A)
      (⇑(mul' R A ∘ₗ lTensor A (↑I : Submodule R A).subtype) : (a : A ⊗[R] ↥(↑I : Submodule R A)) → A)

Tactic:
set m := mul' R A ∘ₗ I.1.subtype.lTensor A

Premises used: Units.val, LinearMap.lTensor, Submodule.subtype, LinearMap.mul'
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
hf :
  ∀ (x : ↥(↑I : Submodule R A)) (i : ↥S),
    (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i
g : (↥S → R) →ₗ[R] ↥(↑I : Submodule R A) :=
  (lsum R (fun (a : ↥S) ↦ R) ℕ :
      (a : (i : ↥S) → R →ₗ[R] ↥(↑I : Submodule R A)) → ((i : ↥S) → R) →ₗ[R] ↥(↑I : Submodule R A))
    fun (i : ↥S) ↦
    toSpanSingleton R (↥(↑I : Submodule R A)) (Subtype.mk (p := fun (x : A) ↦ x ∈ (↑I : Submodule R A)) (b i) ⋯)
hgf : g ∘ₗ f = LinearMap.id
m : A ⊗[R] ↥(↑I : Submodule R A) →ₗ[R] A := mul' R A ∘ₗ lTensor A (↑I : Submodule R A).subtype
a₁ :
  ∀ (x : A) (x_1 : ↥(↑I : Submodule R A)) (x_2 : ↥S),
    Eq (α := A)
      (((((AlgebraTensorModule.curry
                      (((↑(piScalarRight R R A ↥S) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) ∘ₗ
                        (lTensor A f : A ⊗[R] ↥(↑I : Submodule R A) →ₗ[R] A ⊗[R] (↥S → R))) :
                    A →ₗ[R] ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
                  (a : A) → ↥(↑I : Submodule R A) →ₗ[R] ↥S → A)
                x :
              ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
            (a : ↥(↑I : Submodule R A)) → ↥S → A)
          x_1 x_2 :
        A)
      (((((AlgebraTensorModule.curry
                      ((LinearMap.pi (φ := fun (a : ↥S) ↦ A) fun (i : ↥S) ↦ LinearMap.mulRight R (r (↑i : A) • a i)) ∘ₗ
                        m) :
                    A →ₗ[R] ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
                  (a : A) → ↥(↑I : Submodule R A) →ₗ[R] ↥S → A)
                x :
              ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
            (a : ↥(↑I : Submodule R A)) → ↥S → A)
          x_1 x_2 :
        A)
⊢ ((↑(piScalarRight R R A ↥S) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) ∘ₗ
      (lTensor A f : A ⊗[R] ↥(↑I : Submodule R A) →ₗ[R] A ⊗[R] (↥S → R)) =
    (LinearMap.pi (φ := fun (a : ↥S) ↦ A) fun (i : ↥S) ↦ LinearMap.mulRight R (r (↑i : A) • a i)) ∘ₗ m

Tactic:
ext
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
hf :
  ∀ (x : ↥(↑I : Submodule R A)) (i : ↥S),
    (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i
g : (↥S → R) →ₗ[R] ↥(↑I : Submodule R A) :=
  (lsum R (fun (a : ↥S) ↦ R) ℕ :
      (a : (i : ↥S) → R →ₗ[R] ↥(↑I : Submodule R A)) → ((i : ↥S) → R) →ₗ[R] ↥(↑I : Submodule R A))
    fun (i : ↥S) ↦
    toSpanSingleton R (↥(↑I : Submodule R A)) (Subtype.mk (p := fun (x : A) ↦ x ∈ (↑I : Submodule R A)) (b i) ⋯)
hgf : g ∘ₗ f = LinearMap.id
m : A ⊗[R] ↥(↑I : Submodule R A) →ₗ[R] A := mul' R A ∘ₗ lTensor A (↑I : Submodule R A).subtype
x : A
x_1 : ↥(↑I : Submodule R A)
x_2 : ↥S
⊢ Eq (α := A)
    (((((AlgebraTensorModule.curry
                    (((↑(piScalarRight R R A ↥S) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) ∘ₗ
                      (lTensor A f : A ⊗[R] ↥(↑I : Submodule R A) →ₗ[R] A ⊗[R] (↥S → R))) :
                  A →ₗ[R] ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
                (a : A) → ↥(↑I : Submodule R A) →ₗ[R] ↥S → A)
              x :
            ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
          (a : ↥(↑I : Submodule R A)) → ↥S → A)
        x_1 x_2 :
      A)
    (((((AlgebraTensorModule.curry
                    ((LinearMap.pi (φ := fun (a : ↥S) ↦ A) fun (i : ↥S) ↦ LinearMap.mulRight R (r (↑i : A) • a i)) ∘ₗ
                      m) :
                  A →ₗ[R] ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
                (a : A) → ↥(↑I : Submodule R A) →ₗ[R] ↥S → A)
              x :
            ↥(↑I : Submodule R A) →ₗ[R] ↥S → A) :
          (a : ↥(↑I : Submodule R A)) → ↥S → A)
        x_1 x_2 :
      A)

Tactic:
simp [(Algebra.smul_def ..).trans (Algebra.commutes ..), hf, m, mul_assoc]

Premises used: mul_assoc, Algebra.smul_def, Algebra.commutes, Eq.trans
-- Module: Mathlib.RingTheory.PicardGroup
Goal:
R : Type u
A : Type u_4
inst : CommSemiring R
inst_1 : Semiring A
inst_2 : Algebra R A
inst_3 : FaithfulSMul R A
I : (Submodule R A)ˣ
T T' : Finset A
hT : (↑T : Set A) ⊆ (↑(↑I⁻¹ : Submodule R A) : Set A)
hT' : (↑T' : Set A) ⊆ (↑(↑I : Submodule R A) : Set A)
S : Finset A := Finset.image₂ (fun (x1 x2 : A) ↦ x1 * x2) T T'
r : A → R
hr : Function.support r ⊆ (↑S : Set A) ∧ Eq (α := A) (∑ a ∈ S, r a • a) 1
a : (i : ↥S) → A
ha : ∀ (i : ↥S), a i ∈ T
b : (i : ↥S) → A
hb : ∀ (i : ↥S), b i ∈ T'
eq : ∀ (i : ↥S), a i * b i = (↑i : A)
f : ↥(↑I : Submodule R A) →ₗ[R] ↥S → R :=
  LinearMap.pi (φ := fun (a : ↥S) ↦ R) fun (i : ↥S) ↦
    ((↑(LinearEquiv.symm (LinearEquiv.ofInjective (Algebra.linearMap R A) ⋯)) :
          LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) :
        LinearMap.{u, u, u_4, u} (RingHom.id R) (↥(range (Algebra.linearMap R A))) R) ∘ₗ
      (restrict (LinearMap.mulRight R (r (↑i : A) • a i)) ⋯ :
        ↥(↑I : Submodule R A) →ₗ[R] ↥(range (Algebra.linearMap R A)))
hf :
  ∀ (x : ↥(↑I : Submodule R A)) (i : ↥S),
    (algebraMap R A : (a : R) → A) ((f : (a : ↥(↑I : Submodule R A)) → ↥S → R) x i : R) = (↑x : A) * r (↑i : A) • a i
g : (↥S → R) →ₗ[R] ↥(↑I : Submodule R A) :=
  (lsum R (fun (a : ↥S) ↦ R) ℕ :
      (a : (i : ↥S) → R →ₗ[R] ↥(↑I : Submodule R A)) → ((i : ↥S) → R) →ₗ[R] ↥(↑I : Submodule R A))
    fun (i : ↥S) ↦
    toSpanSingleton R (↥(↑I : Submodule R A)) (Subtype.mk (p := fun (x : A) ↦ x ∈ (↑I : Submodule R A)) (b i) ⋯)
hgf : g ∘ₗ f = LinearMap.id
m : A ⊗[R] ↥(↑I : Submodule R A) →ₗ[R] A := mul' R A ∘ₗ lTensor A (↑I : Submodule R A).subtype
⊢ ((↑(piScalarRight R R A ↥S) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) : A ⊗[R] (↥S → R) →ₗ[R] ↥S → A) ∘ₗ
      (lTensor A f : A ⊗[R] ↥(↑I : Submodule R A) →ₗ[R] A ⊗[R] (↥S → R)) =
    (LinearMap.pi (φ := fun (a : ↥S) ↦ A) fun (i : ↥S) ↦ LinearMap.mulRight R (r (↑i : A) • a i)) ∘ₗ m

Tactic:
have eq : (piScalarRight R R A S).toLinearMap ∘ₗ f.lTensor A =
      (.pi fun i : S ↦ mulRight R (r i • a i)) ∘ₗ m := by
    ext; simp [(Algebra.smul_def ..).trans (Algebra.commutes ..), hf, m, mul_assoc]