Theorem: isBoundedLinearMap_continuousMultilinearMap_comp_linear
File: Mathlib/Analysis/NormedSpace/BoundedLinearMaps.lean

tactic: refine'
  IsLinearMap.with_bound
    ⟨fun f₁ f₂ => by ext; rfl,
      fun c f => by ext; rfl⟩
    (‖g‖ ^ Fintype.card ι) fun f => _
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
⊢ IsBoundedLinearMap 𝕜 fun f => ContinuousMultilinearMap.compContinuousLinearMap f fun x => g

tactic: apply ContinuousMultilinearMap.op_norm_le_bound _ _ _
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
⊢ ‖ContinuousMultilinearMap.compContinuousLinearMap f fun x => g‖ ≤ ‖g‖ ^ Fintype.card ι * ‖f‖

tactic: intro m
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
⊢ ∀ (m : ι → G),
    ‖↑(ContinuousMultilinearMap.compContinuousLinearMap f fun x => g) m‖ ≤ ‖g‖ ^ Fintype.card ι * ‖f‖ * ∏ i : ι, ‖m i‖

tactic: calc
  ‖f (g ∘ m)‖ ≤ ‖f‖ * ∏ i, ‖g (m i)‖ := f.le_op_norm _
  _ ≤ ‖f‖ * ∏ i, ‖g‖ * ‖m i‖ := by
    apply mul_le_mul_of_nonneg_left _ (norm_nonneg _)
    exact Finset.prod_le_prod (fun i _ => norm_nonneg _) fun i _ => g.le_op_norm _
  _ = ‖g‖ ^ Fintype.card ι * ‖f‖ * ∏ i, ‖m i‖ := by
    simp [Finset.prod_mul_distrib, Finset.card_univ]
    ring
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
m : ι → G
⊢ ‖↑(ContinuousMultilinearMap.compContinuousLinearMap f fun x => g) m‖ ≤ ‖g‖ ^ Fintype.card ι * ‖f‖ * ∏ i : ι, ‖m i‖

tactic: ext
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun x => E) F
⊢ (ContinuousMultilinearMap.compContinuousLinearMap (f₁ + f₂) fun x => g) =
    (ContinuousMultilinearMap.compContinuousLinearMap f₁ fun x => g) +
      ContinuousMultilinearMap.compContinuousLinearMap f₂ fun x => g

tactic: rfl
state_before: case H
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun x => E) F
x✝ : ι → G
⊢ ↑(ContinuousMultilinearMap.compContinuousLinearMap (f₁ + f₂) fun x => g) x✝ =
    ↑((ContinuousMultilinearMap.compContinuousLinearMap f₁ fun x => g) +
          ContinuousMultilinearMap.compContinuousLinearMap f₂ fun x => g)
      x✝

tactic: ext
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
c : 𝕜
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
⊢ (ContinuousMultilinearMap.compContinuousLinearMap (c • f) fun x => g) =
    c • ContinuousMultilinearMap.compContinuousLinearMap f fun x => g

tactic: rfl
state_before: case H
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
c : 𝕜
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
x✝ : ι → G
⊢ ↑(ContinuousMultilinearMap.compContinuousLinearMap (c • f) fun x => g) x✝ =
    ↑(c • ContinuousMultilinearMap.compContinuousLinearMap f fun x => g) x✝

tactic: apply_rules [mul_nonneg, pow_nonneg, norm_nonneg]
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
⊢ 0 ≤ ‖g‖ ^ Fintype.card ι * ‖f‖

tactic: apply mul_le_mul_of_nonneg_left _ (norm_nonneg _)
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
m : ι → G
⊢ ‖f‖ * ∏ i : ι, ‖↑g (m i)‖ ≤ ‖f‖ * ∏ i : ι, ‖g‖ * ‖m i‖

tactic: exact Finset.prod_le_prod (fun i _ => norm_nonneg _) fun i _ => g.le_op_norm _
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
m : ι → G
⊢ ∏ i : ι, ‖↑g (m i)‖ ≤ ∏ i : ι, ‖g‖ * ‖m i‖

tactic: simp [Finset.prod_mul_distrib, Finset.card_univ]
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
m : ι → G
⊢ ‖f‖ * ∏ i : ι, ‖g‖ * ‖m i‖ = ‖g‖ ^ Fintype.card ι * ‖f‖ * ∏ i : ι, ‖m i‖

tactic: ring
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_2
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
m : ι → G
⊢ ‖f‖ * (‖g‖ ^ Fintype.card ι * ∏ x : ι, ‖m x‖) = ‖g‖ ^ Fintype.card ι * ‖f‖ * ∏ x : ι, ‖m x‖