Theorem: AdicCompletion.AdicCauchySequence.map_apply_coe
File: Mathlib/RingTheory/AdicCompletion/Functoriality.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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a : AdicCauchySequence I M
m n : ℕ
hmn : m ≤ n
⊢ (fun n => f (↑a n)) m ≡ (fun n => f (↑a n)) n [SMOD 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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a : AdicCauchySequence I M
m n : ℕ
hmn : m ≤ n
hm : Submodule.map f (I ^ m • ⊤) ≤ I ^ m • ⊤
⊢ (fun n => f (↑a n)) m ≡ (fun n => f (↑a n)) n [SMOD I ^ m • ⊤]
tactic: have hm : Submodule.map f (I ^ m • ⊤ : Submodule R M) ≤ (I ^ m • ⊤ : Submodule R N) := by
      rw [Submodule.map_smul'']
      exact smul_mono_right _ le_top
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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a : AdicCauchySequence I M
m n : ℕ
hmn : m ≤ n
hm : Submodule.map f (I ^ m • ⊤) ≤ I ^ m • ⊤
⊢ (fun n => f (↑a n)) m ≡ (fun n => f (↑a n)) n [SMOD 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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a : AdicCauchySequence I M
m n : ℕ
hmn : m ≤ n
hm : Submodule.map f (I ^ m • ⊤) ≤ I ^ m • ⊤
⊢ (fun n => f (↑a n)) m ≡ (fun n => f (↑a n)) n [SMOD Submodule.map f (I ^ m • ⊤)]
tactic: apply SModEq.mono hm
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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a : AdicCauchySequence I M
m n : ℕ
hmn : m ≤ n
hm : Submodule.map f (I ^ m • ⊤) ≤ I ^ m • ⊤
⊢ (fun n => f (↑a n)) m ≡ (fun n => f (↑a n)) n [SMOD Submodule.map f (I ^ m • ⊤)]
state_after: no goals
tactic: apply SModEq.map (a.property hmn) 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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a b : AdicCauchySequence I M
⊢ (fun a => ⟨fun n => f (↑a n), ⋯⟩) (a + b) = (fun a => ⟨fun n => f (↑a n), ⋯⟩) a + (fun a => ⟨fun n => f (↑a n), ⋯⟩) b
state_after: case 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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a b : AdicCauchySequence I M
n : ℕ
⊢ ↑((fun a => ⟨fun n => f (↑a n), ⋯⟩) (a + b)) n =
    ↑((fun a => ⟨fun n => f (↑a n), ⋯⟩) a + (fun a => ⟨fun n => f (↑a n), ⋯⟩) b) n
tactic: ext n
state_before: case 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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
a b : AdicCauchySequence I M
n : ℕ
⊢ ↑((fun a => ⟨fun n => f (↑a n), ⋯⟩) (a + b)) n =
    ↑((fun a => ⟨fun n => f (↑a n), ⋯⟩) a + (fun a => ⟨fun n => f (↑a n), ⋯⟩) b) n
state_after: no goals
tactic: simp
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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
r : R
a : AdicCauchySequence I M
⊢ { toFun := fun a => ⟨fun n => f (↑a n), ⋯⟩, map_add' := ⋯ }.toFun (r • a) =
    (RingHom.id R) r • { toFun := fun a => ⟨fun n => f (↑a n), ⋯⟩, map_add' := ⋯ }.toFun a
state_after: case 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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
r : R
a : AdicCauchySequence I M
n : ℕ
⊢ ↑({ toFun := fun a => ⟨fun n => f (↑a n), ⋯⟩, map_add' := ⋯ }.toFun (r • a)) n =
    ↑((RingHom.id R) r • { toFun := fun a => ⟨fun n => f (↑a n), ⋯⟩, map_add' := ⋯ }.toFun a) n
tactic: ext n
state_before: case 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
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f : M →ₗ[R] N
r : R
a : AdicCauchySequence I M
n : ℕ
⊢ ↑({ toFun := fun a => ⟨fun n => f (↑a n), ⋯⟩, map_add' := ⋯ }.toFun (r • a)) n =
    ↑((RingHom.id R) r • { toFun := fun a => ⟨fun n => f (↑a n), ⋯⟩, map_add' := ⋯ }.toFun a) n
state_after: no goals
tactic: simp