Theorem: PiTensorProduct.mapL_opNorm
File: Mathlib/Analysis/NormedSpace/PiTensorProduct/InjectiveSeminorm.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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
⊢ ‖mapL f‖ ≤ ∏ i : ι, ‖f i‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
⊢ ∀ (x : ⨂[𝕜] (i : ι), E i), ‖(mapL f) x‖ ≤ (∏ i : ι, ‖f i‖) * ‖x‖
tactic: rw [ContinuousLinearMap.opNorm_le_iff (Finset.prod_nonneg (fun _ _ ↦ norm_nonneg _))]
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
⊢ ∀ (x : ⨂[𝕜] (i : ι), E i), ‖(mapL f) x‖ ≤ (∏ i : ι, ‖f i‖) * ‖x‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖(mapL f) x‖ ≤ (∏ i : ι, ‖f i‖) * ‖x‖
tactic: intro x
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖(mapL f) x‖ ≤ (∏ i : ι, ‖f i‖) * ‖x‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖((let __src := liftEquiv 𝕜 E (⨂[𝕜] (i : ι), E' i);
          { toLinearEquiv := __src, norm_map' := ⋯ })
          ((tprodL 𝕜).compContinuousLinearMap f))
        x‖ ≤
    (∏ i : ι, ‖f i‖) * ‖x‖
tactic: rw [mapL, liftIsometry]
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖((let __src := liftEquiv 𝕜 E (⨂[𝕜] (i : ι), E' i);
          { toLinearEquiv := __src, norm_map' := ⋯ })
          ((tprodL 𝕜).compContinuousLinearMap f))
        x‖ ≤
    (∏ i : ι, ‖f i‖) * ‖x‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖(lift ((tprodL 𝕜).compContinuousLinearMap f).toMultilinearMap) x‖ ≤ (∏ i : ι, ‖f i‖) * ‖x‖
tactic: simp only [LinearIsometryEquiv.coe_mk, liftEquiv_apply, LinearMap.mkContinuous_apply]
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖(lift ((tprodL 𝕜).compContinuousLinearMap f).toMultilinearMap) x‖ ≤ (∏ i : ι, ‖f i‖) * ‖x‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖(tprodL 𝕜).compContinuousLinearMap f‖ ≤ ∏ i : ι, ‖f i‖
tactic: refine le_trans (norm_eval_le_injectiveSeminorm _ _)
    (mul_le_mul_of_nonneg_right ?_ (norm_nonneg x))
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ‖(tprodL 𝕜).compContinuousLinearMap f‖ ≤ ∏ i : ι, ‖f i‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ∀ (m : (i : ι) → E i), ‖((tprodL 𝕜).compContinuousLinearMap f) m‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
tactic: rw [ContinuousMultilinearMap.opNorm_le_iff _ (Finset.prod_nonneg (fun _ _ ↦ norm_nonneg _))]
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ ∀ (m : (i : ι) → E i), ‖((tprodL 𝕜).compContinuousLinearMap f) m‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ‖((tprodL 𝕜).compContinuousLinearMap f) m‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
tactic: intro m
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ‖((tprodL 𝕜).compContinuousLinearMap f) m‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ‖(tprodL 𝕜) fun i => (f i) (m i)‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
tactic: simp only [ContinuousMultilinearMap.compContinuousLinearMap_apply]
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ‖(tprodL 𝕜) fun i => (f i) (m i)‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ∏ i : ι, ‖(f i) (m i)‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
tactic: refine le_trans (injectiveSeminorm_tprod_le (fun i ↦ (f i) (m i))) ?_
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ∏ i : ι, ‖(f i) (m i)‖ ≤ (∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ∏ i : ι, ‖(f i) (m i)‖ ≤ ∏ x : ι, ‖f x‖ * ‖m x‖
tactic: rw [← Finset.prod_mul_distrib]
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
m : (i : ι) → E i
⊢ ∏ i : ι, ‖(f i) (m i)‖ ≤ ∏ x : ι, ‖f x‖ * ‖m x‖
state_after: no goals
tactic: exact Finset.prod_le_prod (fun _ _ ↦ norm_nonneg _) (fun _ _ ↦ ContinuousLinearMap.le_opNorm _ _ )