@@ -468,19 +468,28 @@ instance (priority := 100) MeasurableDiv.toMeasurableInv [MeasurableSpace α] [G
468
468
[MeasurableDiv α] : MeasurableInv α where
469
469
measurable_inv := by simpa using measurable_const_div (1 : α)
470
470
471
+ /-- We say that the action of `M` on `α` has `MeasurableConstVAdd` if for each `c` the map
472
+ `x ↦ c +ᵥ x` is a measurable function. -/
473
+ class MeasurableConstVAdd (M α : Type *) [VAdd M α] [MeasurableSpace α] : Prop where
474
+ measurable_const_vadd : ∀ c : M, Measurable (c +ᵥ · : α → α)
475
+
476
+ /-- We say that the action of `M` on `α` has `MeasurableConstSMul` if for each `c` the map
477
+ `x ↦ c • x` is a measurable function. -/
478
+ @[to_additive]
479
+ class MeasurableConstSMul (M α : Type *) [SMul M α] [MeasurableSpace α] : Prop where
480
+ measurable_const_smul : ∀ c : M, Measurable (c • · : α → α)
481
+
471
482
/-- We say that the action of `M` on `α` has `MeasurableVAdd` if for each `c` the map `x ↦ c +ᵥ x`
472
483
is a measurable function and for each `x` the map `c ↦ c +ᵥ x` is a measurable function. -/
473
- class MeasurableVAdd (M α : Type *) [VAdd M α] [MeasurableSpace M] [MeasurableSpace α] :
474
- Prop where
475
- measurable_const_vadd : ∀ c : M, Measurable (c +ᵥ · : α → α)
484
+ class MeasurableVAdd (M α : Type *) [VAdd M α] [MeasurableSpace M] [MeasurableSpace α]
485
+ extends MeasurableConstVAdd M α where
476
486
measurable_vadd_const : ∀ x : α, Measurable (· +ᵥ x : M → α)
477
487
478
488
/-- We say that the action of `M` on `α` has `MeasurableSMul` if for each `c` the map `x ↦ c • x`
479
489
is a measurable function and for each `x` the map `c ↦ c • x` is a measurable function. -/
480
490
@[to_additive]
481
- class MeasurableSMul (M α : Type *) [SMul M α] [MeasurableSpace M] [MeasurableSpace α] :
482
- Prop where
483
- measurable_const_smul : ∀ c : M, Measurable (c • · : α → α)
491
+ class MeasurableSMul (M α : Type *) [SMul M α] [MeasurableSpace M] [MeasurableSpace α]
492
+ extends MeasurableConstSMul M α where
484
493
measurable_smul_const : ∀ x : α, Measurable (· • x : M → α)
485
494
486
495
/-- We say that the action of `M` on `α` has `MeasurableVAdd₂` if the map
@@ -496,39 +505,89 @@ class MeasurableSMul₂ (M α : Type*) [SMul M α] [MeasurableSpace M] [Measurab
496
505
Prop where
497
506
measurable_smul : Measurable (Function.uncurry (· • ·) : M × α → α)
498
507
499
- export MeasurableSMul (measurable_const_smul measurable_smul_const)
500
-
508
+ export MeasurableConstVAdd (measurable_const_vadd)
509
+ export MeasurableConstSMul (measurable_const_smul)
510
+ export MeasurableVAdd (measurable_vadd_const)
511
+ export MeasurableSMul (measurable_smul_const)
501
512
export MeasurableSMul₂ (measurable_smul)
502
-
503
- export MeasurableVAdd (measurable_const_vadd measurable_vadd_const)
504
-
505
513
export MeasurableVAdd₂ (measurable_vadd)
506
514
507
515
@[to_additive]
508
516
instance measurableSMul_of_mul (M : Type *) [Mul M] [MeasurableSpace M] [MeasurableMul M] :
509
- MeasurableSMul M M :=
510
- ⟨measurable_id.const_mul, measurable_id.mul_const⟩
517
+ MeasurableSMul M M where
518
+ measurable_const_smul := measurable_id.const_mul
519
+ measurable_smul_const := measurable_id.mul_const
511
520
512
521
@[to_additive]
513
522
instance measurableSMul₂_of_mul (M : Type *) [Mul M] [MeasurableSpace M] [MeasurableMul₂ M] :
514
523
MeasurableSMul₂ M M :=
515
524
⟨measurable_mul⟩
516
525
517
526
@[to_additive]
518
- instance Submonoid.measurableSMul {M α} [MeasurableSpace M] [MeasurableSpace α] [Monoid M]
519
- [MulAction M α] [MeasurableSMul M α] (s : Submonoid M) : MeasurableSMul s α :=
520
- ⟨fun c => by simpa only using measurable_const_smul (c : M), fun x =>
521
- (measurable_smul_const x : Measurable fun c : M => c • x).comp measurable_subtype_coe⟩
527
+ instance Submonoid.instMeasurableConstSMul {M α} [MeasurableSpace α] [Monoid M] [MulAction M α]
528
+ [MeasurableConstSMul M α] (s : Submonoid M) : MeasurableConstSMul s α where
529
+ measurable_const_smul c := by simpa only using measurable_const_smul (c : M)
530
+
531
+ @[to_additive]
532
+ instance Submonoid.instMeasurableSMul {M α} [MeasurableSpace M] [MeasurableSpace α] [Monoid M]
533
+ [MulAction M α] [MeasurableSMul M α] (s : Submonoid M) : MeasurableSMul s α where
534
+ measurable_smul_const x := (measurable_smul_const (M := M) x).comp measurable_subtype_coe
522
535
523
536
@[to_additive]
524
- instance Subgroup.measurableSMul {G α} [MeasurableSpace G] [MeasurableSpace α] [Group G]
537
+ instance Subgroup.instMeasurableConstSMul {G α} [MeasurableSpace α] [Group G] [MulAction G α]
538
+ [MeasurableConstSMul G α] (s : Subgroup G) : MeasurableConstSMul s α :=
539
+ s.toSubmonoid.instMeasurableConstSMul
540
+
541
+ @[to_additive]
542
+ instance Subgroup.instMeasurableSMul {G α} [MeasurableSpace G] [MeasurableSpace α] [Group G]
525
543
[MulAction G α] [MeasurableSMul G α] (s : Subgroup G) : MeasurableSMul s α :=
526
- s.toSubmonoid.measurableSMul
544
+ s.toSubmonoid.instMeasurableSMul
527
545
528
546
section SMul
547
+ variable {M X α β : Type *} [MeasurableSpace X] [SMul M X]
548
+ {m : MeasurableSpace α} {mβ : MeasurableSpace β} {μ : Measure α} {f : α → M} {g : α → X}
549
+
550
+ section MeasurableConstSMul
551
+ variable [MeasurableConstSMul M X]
552
+
553
+ @[to_additive (attr := fun_prop, measurability)]
554
+ lemma Measurable.const_smul (hg : Measurable g) (c : M) : Measurable (c • g) :=
555
+ (measurable_const_smul c).comp hg
556
+
557
+ /-- Compositional version of `Measurable.const_smul` for use by `fun_prop`. -/
558
+ @[to_additive (attr := fun_prop)
559
+ "Compositional version of `Measurable.const_vadd` for use by `fun_prop`." ]
560
+ lemma Measurable.fun_const_smul {g : α → β → X} {h : α → β} (hg : Measurable ↿g) (hh : Measurable h)
561
+ (c : M) : Measurable fun a ↦ (c • g a) (h a) :=
562
+ (hg.comp <| measurable_id.prodMk hh).const_smul _
563
+
564
+ @[deprecated (since := "2025-04-23")] alias Measurable.const_smul' := Measurable.fun_const_smul
565
+
566
+ @[to_additive (attr := fun_prop, measurability)]
567
+ lemma AEMeasurable.fun_const_smul (hg : AEMeasurable g μ) (c : M) : AEMeasurable (c • g ·) μ :=
568
+ (measurable_const_smul c).comp_aemeasurable hg
569
+
570
+ @[deprecated (since := "2025-04-23")] alias AEMeasurable.const_smul' := AEMeasurable.fun_const_smul
571
+
572
+ @[to_additive (attr := fun_prop, measurability)]
573
+ lemma AEMeasurable.const_smul (hf : AEMeasurable g μ) (c : M) : AEMeasurable (c • g) μ :=
574
+ hf.fun_const_smul c
575
+
576
+ @[to_additive]
577
+ instance Pi.instMeasurableConstSMul {ι : Type *} {α : ι → Type *} [∀ i, SMul M (α i)]
578
+ [∀ i, MeasurableSpace (α i)] [∀ i, MeasurableConstSMul M (α i)] :
579
+ MeasurableConstSMul M (∀ i, α i) where
580
+ measurable_const_smul _ := measurable_pi_iff.2 fun i ↦ (measurable_pi_apply i).const_smul _
581
+
582
+ /-- If a scalar is central, then its right action is measurable when its left action is. -/
583
+ @[to_additive]
584
+ nonrec instance MulOpposite.instMeasurableConstSMul [SMul M α] [SMul Mᵐᵒᵖ α] [IsCentralScalar M α]
585
+ [MeasurableConstSMul M α] : MeasurableConstSMul Mᵐᵒᵖ α where
586
+ measurable_const_smul := by simpa using measurable_const_smul
587
+
588
+ end MeasurableConstSMul
529
589
530
- variable {M X α β : Type *} [MeasurableSpace M] [MeasurableSpace X] [SMul M X]
531
- {m : MeasurableSpace α} {mβ : MeasurableSpace β} {f : α → M} {g : α → X}
590
+ variable [MeasurableSpace M]
532
591
533
592
@[to_additive (attr := fun_prop, aesop safe 20 apply (rule_sets := [Measurable] ))]
534
593
theorem Measurable.smul [MeasurableSMul₂ M X] (hf : Measurable f) (hg : Measurable g) :
@@ -549,10 +608,11 @@ theorem AEMeasurable.smul [MeasurableSMul₂ M X] {μ : Measure α} (hf : AEMeas
549
608
550
609
@[to_additive]
551
610
instance (priority := 100 ) MeasurableSMul₂.toMeasurableSMul [MeasurableSMul₂ M X] :
552
- MeasurableSMul M X :=
553
- ⟨fun _ => measurable_const.smul measurable_id, fun _ => measurable_id.smul measurable_const⟩
611
+ MeasurableSMul M X where
612
+ measurable_const_smul _ := measurable_const.smul measurable_id
613
+ measurable_smul_const _ := measurable_id.smul measurable_const
554
614
555
- variable [MeasurableSMul M X] {μ : Measure α}
615
+ variable [MeasurableSMul M X]
556
616
557
617
@[to_additive (attr := fun_prop, measurability)]
558
618
theorem Measurable.smul_const (hf : Measurable f) (y : X) : Measurable fun x => f x • y :=
@@ -563,32 +623,11 @@ theorem AEMeasurable.smul_const (hf : AEMeasurable f μ) (y : X) :
563
623
AEMeasurable (fun x => f x • y) μ :=
564
624
(MeasurableSMul.measurable_smul_const y).comp_aemeasurable hf
565
625
566
- @[to_additive (attr := fun_prop, measurability)]
567
- theorem Measurable.const_smul (hg : Measurable g) (c : M) : Measurable (c • g) :=
568
- (MeasurableSMul.measurable_const_smul c).comp hg
569
-
570
- /-- Compositional version of `Measurable.const_smul` for use by `fun_prop`. -/
571
- @[to_additive (attr := fun_prop)
572
- "Compositional version of `Measurable.const_vadd` for use by `fun_prop`." ]
573
- lemma Measurable.const_smul' {g : α → β → X} {h : α → β} (hg : Measurable ↿g) (hh : Measurable h)
574
- (c : M) : Measurable fun a ↦ (c • g a) (h a) :=
575
- (hg.comp <| measurable_id.prodMk hh).const_smul _
576
-
577
- @[to_additive (attr := fun_prop, measurability)]
578
- theorem AEMeasurable.const_smul' (hg : AEMeasurable g μ) (c : M) :
579
- AEMeasurable (fun x => c • g x) μ :=
580
- (MeasurableSMul.measurable_const_smul c).comp_aemeasurable hg
581
-
582
- @[to_additive (attr := fun_prop, measurability)]
583
- theorem AEMeasurable.const_smul (hf : AEMeasurable g μ) (c : M) : AEMeasurable (c • g) μ :=
584
- hf.const_smul' c
585
-
586
626
@[to_additive]
587
627
instance Pi.measurableSMul {ι : Type *} {α : ι → Type *} [∀ i, SMul M (α i)]
588
628
[∀ i, MeasurableSpace (α i)] [∀ i, MeasurableSMul M (α i)] :
589
- MeasurableSMul M (∀ i, α i) :=
590
- ⟨fun _ => measurable_pi_iff.mpr fun i => (measurable_pi_apply i).const_smul _, fun _ =>
591
- measurable_pi_iff.mpr fun _ => measurable_smul_const _⟩
629
+ MeasurableSMul M (∀ i, α i) where
630
+ measurable_smul_const _ := measurable_pi_iff.2 fun _ ↦ measurable_smul_const _
592
631
593
632
/-- `AddMonoid.SMul` is measurable. -/
594
633
instance AddMonoid.measurableSMul_nat₂ (M : Type *) [AddMonoid M] [MeasurableSpace M]
@@ -641,11 +680,10 @@ theorem measurableSMul₂_iterateMulAct : MeasurableSMul₂ (IterateMulAct f) α
641
680
end IterateMulAct
642
681
643
682
section MulAction
683
+ variable {G G₀ M β α : Type *} [MeasurableSpace β] [MeasurableSpace α] {f : α → β} {μ : Measure α}
644
684
645
- variable {M β α : Type *} [MeasurableSpace M] [MeasurableSpace β] [Monoid M] [MulAction M β]
646
- [MeasurableSMul M β] [MeasurableSpace α] {f : α → β} {μ : Measure α}
647
-
648
- variable {G : Type *} [Group G] [MeasurableSpace G] [MulAction G β] [MeasurableSMul G β]
685
+ section Group
686
+ variable {G : Type *} [Group G] [MulAction G β] [MeasurableConstSMul G β]
649
687
650
688
@[to_additive]
651
689
theorem measurable_const_smul_iff (c : G) : (Measurable fun x => c • f x) ↔ Measurable f :=
@@ -656,14 +694,17 @@ theorem aemeasurable_const_smul_iff (c : G) :
656
694
AEMeasurable (fun x => c • f x) μ ↔ AEMeasurable f μ :=
657
695
⟨fun h => by simpa [inv_smul_smul, Pi.smul_def] using h.const_smul c⁻¹, fun h => h.const_smul c⟩
658
696
659
- @[to_additive]
660
- instance Units.instMeasurableSpace : MeasurableSpace Mˣ := MeasurableSpace.comap ((↑) : Mˣ → M) ‹_›
697
+ end Group
698
+
699
+ section Monoid
700
+ variable [Monoid M] [MulAction M β]
701
+
702
+ section MeasurableConstSMul
703
+ variable [MeasurableConstSMul M β]
661
704
662
705
@[to_additive]
663
- instance Units.measurableSMul : MeasurableSMul Mˣ β where
706
+ instance Units.instMeasurableConstSMul : MeasurableConstSMul Mˣ β where
664
707
measurable_const_smul c := measurable_const_smul (c : M)
665
- measurable_smul_const x :=
666
- (measurable_smul_const x : Measurable fun c : M => c • x).comp MeasurableSpace.le_map_comap
667
708
668
709
@[to_additive]
669
710
nonrec theorem IsUnit.measurable_const_smul_iff {c : M} (hc : IsUnit c) :
@@ -677,8 +718,24 @@ nonrec theorem IsUnit.aemeasurable_const_smul_iff {c : M} (hc : IsUnit c) :
677
718
let ⟨u, hu⟩ := hc
678
719
hu ▸ aemeasurable_const_smul_iff u
679
720
680
- variable {G₀ : Type *} [GroupWithZero G₀] [MeasurableSpace G₀] [MulAction G₀ β]
681
- [MeasurableSMul G₀ β]
721
+ end MeasurableConstSMul
722
+
723
+ section MeasurableSMul
724
+ variable [MeasurableSpace M] [MeasurableSMul M β]
725
+
726
+ @[to_additive]
727
+ instance Units.instMeasurableSpace : MeasurableSpace Mˣ := .comap Units.val ‹_›
728
+
729
+ @[to_additive]
730
+ instance Units.measurableSMul : MeasurableSMul Mˣ β where
731
+ measurable_smul_const x :=
732
+ (measurable_smul_const x : Measurable fun c : M => c • x).comp MeasurableSpace.le_map_comap
733
+
734
+ end MeasurableSMul
735
+ end Monoid
736
+
737
+ section GroupWithZero
738
+ variable [GroupWithZero G₀] [MeasurableSpace G₀] [MulAction G₀ β] [MeasurableSMul G₀ β]
682
739
683
740
theorem measurable_const_smul_iff₀ {c : G₀} (hc : c ≠ 0 ) :
684
741
(Measurable fun x => c • f x) ↔ Measurable f :=
@@ -688,6 +745,7 @@ theorem aemeasurable_const_smul_iff₀ {c : G₀} (hc : c ≠ 0) :
688
745
AEMeasurable (fun x => c • f x) μ ↔ AEMeasurable f μ :=
689
746
(IsUnit.mk0 c hc).aemeasurable_const_smul_iff
690
747
748
+ end GroupWithZero
691
749
end MulAction
692
750
693
751
/-!
@@ -725,14 +783,12 @@ instance MulOpposite.instMeasurableMul₂ {M : Type*} [Mul M] [MeasurableSpace M
725
783
((measurable_mul_unop.comp measurable_snd).mul (measurable_mul_unop.comp measurable_fst))⟩
726
784
727
785
/-- If a scalar is central, then its right action is measurable when its left action is. -/
786
+ @[to_additive]
728
787
nonrec instance MeasurableSMul.op {M α} [MeasurableSpace M] [MeasurableSpace α] [SMul M α]
729
- [SMul Mᵐᵒᵖ α] [IsCentralScalar M α] [MeasurableSMul M α] : MeasurableSMul Mᵐᵒᵖ α :=
730
- ⟨MulOpposite.rec' fun c =>
731
- show Measurable fun x => op c • x by
732
- simpa only [op_smul_eq_smul] using measurable_const_smul c,
733
- fun x =>
788
+ [SMul Mᵐᵒᵖ α] [IsCentralScalar M α] [MeasurableSMul M α] : MeasurableSMul Mᵐᵒᵖ α where
789
+ measurable_smul_const x :=
734
790
show Measurable fun c => op (unop c) • x by
735
- simpa only [op_smul_eq_smul] using (measurable_smul_const x).comp measurable_mul_unop⟩
791
+ simpa only [op_smul_eq_smul] using (measurable_smul_const x).comp measurable_mul_unop
736
792
737
793
/-- If a scalar is central, then its right action is measurable when its left action is. -/
738
794
nonrec instance MeasurableSMul₂.op {M α} [MeasurableSpace M] [MeasurableSpace α] [SMul M α]
@@ -743,8 +799,9 @@ nonrec instance MeasurableSMul₂.op {M α} [MeasurableSpace M] [MeasurableSpace
743
799
744
800
@[to_additive]
745
801
instance measurableSMul_opposite_of_mul {M : Type *} [Mul M] [MeasurableSpace M]
746
- [MeasurableMul M] : MeasurableSMul Mᵐᵒᵖ M :=
747
- ⟨fun c => measurable_mul_const (unop c), fun x => measurable_mul_unop.const_mul x⟩
802
+ [MeasurableMul M] : MeasurableSMul Mᵐᵒᵖ M where
803
+ measurable_const_smul c := measurable_mul_const (unop c)
804
+ measurable_smul_const x := measurable_mul_unop.const_mul x
748
805
749
806
@[to_additive]
750
807
instance measurableSMul₂_opposite_of_mul {M : Type *} [Mul M] [MeasurableSpace M]
0 commit comments