Theorem: ℤω.norm_hMul (Mordell4/Eisenstein.lean)

State before:
a b c : ℤω
⊢ norm (a * b) = norm a * norm b
Tactic:
have := normSq_mul a b
State after:
a b c : ℤω
this :
  ↑normSq (OneHom.toFun (↑↑inclusion) a * OneHom.toFun (↑↑inclusion) b) =
    ↑normSq (OneHom.toFun (↑↑inclusion) a) * ↑normSq (OneHom.toFun (↑↑inclusion) b)
⊢ norm (a * b) = norm a * norm b

State before:
a b c : ℤω
this :
  ↑normSq (OneHom.toFun (↑↑inclusion) a * OneHom.toFun (↑↑inclusion) b) =
    ↑normSq (OneHom.toFun (↑↑inclusion) a) * ↑normSq (OneHom.toFun (↑↑inclusion) b)
⊢ norm (a * b) = norm a * norm b
Tactic:
rw [← coe_hMul] at this
State after:
a b c : ℤω
this :
  ↑normSq (OneHom.toFun (↑↑inclusion) (a * b)) =
    ↑normSq (OneHom.toFun (↑↑inclusion) a) * ↑normSq (OneHom.toFun (↑↑inclusion) b)
⊢ norm (a * b) = norm a * norm b

State before:
a b c : ℤω
this :
  ↑normSq (OneHom.toFun (↑↑inclusion) (a * b)) =
    ↑normSq (OneHom.toFun (↑↑inclusion) a) * ↑normSq (OneHom.toFun (↑↑inclusion) b)
⊢ norm (a * b) = norm a * norm b
Tactic:
simp only [normSq_coe] at this
State after:
a b c : ℤω
this : ↑(norm (a * b)) = ↑(norm a) * ↑(norm b)
⊢ norm (a * b) = norm a * norm b

State before:
a b c : ℤω
this : ↑(norm (a * b)) = ↑(norm a) * ↑(norm b)
⊢ norm (a * b) = norm a * norm b
Tactic:
exact_mod_cast this
State after:
no goals