Theorem: CharacterModule.curry_apply_apply
File: Mathlib/Algebra/Module/CharacterModule.lean

Proof steps:
state_before: R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
c : CharacterModule (A ⊗[R] B)
r : R
a : A
⊢ { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯ }.toFun (r • a) =
    (RingHom.id R) r • { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯ }.toFun a
state_after: case h
R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
c : CharacterModule (A ⊗[R] B)
r : R
a : A
x✝ : B
⊢ ({ toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯ }.toFun (r • a)) x✝ =
    ((RingHom.id R) r • { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯ }.toFun a) x✝
tactic: ext
state_before: case h
R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
c : CharacterModule (A ⊗[R] B)
r : R
a : A
x✝ : B
⊢ ({ toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯ }.toFun (r • a)) x✝ =
    ((RingHom.id R) r • { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯ }.toFun a) x✝
state_after: no goals
tactic: exact congr(c $(TensorProduct.tmul_smul _ _ _)).symm
state_before: R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
r : R
c : CharacterModule (A ⊗[R] B)
⊢ { toFun := fun c => { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯, map_smul' := ⋯ },
          map_add' := ⋯ }.toFun
      (r • c) =
    (RingHom.id R) r •
      { toFun := fun c => { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯, map_smul' := ⋯ },
            map_add' := ⋯ }.toFun
        c
state_after: case h.h
R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
r : R
c : CharacterModule (A ⊗[R] B)
x✝¹ : A
x✝ : B
⊢ (({ toFun := fun c => { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯, map_smul' := ⋯ },
              map_add' := ⋯ }.toFun
          (r • c))
        x✝¹)
      x✝ =
    (((RingHom.id R) r •
          { toFun := fun c => { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯, map_smul' := ⋯ },
                map_add' := ⋯ }.toFun
            c)
        x✝¹)
      x✝
tactic: ext
state_before: case h.h
R : Type uR
inst✝⁶ : CommRing R
A : Type uA
inst✝⁵ : AddCommGroup A
A' : Type u_1
inst✝⁴ : AddCommGroup A'
B : Type uB
inst✝³ : AddCommGroup B
inst✝² : Module R A
inst✝¹ : Module R A'
inst✝ : Module R B
r : R
c : CharacterModule (A ⊗[R] B)
x✝¹ : A
x✝ : B
⊢ (({ toFun := fun c => { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯, map_smul' := ⋯ },
              map_add' := ⋯ }.toFun
          (r • c))
        x✝¹)
      x✝ =
    (((RingHom.id R) r •
          { toFun := fun c => { toFun := fun x => AddMonoidHom.comp c ↑((mk R A B) x), map_add' := ⋯, map_smul' := ⋯ },
                map_add' := ⋯ }.toFun
            c)
        x✝¹)
      x✝
state_after: no goals
tactic: exact congr(c $(TensorProduct.tmul_smul _ _ _)).symm