Theorem: ContinuousMultilinearMap.continuous_eval
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

tactic: apply continuous_iff_continuousAt.2 fun p => ?_
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
⊢ Continuous fun p => p.1 p.2
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
⊢ ContinuousAt (fun p => p.1 p.2) p

tactic: apply
  continuousAt_of_locally_lipschitz zero_lt_one
    ((‖p‖ + 1) * Fintype.card ι * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i, ‖p.2 i‖) fun q hq => ?_
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
⊢ ContinuousAt (fun p => p.1 p.2) p
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p

tactic: have : 0 ≤ max ‖q.2‖ ‖p.2‖ := by simp
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this : 0 ≤ max ‖q.2‖ ‖p.2‖
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p

tactic: have : 0 ≤ ‖p‖ + 1 := zero_le_one.trans ((le_add_iff_nonneg_left 1).2 <| norm_nonneg p)
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this : 0 ≤ max ‖q.2‖ ‖p.2‖
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝ : 0 ≤ max ‖q.2‖ ‖p.2‖
this : 0 ≤ ‖p‖ + 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p

tactic: have A : ‖q‖ ≤ ‖p‖ + 1 := norm_le_of_mem_closedBall hq.le
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝ : 0 ≤ max ‖q.2‖ ‖p.2‖
this : 0 ≤ ‖p‖ + 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝ : 0 ≤ max ‖q.2‖ ‖p.2‖
this : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p

tactic: have : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1 :=
  (max_le_max (norm_snd_le q) (norm_snd_le p)).trans (by simp [A, zero_le_one])
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝ : 0 ≤ max ‖q.2‖ ‖p.2‖
this : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝¹ : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p

tactic: have : ∀ i : ι, i ∈ univ → 0 ≤ ‖p.2 i‖ := fun i _ => norm_nonneg _
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝¹ : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝² : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
this : ∀ i ∈ univ, 0 ≤ ‖p.2 i‖
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p

tactic: calc
  dist (q.1 q.2) (p.1 p.2) ≤ dist (q.1 q.2) (q.1 p.2) + dist (q.1 p.2) (p.1 p.2) :=
    dist_triangle _ _ _
  _ = ‖q.1 q.2 - q.1 p.2‖ + ‖q.1 p.2 - p.1 p.2‖ := by rw [dist_eq_norm, dist_eq_norm]
  _ ≤ ‖q.1‖ * Fintype.card ι * max ‖q.2‖ ‖p.2‖ ^ (Fintype.card ι - 1) * ‖q.2 - p.2‖ +
      ‖q.1 - p.1‖ * ∏ i, ‖p.2 i‖ :=
    (add_le_add (norm_image_sub_le _ _ _) ((q.1 - p.1).le_opNorm p.2))
  _ ≤ (‖p‖ + 1) * Fintype.card ι * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ +
      ‖q - p‖ * ∏ i, ‖p.2 i‖ := by
    apply_rules [add_le_add, mul_le_mul, le_refl, le_trans (norm_fst_le q) A, Nat.cast_nonneg,
      mul_nonneg, pow_le_pow_left, pow_nonneg, norm_snd_le (q - p), norm_nonneg,
      norm_fst_le (q - p), prod_nonneg]
  _ = ((‖p‖ + 1) * Fintype.card ι * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i, ‖p.2 i‖)
        * dist q p := by
    rw [dist_eq_norm]
    ring
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝² : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
this : ∀ i ∈ univ, 0 ≤ ‖p.2 i‖
⊢ dist (q.1 q.2) (p.1 p.2) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p
state_after: no goals

tactic: simp
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
⊢ 0 ≤ max ‖q.2‖ ‖p.2‖
state_after: no goals

tactic: simp [A, zero_le_one]
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝ : 0 ≤ max ‖q.2‖ ‖p.2‖
this : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
⊢ max ‖q‖ ‖p‖ ≤ ‖p‖ + 1
state_after: no goals

tactic: rw [dist_eq_norm, dist_eq_norm]
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝² : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
this : ∀ i ∈ univ, 0 ≤ ‖p.2 i‖
⊢ dist (q.1 q.2) (q.1 p.2) + dist (q.1 p.2) (p.1 p.2) = ‖q.1 q.2 - q.1 p.2‖ + ‖q.1 p.2 - p.1 p.2‖
state_after: no goals

tactic: apply_rules [add_le_add, mul_le_mul, le_refl, le_trans (norm_fst_le q) A, Nat.cast_nonneg,
  mul_nonneg, pow_le_pow_left, pow_nonneg, norm_snd_le (q - p), norm_nonneg,
  norm_fst_le (q - p), prod_nonneg]
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝² : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
this : ∀ i ∈ univ, 0 ≤ ‖p.2 i‖
⊢ ‖q.1‖ * ↑(Fintype.card ι) * max ‖q.2‖ ‖p.2‖ ^ (Fintype.card ι - 1) * ‖q.2 - p.2‖ + ‖q.1 - p.1‖ * ∏ i : ι, ‖p.2 i‖ ≤
    (‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ + ‖q - p‖ * ∏ i : ι, ‖p.2 i‖
state_after: no goals

tactic: rw [dist_eq_norm]
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝² : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
this : ∀ i ∈ univ, 0 ≤ ‖p.2 i‖
⊢ (‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ + ‖q - p‖ * ∏ i : ι, ‖p.2 i‖ =
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * dist q p
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝² : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
this : ∀ i ∈ univ, 0 ≤ ‖p.2 i‖
⊢ (‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ + ‖q - p‖ * ∏ i : ι, ‖p.2 i‖ =
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * ‖q - p‖

tactic: ring
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'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
p q : ContinuousMultilinearMap 𝕜 E G × ((i : ι) → E i)
hq : dist q p < 1
this✝² : 0 ≤ max ‖q.2‖ ‖p.2‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.2‖ ‖p.2‖ ≤ ‖p‖ + 1
this : ∀ i ∈ univ, 0 ≤ ‖p.2 i‖
⊢ (‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ + ‖q - p‖ * ∏ i : ι, ‖p.2 i‖ =
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖p.2 i‖) * ‖q - p‖
state_after: no goals