@@ -1434,82 +1434,6 @@ theorem nnnorm_ofSubsingleton_id [Subsingleton ι] [Nontrivial G] (i : ι) :
1434
1434
NNReal.eq <| norm_ofSubsingleton_id _ _ _
1435
1435
#align continuous_multilinear_map.nnnorm_of_subsingleton ContinuousMultilinearMap.nnnorm_ofSubsingleton_id
1436
1436
1437
- variable {𝕜 G}
1438
-
1439
- open Topology Filter
1440
-
1441
- /-- If the target space is complete, the space of continuous multilinear maps with its norm is also
1442
- complete. The proof is essentially the same as for the space of continuous linear maps (modulo the
1443
- addition of `Finset.prod` where needed). The duplication could be avoided by deducing the linear
1444
- case from the multilinear case via a currying isomorphism. However, this would mess up imports,
1445
- and it is more satisfactory to have the simplest case as a standalone proof. -/
1446
- instance completeSpace [CompleteSpace G] : CompleteSpace (ContinuousMultilinearMap 𝕜 E G) := by
1447
- -- We show that every Cauchy sequence converges.
1448
- refine Metric.complete_of_cauchySeq_tendsto fun f hf => ?_
1449
- -- We now expand out the definition of a Cauchy sequence,
1450
- rcases cauchySeq_iff_le_tendsto_0.1 hf with ⟨b, b0, b_bound, b_lim⟩
1451
- -- and establish that the evaluation at any point `v : Π i, E i` is Cauchy.
1452
- have cau : ∀ v, CauchySeq fun n => f n v := by
1453
- intro v
1454
- apply cauchySeq_iff_le_tendsto_0.2 ⟨fun n => b n * ∏ i, ‖v i‖, _, _, _⟩
1455
- · intro n
1456
- have := b0 n
1457
- positivity
1458
- · intro n m N hn hm
1459
- rw [dist_eq_norm]
1460
- apply le_trans ((f n - f m).le_opNorm v) _
1461
- exact mul_le_mul_of_nonneg_right (b_bound n m N hn hm) <| by positivity
1462
- · simpa using b_lim.mul tendsto_const_nhds
1463
- -- We assemble the limits points of those Cauchy sequences
1464
- -- (which exist as `G` is complete)
1465
- -- into a function which we call `F`.
1466
- choose F hF using fun v => cauchySeq_tendsto_of_complete (cau v)
1467
- -- Next, we show that this `F` is multilinear,
1468
- let Fmult : MultilinearMap 𝕜 E G :=
1469
- { toFun := F
1470
- map_add' := fun v i x y => by
1471
- have A := hF (Function.update v i (x + y))
1472
- have B := (hF (Function.update v i x)).add (hF (Function.update v i y))
1473
- simp? at A B says simp only [map_add] at A B
1474
- exact tendsto_nhds_unique A B
1475
- map_smul' := fun v i c x => by
1476
- have A := hF (Function.update v i (c • x))
1477
- have B := Filter.Tendsto.smul (tendsto_const_nhds (x := c)) (hF (Function.update v i x))
1478
- simp? at A B says simp only [map_smul] at A B
1479
- exact tendsto_nhds_unique A B }
1480
- -- and that `F` has norm at most `(b 0 + ‖f 0‖)`.
1481
- have Fnorm : ∀ v, ‖F v‖ ≤ (b 0 + ‖f 0 ‖) * ∏ i, ‖v i‖ := by
1482
- intro v
1483
- have A : ∀ n, ‖f n v‖ ≤ (b 0 + ‖f 0 ‖) * ∏ i, ‖v i‖ := by
1484
- intro n
1485
- apply le_trans ((f n).le_opNorm _) _
1486
- apply mul_le_mul_of_nonneg_right _ <| by positivity
1487
- calc
1488
- ‖f n‖ = ‖f n - f 0 + f 0 ‖ := by
1489
- congr 1
1490
- abel
1491
- _ ≤ ‖f n - f 0 ‖ + ‖f 0 ‖ := norm_add_le _ _
1492
- _ ≤ b 0 + ‖f 0 ‖ := by
1493
- apply add_le_add_right
1494
- simpa [dist_eq_norm] using b_bound n 0 0 (zero_le _) (zero_le _)
1495
- exact le_of_tendsto (hF v).norm (eventually_of_forall A)
1496
- -- Thus `F` is continuous, and we propose that as the limit point of our original Cauchy sequence.
1497
- let Fcont := Fmult.mkContinuous _ Fnorm
1498
- use Fcont
1499
- -- Our last task is to establish convergence to `F` in norm.
1500
- have : ∀ n, ‖f n - Fcont‖ ≤ b n := by
1501
- intro n
1502
- apply opNorm_le_bound _ (b0 n) fun v => ?_
1503
- have A : ∀ᶠ m in atTop, ‖(f n - f m) v‖ ≤ b n * ∏ i, ‖v i‖ := by
1504
- refine eventually_atTop.2 ⟨n, fun m hm => ?_⟩
1505
- apply le_trans ((f n - f m).le_opNorm _) _
1506
- exact mul_le_mul_of_nonneg_right (b_bound n m n le_rfl hm) <| by positivity
1507
- have B : Tendsto (fun m => ‖(f n - f m) v‖) atTop (𝓝 ‖(f n - Fcont) v‖) :=
1508
- Tendsto.norm (tendsto_const_nhds.sub (hF v))
1509
- exact le_of_tendsto B A
1510
- rw [tendsto_iff_norm_sub_tendsto_zero]
1511
- exact squeeze_zero (fun n => norm_nonneg _) this b_lim
1512
-
1513
1437
end ContinuousMultilinearMap
1514
1438
1515
1439
end Norm
0 commit comments