Theorem: seminormFromConst_const_mul
File: Mathlib/Analysis/Normed/Ring/SeminormFromConst.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
⊢ seminormFromConst' hf1 hc hpm (c * x) = seminormFromConst' hf1 hc hpm c * seminormFromConst' hf1 hc hpm x
state_after: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
⊢ seminormFromConst' hf1 hc hpm (c * x) = seminormFromConst' hf1 hc hpm c * seminormFromConst' hf1 hc hpm x
tactic: have hlim : Tendsto (fun n ↦ seminormFromConst_seq c f x (n + 1)) atTop
      (𝓝 (seminormFromConst' hf1 hc hpm x)) := by
    apply (seminormFromConst_isLimit hf1 hc hpm x).comp
      (tendsto_atTop_atTop_of_monotone (fun _ _ hnm ↦ add_le_add_right hnm 1) _)
    rintro n; use n; linarith
state_before: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
⊢ seminormFromConst' hf1 hc hpm (c * x) = seminormFromConst' hf1 hc hpm c * seminormFromConst' hf1 hc hpm x
state_after: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
⊢ seminormFromConst' hf1 hc hpm (c * x) = f c * seminormFromConst' hf1 hc hpm x
tactic: rw [seminormFromConst_apply_c hf1 hc hpm]
state_before: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
⊢ seminormFromConst' hf1 hc hpm (c * x) = f c * seminormFromConst' hf1 hc hpm x
state_after: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
⊢ Tendsto (seminormFromConst_seq c f (c * x)) atTop (𝓝 (f c * seminormFromConst' hf1 hc hpm x))
tactic: apply tendsto_nhds_unique (seminormFromConst_isLimit hf1 hc hpm (c * x))
state_before: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
⊢ Tendsto (seminormFromConst_seq c f (c * x)) atTop (𝓝 (f c * seminormFromConst' hf1 hc hpm x))
state_after: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
hterm : seminormFromConst_seq c f (c * x) = fun n => f c * seminormFromConst_seq c f x (n + 1)
⊢ Tendsto (seminormFromConst_seq c f (c * x)) atTop (𝓝 (f c * seminormFromConst' hf1 hc hpm x))
tactic: have hterm : seminormFromConst_seq c f (c * x) =
      fun n ↦ f c * seminormFromConst_seq c f x (n + 1) := by
    simp only [seminormFromConst_seq_def]
    ext n
    ring_nf
    rw [mul_assoc _ (f c), mul_inv_cancel hc, mul_one]
state_before: R : Type u_1
inst✝ : CommRing R
c : R
f : RingSeminorm R
hf1 : f 1 ≤ 1
hc : f c ≠ 0
hpm : IsPowMul ⇑f
x : R
hlim : Tendsto (fun n => seminormFromConst_seq c f x (n + 1)) atTop (𝓝 (seminormFromConst' hf1 hc hpm x))
hterm : seminormFromConst_seq c f (c * x) = fun n => f c * seminormFromConst_seq c f x (n + 1)
⊢ Tendsto (seminormFromConst_seq c f (c * x)) atTop (𝓝 (f c * seminormFromConst' hf1 hc hpm x))
state_after: no goals
tactic: simpa [hterm] using tendsto_const_nhds.mul hlim