Theorem: PiTensorProduct.projectiveSeminormAux_add_le
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 q : FreeAddMonoid (𝕜 × ((i : ι) → E i))
⊢ projectiveSeminormAux (p + q) ≤ projectiveSeminormAux p + projectiveSeminormAux q
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 q : FreeAddMonoid (𝕜 × ((i : ι) → E i))
⊢ (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (p + q)).sum ≤
    (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum + (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) q).sum
tactic: simp only [projectiveSeminormAux, Function.comp_apply, Multiset.map_coe, 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 q : FreeAddMonoid (𝕜 × ((i : ι) → E i))
⊢ (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (p + q)).sum ≤
    (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum + (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) q).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 q : FreeAddMonoid (𝕜 × ((i : ι) → E i))
⊢ (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList p) ++
        List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList q)).sum ≤
    (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum + (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) q).sum
tactic: erw [List.map_append]
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 q : FreeAddMonoid (𝕜 × ((i : ι) → E i))
⊢ (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList p) ++
        List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList q)).sum ≤
    (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum + (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) q).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 q : FreeAddMonoid (𝕜 × ((i : ι) → E i))
⊢ (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList p)).sum +
      (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList q)).sum ≤
    (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum + (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) q).sum
tactic: rw [List.sum_append]
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 q : FreeAddMonoid (𝕜 × ((i : ι) → E i))
⊢ (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList p)).sum +
      (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) (FreeAddMonoid.toList q)).sum ≤
    (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) p).sum + (List.map (fun p => ‖p.1‖ * ∏ i : ι, ‖p.2 i‖) q).sum
state_after: no goals
tactic: rfl