[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rcases em (∃ i, m i = 0) with (⟨i, hi⟩ | hm) <;> [skip; push_neg at hm ]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rcases em (∃ i, m i = 0) with (⟨i, hi⟩ | hm)
[GOAL]
case inl.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
i : ι
hi : m i = 0
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
skip
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
hm : ¬∃ i, m i = 0
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
push_neg at hm
[GOAL]
case inl.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
i : ι
hi : m i = 0
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp [f.map_coord_zero i hi, prod_eq_zero (mem_univ i), hi]
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
hm : ∀ (i : ι), m i ≠ 0
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
choose δ hδ0 hδm_lt hle_δm _ using fun i => rescale_to_shell (hc i) (hε i) (hm i)
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
hm : ∀ (i : ι), m i ≠ 0
δ : ι → 𝕜
hδ0 : ∀ (i : ι), δ i ≠ 0
hδm_lt : ∀ (i : ι), ‖δ i • m i‖ < ε i
hle_δm : ∀ (i : ι), ε i / ‖c i‖ ≤ ‖δ i • m i‖
✝ : ∀ (i : ι), ‖δ i‖⁻¹ ≤ (ε i)⁻¹ * ‖c i‖ * ‖m i‖
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
have hδ0 : 0 < ∏ i, ‖δ i‖ := prod_pos fun i _ => norm_pos_iff.2 (hδ0 i)
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
hm : ∀ (i : ι), m i ≠ 0
δ : ι → 𝕜
hδ0✝ : ∀ (i : ι), δ i ≠ 0
hδm_lt : ∀ (i : ι), ‖δ i • m i‖ < ε i
hle_δm : ∀ (i : ι), ε i / ‖c i‖ ≤ ‖δ i • m i‖
✝ : ∀ (i : ι), ‖δ i‖⁻¹ ≤ (ε i)⁻¹ * ‖c i‖ * ‖m i‖
hδ0 : 0 < ∏ i : ι, ‖δ i‖
⊢ ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simpa [map_smul_univ, norm_smul, prod_mul_distrib, mul_left_comm C, mul_le_mul_left hδ0] using
  hf (fun i => δ i • m i) hle_δm hδm_lt
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
⊢ ∃ C, 0 < C ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
cases isEmpty_or_nonempty ι
[GOAL]
case inl
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : IsEmpty ι
⊢ ∃ C, 0 < C ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
refine' ⟨‖f 0‖ + 1, add_pos_of_nonneg_of_pos (norm_nonneg _) zero_lt_one, fun m => _⟩
[GOAL]
case inl
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : IsEmpty ι
m : (i : ι) → E i
⊢ ‖↑f m‖ ≤ (‖↑f 0‖ + 1) * ∏ i : ι, ‖m i‖
[PROOFSTEP]
obtain rfl : m = 0
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : IsEmpty ι
m : (i : ι) → E i
⊢ m = 0
case inl
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : IsEmpty ι
⊢ ‖↑f 0‖ ≤ (‖↑f 0‖ + 1) * ∏ i : ι, ‖OfNat.ofNat 0 i‖
[PROOFSTEP]
exact funext (IsEmpty.elim ‹_›)
[GOAL]
case inl
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : IsEmpty ι
⊢ ‖↑f 0‖ ≤ (‖↑f 0‖ + 1) * ∏ i : ι, ‖OfNat.ofNat 0 i‖
[PROOFSTEP]
simp [univ_eq_empty, zero_le_one]
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
⊢ ∃ C, 0 < C ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
obtain ⟨ε : ℝ, ε0 : 0 < ε, hε : ∀ m : ∀ i, E i, ‖m - 0‖ < ε → ‖f m - f 0‖ < 1⟩ :=
  NormedAddCommGroup.tendsto_nhds_nhds.1 (hf.tendsto 0) 1 zero_lt_one
[GOAL]
case inr.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m - 0‖ < ε → ‖↑f m - ↑f 0‖ < 1
⊢ ∃ C, 0 < C ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp only [sub_zero, f.map_zero] at hε
[GOAL]
case inr.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m‖ < ε → ‖↑f m‖ < 1
⊢ ∃ C, 0 < C ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
[GOAL]
case inr.intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m‖ < ε → ‖↑f m‖ < 1
c : 𝕜
hc : 1 < ‖c‖
⊢ ∃ C, 0 < C ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
have : 0 < (‖c‖ / ε) ^ Fintype.card ι := pow_pos (div_pos (zero_lt_one.trans hc) ε0) _
[GOAL]
case inr.intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m‖ < ε → ‖↑f m‖ < 1
c : 𝕜
hc : 1 < ‖c‖
this : 0 < (‖c‖ / ε) ^ Fintype.card ι
⊢ ∃ C, 0 < C ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
[PROOFSTEP]
refine' ⟨_, this, _⟩
[GOAL]
case inr.intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m‖ < ε → ‖↑f m‖ < 1
c : 𝕜
hc : 1 < ‖c‖
this : 0 < (‖c‖ / ε) ^ Fintype.card ι
⊢ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ (‖c‖ / ε) ^ Fintype.card ι * ∏ i : ι, ‖m i‖
[PROOFSTEP]
refine' f.bound_of_shell (fun _ => ε0) (fun _ => hc) fun m hcm hm => _
[GOAL]
case inr.intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m‖ < ε → ‖↑f m‖ < 1
c : 𝕜
hc : 1 < ‖c‖
this : 0 < (‖c‖ / ε) ^ Fintype.card ι
m : (i : ι) → E i
hcm : ∀ (i : ι), ε / ‖c‖ ≤ ‖m i‖
hm : ∀ (i : ι), ‖m i‖ < ε
⊢ ‖↑f m‖ ≤ (‖c‖ / ε) ^ Fintype.card ι * ∏ i : ι, ‖m i‖
[PROOFSTEP]
refine' (hε m ((pi_norm_lt_iff ε0).2 hm)).le.trans _
[GOAL]
case inr.intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m‖ < ε → ‖↑f m‖ < 1
c : 𝕜
hc : 1 < ‖c‖
this : 0 < (‖c‖ / ε) ^ Fintype.card ι
m : (i : ι) → E i
hcm : ∀ (i : ι), ε / ‖c‖ ≤ ‖m i‖
hm : ∀ (i : ι), ‖m i‖ < ε
⊢ 1 ≤ (‖c‖ / ε) ^ Fintype.card ι * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [← div_le_iff' this, one_div, ← inv_pow, inv_div, Fintype.card, ← prod_const]
[GOAL]
case inr.intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
hf : Continuous ↑f
h✝ : Nonempty ι
ε : ℝ
ε0 : 0 < ε
hε : ∀ (m : (i : ι) → E i), ‖m‖ < ε → ‖↑f m‖ < 1
c : 𝕜
hc : 1 < ‖c‖
this : 0 < (‖c‖ / ε) ^ Fintype.card ι
m : (i : ι) → E i
hcm : ∀ (i : ι), ε / ‖c‖ ≤ ‖m i‖
hm : ∀ (i : ι), ‖m i‖ < ε
⊢ ∏ _x : ι, ε / ‖c‖ ≤ ∏ i : ι, ‖m i‖
[PROOFSTEP]
exact prod_le_prod (fun _ _ => div_nonneg ε0.le (norm_nonneg _)) fun i _ => hcm i
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
⊢ ‖↑f m₁ - ↑f m₂‖ ≤ C * ∑ i : ι, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
have A :
  ∀ s : Finset ι,
    ‖f m₁ - f (s.piecewise m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ :=
  by
  intro s
  induction' s using Finset.induction with i s his Hrec
  · simp
  have I :
    ‖f (s.piecewise m₂ m₁) - f ((insert i s).piecewise m₂ m₁)‖ ≤
      C * ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ :=
    by
    have A : (insert i s).piecewise m₂ m₁ = Function.update (s.piecewise m₂ m₁) i (m₂ i) := s.piecewise_insert _ _ _
    have B : s.piecewise m₂ m₁ = Function.update (s.piecewise m₂ m₁) i (m₁ i) :=
      by
      ext j
      by_cases h : j = i
      · rw [h]
        simp [his]
      · simp [h]
    rw [B, A, ← f.map_sub]
    apply le_trans (H _)
    gcongr with j
    · exact fun j _ => norm_nonneg _
    by_cases h : j = i
    · rw [h]
      simp
    · by_cases h' : j ∈ s <;> simp [h', h, le_refl]
  calc
    ‖f m₁ - f ((insert i s).piecewise m₂ m₁)‖ ≤
        ‖f m₁ - f (s.piecewise m₂ m₁)‖ + ‖f (s.piecewise m₂ m₁) - f ((insert i s).piecewise m₂ m₁)‖ :=
      by
      rw [← dist_eq_norm, ← dist_eq_norm, ← dist_eq_norm]
      exact dist_triangle _ _ _
    _ ≤
        (C * ∑ i in s, ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) +
          C * ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ :=
      (add_le_add Hrec I)
    _ = C * ∑ i in insert i s, ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ := by
      simp [his, add_comm, left_distrib]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
⊢ ∀ (s : Finset ι),
    ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
intro s
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
s : Finset ι
⊢ ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
induction' s using Finset.induction with i s his Hrec
[GOAL]
case empty
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
⊢ ‖↑f m₁ - ↑f (piecewise ∅ m₂ m₁)‖ ≤ C * ∑ i in ∅, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
simp
[GOAL]
case insert
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ ‖↑f m₁ - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∑ i in insert i s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
have I :
  ‖f (s.piecewise m₂ m₁) - f ((insert i s).piecewise m₂ m₁)‖ ≤
    C * ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ :=
  by
  have A : (insert i s).piecewise m₂ m₁ = Function.update (s.piecewise m₂ m₁) i (m₂ i) := s.piecewise_insert _ _ _
  have B : s.piecewise m₂ m₁ = Function.update (s.piecewise m₂ m₁) i (m₁ i) :=
    by
    ext j
    by_cases h : j = i
    · rw [h]
      simp [his]
    · simp [h]
  rw [B, A, ← f.map_sub]
  apply le_trans (H _)
  gcongr with j
  · exact fun j _ => norm_nonneg _
  by_cases h : j = i
  · rw [h]
    simp
  · by_cases h' : j ∈ s <;> simp [h', h, le_refl]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
have A : (insert i s).piecewise m₂ m₁ = Function.update (s.piecewise m₂ m₁) i (m₂ i) := s.piecewise_insert _ _ _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
⊢ ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
have B : s.piecewise m₂ m₁ = Function.update (s.piecewise m₂ m₁) i (m₁ i) :=
  by
  ext j
  by_cases h : j = i
  · rw [h]
    simp [his]
  · simp [h]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
⊢ piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
[PROOFSTEP]
ext j
[GOAL]
case h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
j : ι
⊢ piecewise s m₂ m₁ j = Function.update (piecewise s m₂ m₁) i (m₁ i) j
[PROOFSTEP]
by_cases h : j = i
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
j : ι
h : j = i
⊢ piecewise s m₂ m₁ j = Function.update (piecewise s m₂ m₁) i (m₁ i) j
[PROOFSTEP]
rw [h]
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
j : ι
h : j = i
⊢ piecewise s m₂ m₁ i = Function.update (piecewise s m₂ m₁) i (m₁ i) i
[PROOFSTEP]
simp [his]
[GOAL]
case neg
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
j : ι
h : ¬j = i
⊢ piecewise s m₂ m₁ j = Function.update (piecewise s m₂ m₁) i (m₁ i) j
[PROOFSTEP]
simp [h]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
⊢ ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
rw [B, A, ← f.map_sub]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
⊢ ‖↑f (Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i))‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
apply le_trans (H _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
⊢ C * ∏ i_1 : ι, ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) i_1‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
gcongr with j
[GOAL]
case h.h0
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
⊢ ∀ (i_1 : ι), i_1 ∈ univ → 0 ≤ ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) i_1‖
[PROOFSTEP]
exact fun j _ => norm_nonneg _
[GOAL]
case h.h1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
j : ι
a✝ : j ∈ univ
⊢ ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) j‖ ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
by_cases h : j = i
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
j : ι
a✝ : j ∈ univ
h : j = i
⊢ ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) j‖ ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
rw [h]
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
j : ι
a✝ : j ∈ univ
h : j = i
⊢ ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) i‖ ≤ if i = i then ‖m₁ i - m₂ i‖ else max ‖m₁ i‖ ‖m₂ i‖
[PROOFSTEP]
simp
[GOAL]
case neg
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
j : ι
a✝ : j ∈ univ
h : ¬j = i
⊢ ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) j‖ ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
by_cases h' : j ∈ s
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
j : ι
a✝ : j ∈ univ
h : ¬j = i
h' : j ∈ s
⊢ ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) j‖ ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
simp [h', h, le_refl]
[GOAL]
case neg
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
A : piecewise (insert i s) m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₂ i)
B : piecewise s m₂ m₁ = Function.update (piecewise s m₂ m₁) i (m₁ i)
j : ι
a✝ : j ∈ univ
h : ¬j = i
h' : ¬j ∈ s
⊢ ‖Function.update (piecewise s m₂ m₁) i (m₁ i - m₂ i) j‖ ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
simp [h', h, le_refl]
[GOAL]
case insert
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
I :
  ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ ‖↑f m₁ - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∑ i in insert i s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
calc
  ‖f m₁ - f ((insert i s).piecewise m₂ m₁)‖ ≤
      ‖f m₁ - f (s.piecewise m₂ m₁)‖ + ‖f (s.piecewise m₂ m₁) - f ((insert i s).piecewise m₂ m₁)‖ :=
    by
    rw [← dist_eq_norm, ← dist_eq_norm, ← dist_eq_norm]
    exact dist_triangle _ _ _
  _ ≤
      (C * ∑ i in s, ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) +
        C * ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ :=
    (add_le_add Hrec I)
  _ = C * ∑ i in insert i s, ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ := by
    simp [his, add_comm, left_distrib]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
I :
  ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ ‖↑f m₁ - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ + ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖
[PROOFSTEP]
rw [← dist_eq_norm, ← dist_eq_norm, ← dist_eq_norm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
I :
  ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ dist (↑f m₁) (↑f (piecewise (insert i s) m₂ m₁)) ≤
    dist (↑f m₁) (↑f (piecewise s m₂ m₁)) + dist (↑f (piecewise s m₂ m₁)) (↑f (piecewise (insert i s) m₂ m₁))
[PROOFSTEP]
exact dist_triangle _ _ _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
s : Finset ι
his : ¬i ∈ s
Hrec : ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
I :
  ‖↑f (piecewise s m₂ m₁) - ↑f (piecewise (insert i s) m₂ m₁)‖ ≤
    C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ ((C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) +
      C * ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) =
    C * ∑ i in insert i s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
simp [his, add_comm, left_distrib]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
A :
  ∀ (s : Finset ι),
    ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ ‖↑f m₁ - ↑f m₂‖ ≤ C * ∑ i : ι, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
convert A univ
[GOAL]
case h.e'_3.h.e'_3.h.e'_6.h.e'_6
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
inst✝ : DecidableEq ι
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
A :
  ∀ (s : Finset ι),
    ‖↑f m₁ - ↑f (piecewise s m₂ m₁)‖ ≤ C * ∑ i in s, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
⊢ m₂ = piecewise univ m₂ m₁
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
⊢ ‖↑f m₁ - ↑f m₂‖ ≤ C * ↑(Fintype.card ι) * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) * ‖m₁ - m₂‖
[PROOFSTEP]
classical
have A :
  ∀ i : ι,
    ∏ j, (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) :=
  by
  intro i
  calc
    ∏ j, (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤
        ∏ j : ι, Function.update (fun _ => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j :=
      by
      apply prod_le_prod
      · intro j _
        by_cases h : j = i <;> simp [h, norm_nonneg]
      · intro j _
        by_cases h : j = i
        · rw [h]
          simp
          exact norm_le_pi_norm (m₁ - m₂) i
        · simp [h, -le_max_iff, -max_le_iff, max_le_max, norm_le_pi_norm (_ : ∀ i, E i)]
    _ = ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) :=
      by
      rw [prod_update_of_mem (Finset.mem_univ _)]
      simp [card_univ_diff]
calc
  ‖f m₁ - f m₂‖ ≤ C * ∑ i, ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ :=
    f.norm_image_sub_le_of_bound' hC H m₁ m₂
  _ ≤ C * ∑ i, ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) := by gcongr; apply A
  _ = C * Fintype.card ι * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) * ‖m₁ - m₂‖ :=
    by
    rw [sum_const, card_univ, nsmul_eq_mul]
    ring
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
⊢ ‖↑f m₁ - ↑f m₂‖ ≤ C * ↑(Fintype.card ι) * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) * ‖m₁ - m₂‖
[PROOFSTEP]
have A :
  ∀ i : ι,
    ∏ j, (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) :=
  by
  intro i
  calc
    ∏ j, (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤
        ∏ j : ι, Function.update (fun _ => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j :=
      by
      apply prod_le_prod
      · intro j _
        by_cases h : j = i <;> simp [h, norm_nonneg]
      · intro j _
        by_cases h : j = i
        · rw [h]
          simp
          exact norm_le_pi_norm (m₁ - m₂) i
        · simp [h, -le_max_iff, -max_le_iff, max_le_max, norm_le_pi_norm (_ : ∀ i, E i)]
    _ = ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) :=
      by
      rw [prod_update_of_mem (Finset.mem_univ _)]
      simp [card_univ_diff]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
⊢ ∀ (i : ι),
    (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
[PROOFSTEP]
intro i
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
⊢ (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
[PROOFSTEP]
calc
  ∏ j, (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤
      ∏ j : ι, Function.update (fun _ => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j :=
    by
    apply prod_le_prod
    · intro j _
      by_cases h : j = i <;> simp [h, norm_nonneg]
    · intro j _
      by_cases h : j = i
      · rw [h]
        simp
        exact norm_le_pi_norm (m₁ - m₂) i
      · simp [h, -le_max_iff, -max_le_iff, max_le_max, norm_le_pi_norm (_ : ∀ i, E i)]
  _ = ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) :=
    by
    rw [prod_update_of_mem (Finset.mem_univ _)]
    simp [card_univ_diff]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
⊢ (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤
    ∏ j : ι, Function.update (fun x => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j
[PROOFSTEP]
apply prod_le_prod
[GOAL]
case h0
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
⊢ ∀ (i_1 : ι), i_1 ∈ univ → 0 ≤ if i_1 = i then ‖m₁ i - m₂ i‖ else max ‖m₁ i_1‖ ‖m₂ i_1‖
[PROOFSTEP]
intro j _
[GOAL]
case h0
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
⊢ 0 ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
by_cases h : j = i
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
h : j = i
⊢ 0 ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
simp [h, norm_nonneg]
[GOAL]
case neg
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
h : ¬j = i
⊢ 0 ≤ if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖
[PROOFSTEP]
simp [h, norm_nonneg]
[GOAL]
case h1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
⊢ ∀ (i_1 : ι),
    i_1 ∈ univ →
      (if i_1 = i then ‖m₁ i - m₂ i‖ else max ‖m₁ i_1‖ ‖m₂ i_1‖) ≤
        Function.update (fun x => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ i_1
[PROOFSTEP]
intro j _
[GOAL]
case h1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
⊢ (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ Function.update (fun x => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j
[PROOFSTEP]
by_cases h : j = i
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
h : j = i
⊢ (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ Function.update (fun x => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j
[PROOFSTEP]
rw [h]
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
h : j = i
⊢ (if i = i then ‖m₁ i - m₂ i‖ else max ‖m₁ i‖ ‖m₂ i‖) ≤ Function.update (fun x => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ i
[PROOFSTEP]
simp
[GOAL]
case pos
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
h : j = i
⊢ ‖m₁ i - m₂ i‖ ≤ ‖m₁ - m₂‖
[PROOFSTEP]
exact norm_le_pi_norm (m₁ - m₂) i
[GOAL]
case neg
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i j : ι
a✝ : j ∈ univ
h : ¬j = i
⊢ (if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ Function.update (fun x => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j
[PROOFSTEP]
simp [h, -le_max_iff, -max_le_iff, max_le_max, norm_le_pi_norm (_ : ∀ i, E i)]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
⊢ ∏ j : ι, Function.update (fun x => max ‖m₁‖ ‖m₂‖) i ‖m₁ - m₂‖ j = ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
[PROOFSTEP]
rw [prod_update_of_mem (Finset.mem_univ _)]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
i : ι
⊢ ‖m₁ - m₂‖ * ∏ x in univ \ {i}, max ‖m₁‖ ‖m₂‖ = ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
[PROOFSTEP]
simp [card_univ_diff]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
A :
  ∀ (i : ι),
    (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
⊢ ‖↑f m₁ - ↑f m₂‖ ≤ C * ↑(Fintype.card ι) * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) * ‖m₁ - m₂‖
[PROOFSTEP]
calc
  ‖f m₁ - f m₂‖ ≤ C * ∑ i, ∏ j, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖ :=
    f.norm_image_sub_le_of_bound' hC H m₁ m₂
  _ ≤ C * ∑ i, ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) := by gcongr; apply A
  _ = C * Fintype.card ι * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) * ‖m₁ - m₂‖ :=
    by
    rw [sum_const, card_univ, nsmul_eq_mul]
    ring
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
A :
  ∀ (i : ι),
    (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
⊢ (C * ∑ i : ι, ∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤
    C * ∑ i : ?m.189282, ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
[PROOFSTEP]
gcongr
[GOAL]
case h.h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
A :
  ∀ (i : ι),
    (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
i✝ : ι
a✝ : i✝ ∈ univ
⊢ (∏ j : ι, if j = i✝ then ‖m₁ i✝ - m₂ i✝‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
[PROOFSTEP]
apply A
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
A :
  ∀ (i : ι),
    (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
⊢ C * ∑ i : ι, ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) =
    C * ↑(Fintype.card ι) * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) * ‖m₁ - m₂‖
[PROOFSTEP]
rw [sum_const, card_univ, nsmul_eq_mul]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
hC : 0 ≤ C
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
m₁ m₂ : (i : ι) → E i
A :
  ∀ (i : ι),
    (∏ j : ι, if j = i then ‖m₁ i - m₂ i‖ else max ‖m₁ j‖ ‖m₂ j‖) ≤ ‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1)
⊢ C * (↑(Fintype.card ι) * (‖m₁ - m₂‖ * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1))) =
    C * ↑(Fintype.card ι) * max ‖m₁‖ ‖m₂‖ ^ (Fintype.card ι - 1) * ‖m₁ - m₂‖
[PROOFSTEP]
ring
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
⊢ Continuous ↑f
[PROOFSTEP]
let D := max C 1
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
D : ℝ := max C 1
⊢ Continuous ↑f
[PROOFSTEP]
have D_pos : 0 ≤ D := le_trans zero_le_one (le_max_right _ _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
D : ℝ := max C 1
D_pos : 0 ≤ D
⊢ Continuous ↑f
[PROOFSTEP]
replace H : ∀ m, ‖f m‖ ≤ D * ∏ i, ‖m i‖
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
D : ℝ := max C 1
D_pos : 0 ≤ D
⊢ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
[PROOFSTEP]
intro m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
D : ℝ := max C 1
D_pos : 0 ≤ D
m : (i : ι) → E i
⊢ ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
[PROOFSTEP]
apply le_trans (H m) (mul_le_mul_of_nonneg_right (le_max_left _ _) _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ C * ∏ i : ι, ‖m i‖
D : ℝ := max C 1
D_pos : 0 ≤ D
m : (i : ι) → E i
⊢ 0 ≤ ∏ i : ι, ‖m i‖
[PROOFSTEP]
exact prod_nonneg fun (i : ι) _ => norm_nonneg (m i)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
D : ℝ := max C 1
D_pos : 0 ≤ D
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
⊢ Continuous ↑f
[PROOFSTEP]
refine' continuous_iff_continuousAt.2 fun m => _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
D : ℝ := max C 1
D_pos : 0 ≤ D
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
m : (i : ι) → E i
⊢ ContinuousAt (↑f) m
[PROOFSTEP]
refine'
  continuousAt_of_locally_lipschitz zero_lt_one (D * Fintype.card ι * (‖m‖ + 1) ^ (Fintype.card ι - 1)) fun m' h' => _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
D : ℝ := max C 1
D_pos : 0 ≤ D
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
m m' : (i : ι) → E i
h' : dist m' m < 1
⊢ dist (↑f m') (↑f m) ≤ D * ↑(Fintype.card ι) * (‖m‖ + 1) ^ (Fintype.card ι - 1) * dist m' m
[PROOFSTEP]
rw [dist_eq_norm, dist_eq_norm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
D : ℝ := max C 1
D_pos : 0 ≤ D
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
m m' : (i : ι) → E i
h' : dist m' m < 1
⊢ ‖↑f m' - ↑f m‖ ≤ D * ↑(Fintype.card ι) * (‖m‖ + 1) ^ (Fintype.card ι - 1) * ‖m' - m‖
[PROOFSTEP]
have : max ‖m'‖ ‖m‖ ≤ ‖m‖ + 1 := by simp [zero_le_one, norm_le_of_mem_closedBall (le_of_lt h')]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
D : ℝ := max C 1
D_pos : 0 ≤ D
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
m m' : (i : ι) → E i
h' : dist m' m < 1
⊢ max ‖m'‖ ‖m‖ ≤ ‖m‖ + 1
[PROOFSTEP]
simp [zero_le_one, norm_le_of_mem_closedBall (le_of_lt h')]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
D : ℝ := max C 1
D_pos : 0 ≤ D
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
m m' : (i : ι) → E i
h' : dist m' m < 1
this : max ‖m'‖ ‖m‖ ≤ ‖m‖ + 1
⊢ ‖↑f m' - ↑f m‖ ≤ D * ↑(Fintype.card ι) * (‖m‖ + 1) ^ (Fintype.card ι - 1) * ‖m' - m‖
[PROOFSTEP]
calc
  ‖f m' - f m‖ ≤ D * Fintype.card ι * max ‖m'‖ ‖m‖ ^ (Fintype.card ι - 1) * ‖m' - m‖ :=
    f.norm_image_sub_le_of_bound D_pos H m' m
  _ ≤ D * Fintype.card ι * (‖m‖ + 1) ^ (Fintype.card ι - 1) * ‖m' - m‖ := by gcongr
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E G
C : ℝ
D : ℝ := max C 1
D_pos : 0 ≤ D
H : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ D * ∏ i : ι, ‖m i‖
m m' : (i : ι) → E i
h' : dist m' m < 1
this : max ‖m'‖ ‖m‖ ≤ ‖m‖ + 1
⊢ D * ↑(Fintype.card ι) * max ‖m'‖ ‖m‖ ^ (Fintype.card ι - 1) * ‖m' - m‖ ≤
    D * ↑(Fintype.card ι) * (‖m‖ + 1) ^ (Fintype.card ι - 1) * ‖m' - m‖
[PROOFSTEP]
gcongr
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ : MultilinearMap 𝕜 E G
k n : ℕ
f : MultilinearMap 𝕜 (fun x => G) G'
s : Finset (Fin n)
hk : card s = k
z : G
C : ℝ
H : ∀ (m : Fin n → G), ‖↑f m‖ ≤ C * ∏ i : Fin n, ‖m i‖
v : Fin k → G
⊢ ‖↑(restr f s hk z) v‖ ≤ C * ‖z‖ ^ (n - k) * ∏ i : Fin k, ‖v i‖
[PROOFSTEP]
rw [mul_right_comm, mul_assoc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ : MultilinearMap 𝕜 E G
k n : ℕ
f : MultilinearMap 𝕜 (fun x => G) G'
s : Finset (Fin n)
hk : card s = k
z : G
C : ℝ
H : ∀ (m : Fin n → G), ‖↑f m‖ ≤ C * ∏ i : Fin n, ‖m i‖
v : Fin k → G
⊢ ‖↑(restr f s hk z) v‖ ≤ C * ((∏ i : Fin k, ‖v i‖) * ‖z‖ ^ (n - k))
[PROOFSTEP]
convert H _ using 2
[GOAL]
case h.e'_4.h.e'_6
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ : MultilinearMap 𝕜 E G
k n : ℕ
f : MultilinearMap 𝕜 (fun x => G) G'
s : Finset (Fin n)
hk : card s = k
z : G
C : ℝ
H : ∀ (m : Fin n → G), ‖↑f m‖ ≤ C * ∏ i : Fin n, ‖m i‖
v : Fin k → G
⊢ (∏ i : Fin k, ‖v i‖) * ‖z‖ ^ (n - k) =
    ∏ i : Fin n, ‖if h : i ∈ s then v (↑(OrderIso.symm (orderIsoOfFin s hk)) { val := i, property := h }) else z‖
[PROOFSTEP]
simp only [apply_dite norm, Fintype.prod_dite, prod_const ‖z‖, Finset.card_univ,
  Fintype.card_of_subtype sᶜ fun _ => mem_compl, card_compl, Fintype.card_fin, hk, mk_coe, ←
  (s.orderIsoOfFin hk).symm.bijective.prod_comp fun x => ‖v x‖]
[GOAL]
case h.e'_4.h.e'_6
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ : MultilinearMap 𝕜 E G
k n : ℕ
f : MultilinearMap 𝕜 (fun x => G) G'
s : Finset (Fin n)
hk : card s = k
z : G
C : ℝ
H : ∀ (m : Fin n → G), ‖↑f m‖ ≤ C * ∏ i : Fin n, ‖m i‖
v : Fin k → G
⊢ (∏ i : { x // x ∈ s }, ‖v (↑(OrderIso.symm (orderIsoOfFin s hk)) i)‖) * ‖z‖ ^ (n - k) =
    (∏ a : { a // a ∈ s }, ‖v (↑(OrderIso.symm (orderIsoOfFin s hk)) { val := ↑a, property := (_ : ↑a ∈ s) })‖) *
      ‖z‖ ^ (n - k)
[PROOFSTEP]
convert rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
have A : 0 ≤ ∏ i, ‖m i‖ := prod_nonneg fun j _ => norm_nonneg _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
cases' A.eq_or_lt with h hlt
[GOAL]
case inl
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
h : 0 = ∏ i : ι, ‖m i‖
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rcases prod_eq_zero_iff.1 h.symm with ⟨i, _, hi⟩
[GOAL]
case inl.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
h : 0 = ∏ i : ι, ‖m i‖
i : ι
left✝ : i ∈ univ
hi : ‖m i‖ = 0
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [norm_eq_zero] at hi
[GOAL]
case inl.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
h : 0 = ∏ i : ι, ‖m i‖
i : ι
left✝ : i ∈ univ
hi : m i = 0
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
have : f m = 0 := f.map_coord_zero i hi
[GOAL]
case inl.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
h : 0 = ∏ i : ι, ‖m i‖
i : ι
left✝ : i ∈ univ
hi : m i = 0
this : ↑f m = 0
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [this, norm_zero]
[GOAL]
case inl.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
h : 0 = ∏ i : ι, ‖m i‖
i : ι
left✝ : i ∈ univ
hi : m i = 0
this : ↑f m = 0
⊢ 0 ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
exact mul_nonneg (op_norm_nonneg f) A
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
hlt : 0 < ∏ i : ι, ‖m i‖
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [← div_le_iff hlt]
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
hlt : 0 < ∏ i : ι, ‖m i‖
⊢ ‖↑f m‖ / ∏ i : ι, ‖m i‖ ≤ ‖f‖
[PROOFSTEP]
apply le_csInf bounds_nonempty
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
hlt : 0 < ∏ i : ι, ‖m i‖
⊢ ∀ (b : ℝ), b ∈ {c | 0 ≤ c ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ c * ∏ i : ι, ‖m i‖} → ‖↑f m‖ / ∏ i : ι, ‖m i‖ ≤ b
[PROOFSTEP]
rintro c ⟨_, hc⟩
[GOAL]
case inr.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c✝ : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
hlt : 0 < ∏ i : ι, ‖m i‖
c : ℝ
left✝ : 0 ≤ c
hc : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ c * ∏ i : ι, ‖m i‖
⊢ ‖↑f m‖ / ∏ i : ι, ‖m i‖ ≤ c
[PROOFSTEP]
rw [div_le_iff hlt]
[GOAL]
case inr.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c✝ : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
A : 0 ≤ ∏ i : ι, ‖m i‖
hlt : 0 < ∏ i : ι, ‖m i‖
c : ℝ
left✝ : 0 ≤ c
hc : ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ c * ∏ i : ι, ‖m i‖
⊢ ‖↑f m‖ ≤ c * ∏ i : ι, ‖m i‖
[PROOFSTEP]
apply hc
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
h : ‖m‖ ≤ 1
⊢ ‖f‖ * ∏ i : ι, 1 = ‖f‖
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m x : (i : ι) → E i
⊢ ‖↑(f + g) x‖ ≤ (‖f‖ + ‖g‖) * ∏ i : ι, ‖x i‖
[PROOFSTEP]
rw [add_mul]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m x : (i : ι) → E i
⊢ ‖↑(f + g) x‖ ≤ ‖f‖ * ∏ i : ι, ‖x i‖ + ‖g‖ * ∏ i : ι, ‖x i‖
[PROOFSTEP]
exact norm_add_le_of_le (le_op_norm _ _) (le_op_norm _ _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ m : (i : ι) → E i
⊢ ‖↑0 m‖ ≤ 0 * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
h : ‖f‖ = 0
⊢ f = 0
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
h : ‖f‖ = 0
m : (i : ι) → E i
⊢ ↑f m = ↑0 m
[PROOFSTEP]
simpa [h] using f.le_op_norm m
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
⊢ f = 0 → ‖f‖ = 0
[PROOFSTEP]
rintro rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
⊢ ‖0‖ = 0
[PROOFSTEP]
exact op_norm_zero
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c✝ : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
c : 𝕜'
⊢ ∀ (m : (i : ι) → E i), ‖↑(c • f) m‖ ≤ ‖c‖ * ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
intro m
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c✝ : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
c : 𝕜'
m : (i : ι) → E i
⊢ ‖↑(c • f) m‖ ≤ ‖c‖ * ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
erw [norm_smul, mul_assoc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c✝ : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
c : 𝕜'
m : (i : ι) → E i
⊢ ‖c‖ * ‖↑f.toMultilinearMap m‖ ≤ ‖c‖ * (‖f‖ * ∏ i : ι, ‖m i‖)
[PROOFSTEP]
exact mul_le_mul_of_nonneg_left (le_op_norm _ _) (norm_nonneg _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
⊢ ‖-f‖ = ‖f‖
[PROOFSTEP]
rw [norm_def]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
⊢ sInf {c | 0 ≤ c ∧ ∀ (m : (i : ι) → E i), ‖↑(-f) m‖ ≤ c * ∏ i : ι, ‖m i‖} = ‖f‖
[PROOFSTEP]
apply congr_arg
[GOAL]
case h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
⊢ {c | 0 ≤ c ∧ ∀ (m : (i : ι) → E i), ‖↑(-f) m‖ ≤ c * ∏ i : ι, ‖m i‖} =
    {c | 0 ≤ c ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ c * ∏ i : ι, ‖m i‖}
[PROOFSTEP]
ext
[GOAL]
case h.h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
x✝ : ℝ
⊢ x✝ ∈ {c | 0 ≤ c ∧ ∀ (m : (i : ι) → E i), ‖↑(-f) m‖ ≤ c * ∏ i : ι, ‖m i‖} ↔
    x✝ ∈ {c | 0 ≤ c ∧ ∀ (m : (i : ι) → E i), ‖↑f m‖ ≤ c * ∏ i : ι, ‖m i‖}
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
b : ℝ
hm : ∀ (i : ι), ‖m i‖ ≤ b
⊢ ‖↑f m‖ ≤ ‖f‖ * b ^ Fintype.card ι
[PROOFSTEP]
simpa only [prod_const] using f.le_op_norm_mul_prod_of_le m hm
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei✝ : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁹ : Fintype ι
inst✝¹⁸ : Fintype ι'
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁵ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹² : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹¹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei✝ i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei✝ i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
Ei : Fin n → Type u_2
inst✝¹ : (i : Fin n) → NormedAddCommGroup (Ei i)
inst✝ : (i : Fin n) → NormedSpace 𝕜 (Ei i)
f : ContinuousMultilinearMap 𝕜 Ei G
m : (i : Fin n) → Ei i
b : ℝ
hm : ‖m‖ ≤ b
⊢ ‖↑f m‖ ≤ ‖f‖ * b ^ n
[PROOFSTEP]
simpa only [Fintype.card_fin] using f.le_op_norm_mul_pow_card_of_le m fun i => (norm_le_pi_norm m i).trans hm
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
⊢ ↑‖↑f m‖₊ ≤ ↑(‖f‖₊ * ∏ i : ι, ‖m i‖₊)
[PROOFSTEP]
push_cast
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
⊢ ‖↑f m‖ ≤ ‖f‖ * ∏ x : ι, ‖m x‖
[PROOFSTEP]
exact f.le_op_norm m
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g✝ : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E G
g : ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
⊢ ‖↑(prod f g) m‖ ≤ max ‖f‖ ‖g‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
have H : 0 ≤ ∏ i, ‖m i‖ := prod_nonneg fun _ _ => norm_nonneg _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g✝ : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E G
g : ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
H : 0 ≤ ∏ i : ι, ‖m i‖
⊢ ‖↑(prod f g) m‖ ≤ max ‖f‖ ‖g‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simpa only [prod_apply, Prod.norm_def, max_mul_of_nonneg, H] using max_le_max (f.le_op_norm m) (g.le_op_norm m)
[GOAL]
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
⊢ ‖pi f‖ = ‖f‖
[PROOFSTEP]
apply le_antisymm
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
⊢ ‖pi f‖ ≤ ‖f‖
[PROOFSTEP]
refine' op_norm_le_bound _ (norm_nonneg f) fun m => _
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ ‖↑(pi f) m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
dsimp
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ ‖fun j => ↑(f j) m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [pi_norm_le_iff_of_nonneg]
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ ∀ (i : ι'), ‖↑(f i) m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ 0 ≤ ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
exacts [fun i => (f i).le_of_op_norm_le m (norm_le_pi_norm f i),
  mul_nonneg (norm_nonneg f) (prod_nonneg fun _ _ => norm_nonneg _)]
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
⊢ ‖f‖ ≤ ‖pi f‖
[PROOFSTEP]
refine' (pi_norm_le_iff_of_nonneg (norm_nonneg _)).2 fun i => _
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
i : ι'
⊢ ‖f i‖ ≤ ‖pi f‖
[PROOFSTEP]
refine' op_norm_le_bound _ (norm_nonneg _) fun m => _
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
i : ι'
m : (i : ι) → E i
⊢ ‖↑(f i) m‖ ≤ ‖pi f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
refine' le_trans _ ((pi f).le_op_norm m)
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
i : ι'
m : (i : ι) → E i
⊢ ‖↑(f i) m‖ ≤ ‖↑(pi f) m‖
[PROOFSTEP]
convert norm_le_pi_norm (fun j => f j m) i
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁸ : Fintype ι
inst✝¹⁷ : Fintype ι'
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹³ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹¹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹⁰ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : Subsingleton ι
i' : ι
m : ι → G
⊢ ‖↑(ofSubsingleton 𝕜 G i') m‖ ≤ 1 * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [Fintype.prod_subsingleton _ i', one_mul, ofSubsingleton_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁹ : Fintype ι
inst✝¹⁸ : Fintype ι'
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁵ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹² : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹¹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
⊢ ‖ofSubsingleton 𝕜 G i'‖ = 1
[PROOFSTEP]
apply le_antisymm (norm_ofSubsingleton_le 𝕜 G i')
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁹ : Fintype ι
inst✝¹⁸ : Fintype ι'
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁵ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹² : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹¹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖
[PROOFSTEP]
obtain ⟨g, hg⟩ := exists_ne (0 : G)
[GOAL]
case intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁹ : Fintype ι
inst✝¹⁸ : Fintype ι'
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁵ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹² : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹¹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
c : 𝕜
f g✝ : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
g : G
hg : g ≠ 0
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖
[PROOFSTEP]
rw [← norm_ne_zero_iff] at hg
[GOAL]
case intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁹ : Fintype ι
inst✝¹⁸ : Fintype ι'
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁵ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹² : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹¹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
c : 𝕜
f g✝ : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
g : G
hg : ‖g‖ ≠ 0
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖
[PROOFSTEP]
have := (ofSubsingleton 𝕜 G i').ratio_le_op_norm fun _ => g
[GOAL]
case intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁹ : Fintype ι
inst✝¹⁸ : Fintype ι'
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁵ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹² : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹¹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
c : 𝕜
f g✝ : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
g : G
hg : ‖g‖ ≠ 0
this : ‖↑(ofSubsingleton 𝕜 G i') fun x => g‖ / ∏ i : ι, ‖g‖ ≤ ‖ofSubsingleton 𝕜 G i'‖
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖
[PROOFSTEP]
rwa [Fintype.prod_subsingleton _ i', ofSubsingleton_apply, div_self hg] at this
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁸ : Fintype ι
inst✝¹⁷ : Fintype ι'
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹³ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹¹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹⁰ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : IsEmpty ι
x : G
⊢ ‖constOfIsEmpty 𝕜 E x‖ = ‖x‖
[PROOFSTEP]
apply le_antisymm
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁸ : Fintype ι
inst✝¹⁷ : Fintype ι'
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹³ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹¹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹⁰ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : IsEmpty ι
x : G
⊢ ‖constOfIsEmpty 𝕜 E x‖ ≤ ‖x‖
[PROOFSTEP]
refine' op_norm_le_bound _ (norm_nonneg _) fun x => _
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁸ : Fintype ι
inst✝¹⁷ : Fintype ι'
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹³ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹¹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹⁰ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : IsEmpty ι
x✝ : G
x : (i : ι) → E i
⊢ ‖↑(constOfIsEmpty 𝕜 E x✝) x‖ ≤ ‖x✝‖ * ∏ i : ι, ‖x i‖
[PROOFSTEP]
rw [Fintype.prod_empty, mul_one, constOfIsEmpty_apply]
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁸ : Fintype ι
inst✝¹⁷ : Fintype ι'
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹³ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹¹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝¹⁰ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : IsEmpty ι
x : G
⊢ ‖x‖ ≤ ‖constOfIsEmpty 𝕜 E x‖
[PROOFSTEP]
simpa using (constOfIsEmpty 𝕜 E x).le_op_norm 0
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'
⊢ (fun f =>
        (ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.fst 𝕜 G G') f,
          ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.snd 𝕜 G G') f))
      (AddHom.toFun
        {
            toAddHom :=
              { toFun := fun f => prod f.fst f.snd,
                map_add' :=
                  (_ :
                    ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                      (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) },
            map_smul' :=
              (_ :
                ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                  AddHom.toFun
                      { toFun := fun f => prod f.fst f.snd,
                        map_add' :=
                          (_ :
                            ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                              (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                      (c • f) =
                    AddHom.toFun
                      { toFun := fun f => prod f.fst f.snd,
                        map_add' :=
                          (_ :
                            ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                              (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                      (c • f)) }.toAddHom
        f) =
    f
[PROOFSTEP]
ext
[GOAL]
case h₁.H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'
x✝ : (i : ι) → E i
⊢ ↑((fun f =>
              (ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.fst 𝕜 G G') f,
                ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.snd 𝕜 G G') f))
            (AddHom.toFun
              {
                  toAddHom :=
                    { toFun := fun f => prod f.fst f.snd,
                      map_add' :=
                        (_ :
                          ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                            (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) },
                  map_smul' :=
                    (_ :
                      ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                        AddHom.toFun
                            { toFun := fun f => prod f.fst f.snd,
                              map_add' :=
                                (_ :
                                  ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                    (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                            (c • f) =
                          AddHom.toFun
                            { toFun := fun f => prod f.fst f.snd,
                              map_add' :=
                                (_ :
                                  ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                    (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                            (c • f)) }.toAddHom
              f)).fst
      x✝ =
    ↑f.fst x✝
[PROOFSTEP]
rfl
[GOAL]
case h₂.H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'
x✝ : (i : ι) → E i
⊢ ↑((fun f =>
              (ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.fst 𝕜 G G') f,
                ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.snd 𝕜 G G') f))
            (AddHom.toFun
              {
                  toAddHom :=
                    { toFun := fun f => prod f.fst f.snd,
                      map_add' :=
                        (_ :
                          ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                            (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) },
                  map_smul' :=
                    (_ :
                      ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                        AddHom.toFun
                            { toFun := fun f => prod f.fst f.snd,
                              map_add' :=
                                (_ :
                                  ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                    (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                            (c • f) =
                          AddHom.toFun
                            { toFun := fun f => prod f.fst f.snd,
                              map_add' :=
                                (_ :
                                  ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                    (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                            (c • f)) }.toAddHom
              f)).snd
      x✝ =
    ↑f.snd x✝
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E (G × G')
⊢ AddHom.toFun
      {
          toAddHom :=
            { toFun := fun f => prod f.fst f.snd,
              map_add' :=
                (_ :
                  ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                    (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) },
          map_smul' :=
            (_ :
              ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                AddHom.toFun
                    { toFun := fun f => prod f.fst f.snd,
                      map_add' :=
                        (_ :
                          ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                            (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                    (c • f) =
                  AddHom.toFun
                    { toFun := fun f => prod f.fst f.snd,
                      map_add' :=
                        (_ :
                          ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                            (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                    (c • f)) }.toAddHom
      ((fun f =>
          (ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.fst 𝕜 G G') f,
            ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.snd 𝕜 G G') f))
        f) =
    f
[PROOFSTEP]
ext
[GOAL]
case H.h₁
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E (G × G')
x✝ : (i : ι) → E i
⊢ (↑(AddHom.toFun
            {
                toAddHom :=
                  { toFun := fun f => prod f.fst f.snd,
                    map_add' :=
                      (_ :
                        ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                          (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) },
                map_smul' :=
                  (_ :
                    ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                      AddHom.toFun
                          { toFun := fun f => prod f.fst f.snd,
                            map_add' :=
                              (_ :
                                ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                  (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                          (c • f) =
                        AddHom.toFun
                          { toFun := fun f => prod f.fst f.snd,
                            map_add' :=
                              (_ :
                                ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                  (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                          (c • f)) }.toAddHom
            ((fun f =>
                (ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.fst 𝕜 G G') f,
                  ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.snd 𝕜 G G') f))
              f))
        x✝).fst =
    (↑f x✝).fst
[PROOFSTEP]
rfl
[GOAL]
case H.h₂
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' G
inst✝ : SMulCommClass 𝕜 𝕜' G
f : ContinuousMultilinearMap 𝕜 E (G × G')
x✝ : (i : ι) → E i
⊢ (↑(AddHom.toFun
            {
                toAddHom :=
                  { toFun := fun f => prod f.fst f.snd,
                    map_add' :=
                      (_ :
                        ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                          (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) },
                map_smul' :=
                  (_ :
                    ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                      AddHom.toFun
                          { toFun := fun f => prod f.fst f.snd,
                            map_add' :=
                              (_ :
                                ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                  (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                          (c • f) =
                        AddHom.toFun
                          { toFun := fun f => prod f.fst f.snd,
                            map_add' :=
                              (_ :
                                ∀ (f g : ContinuousMultilinearMap 𝕜 E G × ContinuousMultilinearMap 𝕜 E G'),
                                  (fun f => prod f.fst f.snd) (f + g) = (fun f => prod f.fst f.snd) (f + g)) }
                          (c • f)) }.toAddHom
            ((fun f =>
                (ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.fst 𝕜 G G') f,
                  ContinuousLinearMap.compContinuousMultilinearMap (ContinuousLinearMap.snd 𝕜 G G') f))
              f))
        x✝).snd =
    (↑f x✝).snd
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
⊢ Continuous fun p => ↑p.fst p.snd
[PROOFSTEP]
apply continuous_iff_continuousAt.2 fun p => ?_
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.fst p.snd) p
[PROOFSTEP]
apply
  continuousAt_of_locally_lipschitz zero_lt_one
    ((‖p‖ + 1) * Fintype.card ι * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i, ‖p.2 i‖) fun q hq => ?_
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.fst q.snd) (↑p.fst p.snd) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * dist q p
[PROOFSTEP]
have : 0 ≤ max ‖q.2‖ ‖p.2‖ := by simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
⊢ dist (↑q.fst q.snd) (↑p.fst p.snd) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * dist q p
[PROOFSTEP]
have : 0 ≤ ‖p‖ + 1 := zero_le_one.trans ((le_add_iff_nonneg_left 1).2 <| norm_nonneg p)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this : 0 ≤ ‖p‖ + 1
⊢ dist (↑q.fst q.snd) (↑p.fst p.snd) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * dist q p
[PROOFSTEP]
have A : ‖q‖ ≤ ‖p‖ + 1 := norm_le_of_mem_closedBall hq.le
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
⊢ dist (↑q.fst q.snd) (↑p.fst p.snd) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * dist q p
[PROOFSTEP]
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])
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
⊢ max ‖q‖ ‖p‖ ≤ ‖p‖ + 1
[PROOFSTEP]
simp [A, zero_le_one]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this✝ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this : max ‖q.snd‖ ‖p.snd‖ ≤ ‖p‖ + 1
⊢ dist (↑q.fst q.snd) (↑p.fst p.snd) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * dist q p
[PROOFSTEP]
have : ∀ i : ι, i ∈ univ → 0 ≤ ‖p.2 i‖ := fun i _ => norm_nonneg _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.snd‖ ‖p.snd‖ ≤ ‖p‖ + 1
this : ∀ (i : ι), i ∈ univ → 0 ≤ ‖Prod.snd p i‖
⊢ dist (↑q.fst q.snd) (↑p.fst p.snd) ≤
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * dist q p
[PROOFSTEP]
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_op_norm 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_of_le_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
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.snd‖ ‖p.snd‖ ≤ ‖p‖ + 1
this : ∀ (i : ι), i ∈ univ → 0 ≤ ‖Prod.snd p i‖
⊢ dist (↑q.fst q.snd) (↑q.fst p.snd) + dist (↑q.fst p.snd) (↑p.fst p.snd) =
    ‖↑q.fst q.snd - ↑q.fst p.snd‖ + ‖↑q.fst p.snd - ↑p.fst p.snd‖
[PROOFSTEP]
rw [dist_eq_norm, dist_eq_norm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.snd‖ ‖p.snd‖ ≤ ‖p‖ + 1
this : ∀ (i : ι), i ∈ univ → 0 ≤ ‖Prod.snd p i‖
⊢ ‖q.fst‖ * ↑(Fintype.card ι) * max ‖q.snd‖ ‖p.snd‖ ^ (Fintype.card ι - 1) * ‖q.snd - p.snd‖ +
      ‖q.fst - p.fst‖ * ∏ i : ι, ‖Prod.snd p i‖ ≤
    (‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ + ‖q - p‖ * ∏ i : ι, ‖Prod.snd p i‖
[PROOFSTEP]
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_of_le_left, pow_nonneg, norm_snd_le (q - p), norm_nonneg, norm_fst_le (q - p), prod_nonneg]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.snd‖ ‖p.snd‖ ≤ ‖p‖ + 1
this : ∀ (i : ι), i ∈ univ → 0 ≤ ‖Prod.snd p i‖
⊢ (‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ + ‖q - p‖ * ∏ i : ι, ‖Prod.snd p i‖ =
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * dist q p
[PROOFSTEP]
rw [dist_eq_norm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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.snd‖ ‖p.snd‖
this✝¹ : 0 ≤ ‖p‖ + 1
A : ‖q‖ ≤ ‖p‖ + 1
this✝ : max ‖q.snd‖ ‖p.snd‖ ≤ ‖p‖ + 1
this : ∀ (i : ι), i ∈ univ → 0 ≤ ‖Prod.snd p i‖
⊢ (‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) * ‖q - p‖ + ‖q - p‖ * ∏ i : ι, ‖Prod.snd p i‖ =
    ((‖p‖ + 1) * ↑(Fintype.card ι) * (‖p‖ + 1) ^ (Fintype.card ι - 1) + ∏ i : ι, ‖Prod.snd p i‖) * ‖q - p‖
[PROOFSTEP]
ring
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
α : Type u_1
p : α → ContinuousMultilinearMap 𝕜 E G
q : ContinuousMultilinearMap 𝕜 E G
h : HasSum p q
m : (i : ι) → E i
⊢ HasSum (fun a => ↑(p a) m) (↑q m)
[PROOFSTEP]
dsimp [HasSum] at h ⊢
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
α : Type u_1
p : α → ContinuousMultilinearMap 𝕜 E G
q : ContinuousMultilinearMap 𝕜 E G
h : Filter.Tendsto (fun s => ∑ b in s, p b) Filter.atTop (nhds q)
m : (i : ι) → E i
⊢ Filter.Tendsto (fun s => ∑ b in s, ↑(p b) m) Filter.atTop (nhds (↑q m))
[PROOFSTEP]
convert ((continuous_eval_left m).tendsto _).comp h using 1
[GOAL]
case h.e'_3
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
α : Type u_1
p : α → ContinuousMultilinearMap 𝕜 E G
q : ContinuousMultilinearMap 𝕜 E G
h : Filter.Tendsto (fun s => ∑ b in s, p b) Filter.atTop (nhds q)
m : (i : ι) → E i
⊢ (fun s => ∑ b in s, ↑(p b) m) = (fun p => ↑p m) ∘ fun s => ∑ b in s, p b
[PROOFSTEP]
ext s
[GOAL]
case h.e'_3.h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
α : Type u_1
p : α → ContinuousMultilinearMap 𝕜 E G
q : ContinuousMultilinearMap 𝕜 E G
h : Filter.Tendsto (fun s => ∑ b in s, p b) Filter.atTop (nhds q)
m : (i : ι) → E i
s : Finset α
⊢ ∑ b in s, ↑(p b) m = ((fun p => ↑p m) ∘ fun s => ∑ b in s, p b) s
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
⊢ CompleteSpace (ContinuousMultilinearMap 𝕜 E G)
[PROOFSTEP]
have nonneg : ∀ v : ∀ i, E i, 0 ≤ ∏ i, ‖v i‖ := fun v =>
  Finset.prod_nonneg fun i _ =>
    norm_nonneg
      _
        -- We show that every Cauchy sequence converges.
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
⊢ CompleteSpace (ContinuousMultilinearMap 𝕜 E G)
[PROOFSTEP]
refine'
  Metric.complete_of_cauchySeq_tendsto fun f hf =>
    _
      -- We now expand out the definition of a Cauchy sequence,
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
⊢ ∃ a, Tendsto f atTop (𝓝 a)
[PROOFSTEP]
rcases cauchySeq_iff_le_tendsto_0.1 hf with
  ⟨b, b0, b_bound, b_lim⟩
    -- and establish that the evaluation at any point `v : Π i, E i` is Cauchy.
[GOAL]
case intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
⊢ ∃ a, Tendsto f atTop (𝓝 a)
[PROOFSTEP]
have cau : ∀ v, CauchySeq fun n => f n v := by
  intro v
  apply cauchySeq_iff_le_tendsto_0.2 ⟨fun n => b n * ∏ i, ‖v i‖, _, _, _⟩
  · intro
    exact mul_nonneg (b0 _) (nonneg v)
  · intro n m N hn hm
    rw [dist_eq_norm]
    apply le_trans ((f n - f m).le_op_norm v) _
    exact mul_le_mul_of_nonneg_right (b_bound n m N hn hm) (nonneg v)
  · simpa using b_lim.mul tendsto_const_nhds
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
⊢ ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
[PROOFSTEP]
intro v
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
⊢ CauchySeq fun n => ↑(f n) v
[PROOFSTEP]
apply cauchySeq_iff_le_tendsto_0.2 ⟨fun n => b n * ∏ i, ‖v i‖, _, _, _⟩
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
⊢ ∀ (n : ℕ), 0 ≤ (fun n => b n * ∏ i : ι, ‖v i‖) n
[PROOFSTEP]
intro
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
n✝ : ℕ
⊢ 0 ≤ (fun n => b n * ∏ i : ι, ‖v i‖) n✝
[PROOFSTEP]
exact mul_nonneg (b0 _) (nonneg v)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
⊢ ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (↑(f n) v) (↑(f m) v) ≤ (fun n => b n * ∏ i : ι, ‖v i‖) N
[PROOFSTEP]
intro n m N hn hm
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
n m N : ℕ
hn : N ≤ n
hm : N ≤ m
⊢ dist (↑(f n) v) (↑(f m) v) ≤ (fun n => b n * ∏ i : ι, ‖v i‖) N
[PROOFSTEP]
rw [dist_eq_norm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
n m N : ℕ
hn : N ≤ n
hm : N ≤ m
⊢ ‖↑(f n) v - ↑(f m) v‖ ≤ (fun n => b n * ∏ i : ι, ‖v i‖) N
[PROOFSTEP]
apply le_trans ((f n - f m).le_op_norm v) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
n m N : ℕ
hn : N ≤ n
hm : N ≤ m
⊢ ‖f n - f m‖ * ∏ i : ι, ‖v i‖ ≤ (fun n => b n * ∏ i : ι, ‖v i‖) N
[PROOFSTEP]
exact mul_le_mul_of_nonneg_right (b_bound n m N hn hm) (nonneg v)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
v : (i : ι) → E i
⊢ Tendsto (fun n => b n * ∏ i : ι, ‖v i‖) atTop (𝓝 0)
[PROOFSTEP]
simpa using b_lim.mul tendsto_const_nhds
[GOAL]
case intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
⊢ ∃ a, Tendsto f atTop (𝓝 a)
[PROOFSTEP]
choose F hF using fun v =>
  cauchySeq_tendsto_of_complete
    (cau v)
      -- Next, we show that this `F` is multilinear,
[GOAL]
case intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
⊢ ∃ a, Tendsto f atTop (𝓝 a)
[PROOFSTEP]
let Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F
    map_add' := fun v i x y => by
      skip
      have A := hF (Function.update v i (x + y))
      have B := (hF (Function.update v i x)).add (hF (Function.update v i y))
      simp at A B
      exact tendsto_nhds_unique A B
    map_smul' := fun v i c x => by
      skip
      have A := hF (Function.update v i (c • x))
      have B := Filter.Tendsto.smul (@tendsto_const_nhds _ ℕ _ c _) (hF (Function.update v i x))
      simp at A B
      exact tendsto_nhds_unique A B }
    -- and that `F` has norm at most `(b 0 + ‖f 0‖)`.
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
x y : E i
⊢ F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)
[PROOFSTEP]
skip
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
x y : E i
⊢ F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)
[PROOFSTEP]
have A := hF (Function.update v i (x + y))
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
x y : E i
A : Tendsto (fun n => ↑(f n) (Function.update v i (x + y))) atTop (𝓝 (F (Function.update v i (x + y))))
⊢ F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)
[PROOFSTEP]
have B := (hF (Function.update v i x)).add (hF (Function.update v i y))
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
x y : E i
A : Tendsto (fun n => ↑(f n) (Function.update v i (x + y))) atTop (𝓝 (F (Function.update v i (x + y))))
B :
  Tendsto (fun x_1 => ↑(f x_1) (Function.update v i x) + ↑(f x_1) (Function.update v i y)) atTop
    (𝓝 (F (Function.update v i x) + F (Function.update v i y)))
⊢ F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)
[PROOFSTEP]
simp at A B
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
x y : E i
B :
  Tendsto (fun x_1 => ↑(f x_1) (Function.update v i x) + ↑(f x_1) (Function.update v i y)) atTop
    (𝓝 (F (Function.update v i x) + F (Function.update v i y)))
A :
  Tendsto (fun n => ↑(f n) (Function.update v i x) + ↑(f n) (Function.update v i y)) atTop
    (𝓝 (F (Function.update v i (x + y))))
⊢ F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)
[PROOFSTEP]
exact tendsto_nhds_unique A B
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c✝ : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
c : 𝕜
x : E i
⊢ F (Function.update v i (c • x)) = c • F (Function.update v i x)
[PROOFSTEP]
skip
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c✝ : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
c : 𝕜
x : E i
⊢ F (Function.update v i (c • x)) = c • F (Function.update v i x)
[PROOFSTEP]
have A := hF (Function.update v i (c • x))
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c✝ : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
c : 𝕜
x : E i
A : Tendsto (fun n => ↑(f n) (Function.update v i (c • x))) atTop (𝓝 (F (Function.update v i (c • x))))
⊢ F (Function.update v i (c • x)) = c • F (Function.update v i x)
[PROOFSTEP]
have B := Filter.Tendsto.smul (@tendsto_const_nhds _ ℕ _ c _) (hF (Function.update v i x))
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c✝ : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
c : 𝕜
x : E i
A : Tendsto (fun n => ↑(f n) (Function.update v i (c • x))) atTop (𝓝 (F (Function.update v i (c • x))))
B : Tendsto (fun x_1 => c • ↑(f x_1) (Function.update v i x)) atTop (𝓝 (c • F (Function.update v i x)))
⊢ F (Function.update v i (c • x)) = c • F (Function.update v i x)
[PROOFSTEP]
simp at A B
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c✝ : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝¹ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
inst✝ : DecidableEq ι
v : (i : ι) → E i
i : ι
c : 𝕜
x : E i
B : Tendsto (fun x_1 => c • ↑(f x_1) (Function.update v i x)) atTop (𝓝 (c • F (Function.update v i x)))
A : Tendsto (fun n => c • ↑(f n) (Function.update v i x)) atTop (𝓝 (F (Function.update v i (c • x))))
⊢ F (Function.update v i (c • x)) = c • F (Function.update v i x)
[PROOFSTEP]
exact tendsto_nhds_unique A B
[GOAL]
case intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
⊢ ∃ a, Tendsto f atTop (𝓝 a)
[PROOFSTEP]
have Fnorm : ∀ v, ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i, ‖v i‖ := by
  intro v
  have A : ∀ n, ‖f n v‖ ≤ (b 0 + ‖f 0‖) * ∏ i, ‖v i‖ := by
    intro n
    apply le_trans ((f n).le_op_norm _) _
    apply mul_le_mul_of_nonneg_right _ (nonneg v)
    calc
      ‖f n‖ = ‖f n - f 0 + f 0‖ := by
        congr 1
        abel
      _ ≤ ‖f n - f 0‖ + ‖f 0‖ := (norm_add_le _ _)
      _ ≤ b 0 + ‖f 0‖ := by
        apply add_le_add_right
        simpa [dist_eq_norm] using b_bound n 0 0 (zero_le _) (zero_le _)
  exact
    le_of_tendsto (hF v).norm
      (eventually_of_forall A)
        -- Thus `F` is continuous, and we propose that as the limit point of our original Cauchy sequence.
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
⊢ ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
[PROOFSTEP]
intro v
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
⊢ ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
[PROOFSTEP]
have A : ∀ n, ‖f n v‖ ≤ (b 0 + ‖f 0‖) * ∏ i, ‖v i‖ := by
  intro n
  apply le_trans ((f n).le_op_norm _) _
  apply mul_le_mul_of_nonneg_right _ (nonneg v)
  calc
    ‖f n‖ = ‖f n - f 0 + f 0‖ := by
      congr 1
      abel
    _ ≤ ‖f n - f 0‖ + ‖f 0‖ := (norm_add_le _ _)
    _ ≤ b 0 + ‖f 0‖ := by
      apply add_le_add_right
      simpa [dist_eq_norm] using b_bound n 0 0 (zero_le _) (zero_le _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
⊢ ∀ (n : ℕ), ‖↑(f n) v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
[PROOFSTEP]
intro n
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ ‖↑(f n) v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
[PROOFSTEP]
apply le_trans ((f n).le_op_norm _) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ ‖f n‖ * ∏ i : ι, ‖v i‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
[PROOFSTEP]
apply mul_le_mul_of_nonneg_right _ (nonneg v)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ ‖f n‖ ≤ b 0 + ‖f 0‖
[PROOFSTEP]
calc
  ‖f n‖ = ‖f n - f 0 + f 0‖ := by
    congr 1
    abel
  _ ≤ ‖f n - f 0‖ + ‖f 0‖ := (norm_add_le _ _)
  _ ≤ b 0 + ‖f 0‖ := by
    apply add_le_add_right
    simpa [dist_eq_norm] using b_bound n 0 0 (zero_le _) (zero_le _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ ‖f n‖ = ‖f n - f 0 + f 0‖
[PROOFSTEP]
congr 1
[GOAL]
case e_a
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ f n = f n - f 0 + f 0
[PROOFSTEP]
abel
[GOAL]
case e_a
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ f n = f n - f 0 + f 0
[PROOFSTEP]
abel
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ ‖f n - f 0‖ + ‖f 0‖ ≤ b 0 + ‖f 0‖
[PROOFSTEP]
apply add_le_add_right
[GOAL]
case bc
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
n : ℕ
⊢ ‖f n - f 0‖ ≤ b 0
[PROOFSTEP]
simpa [dist_eq_norm] using b_bound n 0 0 (zero_le _) (zero_le _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
v : (i : ι) → E i
A : ∀ (n : ℕ), ‖↑(f n) v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
⊢ ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
[PROOFSTEP]
exact
  le_of_tendsto (hF v).norm
    (eventually_of_forall A)
      -- Thus `F` is continuous, and we propose that as the limit point of our original Cauchy sequence.
[GOAL]
case intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
⊢ ∃ a, Tendsto f atTop (𝓝 a)
[PROOFSTEP]
let Fcont := Fmult.mkContinuous _ Fnorm
[GOAL]
case intro.intro.intro
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
⊢ ∃ a, Tendsto f atTop (𝓝 a)
[PROOFSTEP]
use Fcont
[GOAL]
case h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
⊢ Tendsto f atTop (𝓝 Fcont)
[PROOFSTEP]
have : ∀ n, ‖f n - Fcont‖ ≤ b n := by
  intro n
  apply op_norm_le_bound _ (b0 n) fun v => ?_
  have A : ∀ᶠ m in atTop, ‖(f n - f m) v‖ ≤ b n * ∏ i, ‖v i‖ :=
    by
    refine' eventually_atTop.2 ⟨n, fun m hm => _⟩
    apply le_trans ((f n - f m).le_op_norm _) _
    exact mul_le_mul_of_nonneg_right (b_bound n m n le_rfl hm) (nonneg v)
  have B : Tendsto (fun m => ‖(f n - f m) v‖) atTop (𝓝 ‖(f n - Fcont) v‖) :=
    Tendsto.norm (tendsto_const_nhds.sub (hF v))
  exact le_of_tendsto B A
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
⊢ ∀ (n : ℕ), ‖f n - Fcont‖ ≤ b n
[PROOFSTEP]
intro n
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
n : ℕ
⊢ ‖f n - Fcont‖ ≤ b n
[PROOFSTEP]
apply op_norm_le_bound _ (b0 n) fun v => ?_
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
n : ℕ
v : (i : ι) → E i
⊢ ‖↑(f n - Fcont) v‖ ≤ b n * ∏ i : ι, ‖v i‖
[PROOFSTEP]
have A : ∀ᶠ m in atTop, ‖(f n - f m) v‖ ≤ b n * ∏ i, ‖v i‖ :=
  by
  refine' eventually_atTop.2 ⟨n, fun m hm => _⟩
  apply le_trans ((f n - f m).le_op_norm _) _
  exact mul_le_mul_of_nonneg_right (b_bound n m n le_rfl hm) (nonneg v)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
n : ℕ
v : (i : ι) → E i
⊢ ∀ᶠ (m : ℕ) in atTop, ‖↑(f n - f m) v‖ ≤ b n * ∏ i : ι, ‖v i‖
[PROOFSTEP]
refine' eventually_atTop.2 ⟨n, fun m hm => _⟩
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
n : ℕ
v : (i : ι) → E i
m : ℕ
hm : m ≥ n
⊢ ‖↑(f n - f m) v‖ ≤ b n * ∏ i : ι, ‖v i‖
[PROOFSTEP]
apply le_trans ((f n - f m).le_op_norm _) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
n : ℕ
v : (i : ι) → E i
m : ℕ
hm : m ≥ n
⊢ ‖f n - f m‖ * ∏ i : ι, ‖v i‖ ≤ b n * ∏ i : ι, ‖v i‖
[PROOFSTEP]
exact mul_le_mul_of_nonneg_right (b_bound n m n le_rfl hm) (nonneg v)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
n : ℕ
v : (i : ι) → E i
A : ∀ᶠ (m : ℕ) in atTop, ‖↑(f n - f m) v‖ ≤ b n * ∏ i : ι, ‖v i‖
⊢ ‖↑(f n - Fcont) v‖ ≤ b n * ∏ i : ι, ‖v i‖
[PROOFSTEP]
have B : Tendsto (fun m => ‖(f n - f m) v‖) atTop (𝓝 ‖(f n - Fcont) v‖) := Tendsto.norm (tendsto_const_nhds.sub (hF v))
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
n : ℕ
v : (i : ι) → E i
A : ∀ᶠ (m : ℕ) in atTop, ‖↑(f n - f m) v‖ ≤ b n * ∏ i : ι, ‖v i‖
B : Tendsto (fun m => ‖↑(f n - f m) v‖) atTop (𝓝 ‖↑(f n - Fcont) v‖)
⊢ ‖↑(f n - Fcont) v‖ ≤ b n * ∏ i : ι, ‖v i‖
[PROOFSTEP]
exact le_of_tendsto B A
[GOAL]
case h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
this : ∀ (n : ℕ), ‖f n - Fcont‖ ≤ b n
⊢ Tendsto f atTop (𝓝 Fcont)
[PROOFSTEP]
erw [tendsto_iff_norm_tendsto_zero]
[GOAL]
case h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
inst✝ : CompleteSpace G
nonneg : ∀ (v : (i : ι) → E i), 0 ≤ ∏ i : ι, ‖v i‖
f : ℕ → ContinuousMultilinearMap 𝕜 E G
hf : CauchySeq f
b : ℕ → ℝ
b0 : ∀ (n : ℕ), 0 ≤ b n
b_bound : ∀ (n m N : ℕ), N ≤ n → N ≤ m → dist (f n) (f m) ≤ b N
b_lim : Tendsto b atTop (𝓝 0)
cau : ∀ (v : (i : ι) → E i), CauchySeq fun n => ↑(f n) v
F : (v : (i : ι) → E i) → (fun x => G) v
hF : ∀ (v : (i : ι) → E i), Tendsto (fun n => ↑(f n) v) atTop (𝓝 (F v))
Fmult : MultilinearMap 𝕜 E G :=
  { toFun := F,
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (x y : E i),
          F (Function.update v i (x + y)) = F (Function.update v i x) + F (Function.update v i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq ι] (v : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
          F (Function.update v i (c • x)) = c • F (Function.update v i x)) }
Fnorm : ∀ (v : (i : ι) → E i), ‖F v‖ ≤ (b 0 + ‖f 0‖) * ∏ i : ι, ‖v i‖
Fcont : ContinuousMultilinearMap 𝕜 E G := MultilinearMap.mkContinuous Fmult (b 0 + ‖f 0‖) Fnorm
this : ∀ (n : ℕ), ‖f n - Fcont‖ ≤ b n
⊢ Tendsto (fun e => ‖f e - Fcont‖) atTop (𝓝 0)
[PROOFSTEP]
exact squeeze_zero (fun n => norm_nonneg _) this b_lim
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
k n : ℕ
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
s : Finset (Fin n)
hk : card s = k
z : G
⊢ ‖restr f s hk z‖ ≤ ‖f‖ * ‖z‖ ^ (n - k)
[PROOFSTEP]
apply MultilinearMap.mkContinuous_norm_le
[GOAL]
case hC
𝕜 : Type u
ι : Type v
ι' : Type v'
n✝ : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n✝) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n✝)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n✝)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
k n : ℕ
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
s : Finset (Fin n)
hk : card s = k
z : G
⊢ 0 ≤ ‖f‖ * ‖z‖ ^ (n - k)
[PROOFSTEP]
exact mul_nonneg (norm_nonneg _) (pow_nonneg (norm_nonneg _) _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : Nonempty ι
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ ≤ 1
[PROOFSTEP]
have := fun f => @op_norm_le_bound 𝕜 ι (fun _ => A) A _ _ _ _ _ _ f _ zero_le_one
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : Nonempty ι
this : ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : ι → A), ‖↑f m‖ ≤ 1 * ∏ i : ι, ‖m i‖) → ‖f‖ ≤ 1
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ ≤ 1
[PROOFSTEP]
refine' this _ _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : Nonempty ι
this : ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : ι → A), ‖↑f m‖ ≤ 1 * ∏ i : ι, ‖m i‖) → ‖f‖ ≤ 1
⊢ ∀ (m : ι → A), ‖↑(ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A) m‖ ≤ 1 * ∏ i : ι, ‖m i‖
[PROOFSTEP]
intro m
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : Nonempty ι
this : ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : ι → A), ‖↑f m‖ ≤ 1 * ∏ i : ι, ‖m i‖) → ‖f‖ ≤ 1
m : ι → A
⊢ ‖↑(ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A) m‖ ≤ 1 * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp only [ContinuousMultilinearMap.mkPiAlgebra_apply, one_mul]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : Nonempty ι
this : ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : ι → A), ‖↑f m‖ ≤ 1 * ∏ i : ι, ‖m i‖) → ‖f‖ ≤ 1
m : ι → A
⊢ ‖∏ i : ι, m i‖ ≤ ∏ x : ι, ‖m x‖
[PROOFSTEP]
exact norm_prod_le' _ univ_nonempty _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : IsEmpty ι
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ = ‖1‖
[PROOFSTEP]
apply le_antisymm
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : IsEmpty ι
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ ≤ ‖1‖
[PROOFSTEP]
have := fun f => @op_norm_le_bound 𝕜 ι (fun _ => A) A _ _ _ _ _ _ f _ (norm_nonneg (1 : A))
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : IsEmpty ι
this : ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : ι → A), ‖↑f m‖ ≤ ‖1‖ * ∏ i : ι, ‖m i‖) → ‖f‖ ≤ ‖1‖
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ ≤ ‖1‖
[PROOFSTEP]
refine' this _ _
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : IsEmpty ι
this : ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : ι → A), ‖↑f m‖ ≤ ‖1‖ * ∏ i : ι, ‖m i‖) → ‖f‖ ≤ ‖1‖
⊢ ∀ (m : ι → A), ‖↑(ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A) m‖ ≤ ‖1‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp
  -- Porting note: have to annotate types to get mvars to unify
[GOAL]
case a
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : IsEmpty ι
⊢ ‖1‖ ≤ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖
[PROOFSTEP]
convert ratio_le_op_norm (ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A) fun _ => (1 : A)
[GOAL]
case h.e'_3
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : IsEmpty ι
⊢ ‖1‖ = ‖↑(ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A) fun x => 1‖ / ∏ i : ι, ‖1‖
[PROOFSTEP]
simp [eq_empty_of_isEmpty (univ : Finset ι)]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : NormOneClass A
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ = 1
[PROOFSTEP]
cases isEmpty_or_nonempty ι
[GOAL]
case inl
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : NormOneClass A
h✝ : IsEmpty ι
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ = 1
[PROOFSTEP]
simp [norm_mkPiAlgebra_of_empty]
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : NormOneClass A
h✝ : Nonempty ι
⊢ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖ = 1
[PROOFSTEP]
refine' le_antisymm norm_mkPiAlgebra_le _
[GOAL]
case inr
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : NormOneClass A
h✝ : Nonempty ι
⊢ 1 ≤ ‖ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A‖
[PROOFSTEP]
convert ratio_le_op_norm (ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A) fun _ => 1
[GOAL]
case h.e'_3
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedCommRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : NormOneClass A
h✝ : Nonempty ι
⊢ 1 = ‖↑(ContinuousMultilinearMap.mkPiAlgebra 𝕜 ι A) fun x => 1‖ / ∏ i : ι, ‖1‖
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n) A‖ ≤ 1
[PROOFSTEP]
have := fun f => @op_norm_le_bound 𝕜 (Fin n.succ) (fun _ => A) A _ _ _ _ _ _ f _ zero_le_one
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n) A‖ ≤ 1
[PROOFSTEP]
refine' this _ _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
⊢ ∀ (m : Fin (Nat.succ n) → A),
    ‖↑(ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n) A) m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖
[PROOFSTEP]
intro m
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
m : Fin (Nat.succ n) → A
⊢ ‖↑(ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n) A) m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖
[PROOFSTEP]
simp only [ContinuousMultilinearMap.mkPiAlgebraFin_apply, one_mul, List.ofFn_eq_map, Fin.prod_univ_def,
  Multiset.coe_map, Multiset.coe_prod]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
m : Fin (Nat.succ n) → A
⊢ ‖List.prod (List.map m (List.finRange (Nat.succ n)))‖ ≤
    List.prod (List.map (fun i => ‖m i‖) (List.finRange (Nat.succ n)))
[PROOFSTEP]
refine' (List.norm_prod_le' _).trans_eq _
[GOAL]
case refine'_1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
m : Fin (Nat.succ n) → A
⊢ List.map m (List.finRange (Nat.succ n)) ≠ []
[PROOFSTEP]
rw [Ne.def, List.map_eq_nil, List.finRange_eq_nil]
[GOAL]
case refine'_1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
m : Fin (Nat.succ n) → A
⊢ ¬Nat.succ n = 0
[PROOFSTEP]
exact Nat.succ_ne_zero _
[GOAL]
case refine'_2
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
m : Fin (Nat.succ n) → A
⊢ List.prod (List.map norm (List.map m (List.finRange (Nat.succ n)))) =
    List.prod (List.map (fun i => ‖m i‖) (List.finRange (Nat.succ n)))
[PROOFSTEP]
rw [List.map_map]
[GOAL]
case refine'_2
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A),
    (∀ (m : Fin (Nat.succ n) → A), ‖↑f m‖ ≤ 1 * ∏ i : Fin (Nat.succ n), ‖m i‖) → ‖f‖ ≤ 1
m : Fin (Nat.succ n) → A
⊢ List.prod (List.map (norm ∘ m) (List.finRange (Nat.succ n))) =
    List.prod (List.map (fun i => ‖m i‖) (List.finRange (Nat.succ n)))
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
hn : 0 < n
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 n A‖ ≤ 1
[PROOFSTEP]
obtain ⟨n, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hn.ne'
[GOAL]
case intro
𝕜 : 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 : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : NormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
A : Type u_1
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
n : ℕ
Ei : Fin (Nat.succ (Nat.succ n)) → Type wEi
inst✝¹ : (i : Fin (Nat.succ (Nat.succ n))) → NormedAddCommGroup (Ei i)
inst✝ : (i : Fin (Nat.succ (Nat.succ n))) → NormedSpace 𝕜 (Ei i)
hn : 0 < Nat.succ n
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n) A‖ ≤ 1
[PROOFSTEP]
exact norm_mkPiAlgebraFin_succ_le
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 0 A‖ = ‖1‖
[PROOFSTEP]
refine' le_antisymm _ _
[GOAL]
case refine'_1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 0 A‖ ≤ ‖1‖
[PROOFSTEP]
have := fun f => @op_norm_le_bound 𝕜 (Fin 0) (fun _ => A) A _ _ _ _ _ _ f _ (norm_nonneg (1 : A))
[GOAL]
case refine'_1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : Fin 0 → A), ‖↑f m‖ ≤ ‖1‖ * ∏ i : Fin 0, ‖m i‖) → ‖f‖ ≤ ‖1‖
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 0 A‖ ≤ ‖1‖
[PROOFSTEP]
refine' this _ _
[GOAL]
case refine'_1
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
this :
  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => A) A), (∀ (m : Fin 0 → A), ‖↑f m‖ ≤ ‖1‖ * ∏ i : Fin 0, ‖m i‖) → ‖f‖ ≤ ‖1‖
⊢ ∀ (m : Fin 0 → A), ‖↑(ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 0 A) m‖ ≤ ‖1‖ * ∏ i : Fin 0, ‖m i‖
[PROOFSTEP]
simp
[GOAL]
case refine'_2
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
⊢ ‖1‖ ≤ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 0 A‖
[PROOFSTEP]
convert ratio_le_op_norm (ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 0 A) fun _ => (1 : A)
[GOAL]
case h.e'_3
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
A : Type u_1
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
⊢ ‖1‖ = ‖↑(ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 0 A) fun x => 1‖ / ∏ i : Fin 0, ‖1‖
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁷ : Fintype ι
inst✝¹⁶ : Fintype ι'
inst✝¹⁵ : NontriviallyNormedField 𝕜
inst✝¹⁴ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁷ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : NormedSpace 𝕜 G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace 𝕜 G'
A : Type u_1
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : NormOneClass A
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 n A‖ = 1
[PROOFSTEP]
cases n
[GOAL]
case zero
𝕜 : 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 : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
A : Type u_1
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜 A
inst✝² : NormOneClass A
Ei : Fin (Nat.succ Nat.zero) → Type wEi
inst✝¹ : (i : Fin (Nat.succ Nat.zero)) → NormedAddCommGroup (Ei i)
inst✝ : (i : Fin (Nat.succ Nat.zero)) → NormedSpace 𝕜 (Ei i)
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 Nat.zero A‖ = 1
[PROOFSTEP]
rw [norm_mkPiAlgebraFin_zero]
[GOAL]
case zero
𝕜 : 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 : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
A : Type u_1
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜 A
inst✝² : NormOneClass A
Ei : Fin (Nat.succ Nat.zero) → Type wEi
inst✝¹ : (i : Fin (Nat.succ Nat.zero)) → NormedAddCommGroup (Ei i)
inst✝ : (i : Fin (Nat.succ Nat.zero)) → NormedSpace 𝕜 (Ei i)
⊢ ‖1‖ = 1
[PROOFSTEP]
simp
[GOAL]
case succ
𝕜 : 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 : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
A : Type u_1
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜 A
inst✝² : NormOneClass A
n✝ : ℕ
Ei : Fin (Nat.succ (Nat.succ n✝)) → Type wEi
inst✝¹ : (i : Fin (Nat.succ (Nat.succ n✝))) → NormedAddCommGroup (Ei i)
inst✝ : (i : Fin (Nat.succ (Nat.succ n✝))) → NormedSpace 𝕜 (Ei i)
⊢ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n✝) A‖ = 1
[PROOFSTEP]
refine' le_antisymm norm_mkPiAlgebraFin_succ_le _
[GOAL]
case succ
𝕜 : 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 : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
A : Type u_1
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜 A
inst✝² : NormOneClass A
n✝ : ℕ
Ei : Fin (Nat.succ (Nat.succ n✝)) → Type wEi
inst✝¹ : (i : Fin (Nat.succ (Nat.succ n✝))) → NormedAddCommGroup (Ei i)
inst✝ : (i : Fin (Nat.succ (Nat.succ n✝))) → NormedSpace 𝕜 (Ei i)
⊢ 1 ≤ ‖ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n✝) A‖
[PROOFSTEP]
convert ratio_le_op_norm (ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ _) A) fun _ => 1
[GOAL]
case h.e'_3
𝕜 : 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 : ι) → NormedAddCommGroup (E i)
inst✝¹³ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹² : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹⁰ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁹ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
A : Type u_1
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜 A
inst✝² : NormOneClass A
n✝ : ℕ
Ei : Fin (Nat.succ (Nat.succ n✝)) → Type wEi
inst✝¹ : (i : Fin (Nat.succ (Nat.succ n✝))) → NormedAddCommGroup (Ei i)
inst✝ : (i : Fin (Nat.succ (Nat.succ n✝))) → NormedSpace 𝕜 (Ei i)
⊢ 1 = ‖↑(ContinuousMultilinearMap.mkPiAlgebraFin 𝕜 (Nat.succ n✝) A) fun x => 1‖ / ∏ i : Fin (Nat.succ n✝), ‖1‖
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z : G
m : ι → 𝕜
⊢ ‖↑(MultilinearMap.mkPiRing 𝕜 ι z) m‖ ≤ ‖z‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp only [MultilinearMap.mkPiRing_apply, norm_smul, norm_prod, mul_comm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z : G
m : ι → 𝕜
⊢ ‖z‖ * ∏ b : ι, ‖m b‖ ≤ ‖z‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z : G
⊢ ‖z‖ ≤
    ‖MultilinearMap.mkContinuous (MultilinearMap.mkPiRing 𝕜 ι z) ‖z‖
        (_ : ∀ (m : ι → 𝕜), ‖↑(MultilinearMap.mkPiRing 𝕜 ι z) m‖ ≤ ‖z‖ * ∏ i : ι, ‖m i‖)‖
[PROOFSTEP]
simpa using (ContinuousMultilinearMap.mkPiField 𝕜 ι z).le_op_norm fun _ => 1
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z₁ z₂ : G
⊢ ContinuousMultilinearMap.mkPiField 𝕜 ι z₁ = ContinuousMultilinearMap.mkPiField 𝕜 ι z₂ ↔ z₁ = z₂
[PROOFSTEP]
rw [← toMultilinearMap_injective.eq_iff]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z₁ z₂ : G
⊢ (ContinuousMultilinearMap.mkPiField 𝕜 ι z₁).toMultilinearMap =
      (ContinuousMultilinearMap.mkPiField 𝕜 ι z₂).toMultilinearMap ↔
    z₁ = z₂
[PROOFSTEP]
exact MultilinearMap.mkPiRing_eq_iff
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
⊢ ContinuousMultilinearMap.mkPiField 𝕜 ι 0 = 0
[PROOFSTEP]
ext
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
x✝ : ι → 𝕜
⊢ ↑(ContinuousMultilinearMap.mkPiField 𝕜 ι 0) x✝ = ↑0 x✝
[PROOFSTEP]
rw [mkPiField_apply, smul_zero, ContinuousMultilinearMap.zero_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z : G
⊢ ContinuousMultilinearMap.mkPiField 𝕜 ι z = 0 ↔ z = 0
[PROOFSTEP]
rw [← mkPiField_zero, mkPiField_eq_iff]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z z' : G
⊢ (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
    (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z + (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z'
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z z' : G
m : ι → 𝕜
⊢ ↑((fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z')) m =
    ↑((fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z + (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') m
[PROOFSTEP]
simp [smul_add]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
z : G
⊢ AddHom.toFun
      { toFun := fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z,
        map_add' :=
          (_ :
            ∀ (z z' : G),
              (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
                (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z +
                  (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') }
      (c • z) =
    ↑(RingHom.id 𝕜) c •
      AddHom.toFun
        { toFun := fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z,
          map_add' :=
            (_ :
              ∀ (z z' : G),
                (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
                  (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z +
                    (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') }
        z
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
z : G
m : ι → 𝕜
⊢ ↑(AddHom.toFun
          { toFun := fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z,
            map_add' :=
              (_ :
                ∀ (z z' : G),
                  (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
                    (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z +
                      (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') }
          (c • z))
      m =
    ↑(↑(RingHom.id 𝕜) c •
          AddHom.toFun
            { toFun := fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z,
              map_add' :=
                (_ :
                  ∀ (z z' : G),
                    (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
                      (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z +
                        (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') }
            z)
      m
[PROOFSTEP]
simp [smul_smul, mul_comm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
z : G
⊢ (fun f => ↑f fun i => 1)
      (AddHom.toFun
        {
            toAddHom :=
              { toFun := fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z,
                map_add' :=
                  (_ :
                    ∀ (z z' : G),
                      (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
                        (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z +
                          (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') },
            map_smul' :=
              (_ :
                ∀ (c : 𝕜) (z : G),
                  AddHom.toFun
                      { toFun := fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z,
                        map_add' :=
                          (_ :
                            ∀ (z z' : G),
                              (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
                                (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z +
                                  (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') }
                      (c • z) =
                    ↑(RingHom.id 𝕜) c •
                      AddHom.toFun
                        { toFun := fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z,
                          map_add' :=
                            (_ :
                              ∀ (z z' : G),
                                (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) (z + z') =
                                  (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z +
                                    (fun z => ContinuousMultilinearMap.mkPiField 𝕜 ι z) z') }
                        z) }.toAddHom
        z) =
    z
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] G'
g₁ g₂ : ContinuousMultilinearMap 𝕜 E G
⊢ compContinuousMultilinearMap f (g₁ + g₂) = compContinuousMultilinearMap f g₁ + compContinuousMultilinearMap f g₂
[PROOFSTEP]
ext1
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] G'
g₁ g₂ : ContinuousMultilinearMap 𝕜 E G
x✝ : (i : ι) → E i
⊢ ↑(compContinuousMultilinearMap f (g₁ + g₂)) x✝ =
    ↑(compContinuousMultilinearMap f g₁ + compContinuousMultilinearMap f g₂) x✝
[PROOFSTEP]
apply f.map_add
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : G →L[𝕜] G'
g : ContinuousMultilinearMap 𝕜 E G
⊢ compContinuousMultilinearMap f (c • g) = c • compContinuousMultilinearMap f g
[PROOFSTEP]
ext1
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : G →L[𝕜] G'
g : ContinuousMultilinearMap 𝕜 E G
x✝ : (i : ι) → E i
⊢ ↑(compContinuousMultilinearMap f (c • g)) x✝ = ↑(c • compContinuousMultilinearMap f g) x✝
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] G'
g : ContinuousMultilinearMap 𝕜 E G
⊢ ‖↑(↑(LinearMap.mk₂ 𝕜 compContinuousMultilinearMap
                (_ :
                  ∀ (f₁ f₂ : G →L[𝕜] G') (g : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap (f₁ + f₂) g = compContinuousMultilinearMap (f₁ + f₂) g)
                (_ :
                  ∀ (c : 𝕜) (f : G →L[𝕜] G') (g : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap (c • f) g = compContinuousMultilinearMap (c • f) g)
                (_ :
                  ∀ (f : G →L[𝕜] G') (g₁ g₂ : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap f (g₁ + g₂) =
                      compContinuousMultilinearMap f g₁ + compContinuousMultilinearMap f g₂)
                (_ :
                  ∀ (c : 𝕜) (f : G →L[𝕜] G') (g : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap f (c • g) = c • compContinuousMultilinearMap f g))
            f)
        g‖ ≤
    1 * ‖f‖ * ‖g‖
[PROOFSTEP]
rw [one_mul]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] G'
g : ContinuousMultilinearMap 𝕜 E G
⊢ ‖↑(↑(LinearMap.mk₂ 𝕜 compContinuousMultilinearMap
                (_ :
                  ∀ (f₁ f₂ : G →L[𝕜] G') (g : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap (f₁ + f₂) g = compContinuousMultilinearMap (f₁ + f₂) g)
                (_ :
                  ∀ (c : 𝕜) (f : G →L[𝕜] G') (g : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap (c • f) g = compContinuousMultilinearMap (c • f) g)
                (_ :
                  ∀ (f : G →L[𝕜] G') (g₁ g₂ : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap f (g₁ + g₂) =
                      compContinuousMultilinearMap f g₁ + compContinuousMultilinearMap f g₂)
                (_ :
                  ∀ (c : 𝕜) (f : G →L[𝕜] G') (g : ContinuousMultilinearMap 𝕜 E G),
                    compContinuousMultilinearMap f (c • g) = c • compContinuousMultilinearMap f g))
            f)
        g‖ ≤
    ‖f‖ * ‖g‖
[PROOFSTEP]
exact f.norm_compContinuousMultilinearMap_le g
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G ≃L[𝕜] G'
src✝ : (fun x => ContinuousMultilinearMap 𝕜 E G →L[𝕜] ContinuousMultilinearMap 𝕜 E G') ↑g :=
  ↑(compContinuousMultilinearMapL 𝕜 E G G') ↑g
⊢ Function.LeftInverse (↑(↑(compContinuousMultilinearMapL 𝕜 E G' G) ↑(ContinuousLinearEquiv.symm g))) src✝.toFun
[PROOFSTEP]
intro f
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G ≃L[𝕜] G'
src✝ : (fun x => ContinuousMultilinearMap 𝕜 E G →L[𝕜] ContinuousMultilinearMap 𝕜 E G') ↑g :=
  ↑(compContinuousMultilinearMapL 𝕜 E G G') ↑g
f : ContinuousMultilinearMap 𝕜 E G
⊢ ↑(↑(compContinuousMultilinearMapL 𝕜 E G' G) ↑(ContinuousLinearEquiv.symm g)) (AddHom.toFun src✝.toAddHom f) = f
[PROOFSTEP]
ext1 m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G ≃L[𝕜] G'
src✝ : (fun x => ContinuousMultilinearMap 𝕜 E G →L[𝕜] ContinuousMultilinearMap 𝕜 E G') ↑g :=
  ↑(compContinuousMultilinearMapL 𝕜 E G G') ↑g
f : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
⊢ ↑(↑(↑(compContinuousMultilinearMapL 𝕜 E G' G) ↑(ContinuousLinearEquiv.symm g)) (AddHom.toFun src✝.toAddHom f)) m =
    ↑f m
[PROOFSTEP]
simp [compContinuousMultilinearMapL]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G ≃L[𝕜] G'
src✝ : (fun x => ContinuousMultilinearMap 𝕜 E G →L[𝕜] ContinuousMultilinearMap 𝕜 E G') ↑g :=
  ↑(compContinuousMultilinearMapL 𝕜 E G G') ↑g
⊢ Function.RightInverse (↑(↑(compContinuousMultilinearMapL 𝕜 E G' G) ↑(ContinuousLinearEquiv.symm g))) src✝.toFun
[PROOFSTEP]
intro f
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G ≃L[𝕜] G'
src✝ : (fun x => ContinuousMultilinearMap 𝕜 E G →L[𝕜] ContinuousMultilinearMap 𝕜 E G') ↑g :=
  ↑(compContinuousMultilinearMapL 𝕜 E G G') ↑g
f : ContinuousMultilinearMap 𝕜 E G'
⊢ AddHom.toFun src✝.toAddHom (↑(↑(compContinuousMultilinearMapL 𝕜 E G' G) ↑(ContinuousLinearEquiv.symm g)) f) = f
[PROOFSTEP]
ext1 m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G ≃L[𝕜] G'
src✝ : (fun x => ContinuousMultilinearMap 𝕜 E G →L[𝕜] ContinuousMultilinearMap 𝕜 E G') ↑g :=
  ↑(compContinuousMultilinearMapL 𝕜 E G G') ↑g
f : ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
⊢ ↑(AddHom.toFun src✝.toAddHom (↑(↑(compContinuousMultilinearMapL 𝕜 E G' G) ↑(ContinuousLinearEquiv.symm g)) f)) m =
    ↑f m
[PROOFSTEP]
simp [compContinuousMultilinearMapL]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup 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
[PROOFSTEP]
simp only [map_add, ContinuousMultilinearMap.add_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
c : 𝕜
x : G
⊢ AddHom.toFun { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) }
      (c • x) =
    ↑(RingHom.id 𝕜) c •
      AddHom.toFun
        { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) } x
[PROOFSTEP]
simp only [ContinuousMultilinearMap.smul_apply, map_smul, RingHom.id_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
x : G
⊢ ‖↑{
            toAddHom :=
              { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
        x‖ ≤
    (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖
[PROOFSTEP]
rw [mul_right_comm]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
x : G
⊢ ‖↑{
            toAddHom :=
              { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
        x‖ ≤
    ‖f‖ * ‖x‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
exact (f x).le_of_op_norm_le _ (f.le_op_norm x)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
x y : E i
⊢ (fun m =>
        LinearMap.mkContinuous
          {
            toAddHom :=
              { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
          (‖f‖ * ∏ i : ι, ‖m i‖)
          (_ :
            ∀ (x : G),
              ‖↑{
                        toAddHom :=
                          { toFun := fun x => ↑(↑f x) m,
                            map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                        map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                    x‖ ≤
                (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
      (Function.update m i (x + y)) =
    (fun m =>
          LinearMap.mkContinuous
            {
              toAddHom :=
                { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
            (‖f‖ * ∏ i : ι, ‖m i‖)
            (_ :
              ∀ (x : G),
                ‖↑{
                          toAddHom :=
                            { toFun := fun x => ↑(↑f x) m,
                              map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                          map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                      x‖ ≤
                  (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
        (Function.update m i x) +
      (fun m =>
          LinearMap.mkContinuous
            {
              toAddHom :=
                { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
            (‖f‖ * ∏ i : ι, ‖m i‖)
            (_ :
              ∀ (x : G),
                ‖↑{
                          toAddHom :=
                            { toFun := fun x => ↑(↑f x) m,
                              map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                          map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                      x‖ ≤
                  (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
        (Function.update m i y)
[PROOFSTEP]
ext1
[GOAL]
case h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup 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 =>
            LinearMap.mkContinuous
              {
                toAddHom :=
                  { toFun := fun x => ↑(↑f x) m,
                    map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
              (‖f‖ * ∏ i : ι, ‖m i‖)
              (_ :
                ∀ (x : G),
                  ‖↑{
                            toAddHom :=
                              { toFun := fun x => ↑(↑f x) m,
                                map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                        x‖ ≤
                    (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
          (Function.update m i (x + y)))
      x✝ =
    ↑((fun m =>
              LinearMap.mkContinuous
                {
                  toAddHom :=
                    { toFun := fun x => ↑(↑f x) m,
                      map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                  map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                (‖f‖ * ∏ i : ι, ‖m i‖)
                (_ :
                  ∀ (x : G),
                    ‖↑{
                              toAddHom :=
                                { toFun := fun x => ↑(↑f x) m,
                                  map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                          x‖ ≤
                      (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
            (Function.update m i x) +
          (fun m =>
              LinearMap.mkContinuous
                {
                  toAddHom :=
                    { toFun := fun x => ↑(↑f x) m,
                      map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                  map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                (‖f‖ * ∏ i : ι, ‖m i‖)
                (_ :
                  ∀ (x : G),
                    ‖↑{
                              toAddHom :=
                                { toFun := fun x => ↑(↑f x) m,
                                  map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                          x‖ ≤
                      (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
            (Function.update m i y))
      x✝
[PROOFSTEP]
simp only [add_apply, ContinuousMultilinearMap.map_add, LinearMap.coe_mk, LinearMap.mkContinuous_apply, AddHom.coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
c : 𝕜
x : E i
⊢ (fun m =>
        LinearMap.mkContinuous
          {
            toAddHom :=
              { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
          (‖f‖ * ∏ i : ι, ‖m i‖)
          (_ :
            ∀ (x : G),
              ‖↑{
                        toAddHom :=
                          { toFun := fun x => ↑(↑f x) m,
                            map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                        map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                    x‖ ≤
                (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
      (Function.update m i (c • x)) =
    c •
      (fun m =>
          LinearMap.mkContinuous
            {
              toAddHom :=
                { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
            (‖f‖ * ∏ i : ι, ‖m i‖)
            (_ :
              ∀ (x : G),
                ‖↑{
                          toAddHom :=
                            { toFun := fun x => ↑(↑f x) m,
                              map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                          map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                      x‖ ≤
                  (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
        (Function.update m i x)
[PROOFSTEP]
ext1
[GOAL]
case h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup 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 =>
            LinearMap.mkContinuous
              {
                toAddHom :=
                  { toFun := fun x => ↑(↑f x) m,
                    map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
              (‖f‖ * ∏ i : ι, ‖m i‖)
              (_ :
                ∀ (x : G),
                  ‖↑{
                            toAddHom :=
                              { toFun := fun x => ↑(↑f x) m,
                                map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                        x‖ ≤
                    (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
          (Function.update m i (c • x)))
      x✝ =
    ↑(c •
          (fun m =>
              LinearMap.mkContinuous
                {
                  toAddHom :=
                    { toFun := fun x => ↑(↑f x) m,
                      map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                  map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                (‖f‖ * ∏ i : ι, ‖m i‖)
                (_ :
                  ∀ (x : G),
                    ‖↑{
                              toAddHom :=
                                { toFun := fun x => ↑(↑f x) m,
                                  map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                          x‖ ≤
                      (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
            (Function.update m i x))
      x✝
[PROOFSTEP]
simp only [coe_smul', ContinuousMultilinearMap.map_smul, LinearMap.coe_mk, LinearMap.mkContinuous_apply, Pi.smul_apply,
  AddHom.coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
⊢ ‖↑{
            toFun := fun m =>
              LinearMap.mkContinuous
                {
                  toAddHom :=
                    { toFun := fun x => ↑(↑f x) m,
                      map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                  map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                (‖f‖ * ∏ i : ι, ‖m i‖)
                (_ :
                  ∀ (x : G),
                    ‖↑{
                              toAddHom :=
                                { toFun := fun x => ↑(↑f x) m,
                                  map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                          x‖ ≤
                      (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖),
            map_add' :=
              (_ :
                ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (x y : E i),
                  (fun m =>
                        LinearMap.mkContinuous
                          {
                            toAddHom :=
                              { toFun := fun x => ↑(↑f x) m,
                                map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                          (‖f‖ * ∏ i : ι, ‖m i‖)
                          (_ :
                            ∀ (x : G),
                              ‖↑{
                                        toAddHom :=
                                          { toFun := fun x => ↑(↑f x) m,
                                            map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                                        map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                                    x‖ ≤
                                (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
                      (Function.update m i (x + y)) =
                    (fun m =>
                          LinearMap.mkContinuous
                            {
                              toAddHom :=
                                { toFun := fun x => ↑(↑f x) m,
                                  map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                            (‖f‖ * ∏ i : ι, ‖m i‖)
                            (_ :
                              ∀ (x : G),
                                ‖↑{
                                          toAddHom :=
                                            { toFun := fun x => ↑(↑f x) m,
                                              map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                                          map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                                      x‖ ≤
                                  (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
                        (Function.update m i x) +
                      (fun m =>
                          LinearMap.mkContinuous
                            {
                              toAddHom :=
                                { toFun := fun x => ↑(↑f x) m,
                                  map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                            (‖f‖ * ∏ i : ι, ‖m i‖)
                            (_ :
                              ∀ (x : G),
                                ‖↑{
                                          toAddHom :=
                                            { toFun := fun x => ↑(↑f x) m,
                                              map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                                          map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                                      x‖ ≤
                                  (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
                        (Function.update m i y)),
            map_smul' :=
              (_ :
                ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
                  (fun m =>
                        LinearMap.mkContinuous
                          {
                            toAddHom :=
                              { toFun := fun x => ↑(↑f x) m,
                                map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                            map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                          (‖f‖ * ∏ i : ι, ‖m i‖)
                          (_ :
                            ∀ (x : G),
                              ‖↑{
                                        toAddHom :=
                                          { toFun := fun x => ↑(↑f x) m,
                                            map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                                        map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                                    x‖ ≤
                                (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
                      (Function.update m i (c • x)) =
                    c •
                      (fun m =>
                          LinearMap.mkContinuous
                            {
                              toAddHom :=
                                { toFun := fun x => ↑(↑f x) m,
                                  map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                              map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                            (‖f‖ * ∏ i : ι, ‖m i‖)
                            (_ :
                              ∀ (x : G),
                                ‖↑{
                                          toAddHom :=
                                            { toFun := fun x => ↑(↑f x) m,
                                              map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                                          map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                                      x‖ ≤
                                  (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖))
                        (Function.update m i x)) }
        m‖ ≤
    ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
dsimp only [MultilinearMap.coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →L[𝕜] ContinuousMultilinearMap 𝕜 E G'
m : (i : ι) → E i
⊢ ‖LinearMap.mkContinuous
        {
          toAddHom :=
            { toFun := fun x => ↑(↑f x) m, map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
          map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
        (‖f‖ * ∏ i : ι, ‖m i‖)
        (_ :
          ∀ (x : G),
            ‖↑{
                      toAddHom :=
                        { toFun := fun x => ↑(↑f x) m,
                          map_add' := (_ : ∀ (x y : G), ↑(↑f (x + y)) m = ↑(↑f x) m + ↑(↑f y) m) },
                      map_smul' := (_ : ∀ (c : 𝕜) (x : G), ↑(↑f (c • x)) m = c • ↑(↑f x) m) }
                  x‖ ≤
              (‖f‖ * ∏ i : ι, ‖m i‖) * ‖x‖)‖ ≤
    ‖f‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
refine LinearMap.mkContinuous_norm_le _ (mul_nonneg (norm_nonneg f) (prod_nonneg fun i _ => norm_nonneg (m i))) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G →ₗᵢ[𝕜] G'
f : ContinuousMultilinearMap 𝕜 E G
⊢ ‖ContinuousLinearMap.compContinuousMultilinearMap (toContinuousLinearMap g) f‖ = ‖f‖
[PROOFSTEP]
simp only [ContinuousLinearMap.compContinuousMultilinearMap_coe, LinearIsometry.coe_toContinuousLinearMap,
  LinearIsometry.norm_map, ContinuousMultilinearMap.norm_def, Function.comp_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
x y : G
⊢ (fun x => mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖)) (x + y) =
    (fun x => mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖)) x +
      (fun x => mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖)) y
[PROOFSTEP]
ext1
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
x y : G
x✝ : (i : ι) → E i
⊢ ↑((fun x => mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
          (x + y))
      x✝ =
    ↑((fun x => mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖)) x +
          (fun x => mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
            y)
      x✝
[PROOFSTEP]
simp only [_root_.map_add]
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
x y : G
x✝ : (i : ι) → E i
⊢ ↑(mkContinuous (↑f x + ↑f y) (C * ‖x + y‖)
          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x + ↑f y) m‖ ≤ C * ‖x + y‖ * ∏ i : ι, ‖m i‖))
      x✝ =
    ↑(mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖) +
          mkContinuous (↑f y) (C * ‖y‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f y) m‖ ≤ C * ‖y‖ * ∏ i : ι, ‖m i‖))
      x✝
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
c : 𝕜
x : G
⊢ AddHom.toFun
      {
        toFun := fun x =>
          mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
        map_add' :=
          (_ :
            ∀ (x y : G),
              (fun x =>
                    mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                  (x + y) =
                (fun x =>
                      mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                    x +
                  (fun x =>
                      mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                    y) }
      (c • x) =
    ↑(RingHom.id 𝕜) c •
      AddHom.toFun
        {
          toFun := fun x =>
            mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
          map_add' :=
            (_ :
              ∀ (x y : G),
                (fun x =>
                      mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                    (x + y) =
                  (fun x =>
                        mkContinuous (↑f x) (C * ‖x‖)
                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                      x +
                    (fun x =>
                        mkContinuous (↑f x) (C * ‖x‖)
                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                      y) }
        x
[PROOFSTEP]
ext1
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
c : 𝕜
x : G
x✝ : (i : ι) → E i
⊢ ↑(AddHom.toFun
          {
            toFun := fun x =>
              mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
            map_add' :=
              (_ :
                ∀ (x y : G),
                  (fun x =>
                        mkContinuous (↑f x) (C * ‖x‖)
                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                      (x + y) =
                    (fun x =>
                          mkContinuous (↑f x) (C * ‖x‖)
                            (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                        x +
                      (fun x =>
                          mkContinuous (↑f x) (C * ‖x‖)
                            (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                        y) }
          (c • x))
      x✝ =
    ↑(↑(RingHom.id 𝕜) c •
          AddHom.toFun
            {
              toFun := fun x =>
                mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
              map_add' :=
                (_ :
                  ∀ (x y : G),
                    (fun x =>
                          mkContinuous (↑f x) (C * ‖x‖)
                            (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                        (x + y) =
                      (fun x =>
                            mkContinuous (↑f x) (C * ‖x‖)
                              (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                          x +
                        (fun x =>
                            mkContinuous (↑f x) (C * ‖x‖)
                              (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                          y) }
            x)
      x✝
[PROOFSTEP]
simp only [SMulHomClass.map_smul]
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
c : 𝕜
x : G
x✝ : (i : ι) → E i
⊢ ↑(mkContinuous (c • ↑f x) (C * ‖c • x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(c • ↑f x) m‖ ≤ C * ‖c • x‖ * ∏ i : ι, ‖m i‖))
      x✝ =
    ↑(↑(RingHom.id 𝕜) c •
          mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
      x✝
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
x : G
⊢ ‖↑{
            toAddHom :=
              {
                toFun := fun x =>
                  mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                map_add' :=
                  (_ :
                    ∀ (x y : G),
                      (fun x =>
                            mkContinuous (↑f x) (C * ‖x‖)
                              (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                          (x + y) =
                        (fun x =>
                              mkContinuous (↑f x) (C * ‖x‖)
                                (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                            x +
                          (fun x =>
                              mkContinuous (↑f x) (C * ‖x‖)
                                (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                            y) },
            map_smul' :=
              (_ :
                ∀ (c : 𝕜) (x : G),
                  AddHom.toFun
                      {
                        toFun := fun x =>
                          mkContinuous (↑f x) (C * ‖x‖)
                            (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                        map_add' :=
                          (_ :
                            ∀ (x y : G),
                              (fun x =>
                                    mkContinuous (↑f x) (C * ‖x‖)
                                      (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                  (x + y) =
                                (fun x =>
                                      mkContinuous (↑f x) (C * ‖x‖)
                                        (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                    x +
                                  (fun x =>
                                      mkContinuous (↑f x) (C * ‖x‖)
                                        (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                    y) }
                      (c • x) =
                    ↑(RingHom.id 𝕜) c •
                      AddHom.toFun
                        {
                          toFun := fun x =>
                            mkContinuous (↑f x) (C * ‖x‖)
                              (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                          map_add' :=
                            (_ :
                              ∀ (x y : G),
                                (fun x =>
                                      mkContinuous (↑f x) (C * ‖x‖)
                                        (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                    (x + y) =
                                  (fun x =>
                                        mkContinuous (↑f x) (C * ‖x‖)
                                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                      x +
                                    (fun x =>
                                        mkContinuous (↑f x) (C * ‖x‖)
                                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                      y) }
                        x) }
        x‖ ≤
    max C 0 * ‖x‖
[PROOFSTEP]
rw [LinearMap.coe_mk, AddHom.coe_mk]
  -- Porting note: added
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
x : G
⊢ ‖mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖)‖ ≤ max C 0 * ‖x‖
[PROOFSTEP]
exact ((f x).mkContinuous_norm_le' _).trans_eq <| by rw [max_mul_of_nonneg _ _ (norm_nonneg x), zero_mul]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
x : G
⊢ max (C * ‖x‖) 0 = max C 0 * ‖x‖
[PROOFSTEP]
rw [max_mul_of_nonneg _ _ (norm_nonneg x), zero_mul]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
⊢ ‖mkContinuousLinear f C H‖ ≤ max C 0
[PROOFSTEP]
dsimp only [mkContinuousLinear]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : G →ₗ[𝕜] MultilinearMap 𝕜 E G'
C : ℝ
H : ∀ (x : G) (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖
⊢ ‖LinearMap.mkContinuous
        {
          toAddHom :=
            {
              toFun := fun x =>
                mkContinuous (↑f x) (C * ‖x‖) (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
              map_add' :=
                (_ :
                  ∀ (x y : G),
                    (fun x =>
                          mkContinuous (↑f x) (C * ‖x‖)
                            (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                        (x + y) =
                      (fun x =>
                            mkContinuous (↑f x) (C * ‖x‖)
                              (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                          x +
                        (fun x =>
                            mkContinuous (↑f x) (C * ‖x‖)
                              (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                          y) },
          map_smul' :=
            (_ :
              ∀ (c : 𝕜) (x : G),
                AddHom.toFun
                    {
                      toFun := fun x =>
                        mkContinuous (↑f x) (C * ‖x‖)
                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                      map_add' :=
                        (_ :
                          ∀ (x y : G),
                            (fun x =>
                                  mkContinuous (↑f x) (C * ‖x‖)
                                    (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                (x + y) =
                              (fun x =>
                                    mkContinuous (↑f x) (C * ‖x‖)
                                      (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                  x +
                                (fun x =>
                                    mkContinuous (↑f x) (C * ‖x‖)
                                      (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                  y) }
                    (c • x) =
                  ↑(RingHom.id 𝕜) c •
                    AddHom.toFun
                      {
                        toFun := fun x =>
                          mkContinuous (↑f x) (C * ‖x‖)
                            (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                        map_add' :=
                          (_ :
                            ∀ (x y : G),
                              (fun x =>
                                    mkContinuous (↑f x) (C * ‖x‖)
                                      (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                  (x + y) =
                                (fun x =>
                                      mkContinuous (↑f x) (C * ‖x‖)
                                        (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                    x +
                                  (fun x =>
                                      mkContinuous (↑f x) (C * ‖x‖)
                                        (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                    y) }
                      x) }
        (max C 0)
        (_ :
          ∀ (x : G),
            ‖↑{
                      toAddHom :=
                        {
                          toFun := fun x =>
                            mkContinuous (↑f x) (C * ‖x‖)
                              (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                          map_add' :=
                            (_ :
                              ∀ (x y : G),
                                (fun x =>
                                      mkContinuous (↑f x) (C * ‖x‖)
                                        (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                    (x + y) =
                                  (fun x =>
                                        mkContinuous (↑f x) (C * ‖x‖)
                                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                      x +
                                    (fun x =>
                                        mkContinuous (↑f x) (C * ‖x‖)
                                          (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                      y) },
                      map_smul' :=
                        (_ :
                          ∀ (c : 𝕜) (x : G),
                            AddHom.toFun
                                {
                                  toFun := fun x =>
                                    mkContinuous (↑f x) (C * ‖x‖)
                                      (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                                  map_add' :=
                                    (_ :
                                      ∀ (x y : G),
                                        (fun x =>
                                              mkContinuous (↑f x) (C * ‖x‖)
                                                (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                            (x + y) =
                                          (fun x =>
                                                mkContinuous (↑f x) (C * ‖x‖)
                                                  (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                              x +
                                            (fun x =>
                                                mkContinuous (↑f x) (C * ‖x‖)
                                                  (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                              y) }
                                (c • x) =
                              ↑(RingHom.id 𝕜) c •
                                AddHom.toFun
                                  {
                                    toFun := fun x =>
                                      mkContinuous (↑f x) (C * ‖x‖)
                                        (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖),
                                    map_add' :=
                                      (_ :
                                        ∀ (x y : G),
                                          (fun x =>
                                                mkContinuous (↑f x) (C * ‖x‖)
                                                  (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                              (x + y) =
                                            (fun x =>
                                                  mkContinuous (↑f x) (C * ‖x‖)
                                                    (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                                x +
                                              (fun x =>
                                                  mkContinuous (↑f x) (C * ‖x‖)
                                                    (_ : ∀ (m : (i : ι) → E i), ‖↑(↑f x) m‖ ≤ C * ‖x‖ * ∏ i : ι, ‖m i‖))
                                                y) }
                                  x) }
                  x‖ ≤
              max C 0 * ‖x‖)‖ ≤
    max C 0
[PROOFSTEP]
exact LinearMap.mkContinuous_norm_le _ (le_max_right _ _) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
x y : E i
⊢ (fun m =>
        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
      (Function.update m i (x + y)) =
    (fun m =>
          mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
            (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
        (Function.update m i x) +
      (fun m =>
          mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
            (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
        (Function.update m i y)
[PROOFSTEP]
ext1
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
x y : E i
x✝ : (i : ι') → E' i
⊢ ↑((fun m =>
            mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
              (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
          (Function.update m i (x + y)))
      x✝ =
    ↑((fun m =>
              mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
            (Function.update m i x) +
          (fun m =>
              mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
            (Function.update m i y))
      x✝
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
c : 𝕜
x : E i
⊢ (fun m =>
        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
      (Function.update m i (c • x)) =
    c •
      (fun m =>
          mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
            (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
        (Function.update m i x)
[PROOFSTEP]
ext1
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
inst✝ : DecidableEq ι
m : (i : ι) → E i
i : ι
c : 𝕜
x : E i
x✝ : (i : ι') → E' i
⊢ ↑((fun m =>
            mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
              (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
          (Function.update m i (c • x)))
      x✝ =
    ↑(c •
          (fun m =>
              mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
            (Function.update m i x))
      x✝
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
m : (i : ι) → E i
⊢ ‖↑{
            toFun := fun m =>
              mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖),
            map_add' :=
              (_ :
                ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (x y : E i),
                  (fun m =>
                        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                      (Function.update m i (x + y)) =
                    (fun m =>
                          mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                            (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                        (Function.update m i x) +
                      (fun m =>
                          mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                            (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                        (Function.update m i y)),
            map_smul' :=
              (_ :
                ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
                  (fun m =>
                        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                      (Function.update m i (c • x)) =
                    c •
                      (fun m =>
                          mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                            (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                        (Function.update m i x)) }
        m‖ ≤
    max C 0 * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp only [coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
m : (i : ι) → E i
⊢ ‖mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
        (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖)‖ ≤
    max C 0 * ∏ i : ι, ‖m i‖
[PROOFSTEP]
refine ((f m).mkContinuous_norm_le' _).trans_eq ?_
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
m : (i : ι) → E i
⊢ max (C * ∏ i : ι, ‖m i‖) 0 = max C 0 * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [max_mul_of_nonneg, zero_mul]
[GOAL]
case hc
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
m : (i : ι) → E i
⊢ 0 ≤ ∏ i : ι, ‖m i‖
[PROOFSTEP]
exact prod_nonneg fun _ _ => norm_nonneg _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
⊢ ‖mkContinuousMultilinear f C H‖ ≤ max C 0
[PROOFSTEP]
dsimp only [mkContinuousMultilinear]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : MultilinearMap 𝕜 E (MultilinearMap 𝕜 E' G)
C : ℝ
H : ∀ (m₁ : (i : ι) → E i) (m₂ : (i : ι') → E' i), ‖↑(↑f m₁) m₂‖ ≤ (C * ∏ i : ι, ‖m₁ i‖) * ∏ i : ι', ‖m₂ i‖
⊢ ‖mkContinuous
        {
          toFun := fun m =>
            mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
              (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖),
          map_add' :=
            (_ :
              ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (x y : E i),
                (fun m =>
                      mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                        (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                    (Function.update m i (x + y)) =
                  (fun m =>
                        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                      (Function.update m i x) +
                    (fun m =>
                        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                      (Function.update m i y)),
          map_smul' :=
            (_ :
              ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
                (fun m =>
                      mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                        (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                    (Function.update m i (c • x)) =
                  c •
                    (fun m =>
                        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                      (Function.update m i x)) }
        (max C 0)
        (_ :
          ∀ (m : (i : ι) → E i),
            ‖↑{
                      toFun := fun m =>
                        mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                          (_ : ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖),
                      map_add' :=
                        (_ :
                          ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (x y : E i),
                            (fun m =>
                                  mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                                    (_ :
                                      ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                                (Function.update m i (x + y)) =
                              (fun m =>
                                    mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                                      (_ :
                                        ∀ (m₂ : (i : ι') → E' i),
                                          ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                                  (Function.update m i x) +
                                (fun m =>
                                    mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                                      (_ :
                                        ∀ (m₂ : (i : ι') → E' i),
                                          ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                                  (Function.update m i y)),
                      map_smul' :=
                        (_ :
                          ∀ [inst : DecidableEq ι] (m : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
                            (fun m =>
                                  mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                                    (_ :
                                      ∀ (m₂ : (i : ι') → E' i), ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                                (Function.update m i (c • x)) =
                              c •
                                (fun m =>
                                    mkContinuous (↑f m) (C * ∏ i : ι, ‖m i‖)
                                      (_ :
                                        ∀ (m₂ : (i : ι') → E' i),
                                          ‖↑(↑f m) m₂‖ ≤ (C * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m₂ i‖))
                                  (Function.update m i x)) }
                  m‖ ≤
              max C 0 * ∏ i : ι, ‖m i‖)‖ ≤
    max C 0
[PROOFSTEP]
exact mkContinuous_norm_le _ (le_max_right _ _) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
m : (i : ι) → E i
⊢ ‖g‖ * ∏ i : ι, ‖f i‖ * ‖m i‖ = (‖g‖ * ∏ i : ι, ‖f i‖) * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rw [prod_mul_distrib, mul_assoc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →ₗᵢ[𝕜] E₁ i
⊢ ‖compContinuousLinearMap g fun i => LinearIsometry.toContinuousLinearMap (f i)‖ ≤ ‖g‖
[PROOFSTEP]
refine op_norm_le_bound _ (norm_nonneg _) fun m => ?_
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →ₗᵢ[𝕜] E₁ i
m : (i : ι) → E i
⊢ ‖↑(compContinuousLinearMap g fun i => LinearIsometry.toContinuousLinearMap (f i)) m‖ ≤ ‖g‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
apply (g.le_op_norm _).trans _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →ₗᵢ[𝕜] E₁ i
m : (i : ι) → E i
⊢ ‖g‖ * ∏ i : ι, ‖↑((fun i => ↑((fun i => LinearIsometry.toContinuousLinearMap (f i)) i)) i) (m i)‖ ≤
    ‖g‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
simp only [ContinuousLinearMap.coe_coe, LinearIsometry.coe_toContinuousLinearMap, LinearIsometry.norm_map]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →ₗᵢ[𝕜] E₁ i
m : (i : ι) → E i
⊢ ‖g‖ * ∏ x : ι, ‖m x‖ ≤ ‖g‖ * ∏ i : ι, ‖m i‖
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
⊢ ‖compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv)‖ = ‖g‖
[PROOFSTEP]
apply le_antisymm (g.norm_compContinuous_linearIsometry_le fun i => (f i).toLinearIsometry)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
⊢ ‖g‖ ≤
    ‖compContinuousLinearMap g fun i =>
        LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry (f i))‖
[PROOFSTEP]
have :
  g =
    (g.compContinuousLinearMap fun i => (f i : E i →L[𝕜] E₁ i)).compContinuousLinearMap fun i =>
      ((f i).symm : E₁ i →L[𝕜] E i) :=
  by
  ext1 m
  simp only [compContinuousLinearMap_apply, LinearIsometryEquiv.coe_coe'', LinearIsometryEquiv.apply_symm_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
⊢ g =
    compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv))
      fun i => ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv)
[PROOFSTEP]
ext1 m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
m : (i : ι) → E₁ i
⊢ ↑g m =
    ↑(compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv))
          fun i => ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv))
      m
[PROOFSTEP]
simp only [compContinuousLinearMap_apply, LinearIsometryEquiv.coe_coe'', LinearIsometryEquiv.apply_symm_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
this :
  g =
    compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv))
      fun i => ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv)
⊢ ‖g‖ ≤
    ‖compContinuousLinearMap g fun i =>
        LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry (f i))‖
[PROOFSTEP]
conv_lhs => rw [this]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
this :
  g =
    compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv))
      fun i => ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv)
| ‖g‖
[PROOFSTEP]
rw [this]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
this :
  g =
    compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv))
      fun i => ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv)
| ‖g‖
[PROOFSTEP]
rw [this]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
this :
  g =
    compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv))
      fun i => ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv)
| ‖g‖
[PROOFSTEP]
rw [this]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i ≃ₗᵢ[𝕜] E₁ i
this :
  g =
    compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv))
      fun i => ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv)
⊢ ‖compContinuousLinearMap (compContinuousLinearMap g fun i => ↑(ContinuousLinearEquiv.mk (f i).toLinearEquiv)) fun i =>
        ↑(ContinuousLinearEquiv.mk (LinearIsometryEquiv.symm (f i)).toLinearEquiv)‖ ≤
    ‖compContinuousLinearMap g fun i =>
        LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry (f i))‖
[PROOFSTEP]
apply
  (g.compContinuousLinearMap fun i => (f i : E i →L[𝕜] E₁ i)).norm_compContinuous_linearIsometry_le fun i =>
    (f i).symm.toLinearIsometry
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : (i : ι) → E i ≃L[𝕜] E₁ i
src✝ : ContinuousMultilinearMap 𝕜 (fun i => E₁ i) G →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => E i) G :=
  compContinuousLinearMapL fun i => ↑(f i)
⊢ Function.LeftInverse (↑(compContinuousLinearMapL fun i => ↑(ContinuousLinearEquiv.symm (f i)))) src✝.toFun
[PROOFSTEP]
intro g
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : (i : ι) → E i ≃L[𝕜] E₁ i
src✝ : ContinuousMultilinearMap 𝕜 (fun i => E₁ i) G →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => E i) G :=
  compContinuousLinearMapL fun i => ↑(f i)
g : ContinuousMultilinearMap 𝕜 E₁ G
⊢ ↑(compContinuousLinearMapL fun i => ↑(ContinuousLinearEquiv.symm (f i))) (AddHom.toFun src✝.toAddHom g) = g
[PROOFSTEP]
ext1 m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : (i : ι) → E i ≃L[𝕜] E₁ i
src✝ : ContinuousMultilinearMap 𝕜 (fun i => E₁ i) G →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => E i) G :=
  compContinuousLinearMapL fun i => ↑(f i)
g : ContinuousMultilinearMap 𝕜 E₁ G
m : (i : ι) → E₁ i
⊢ ↑(↑(compContinuousLinearMapL fun i => ↑(ContinuousLinearEquiv.symm (f i))) (AddHom.toFun src✝.toAddHom g)) m = ↑g m
[PROOFSTEP]
simp only [LinearMap.toFun_eq_coe, ContinuousLinearMap.coe_coe, compContinuousLinearMapL_apply,
  compContinuousLinearMap_apply, ContinuousLinearEquiv.coe_coe, ContinuousLinearEquiv.apply_symm_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : (i : ι) → E i ≃L[𝕜] E₁ i
src✝ : ContinuousMultilinearMap 𝕜 (fun i => E₁ i) G →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => E i) G :=
  compContinuousLinearMapL fun i => ↑(f i)
⊢ Function.RightInverse (↑(compContinuousLinearMapL fun i => ↑(ContinuousLinearEquiv.symm (f i)))) src✝.toFun
[PROOFSTEP]
intro g
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : (i : ι) → E i ≃L[𝕜] E₁ i
src✝ : ContinuousMultilinearMap 𝕜 (fun i => E₁ i) G →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => E i) G :=
  compContinuousLinearMapL fun i => ↑(f i)
g : ContinuousMultilinearMap 𝕜 E G
⊢ AddHom.toFun src✝.toAddHom (↑(compContinuousLinearMapL fun i => ↑(ContinuousLinearEquiv.symm (f i))) g) = g
[PROOFSTEP]
ext1 m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : (i : ι) → E i ≃L[𝕜] E₁ i
src✝ : ContinuousMultilinearMap 𝕜 (fun i => E₁ i) G →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => E i) G :=
  compContinuousLinearMapL fun i => ↑(f i)
g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
⊢ ↑(AddHom.toFun src✝.toAddHom (↑(compContinuousLinearMapL fun i => ↑(ContinuousLinearEquiv.symm (f i))) g)) m = ↑g m
[PROOFSTEP]
simp only [compContinuousLinearMapL_apply, LinearMap.toFun_eq_coe, ContinuousLinearMap.coe_coe,
  compContinuousLinearMap_apply, ContinuousLinearEquiv.coe_coe, ContinuousLinearEquiv.symm_apply_apply]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ‖f‖ * ‖m 0‖ * ∏ i : Fin n, ‖tail m i‖ = ‖f‖ * (‖m 0‖ * ∏ i : Fin n, ‖tail m i‖)
[PROOFSTEP]
ring
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ‖f‖ * (‖m 0‖ * ∏ i : Fin n, ‖tail m i‖) = ‖f‖ * ∏ i : Fin (Nat.succ n), ‖m i‖
[PROOFSTEP]
rw [prod_univ_succ]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ‖f‖ * (‖m 0‖ * ∏ i : Fin n, ‖tail m i‖) = ‖f‖ * (‖m 0‖ * ∏ i : Fin n, ‖m (succ i)‖)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ‖f‖ * ((∏ i : Fin n, ‖init m i‖) * ‖m (last n)‖) = ‖f‖ * ∏ i : Fin (Nat.succ n), ‖m i‖
[PROOFSTEP]
rw [prod_univ_castSucc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ‖f‖ * ((∏ i : Fin n, ‖init m i‖) * ‖m (last n)‖) = ‖f‖ * ((∏ i : Fin n, ‖m (castSucc i)‖) * ‖m (last n)‖)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
x : Ei 0
m : (i : Fin n) → Ei (succ i)
⊢ ‖f‖ * ∏ i : Fin (n + 1), ‖Fin.cons x m i‖ = ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖
[PROOFSTEP]
rw [prod_univ_succ]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
x : Ei 0
m : (i : Fin n) → Ei (succ i)
⊢ ‖f‖ * (‖Fin.cons x m 0‖ * ∏ i : Fin n, ‖Fin.cons x m (succ i)‖) = ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖
[PROOFSTEP]
simp [mul_assoc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
m : (i : Fin n) → Ei (castSucc i)
x : Ei (last n)
⊢ ‖f‖ * ∏ i : Fin (n + 1), ‖snoc m x i‖ = (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖
[PROOFSTEP]
rw [prod_univ_castSucc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
m : (i : Fin n) → Ei (castSucc i)
x : Ei (last n)
⊢ ‖f‖ * ((∏ i : Fin n, ‖snoc m x (castSucc i)‖) * ‖snoc m x (last n)‖) = (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖
[PROOFSTEP]
simp [mul_assoc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ‖↑(LinearMap.uncurryLeft (LinearMap.comp toMultilinearMapLinear ↑f)) m‖ ≤ ‖f‖ * ∏ i : Fin (Nat.succ n), ‖m i‖
[PROOFSTEP]
exact ContinuousLinearMap.norm_map_tail_le f m
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
x y : Ei 0
⊢ (fun x =>
        MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
          (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
      (x + y) =
    (fun x =>
          MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
            (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
        x +
      (fun x =>
          MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
            (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
        y
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
x y : Ei 0
m : (i : Fin n) → Ei (succ i)
⊢ ↑((fun x =>
            MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
              (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
          (x + y))
      m =
    ↑((fun x =>
              MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
            x +
          (fun x =>
              MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
            y)
      m
[PROOFSTEP]
exact f.cons_add m x y
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
c : 𝕜
x : Ei 0
⊢ AddHom.toFun
      {
        toFun := fun x =>
          MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
            (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖),
        map_add' :=
          (_ :
            ∀ (x y : Ei 0),
              (fun x =>
                    MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                      (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                  (x + y) =
                (fun x =>
                      MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                        (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                    x +
                  (fun x =>
                      MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                        (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                    y) }
      (c • x) =
    ↑(RingHom.id 𝕜) c •
      AddHom.toFun
        {
          toFun := fun x =>
            MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
              (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖),
          map_add' :=
            (_ :
              ∀ (x y : Ei 0),
                (fun x =>
                      MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                        (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                    (x + y) =
                  (fun x =>
                        MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                          (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                      x +
                    (fun x =>
                        MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                          (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                      y) }
        x
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
c : 𝕜
x : Ei 0
m : (i : Fin n) → Ei (succ i)
⊢ ↑(AddHom.toFun
          {
            toFun := fun x =>
              MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖),
            map_add' :=
              (_ :
                ∀ (x y : Ei 0),
                  (fun x =>
                        MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                          (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                      (x + y) =
                    (fun x =>
                          MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                            (_ :
                              ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                        x +
                      (fun x =>
                          MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                            (_ :
                              ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                        y) }
          (c • x))
      m =
    ↑(↑(RingHom.id 𝕜) c •
          AddHom.toFun
            {
              toFun := fun x =>
                MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                  (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖),
              map_add' :=
                (_ :
                  ∀ (x y : Ei 0),
                    (fun x =>
                          MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                            (_ :
                              ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                        (x + y) =
                      (fun x =>
                            MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                              (_ :
                                ∀ (m : (i : Fin n) → Ei (succ i)),
                                  ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                          x +
                        (fun x =>
                            MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                              (_ :
                                ∀ (m : (i : Fin n) → Ei (succ i)),
                                  ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                          y) }
            x)
      m
[PROOFSTEP]
exact f.cons_smul m c x
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
x : Ei 0
⊢ ‖↑{
            toAddHom :=
              {
                toFun := fun x =>
                  MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                    (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖),
                map_add' :=
                  (_ :
                    ∀ (x y : Ei 0),
                      (fun x =>
                            MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                              (_ :
                                ∀ (m : (i : Fin n) → Ei (succ i)),
                                  ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                          (x + y) =
                        (fun x =>
                              MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                                (_ :
                                  ∀ (m : (i : Fin n) → Ei (succ i)),
                                    ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                            x +
                          (fun x =>
                              MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                                (_ :
                                  ∀ (m : (i : Fin n) → Ei (succ i)),
                                    ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                            y) },
            map_smul' :=
              (_ :
                ∀ (c : 𝕜) (x : Ei 0),
                  AddHom.toFun
                      {
                        toFun := fun x =>
                          MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                            (_ :
                              ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖),
                        map_add' :=
                          (_ :
                            ∀ (x y : Ei 0),
                              (fun x =>
                                    MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x)
                                      (‖f‖ * ‖x‖)
                                      (_ :
                                        ∀ (m : (i : Fin n) → Ei (succ i)),
                                          ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                                  (x + y) =
                                (fun x =>
                                      MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x)
                                        (‖f‖ * ‖x‖)
                                        (_ :
                                          ∀ (m : (i : Fin n) → Ei (succ i)),
                                            ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                                    x +
                                  (fun x =>
                                      MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x)
                                        (‖f‖ * ‖x‖)
                                        (_ :
                                          ∀ (m : (i : Fin n) → Ei (succ i)),
                                            ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                                    y) }
                      (c • x) =
                    ↑(RingHom.id 𝕜) c •
                      AddHom.toFun
                        {
                          toFun := fun x =>
                            MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
                              (_ :
                                ∀ (m : (i : Fin n) → Ei (succ i)),
                                  ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖),
                          map_add' :=
                            (_ :
                              ∀ (x y : Ei 0),
                                (fun x =>
                                      MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x)
                                        (‖f‖ * ‖x‖)
                                        (_ :
                                          ∀ (m : (i : Fin n) → Ei (succ i)),
                                            ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                                    (x + y) =
                                  (fun x =>
                                        MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x)
                                          (‖f‖ * ‖x‖)
                                          (_ :
                                            ∀ (m : (i : Fin n) → Ei (succ i)),
                                              ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                                      x +
                                    (fun x =>
                                        MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x)
                                          (‖f‖ * ‖x‖)
                                          (_ :
                                            ∀ (m : (i : Fin n) → Ei (succ i)),
                                              ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖))
                                      y) }
                        x) }
        x‖ ≤
    ‖f‖ * ‖x‖
[PROOFSTEP]
rw [LinearMap.coe_mk, AddHom.coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
x : Ei 0
⊢ ‖MultilinearMap.mkContinuous (↑(MultilinearMap.curryLeft f.toMultilinearMap) x) (‖f‖ * ‖x‖)
        (_ : ∀ (m : (i : Fin n) → Ei (succ i)), ‖↑f (Fin.cons x m)‖ ≤ ‖f‖ * ‖x‖ * ∏ i : Fin n, ‖m i‖)‖ ≤
    ‖f‖ * ‖x‖
[PROOFSTEP]
exact MultilinearMap.mkContinuous_norm_le _ (mul_nonneg (norm_nonneg _) (norm_nonneg _)) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
⊢ curryLeft (uncurryLeft f) = f
[PROOFSTEP]
ext m x
[GOAL]
case h.H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : Ei 0
x : (i : Fin n) → Ei (succ i)
⊢ ↑(↑(curryLeft (uncurryLeft f)) m) x = ↑(↑f m) x
[PROOFSTEP]
simp only [tail_cons, ContinuousLinearMap.uncurryLeft_apply, ContinuousMultilinearMap.curryLeft_apply]
[GOAL]
case h.H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : Ei 0
x : (i : Fin n) → Ei (succ i)
⊢ ↑(↑f (Fin.cons m x 0)) x = ↑(↑f m) x
[PROOFSTEP]
rw [cons_zero]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
⊢ ContinuousLinearMap.uncurryLeft (f₁ + f₂) = ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ↑(ContinuousLinearMap.uncurryLeft (f₁ + f₂)) m =
    ↑(ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) m
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
⊢ AddHom.toFun
      { toFun := ContinuousLinearMap.uncurryLeft,
        map_add' :=
          (_ :
            ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
              ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
      (c • f) =
    ↑(RingHom.id 𝕜) c •
      AddHom.toFun
        { toFun := ContinuousLinearMap.uncurryLeft,
          map_add' :=
            (_ :
              ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                  ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
        f
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ↑(AddHom.toFun
          { toFun := ContinuousLinearMap.uncurryLeft,
            map_add' :=
              (_ :
                ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                  ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                    ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
          (c • f))
      m =
    ↑(↑(RingHom.id 𝕜) c •
          AddHom.toFun
            { toFun := ContinuousLinearMap.uncurryLeft,
              map_add' :=
                (_ :
                  ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                    ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                      ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
            f)
      m
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
⊢ ‖↑{
            toLinearMap :=
              {
                toAddHom :=
                  { toFun := ContinuousLinearMap.uncurryLeft,
                    map_add' :=
                      (_ :
                        ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                          ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                            ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) },
                map_smul' :=
                  (_ :
                    ∀ (c : 𝕜) (f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                      AddHom.toFun
                          { toFun := ContinuousLinearMap.uncurryLeft,
                            map_add' :=
                              (_ :
                                ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                                  ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                                    ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
                          (c • f) =
                        ↑(RingHom.id 𝕜) c •
                          AddHom.toFun
                            { toFun := ContinuousLinearMap.uncurryLeft,
                              map_add' :=
                                (_ :
                                  ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                                    ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                                      ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
                            f) },
            invFun := curryLeft,
            left_inv :=
              (_ :
                ∀ (f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                  curryLeft (ContinuousLinearMap.uncurryLeft f) = f),
            right_inv :=
              (_ : ∀ (f : ContinuousMultilinearMap 𝕜 Ei G), ContinuousLinearMap.uncurryLeft (curryLeft f) = f) }
        f‖ ≤
    ‖f‖
[PROOFSTEP]
simp only [LinearEquiv.coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G
⊢ ‖ContinuousLinearMap.uncurryLeft f‖ ≤ ‖f‖
[PROOFSTEP]
exact MultilinearMap.mkContinuous_norm_le _ (norm_nonneg f) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
⊢ ‖↑(LinearEquiv.symm
            {
              toLinearMap :=
                {
                  toAddHom :=
                    { toFun := ContinuousLinearMap.uncurryLeft,
                      map_add' :=
                        (_ :
                          ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                            ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                              ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) },
                  map_smul' :=
                    (_ :
                      ∀ (c : 𝕜) (f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                        AddHom.toFun
                            { toFun := ContinuousLinearMap.uncurryLeft,
                              map_add' :=
                                (_ :
                                  ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                                    ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                                      ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
                            (c • f) =
                          ↑(RingHom.id 𝕜) c •
                            AddHom.toFun
                              { toFun := ContinuousLinearMap.uncurryLeft,
                                map_add' :=
                                  (_ :
                                    ∀ (f₁ f₂ : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                                      ContinuousLinearMap.uncurryLeft (f₁ + f₂) =
                                        ContinuousLinearMap.uncurryLeft f₁ + ContinuousLinearMap.uncurryLeft f₂) }
                              f) },
              invFun := curryLeft,
              left_inv :=
                (_ :
                  ∀ (f : Ei 0 →L[𝕜] ContinuousMultilinearMap 𝕜 (fun i => Ei (succ i)) G),
                    curryLeft (ContinuousLinearMap.uncurryLeft f) = f),
              right_inv :=
                (_ : ∀ (f : ContinuousMultilinearMap 𝕜 Ei G), ContinuousLinearMap.uncurryLeft (curryLeft f) = f) })
        f‖ ≤
    ‖f‖
[PROOFSTEP]
simp only [LinearEquiv.coe_symm_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
⊢ ‖curryLeft f‖ ≤ ‖f‖
[PROOFSTEP]
exact LinearMap.mkContinuous_norm_le _ (norm_nonneg f) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
inst✝ : DecidableEq (Fin n)
m : (i : Fin n) → Ei (castSucc i)
i : Fin n
x y : Ei (castSucc i)
⊢ (fun m => ↑(↑f m)) (update m i (x + y)) = (fun m => ↑(↑f m)) (update m i x) + (fun m => ↑(↑f m)) (update m i y)
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
inst✝ : DecidableEq (Fin n)
m : (i : Fin n) → Ei (castSucc i)
i : Fin n
c : 𝕜
x : Ei (castSucc i)
⊢ (fun m => ↑(↑f m)) (update m i (c • x)) = c • (fun m => ↑(↑f m)) (update m i x)
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
inst✝ : DecidableEq (Fin n)
m : (i : Fin n) → Ei (castSucc i)
i : Fin n
x y : Ei (castSucc i)
⊢ (fun m =>
        LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
          (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
      (update m i (x + y)) =
    (fun m =>
          LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
            (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
        (update m i x) +
      (fun m =>
          LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
            (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
        (update m i y)
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
inst✝ : DecidableEq (Fin n)
m : (i : Fin n) → Ei (castSucc i)
i : Fin n
x y : Ei (castSucc i)
⊢ LinearMap.mkContinuous
      (↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i x) +
        ↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i y))
      (‖f‖ * ∏ x_1 : Fin n, ‖update m i (x + y) x_1‖)
      (_ :
        ∀ (x_1 : Ei (last n)),
          ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i x) +
                    ↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i y))
                x_1‖ ≤
            (‖f‖ * ∏ x_2 : Fin n, ‖update m i (x + y) x_2‖) * ‖x_1‖) =
    LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i x))
        (‖f‖ * ∏ i_1 : Fin n, ‖update m i x i_1‖)
        (_ :
          ∀ (x_1 : Ei (last n)), ‖↑f (snoc (update m i x) x_1)‖ ≤ (‖f‖ * ∏ i_1 : Fin n, ‖update m i x i_1‖) * ‖x_1‖) +
      LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i y))
        (‖f‖ * ∏ i_1 : Fin n, ‖update m i y i_1‖)
        (_ : ∀ (x : Ei (last n)), ‖↑f (snoc (update m i y) x)‖ ≤ (‖f‖ * ∏ i_1 : Fin n, ‖update m i y i_1‖) * ‖x‖)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
inst✝ : DecidableEq (Fin n)
m : (i : Fin n) → Ei (castSucc i)
i : Fin n
c : 𝕜
x : Ei (castSucc i)
⊢ (fun m =>
        LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
          (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
      (update m i (c • x)) =
    c •
      (fun m =>
          LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
            (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
        (update m i x)
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype ι'
inst✝¹³ : NontriviallyNormedField 𝕜
inst✝¹² : (i : ι) → NormedAddCommGroup (E i)
inst✝¹¹ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁰ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁹ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁸ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁷ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁶ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace 𝕜 G
inst✝² : NormedAddCommGroup G'
inst✝¹ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
inst✝ : DecidableEq (Fin n)
m : (i : Fin n) → Ei (castSucc i)
i : Fin n
c : 𝕜
x : Ei (castSucc i)
⊢ LinearMap.mkContinuous (c • ↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i x))
      (‖f‖ * ∏ x_1 : Fin n, ‖update m i (c • x) x_1‖)
      (_ :
        ∀ (x_1 : Ei (last n)),
          ‖↑(c • ↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i x)) x_1‖ ≤
            (‖f‖ * ∏ x_2 : Fin n, ‖update m i (c • x) x_2‖) * ‖x_1‖) =
    c •
      LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) (update m i x))
        (‖f‖ * ∏ i_1 : Fin n, ‖update m i x i_1‖)
        (_ : ∀ (x_1 : Ei (last n)), ‖↑f (snoc (update m i x) x_1)‖ ≤ (‖f‖ * ∏ i_1 : Fin n, ‖update m i x i_1‖) * ‖x_1‖)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
f' : MultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G) :=
  {
    toFun := fun m =>
      LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
        (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖),
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → Ei (castSucc i)) (i : Fin n) (x y : Ei (castSucc i)),
          (fun m =>
                LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                  (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
              (update m i (x + y)) =
            (fun m =>
                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                    (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
                (update m i x) +
              (fun m =>
                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                    (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
                (update m i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → Ei (castSucc i)) (i : Fin n) (c : 𝕜) (x : Ei (castSucc i)),
          (fun m =>
                LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                  (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
              (update m i (c • x)) =
            c •
              (fun m =>
                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                    (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
                (update m i x)) }
m : (i : Fin n) → Ei (castSucc i)
⊢ ‖↑f' m‖ ≤ ‖f‖ * ∏ i : Fin n, ‖m i‖
[PROOFSTEP]
simp only [MultilinearMap.coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
f' : MultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G) :=
  {
    toFun := fun m =>
      LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
        (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖),
    map_add' :=
      (_ :
        ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → Ei (castSucc i)) (i : Fin n) (x y : Ei (castSucc i)),
          (fun m =>
                LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                  (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
              (update m i (x + y)) =
            (fun m =>
                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                    (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
                (update m i x) +
              (fun m =>
                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                    (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
                (update m i y)),
    map_smul' :=
      (_ :
        ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → Ei (castSucc i)) (i : Fin n) (c : 𝕜) (x : Ei (castSucc i)),
          (fun m =>
                LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                  (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
              (update m i (c • x)) =
            c •
              (fun m =>
                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
                    (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖))
                (update m i x)) }
m : (i : Fin n) → Ei (castSucc i)
⊢ ‖LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ i : Fin n, ‖m i‖)
        (_ : ∀ (x : Ei (last n)), ‖↑f (snoc m x)‖ ≤ (‖f‖ * ∏ i : Fin n, ‖m i‖) * ‖x‖)‖ ≤
    ‖f‖ * ∏ i : Fin n, ‖m i‖
[PROOFSTEP]
exact LinearMap.mkContinuous_norm_le _ (mul_nonneg (norm_nonneg _) (prod_nonneg fun _ _ => norm_nonneg _)) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
⊢ curryRight (uncurryRight f) = f
[PROOFSTEP]
ext m x
[GOAL]
case H.h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
m : (i : Fin n) → Ei (castSucc i)
x : Ei (last n)
⊢ ↑(↑(curryRight (uncurryRight f)) m) x = ↑(↑f m) x
[PROOFSTEP]
simp only [snoc_last, ContinuousMultilinearMap.curryRight_apply, ContinuousMultilinearMap.uncurryRight_apply]
[GOAL]
case H.h
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
m : (i : Fin n) → Ei (castSucc i)
x : Ei (last n)
⊢ ↑(↑f (init (snoc m x))) x = ↑(↑f m) x
[PROOFSTEP]
rw [init_snoc]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
⊢ uncurryRight (curryRight f) = f
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ↑(uncurryRight (curryRight f)) m = ↑f m
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
⊢ uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ↑(uncurryRight (f₁ + f₂)) m = ↑(uncurryRight f₁ + uncurryRight f₂) m
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
⊢ AddHom.toFun
      { toFun := uncurryRight,
        map_add' :=
          (_ :
            ∀ (f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
              uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
      (c • f) =
    ↑(RingHom.id 𝕜) c •
      AddHom.toFun
        { toFun := uncurryRight,
          map_add' :=
            (_ :
              ∀ (f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
        f
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ↑(AddHom.toFun
          { toFun := uncurryRight,
            map_add' :=
              (_ :
                ∀ (f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                  uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
          (c • f))
      m =
    ↑(↑(RingHom.id 𝕜) c •
          AddHom.toFun
            { toFun := uncurryRight,
              map_add' :=
                (_ :
                  ∀ (f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                    uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
            f)
      m
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
⊢ ‖↑{
            toLinearMap :=
              {
                toAddHom :=
                  { toFun := uncurryRight,
                    map_add' :=
                      (_ :
                        ∀ (f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                          uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) },
                map_smul' :=
                  (_ :
                    ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                      AddHom.toFun
                          { toFun := uncurryRight,
                            map_add' :=
                              (_ :
                                ∀ (f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                                  uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
                          (c • f) =
                        ↑(RingHom.id 𝕜) c •
                          AddHom.toFun
                            { toFun := uncurryRight,
                              map_add' :=
                                (_ :
                                  ∀
                                    (f₁ f₂ :
                                      ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                                    uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
                            f) },
            invFun := curryRight,
            left_inv :=
              (_ :
                ∀ (f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                  curryRight (uncurryRight f) = f),
            right_inv := (_ : ∀ (f : ContinuousMultilinearMap 𝕜 Ei G), uncurryRight (curryRight f) = f) }
        f‖ ≤
    ‖f‖
[PROOFSTEP]
simp only [uncurryRight, LinearEquiv.coe_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)
⊢ ‖MultilinearMap.mkContinuous
        (MultilinearMap.uncurryRight
          { toFun := fun m => ↑(↑f m),
            map_add' :=
              (_ :
                ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → Ei (castSucc i)) (i : Fin n) (x y : Ei (castSucc i)),
                  ↑(↑f (update m i (x + y))) = ↑(↑f (update m i x)) + ↑(↑f (update m i y))),
            map_smul' :=
              (_ :
                ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → Ei (castSucc i)) (i : Fin n) (c : 𝕜)
                  (x : Ei (castSucc i)), ↑(↑f (update m i (c • x))) = c • ↑(↑f (update m i x))) })
        ‖f‖
        (_ :
          ∀ (m : (i : Fin (Nat.succ n)) → Ei i), ‖↑(↑f (init m)) (m (last n))‖ ≤ ‖f‖ * ∏ i : Fin (Nat.succ n), ‖m i‖)‖ ≤
    ‖f‖
[PROOFSTEP]
exact MultilinearMap.mkContinuous_norm_le _ (norm_nonneg f) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
⊢ ‖↑(LinearEquiv.symm
            {
              toLinearMap :=
                {
                  toAddHom :=
                    { toFun := uncurryRight,
                      map_add' :=
                        (_ :
                          ∀ (f₁ f₂ : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                            uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) },
                  map_smul' :=
                    (_ :
                      ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                        AddHom.toFun
                            { toFun := uncurryRight,
                              map_add' :=
                                (_ :
                                  ∀
                                    (f₁ f₂ :
                                      ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                                    uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
                            (c • f) =
                          ↑(RingHom.id 𝕜) c •
                            AddHom.toFun
                              { toFun := uncurryRight,
                                map_add' :=
                                  (_ :
                                    ∀
                                      (f₁ f₂ :
                                        ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                                      uncurryRight (f₁ + f₂) = uncurryRight f₁ + uncurryRight f₂) }
                              f) },
              invFun := curryRight,
              left_inv :=
                (_ :
                  ∀ (f : ContinuousMultilinearMap 𝕜 (fun i => Ei (castSucc i)) (Ei (last n) →L[𝕜] G)),
                    curryRight (uncurryRight f) = f),
              right_inv := (_ : ∀ (f : ContinuousMultilinearMap 𝕜 Ei G), uncurryRight (curryRight f) = f) })
        f‖ ≤
    ‖f‖
[PROOFSTEP]
simp only [curryRight, LinearEquiv.coe_symm_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
⊢ ‖MultilinearMap.mkContinuous
        {
          toFun := fun m =>
            LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m) (‖f‖ * ∏ x : Fin n, ‖m x‖)
              (_ :
                ∀ (x : Ei (last n)),
                  ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤ (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖),
          map_add' :=
            (_ :
              ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → (fun i => Ei (castSucc i)) i) (i : Fin n)
                (x y : (fun i => Ei (castSucc i)) i),
                (fun m =>
                      LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                        (‖f‖ * ∏ x : Fin n, ‖m x‖)
                        (_ :
                          ∀ (x : Ei (last n)),
                            ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                              (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                    (update m i (x + y)) =
                  (fun m =>
                        LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                          (‖f‖ * ∏ x : Fin n, ‖m x‖)
                          (_ :
                            ∀ (x : Ei (last n)),
                              ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                      (update m i x) +
                    (fun m =>
                        LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                          (‖f‖ * ∏ x : Fin n, ‖m x‖)
                          (_ :
                            ∀ (x : Ei (last n)),
                              ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                      (update m i y)),
          map_smul' :=
            (_ :
              ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → (fun i => Ei (castSucc i)) i) (i : Fin n) (c : 𝕜)
                (x : (fun i => Ei (castSucc i)) i),
                (fun m =>
                      LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                        (‖f‖ * ∏ x : Fin n, ‖m x‖)
                        (_ :
                          ∀ (x : Ei (last n)),
                            ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                              (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                    (update m i (c • x)) =
                  c •
                    (fun m =>
                        LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                          (‖f‖ * ∏ x : Fin n, ‖m x‖)
                          (_ :
                            ∀ (x : Ei (last n)),
                              ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                      (update m i x)) }
        ‖f‖
        (_ :
          ∀ (m : (i : Fin n) → (fun i => Ei (castSucc i)) i),
            ‖↑{
                      toFun := fun m =>
                        LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                          (‖f‖ * ∏ x : Fin n, ‖m x‖)
                          (_ :
                            ∀ (x : Ei (last n)),
                              ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖),
                      map_add' :=
                        (_ :
                          ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → (fun i => Ei (castSucc i)) i) (i : Fin n)
                            (x y : (fun i => Ei (castSucc i)) i),
                            (fun m =>
                                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                                    (‖f‖ * ∏ x : Fin n, ‖m x‖)
                                    (_ :
                                      ∀ (x : Ei (last n)),
                                        ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                          (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                                (update m i (x + y)) =
                              (fun m =>
                                    LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                                      (‖f‖ * ∏ x : Fin n, ‖m x‖)
                                      (_ :
                                        ∀ (x : Ei (last n)),
                                          ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                            (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                                  (update m i x) +
                                (fun m =>
                                    LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                                      (‖f‖ * ∏ x : Fin n, ‖m x‖)
                                      (_ :
                                        ∀ (x : Ei (last n)),
                                          ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                            (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                                  (update m i y)),
                      map_smul' :=
                        (_ :
                          ∀ [inst : DecidableEq (Fin n)] (m : (i : Fin n) → (fun i => Ei (castSucc i)) i) (i : Fin n)
                            (c : 𝕜) (x : (fun i => Ei (castSucc i)) i),
                            (fun m =>
                                  LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                                    (‖f‖ * ∏ x : Fin n, ‖m x‖)
                                    (_ :
                                      ∀ (x : Ei (last n)),
                                        ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                          (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                                (update m i (c • x)) =
                              c •
                                (fun m =>
                                    LinearMap.mkContinuous (↑(MultilinearMap.curryRight f.toMultilinearMap) m)
                                      (‖f‖ * ∏ x : Fin n, ‖m x‖)
                                      (_ :
                                        ∀ (x : Ei (last n)),
                                          ‖↑(↑(MultilinearMap.curryRight f.toMultilinearMap) m) x‖ ≤
                                            (‖f‖ * ∏ x : Fin n, ‖m x‖) * ‖x‖))
                                  (update m i x)) }
                  m‖ ≤
              ‖f‖ * ∏ i : Fin n, ‖m i‖)‖ ≤
    ‖f‖
[PROOFSTEP]
exact MultilinearMap.mkContinuous_norm_le _ (norm_nonneg f) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
x : Fin 0 → G
⊢ curry0 𝕜 G (↑f x) = f
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
x m : Fin 0 → G
⊢ ↑(curry0 𝕜 G (↑f x)) m = ↑f m
[PROOFSTEP]
simp [(Subsingleton.elim _ _ : x = m)]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
⊢ curry0 𝕜 G (uncurry0 f) = f
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
x : Fin 0 → G
⊢ ‖↑f x‖ = ‖f‖
[PROOFSTEP]
obtain rfl : x = 0 := Subsingleton.elim _ _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
⊢ ‖↑f 0‖ = ‖f‖
[PROOFSTEP]
refine' le_antisymm (by simpa using f.le_op_norm 0) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
⊢ ‖↑f 0‖ ≤ ‖f‖
[PROOFSTEP]
simpa using f.le_op_norm 0
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
⊢ ‖f‖ ≤ ‖↑f 0‖
[PROOFSTEP]
have : ‖ContinuousMultilinearMap.curry0 𝕜 G f.uncurry0‖ ≤ ‖f.uncurry0‖ :=
  ContinuousMultilinearMap.op_norm_le_bound _ (norm_nonneg _) fun m => by
    simp [-ContinuousMultilinearMap.apply_zero_curry0]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
m : Fin 0 → G
⊢ ‖↑(curry0 𝕜 G (uncurry0 f)) m‖ ≤ ‖uncurry0 f‖ * ∏ i : Fin 0, ‖m i‖
[PROOFSTEP]
simp [-ContinuousMultilinearMap.apply_zero_curry0]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
this : ‖curry0 𝕜 G (uncurry0 f)‖ ≤ ‖uncurry0 f‖
⊢ ‖f‖ ≤ ‖↑f 0‖
[PROOFSTEP]
simpa [-Matrix.zero_empty] using this
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
⊢ ‖uncurry0 f‖ = ‖f‖
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
σ : ι ≃ ι'
f : ContinuousMultilinearMap 𝕜 (fun x => G) G'
⊢ ‖domDomCongr σ f‖ = ‖f‖
[PROOFSTEP]
simp only [norm_def, LinearEquiv.coe_mk, ← σ.prod_comp, (σ.arrowCongr (Equiv.refl G)).surjective.forall,
  domDomCongr_apply, Equiv.arrowCongr_apply, Equiv.coe_refl, comp.left_id, comp_apply, Equiv.symm_apply_apply, id]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) G'
m : ι → G
m' : ι' → G
⊢ ‖↑(↑(MultilinearMap.currySum f.toMultilinearMap) m) m'‖ ≤ (‖f‖ * ∏ i : ι, ‖m i‖) * ∏ i : ι', ‖m' i‖
[PROOFSTEP]
simpa [Fintype.prod_sum_type, mul_assoc] using f.le_op_norm (Sum.elim m m')
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) (ContinuousMultilinearMap 𝕜 (fun x => G) G')
m : ι ⊕ ι' → G
⊢ ‖↑(MultilinearMap.uncurrySum (LinearMap.compMultilinearMap toMultilinearMapLinear f.toMultilinearMap)) m‖ ≤
    ‖f‖ * ∏ i : ι ⊕ ι', ‖m i‖
[PROOFSTEP]
simpa [Fintype.prod_sum_type, mul_assoc] using (f (m ∘ Sum.inl)).le_of_op_norm_le (m ∘ Sum.inr) (f.le_op_norm _)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'
⊢ currySum (f + g) = currySum f + currySum g
[PROOFSTEP]
ext
[GOAL]
case H.H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'
x✝¹ : ι → G
x✝ : ι' → G
⊢ ↑(↑(currySum (f + g)) x✝¹) x✝ = ↑(↑(currySum f + currySum g) x✝¹) x✝
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : ContinuousMultilinearMap 𝕜 (fun x => G) G'
⊢ AddHom.toFun
      { toFun := currySum,
        map_add' :=
          (_ : ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'), currySum (f + g) = currySum f + currySum g) }
      (c • f) =
    ↑(RingHom.id 𝕜) c •
      AddHom.toFun
        { toFun := currySum,
          map_add' :=
            (_ : ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'), currySum (f + g) = currySum f + currySum g) }
        f
[PROOFSTEP]
ext
[GOAL]
case H.H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f : ContinuousMultilinearMap 𝕜 (fun x => G) G'
x✝¹ : ι → G
x✝ : ι' → G
⊢ ↑(↑(AddHom.toFun
              { toFun := currySum,
                map_add' :=
                  (_ :
                    ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'), currySum (f + g) = currySum f + currySum g) }
              (c • f))
          x✝¹)
      x✝ =
    ↑(↑(↑(RingHom.id 𝕜) c •
              AddHom.toFun
                { toFun := currySum,
                  map_add' :=
                    (_ :
                      ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                        currySum (f + g) = currySum f + currySum g) }
                f)
          x✝¹)
      x✝
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) G'
⊢ uncurrySum
      (AddHom.toFun
        {
            toAddHom :=
              { toFun := currySum,
                map_add' :=
                  (_ :
                    ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'), currySum (f + g) = currySum f + currySum g) },
            map_smul' :=
              (_ :
                ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                  AddHom.toFun
                      { toFun := currySum,
                        map_add' :=
                          (_ :
                            ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                              currySum (f + g) = currySum f + currySum g) }
                      (c • f) =
                    ↑(RingHom.id 𝕜) c •
                      AddHom.toFun
                        { toFun := currySum,
                          map_add' :=
                            (_ :
                              ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                currySum (f + g) = currySum f + currySum g) }
                        f) }.toAddHom
        f) =
    f
[PROOFSTEP]
ext m
[GOAL]
case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) G'
m : ι ⊕ ι' → G
⊢ ↑(uncurrySum
          (AddHom.toFun
            {
                toAddHom :=
                  { toFun := currySum,
                    map_add' :=
                      (_ :
                        ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                          currySum (f + g) = currySum f + currySum g) },
                map_smul' :=
                  (_ :
                    ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                      AddHom.toFun
                          { toFun := currySum,
                            map_add' :=
                              (_ :
                                ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                  currySum (f + g) = currySum f + currySum g) }
                          (c • f) =
                        ↑(RingHom.id 𝕜) c •
                          AddHom.toFun
                            { toFun := currySum,
                              map_add' :=
                                (_ :
                                  ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                    currySum (f + g) = currySum f + currySum g) }
                            f) }.toAddHom
            f))
      m =
    ↑f m
[PROOFSTEP]
exact congr_arg f (Sum.elim_comp_inl_inr m)
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) (ContinuousMultilinearMap 𝕜 (fun x => G) G')
⊢ AddHom.toFun
      {
          toAddHom :=
            { toFun := currySum,
              map_add' :=
                (_ :
                  ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'), currySum (f + g) = currySum f + currySum g) },
          map_smul' :=
            (_ :
              ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                AddHom.toFun
                    { toFun := currySum,
                      map_add' :=
                        (_ :
                          ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                            currySum (f + g) = currySum f + currySum g) }
                    (c • f) =
                  ↑(RingHom.id 𝕜) c •
                    AddHom.toFun
                      { toFun := currySum,
                        map_add' :=
                          (_ :
                            ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                              currySum (f + g) = currySum f + currySum g) }
                      f) }.toAddHom
      (uncurrySum f) =
    f
[PROOFSTEP]
ext m₁ m₂
[GOAL]
case H.H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) (ContinuousMultilinearMap 𝕜 (fun x => G) G')
m₁ : ι → G
m₂ : ι' → G
⊢ ↑(↑(AddHom.toFun
              {
                  toAddHom :=
                    { toFun := currySum,
                      map_add' :=
                        (_ :
                          ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                            currySum (f + g) = currySum f + currySum g) },
                  map_smul' :=
                    (_ :
                      ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                        AddHom.toFun
                            { toFun := currySum,
                              map_add' :=
                                (_ :
                                  ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                    currySum (f + g) = currySum f + currySum g) }
                            (c • f) =
                          ↑(RingHom.id 𝕜) c •
                            AddHom.toFun
                              { toFun := currySum,
                                map_add' :=
                                  (_ :
                                    ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                      currySum (f + g) = currySum f + currySum g) }
                              f) }.toAddHom
              (uncurrySum f))
          m₁)
      m₂ =
    ↑(↑f m₁) m₂
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) (ContinuousMultilinearMap 𝕜 (fun x => G) G')
⊢ ‖↑(LinearEquiv.symm
            {
              toLinearMap :=
                {
                  toAddHom :=
                    { toFun := currySum,
                      map_add' :=
                        (_ :
                          ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                            currySum (f + g) = currySum f + currySum g) },
                  map_smul' :=
                    (_ :
                      ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                        AddHom.toFun
                            { toFun := currySum,
                              map_add' :=
                                (_ :
                                  ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                    currySum (f + g) = currySum f + currySum g) }
                            (c • f) =
                          ↑(RingHom.id 𝕜) c •
                            AddHom.toFun
                              { toFun := currySum,
                                map_add' :=
                                  (_ :
                                    ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                      currySum (f + g) = currySum f + currySum g) }
                              f) },
              invFun := uncurrySum,
              left_inv :=
                (_ :
                  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                    uncurrySum
                        (AddHom.toFun
                          {
                              toAddHom :=
                                { toFun := currySum,
                                  map_add' :=
                                    (_ :
                                      ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                        currySum (f + g) = currySum f + currySum g) },
                              map_smul' :=
                                (_ :
                                  ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                    AddHom.toFun
                                        { toFun := currySum,
                                          map_add' :=
                                            (_ :
                                              ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                                currySum (f + g) = currySum f + currySum g) }
                                        (c • f) =
                                      ↑(RingHom.id 𝕜) c •
                                        AddHom.toFun
                                          { toFun := currySum,
                                            map_add' :=
                                              (_ :
                                                ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                                  currySum (f + g) = currySum f + currySum g) }
                                          f) }.toAddHom
                          f) =
                      f),
              right_inv :=
                (_ :
                  ∀ (f : ContinuousMultilinearMap 𝕜 (fun x => G) (ContinuousMultilinearMap 𝕜 (fun x => G) G')),
                    AddHom.toFun
                        {
                            toAddHom :=
                              { toFun := currySum,
                                map_add' :=
                                  (_ :
                                    ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                      currySum (f + g) = currySum f + currySum g) },
                            map_smul' :=
                              (_ :
                                ∀ (c : 𝕜) (f : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                  AddHom.toFun
                                      { toFun := currySum,
                                        map_add' :=
                                          (_ :
                                            ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                              currySum (f + g) = currySum f + currySum g) }
                                      (c • f) =
                                    ↑(RingHom.id 𝕜) c •
                                      AddHom.toFun
                                        { toFun := currySum,
                                          map_add' :=
                                            (_ :
                                              ∀ (f g : ContinuousMultilinearMap 𝕜 (fun x => G) G'),
                                                currySum (f + g) = currySum f + currySum g) }
                                        f) }.toAddHom
                        (uncurrySum f) =
                      f) })
        f‖ ≤
    ‖f‖
[PROOFSTEP]
simp only [LinearEquiv.coe_symm_mk]
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 (fun x => G) (ContinuousMultilinearMap 𝕜 (fun x => G) G')
⊢ ‖uncurrySum f‖ ≤ ‖f‖
[PROOFSTEP]
exact MultilinearMap.mkContinuous_norm_le _ (norm_nonneg f) _
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
k l : ℕ
s : Finset (Fin n)
hk : card s = k
hl : card sᶜ = l
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
x y : G
⊢ (↑(↑(↑(curryFinFinset 𝕜 G G' hk hl) f) fun x_1 => x) fun x => y) = ↑f (piecewise s (fun x_1 => x) fun x => y)
[PROOFSTEP]
refine'
  (curryFinFinset_symm_apply_piecewise_const hk hl _ _ _).symm.trans
    _
      -- `rw` fails
[GOAL]
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
k l : ℕ
s : Finset (Fin n)
hk : card s = k
hl : card sᶜ = l
f : ContinuousMultilinearMap 𝕜 (fun i => G) G'
x y : G
⊢ ↑(↑(LinearIsometryEquiv.symm (curryFinFinset 𝕜 G G' hk hl)) (↑(curryFinFinset 𝕜 G G' hk hl) f))
      (piecewise s (fun x_1 => x) fun x => y) =
    ↑f (piecewise s (fun x_1 => x) fun x => y)
[PROOFSTEP]
rw [LinearIsometryEquiv.symm_apply_apply]