Theorem: ContinuousMultilinearMap.norm_mkPiAlgebraFin_succ_le
File: Mathlib/Analysis/NormedSpace/Multilinear.lean

tactic: have := fun f => @op_norm_le_bound 𝕜 (Fin n.succ) (fun _ => A) A _ _ _ _ _ _ f _ zero_le_one
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → 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

tactic: refine' this _ _
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → 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

tactic: intro m
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → 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‖

tactic: simp only [ContinuousMultilinearMap.mkPiAlgebraFin_apply, one_mul, List.ofFn_eq_map,
  Fin.prod_univ_def, Multiset.coe_map, Multiset.coe_prod]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → 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‖

tactic: refine' (List.norm_prod_le' _).trans_eq _
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : (i : Fin (Nat.succ n)) → 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)))

tactic: rw [List.map_map]
state_before: 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)))

tactic: rfl
state_before: 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)))

tactic: rw [Ne.def, List.map_eq_nil, List.finRange_eq_nil]
state_before: 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)) ≠ []

tactic: exact Nat.succ_ne_zero _
state_before: 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