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_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
⊢ IsBoundedLinearMap 𝕜 fun f => f.compContinuousLinearMap fun x => g
state_after: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
⊢ ‖f.compContinuousLinearMap fun x => g‖ ≤ ‖g‖ ^ Fintype.card ι * ‖f‖

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

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

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

tactic: calc
  ‖f (g ∘ m)‖ ≤ ‖f‖ * ∏ i, ‖g (m i)‖ := f.le_opNorm _
  _ ≤ ‖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_opNorm _
  _ = ‖g‖ ^ Fintype.card ι * ‖f‖ * ∏ i, ‖m i‖ := by
    simp only [Finset.prod_mul_distrib, Finset.prod_const, Finset.card_univ]
    ring
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
ι : Type u_5
inst✝ : Fintype ι
g : G →L[𝕜] E
f : ContinuousMultilinearMap 𝕜 (fun x => E) F
m : ι → G
⊢ ‖(f.compContinuousLinearMap fun x => g) m‖ ≤ ‖g‖ ^ Fintype.card ι * ‖f‖ * ∏ i : ι, ‖m i‖
state_after: no goals

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

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

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

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

tactic: apply_rules [mul_nonneg, pow_nonneg, norm_nonneg]
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
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‖
state_after: no goals

tactic: apply mul_le_mul_of_nonneg_left _ (norm_nonneg _)
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
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‖
state_after: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
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: exact Finset.prod_le_prod (fun i _ => norm_nonneg _) fun i _ => g.le_opNorm _
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
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‖
state_after: no goals

tactic: simp only [Finset.prod_mul_distrib, Finset.prod_const, Finset.card_univ]
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
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‖
state_after: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
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‖

tactic: ring
state_before: 𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
G : Type u_4
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‖
state_after: no goals