Theorem: AdicCompletion.tensor_map_id_left_eq_map
File: Mathlib/RingTheory/AdicCompletion/AsTensorProduct.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹⁴ : CommRing R✝
I✝ : Ideal R✝
M✝¹ : Type u_2
inst✝¹³ : AddCommGroup M✝¹
inst✝¹² : Module R✝ M✝¹
N✝ : Type u_3
inst✝¹¹ : AddCommGroup N✝
inst✝¹⁰ : Module R✝ N✝
R : Type u
inst✝⁹ : CommRing R
I : Ideal R
M✝ : Type u
inst✝⁸ : AddCommGroup M✝
inst✝⁷ : Module R M✝
inst✝⁶ : IsNoetherianRing R
M : Type u
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
f : M →ₗ[R] N
inst✝¹ : Module.Finite R M
inst✝ : Module.Finite R N
⊢ AlgebraTensorModule.map LinearMap.id f =
    ↑(ofTensorProductEquivOfFiniteNoetherian I N).symm ∘ₗ map I f ∘ₗ ↑(ofTensorProductEquivOfFiniteNoetherian I M)
state_after: R✝ : Type u_1
inst✝¹⁴ : CommRing R✝
I✝ : Ideal R✝
M✝¹ : Type u_2
inst✝¹³ : AddCommGroup M✝¹
inst✝¹² : Module R✝ M✝¹
N✝ : Type u_3
inst✝¹¹ : AddCommGroup N✝
inst✝¹⁰ : Module R✝ N✝
R : Type u
inst✝⁹ : CommRing R
I : Ideal R
M✝ : Type u
inst✝⁸ : AddCommGroup M✝
inst✝⁷ : Module R M✝
inst✝⁶ : IsNoetherianRing R
M : Type u
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
f : M →ₗ[R] N
inst✝¹ : Module.Finite R M
inst✝ : Module.Finite R N
⊢ AlgebraTensorModule.map LinearMap.id f =
    ↑(ofTensorProductEquivOfFiniteNoetherian I N).symm ∘ₗ ofTensorProduct I N ∘ₗ AlgebraTensorModule.map LinearMap.id f
tactic: erw [ofTensorProduct_naturality I f]
state_before: R✝ : Type u_1
inst✝¹⁴ : CommRing R✝
I✝ : Ideal R✝
M✝¹ : Type u_2
inst✝¹³ : AddCommGroup M✝¹
inst✝¹² : Module R✝ M✝¹
N✝ : Type u_3
inst✝¹¹ : AddCommGroup N✝
inst✝¹⁰ : Module R✝ N✝
R : Type u
inst✝⁹ : CommRing R
I : Ideal R
M✝ : Type u
inst✝⁸ : AddCommGroup M✝
inst✝⁷ : Module R M✝
inst✝⁶ : IsNoetherianRing R
M : Type u
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
f : M →ₗ[R] N
inst✝¹ : Module.Finite R M
inst✝ : Module.Finite R N
⊢ AlgebraTensorModule.map LinearMap.id f =
    ↑(ofTensorProductEquivOfFiniteNoetherian I N).symm ∘ₗ ofTensorProduct I N ∘ₗ AlgebraTensorModule.map LinearMap.id f
state_after: case a.h.h
R✝ : Type u_1
inst✝¹⁴ : CommRing R✝
I✝ : Ideal R✝
M✝¹ : Type u_2
inst✝¹³ : AddCommGroup M✝¹
inst✝¹² : Module R✝ M✝¹
N✝ : Type u_3
inst✝¹¹ : AddCommGroup N✝
inst✝¹⁰ : Module R✝ N✝
R : Type u
inst✝⁹ : CommRing R
I : Ideal R
M✝ : Type u
inst✝⁸ : AddCommGroup M✝
inst✝⁷ : Module R M✝
inst✝⁶ : IsNoetherianRing R
M : Type u
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
f : M →ₗ[R] N
inst✝¹ : Module.Finite R M
inst✝ : Module.Finite R N
x : M
⊢ ((AlgebraTensorModule.curry (AlgebraTensorModule.map LinearMap.id f)) 1) x =
    ((AlgebraTensorModule.curry
          (↑(ofTensorProductEquivOfFiniteNoetherian I N).symm ∘ₗ
            ofTensorProduct I N ∘ₗ AlgebraTensorModule.map LinearMap.id f))
        1)
      x
tactic: ext x
state_before: case a.h.h
R✝ : Type u_1
inst✝¹⁴ : CommRing R✝
I✝ : Ideal R✝
M✝¹ : Type u_2
inst✝¹³ : AddCommGroup M✝¹
inst✝¹² : Module R✝ M✝¹
N✝ : Type u_3
inst✝¹¹ : AddCommGroup N✝
inst✝¹⁰ : Module R✝ N✝
R : Type u
inst✝⁹ : CommRing R
I : Ideal R
M✝ : Type u
inst✝⁸ : AddCommGroup M✝
inst✝⁷ : Module R M✝
inst✝⁶ : IsNoetherianRing R
M : Type u
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
f : M →ₗ[R] N
inst✝¹ : Module.Finite R M
inst✝ : Module.Finite R N
x : M
⊢ ((AlgebraTensorModule.curry (AlgebraTensorModule.map LinearMap.id f)) 1) x =
    ((AlgebraTensorModule.curry
          (↑(ofTensorProductEquivOfFiniteNoetherian I N).symm ∘ₗ
            ofTensorProduct I N ∘ₗ AlgebraTensorModule.map LinearMap.id f))
        1)
      x
state_after: no goals
tactic: simp