Theorem: ContinuousLinearMap.flipMultilinear_apply_apply
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

Proof steps:
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
x y : G
⊢ (fun x => (f x) m) (x + y) = (fun x => (f x) m) x + (fun x => (f x) m) y
state_after: no goals
tactic: simp only [map_add, ContinuousMultilinearMap.add_apply]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
c : 𝕜
x : G
⊢ { toFun := fun x => (f x) m, map_add' := ⋯ }.toFun (c • x) =
    (RingHom.id 𝕜) c • { toFun := fun x => (f x) m, map_add' := ⋯ }.toFun x
state_after: no goals
tactic: simp only [ContinuousMultilinearMap.smul_apply, map_smul, RingHom.id_apply]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
x : G
⊢ ‖{ toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ } x‖ ≤ (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖
state_after: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
x : G
⊢ ‖{ toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ } x‖ ≤ ‖f‖ * ‖x‖ * ∏ i : ι, ‖m i‖
tactic: rw [mul_right_comm]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
x : G
⊢ ‖{ toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ } x‖ ≤ ‖f‖ * ‖x‖ * ∏ i : ι, ‖m i‖
state_after: no goals
tactic: exact (f x).le_of_opNorm_le _ (f.le_opNorm x)
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹³ : Fintype ι
inst✝¹² : Fintype ι'
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁸ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁷ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁶ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁵ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁴ : SeminormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SeminormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
x y : E i
⊢ (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
      (update m i (x + y)) =
    (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
        (update m i x) +
      (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
        (update m i y)
state_after: case h
𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹³ : Fintype ι
inst✝¹² : Fintype ι'
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁸ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁷ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁶ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁵ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁴ : SeminormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SeminormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
x y : E i
x✝ : G
⊢ ((fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
        (update m i (x + y)))
      x✝ =
    ((fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
          (update m i x) +
        (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
          (update m i y))
      x✝
tactic: ext1
state_before: case h
𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹³ : Fintype ι
inst✝¹² : Fintype ι'
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁸ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁷ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁶ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁵ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁴ : SeminormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SeminormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
x y : E i
x✝ : G
⊢ ((fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
        (update m i (x + y)))
      x✝ =
    ((fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
          (update m i x) +
        (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
          (update m i y))
      x✝
state_after: no goals
tactic: simp only [add_apply, ContinuousMultilinearMap.map_add, LinearMap.coe_mk,
          LinearMap.mkContinuous_apply, AddHom.coe_mk]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹³ : Fintype ι
inst✝¹² : Fintype ι'
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁸ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁷ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁶ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁵ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁴ : SeminormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SeminormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
c : 𝕜
x : E i
⊢ (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
      (update m i (c • x)) =
    c •
      (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
        (update m i x)
state_after: case h
𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹³ : Fintype ι
inst✝¹² : Fintype ι'
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁸ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁷ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁶ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁵ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁴ : SeminormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SeminormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
c : 𝕜
x : E i
x✝ : G
⊢ ((fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
        (update m i (c • x)))
      x✝ =
    (c •
        (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
          (update m i x))
      x✝
tactic: ext1
state_before: case h
𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹³ : Fintype ι
inst✝¹² : Fintype ι'
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁸ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁷ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁶ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁵ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁴ : SeminormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SeminormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
c : 𝕜
x : E i
x✝ : G
⊢ ((fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
        (update m i (c • x)))
      x✝ =
    (c •
        (fun m => { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯)
          (update m i x))
      x✝
state_after: no goals
tactic: simp only [coe_smul', ContinuousMultilinearMap.map_smul, LinearMap.coe_mk,
          LinearMap.mkContinuous_apply, Pi.smul_apply, AddHom.coe_mk]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
⊢ ‖{
          toFun := fun m =>
            { toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯,
          map_add' := ⋯, map_smul' := ⋯ }
        m‖ ≤
    ‖f‖ * ∏ i : ι, ‖m i‖
state_after: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
⊢ ‖{ toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯‖ ≤
    ‖f‖ * ∏ i : ι, ‖m i‖
tactic: dsimp only [MultilinearMap.coe_mk]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
⊢ ‖{ toFun := fun x => (f x) m, map_add' := ⋯, map_smul' := ⋯ }.mkContinuous (‖f‖ * ∏ i : ι, ‖m i‖) ⋯‖ ≤
    ‖f‖ * ∏ i : ι, ‖m i‖
state_after: no goals
tactic: exact LinearMap.mkContinuous_norm_le _ (by positivity) _