@@ -539,6 +539,112 @@ begin
539
539
exact mul_nonneg (norm_nonneg _) (pow_nonneg (norm_nonneg _) _)
540
540
end
541
541
542
+ section
543
+
544
+ variables (𝕜 ι) (A : Type *) [normed_comm_ring A] [normed_algebra 𝕜 A]
545
+
546
+ /-- The continuous multilinear map on `A^ι`, where `A` is a normed commutative algebra
547
+ over `𝕜`, associating to `m` the product of all the `m i`.
548
+
549
+ See also `continuous_multilinear_map.mk_pi_algebra_fin`. -/
550
+ protected def mk_pi_algebra : continuous_multilinear_map 𝕜 (λ i : ι, A) A :=
551
+ @multilinear_map.mk_continuous 𝕜 ι (λ i : ι, A) A _ _ _ _ _ _ _
552
+ (multilinear_map.mk_pi_algebra 𝕜 ι A) (if nonempty ι then 1 else ∥(1 : A)∥) $
553
+ begin
554
+ intro m,
555
+ by_cases hι : nonempty ι,
556
+ { resetI, simp [hι, norm_prod_le' univ univ_nonempty] },
557
+ { simp [eq_empty_of_not_nonempty hι univ, hι] }
558
+ end
559
+
560
+ variables {A 𝕜 ι}
561
+
562
+ @[simp] lemma mk_pi_algebra_apply (m : ι → A) :
563
+ continuous_multilinear_map.mk_pi_algebra 𝕜 ι A m = ∏ i, m i :=
564
+ rfl
565
+
566
+ lemma norm_mk_pi_algebra_le [nonempty ι] :
567
+ ∥continuous_multilinear_map.mk_pi_algebra 𝕜 ι A∥ ≤ 1 :=
568
+ calc ∥continuous_multilinear_map.mk_pi_algebra 𝕜 ι A∥ ≤ if nonempty ι then 1 else ∥(1 : A)∥ :
569
+ multilinear_map.mk_continuous_norm_le _ (by split_ifs; simp [zero_le_one]) _
570
+ ... = _ : if_pos ‹_›
571
+
572
+ lemma norm_mk_pi_algebra_of_empty (h : ¬nonempty ι) :
573
+ ∥continuous_multilinear_map.mk_pi_algebra 𝕜 ι A∥ = ∥(1 : A)∥ :=
574
+ begin
575
+ apply le_antisymm,
576
+ calc ∥continuous_multilinear_map.mk_pi_algebra 𝕜 ι A∥ ≤ if nonempty ι then 1 else ∥(1 : A)∥ :
577
+ multilinear_map.mk_continuous_norm_le _ (by split_ifs; simp [zero_le_one]) _
578
+ ... = ∥(1 : A)∥ : if_neg ‹_›,
579
+ convert ratio_le_op_norm _ (λ _, 1 ); [skip, apply_instance],
580
+ simp [eq_empty_of_not_nonempty h univ]
581
+ end
582
+
583
+ @[simp] lemma norm_mk_pi_algebra [norm_one_class A] :
584
+ ∥continuous_multilinear_map.mk_pi_algebra 𝕜 ι A∥ = 1 :=
585
+ begin
586
+ by_cases hι : nonempty ι,
587
+ { resetI,
588
+ refine le_antisymm norm_mk_pi_algebra_le _,
589
+ convert ratio_le_op_norm _ (λ _, 1 ); [skip, apply_instance],
590
+ simp },
591
+ { simp [norm_mk_pi_algebra_of_empty hι] }
592
+ end
593
+
594
+ end
595
+
596
+ section
597
+
598
+ variables (𝕜 n) (A : Type *) [normed_ring A] [normed_algebra 𝕜 A]
599
+
600
+ /-- The continuous multilinear map on `A^n`, where `A` is a normed algebra over `𝕜`, associating to
601
+ `m` the product of all the `m i`.
602
+
603
+ See also: `multilinear_map.mk_pi_algebra`. -/
604
+ protected def mk_pi_algebra_fin : continuous_multilinear_map 𝕜 (λ i : fin n, A) A :=
605
+ @multilinear_map.mk_continuous 𝕜 (fin n) (λ i : fin n, A) A _ _ _ _ _ _ _
606
+ (multilinear_map.mk_pi_algebra_fin 𝕜 n A) (nat.cases_on n ∥(1 : A)∥ (λ _, 1 )) $
607
+ begin
608
+ intro m,
609
+ cases n,
610
+ { simp },
611
+ { have : @list.of_fn A n.succ m ≠ [] := by simp,
612
+ simpa [← fin.prod_of_fn] using list.norm_prod_le' this }
613
+ end
614
+
615
+ variables {A 𝕜 n}
616
+
617
+ @[simp] lemma mk_pi_algebra_fin_apply (m : fin n → A) :
618
+ continuous_multilinear_map.mk_pi_algebra_fin 𝕜 n A m = (list.of_fn m).prod :=
619
+ rfl
620
+
621
+ lemma norm_mk_pi_algebra_fin_succ_le :
622
+ ∥continuous_multilinear_map.mk_pi_algebra_fin 𝕜 n.succ A∥ ≤ 1 :=
623
+ multilinear_map.mk_continuous_norm_le _ zero_le_one _
624
+
625
+ lemma norm_mk_pi_algebra_fin_le_of_pos (hn : 0 < n) :
626
+ ∥continuous_multilinear_map.mk_pi_algebra_fin 𝕜 n A∥ ≤ 1 :=
627
+ by cases n; [exact hn.false.elim, exact norm_mk_pi_algebra_fin_succ_le]
628
+
629
+ lemma norm_mk_pi_algebra_fin_zero :
630
+ ∥continuous_multilinear_map.mk_pi_algebra_fin 𝕜 0 A∥ = ∥(1 : A)∥ :=
631
+ begin
632
+ refine le_antisymm (multilinear_map.mk_continuous_norm_le _ (norm_nonneg _) _) _,
633
+ convert ratio_le_op_norm _ (λ _, 1 ); [simp, apply_instance]
634
+ end
635
+
636
+ lemma norm_mk_pi_algebra_fin [norm_one_class A] :
637
+ ∥continuous_multilinear_map.mk_pi_algebra_fin 𝕜 n A∥ = 1 :=
638
+ begin
639
+ cases n,
640
+ { simp [norm_mk_pi_algebra_fin_zero] },
641
+ { refine le_antisymm norm_mk_pi_algebra_fin_succ_le _,
642
+ convert ratio_le_op_norm _ (λ _, 1 ); [skip, apply_instance],
643
+ simp }
644
+ end
645
+
646
+ end
647
+
542
648
variables (𝕜 ι)
543
649
544
650
/-- The canonical continuous multilinear map on `𝕜^ι`, associating to `m` the product of all the
@@ -553,14 +659,9 @@ variables {𝕜 ι}
553
659
@[simp] lemma mk_pi_field_apply (z : E₂) (m : ι → 𝕜) :
554
660
(continuous_multilinear_map.mk_pi_field 𝕜 ι z : (ι → 𝕜) → E₂) m = (∏ i, m i) • z := rfl
555
661
556
- lemma mk_pi_ring_apply_one_eq_self (f : continuous_multilinear_map 𝕜 (λ(i : ι), 𝕜) E₂) :
662
+ lemma mk_pi_field_apply_one_eq_self (f : continuous_multilinear_map 𝕜 (λ(i : ι), 𝕜) E₂) :
557
663
continuous_multilinear_map.mk_pi_field 𝕜 ι (f (λi, 1 )) = f :=
558
- begin
559
- ext m,
560
- have : m = (λi, m i • 1 ), by { ext j, simp },
561
- conv_rhs { rw [this , f.map_smul_univ] },
562
- refl
563
- end
664
+ to_multilinear_map_inj f.to_multilinear_map.mk_pi_ring_apply_one_eq_self
564
665
565
666
variables (𝕜 ι E₂)
566
667
@@ -575,7 +676,7 @@ protected def pi_field_equiv_aux : E₂ ≃ₗ[𝕜] (continuous_multilinear_map
575
676
map_add' := λ z z', by { ext m, simp [smul_add] },
576
677
map_smul' := λ c z, by { ext m, simp [smul_smul, mul_comm] },
577
678
left_inv := λ z, by simp,
578
- right_inv := λ f, f.mk_pi_ring_apply_one_eq_self }
679
+ right_inv := λ f, f.mk_pi_field_apply_one_eq_self }
579
680
580
681
/-- Continuous multilinear maps on `𝕜^n` with values in `E₂` are in bijection with `E₂`, as such a
581
682
continuous multilinear map is completely determined by its value on the constant vector made of
0 commit comments