Theorem: PiTensorProduct.projectiveSeminormAux_smul
File: Mathlib/Analysis/NormedSpace/PiTensorProduct/ProjectiveSeminorm.lean

Proof steps:
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
⊢ projectiveSeminormAux (List.map (fun y => (a * y.1, y.2)) p) = ‖a‖ * projectiveSeminormAux p
state_after: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
⊢ (List.map ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) p).sum =
    ‖a‖ * (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum
tactic: simp only [projectiveSeminormAux, Function.comp_apply, Multiset.map_coe, List.map_map,
    Multiset.sum_coe]
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
⊢ (List.map ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) p).sum =
    ‖a‖ * (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum
state_after: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
⊢ (List.map ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) p).sum =
    (List.map ((fun x => ‖a‖ • x) ∘ fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum
tactic: rw [← smul_eq_mul, List.smul_sum, ← List.comp_map]
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
⊢ (List.map ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) p).sum =
    (List.map ((fun x => ‖a‖ • x) ∘ fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum
state_after: case e_a.e_f
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
⊢ ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) =
    (fun x => ‖a‖ • x) ∘ fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖
tactic: congr 2
state_before: case e_a.e_f
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
⊢ ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) =
    (fun x => ‖a‖ • x) ∘ fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖
state_after: case e_a.e_f.h
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
x : 𝕜 × ((i : ι) → E i)
⊢ ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) x =
    ((fun x => ‖a‖ • x) ∘ fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) x
tactic: ext x
state_before: case e_a.e_f.h
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
x : 𝕜 × ((i : ι) → E i)
⊢ ((fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) ∘ fun y => (a * y.1, y.2)) x =
    ((fun x => ‖a‖ • x) ∘ fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) x
state_after: case e_a.e_f.h
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
x : 𝕜 × ((i : ι) → E i)
⊢ ‖a‖ * ‖x.1‖ * ∏ x_1 : ι, ‖x.2 x_1‖ = ‖a‖ * (‖x.1‖ * ∏ x_1 : ι, ‖x.2 x_1‖)
tactic: simp only [Function.comp_apply, norm_mul, smul_eq_mul]
state_before: case e_a.e_f.h
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FreeAddMonoid (𝕜 × ((i : ι) → E i))
a : 𝕜
x : 𝕜 × ((i : ι) → E i)
⊢ ‖a‖ * ‖x.1‖ * ∏ x_1 : ι, ‖x.2 x_1‖ = ‖a‖ * (‖x.1‖ * ∏ x_1 : ι, ‖x.2 x_1‖)
state_after: no goals
tactic: rw [mul_assoc]