@@ -369,22 +369,26 @@ abbrev pseudoMetricAux : PseudoMetricSpace (PiLp p α) :=
369
369
370
370
attribute [local instance] PiLp.pseudoMetricAux
371
371
372
- theorem lipschitzWith_equiv_aux : LipschitzWith 1 (WithLp.equiv p (∀ i, β i)) := by
373
- intro x y
374
- simp_rw [ENNReal.coe_one, one_mul, edist_pi_def, Finset.sup_le_iff, Finset.mem_univ,
375
- forall_true_left, WithLp.equiv_pi_apply]
372
+ variable {p β} in
373
+ private theorem edist_apply_le_edist_aux (x y : PiLp p β) (i : ι) :
374
+ edist (x i) (y i) ≤ edist x y := by
376
375
rcases p.dichotomy with (rfl | h)
377
- · simpa only [edist_eq_iSup] using le_iSup fun i => edist (x i) (y i)
376
+ · simpa only [edist_eq_iSup] using le_iSup ( fun i => edist (x i) (y i)) i
378
377
· have cancel : p.toReal * (1 / p.toReal) = 1 := mul_div_cancel₀ 1 (zero_lt_one.trans_le h).ne'
379
378
rw [edist_eq_sum (zero_lt_one.trans_le h)]
380
- intro i
381
379
calc
382
380
edist (x i) (y i) = (edist (x i) (y i) ^ p.toReal) ^ (1 / p.toReal) := by
383
381
simp [← ENNReal.rpow_mul, cancel, -one_div]
384
382
_ ≤ (∑ i, edist (x i) (y i) ^ p.toReal) ^ (1 / p.toReal) := by
385
383
gcongr
386
384
exact Finset.single_le_sum (fun i _ => (bot_le : (0 : ℝ≥0 ∞) ≤ _)) (Finset.mem_univ i)
387
385
386
+ theorem lipschitzWith_equiv_aux : LipschitzWith 1 (WithLp.equiv p (∀ i, β i)) :=
387
+ .of_edist_le fun x y => by
388
+ simp_rw [edist_pi_def, Finset.sup_le_iff, Finset.mem_univ,
389
+ forall_true_left, WithLp.equiv_pi_apply]
390
+ exact edist_apply_le_edist_aux _ _
391
+
388
392
theorem antilipschitzWith_equiv_aux :
389
393
AntilipschitzWith ((Fintype.card ι : ℝ≥0 ) ^ (1 / p).toReal) (WithLp.equiv p (∀ i, β i)) := by
390
394
intro x y
@@ -494,6 +498,23 @@ theorem nndist_eq_iSup {β : ι → Type*} [∀ i, PseudoMetricSpace (β i)] (x
494
498
push_cast
495
499
exact dist_eq_iSup _ _
496
500
501
+ section
502
+ variable {β p}
503
+
504
+ theorem edist_apply_le [∀ i, PseudoEMetricSpace (β i)] (x y : PiLp p β) (i : ι) :
505
+ edist (x i) (y i) ≤ edist x y :=
506
+ edist_apply_le_edist_aux x y i
507
+
508
+ theorem nndist_apply_le [∀ i, PseudoMetricSpace (β i)] (x y : PiLp p β) (i : ι) :
509
+ nndist (x i) (y i) ≤ nndist x y := by
510
+ simpa [← coe_nnreal_ennreal_nndist] using edist_apply_le x y i
511
+
512
+ theorem dist_apply_le [∀ i, PseudoMetricSpace (β i)] (x y : PiLp p β) (i : ι) :
513
+ dist (x i) (y i) ≤ dist x y :=
514
+ nndist_apply_le x y i
515
+
516
+ end
517
+
497
518
theorem lipschitzWith_equiv [∀ i, PseudoEMetricSpace (β i)] :
498
519
LipschitzWith 1 (WithLp.equiv p (∀ i, β i)) :=
499
520
lipschitzWith_equiv_aux p β
@@ -525,6 +546,23 @@ instance seminormedAddCommGroup [∀ i, SeminormedAddCommGroup (β i)] :
525
546
simp only [dist_eq_sum (zero_lt_one.trans_le h), norm_eq_sum (zero_lt_one.trans_le h),
526
547
dist_eq_norm, sub_apply] }
527
548
549
+ section
550
+ variable {β p}
551
+
552
+ theorem enorm_apply_le [∀ i, SeminormedAddCommGroup (β i)] (x : PiLp p β) (i : ι) :
553
+ ‖x i‖ₑ ≤ ‖x‖ₑ := by
554
+ simpa using edist_apply_le x 0 i
555
+
556
+ theorem nnnorm_apply_le [∀ i, SeminormedAddCommGroup (β i)] (x : PiLp p β) (i : ι) :
557
+ ‖x i‖₊ ≤ ‖x‖₊ := by
558
+ simpa using nndist_apply_le x 0 i
559
+
560
+ theorem norm_apply_le [∀ i, SeminormedAddCommGroup (β i)] (x : PiLp p β) (i : ι) :
561
+ ‖x i‖ ≤ ‖x‖ := by
562
+ simpa using dist_apply_le x 0 i
563
+
564
+ end
565
+
528
566
/-- normed group instance on the product of finitely many normed groups, using the `L^p` norm. -/
529
567
instance normedAddCommGroup [∀ i, NormedAddCommGroup (α i)] : NormedAddCommGroup (PiLp p α) :=
530
568
{ PiLp.seminormedAddCommGroup p α with
0 commit comments