Typeclasses for measurability of operations #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define classes has_measurable_mul etc and prove dot-style lemmas
(measurable.mul, ae_measurable.mul etc). For binary operations we define two typeclasses:
has_measurable_mulsays that both left and right multiplication are measurable;has_measurable_mul₂says thatλ p : α × α, p.1 * p.2is measurable,
and similarly for other binary operations. The reason for introducing these classes is that in case
of topological space α equipped with the Borel σ-algebra, instances for has_measurable_mul₂
etc require α to have a second countable topology.
We define separate classes for has_measurable_div/has_measurable_sub
because on some types (e.g., ℕ, ℝ≥0∞) division and/or subtraction are not defined as a * b⁻¹ /
a + (-b).
For instances relating, e.g., has_continuous_mul to has_measurable_mul see file
measure_theory.borel_space.
Implementation notes #
For the heuristics of @[to_additive] it is important that the type with a multiplication
(or another multiplicative operations) is the first (implicit) argument of all declarations.
Tags #
measurable function, arithmetic operator
Todo #
- Uniformize the treatment of
powandsmul. - Use
@[to_additive]to sendhas_measurable_powtohas_measurable_smul₂. - This might require changing the definition (swapping the arguments in the function that is
in the conclusion of
measurable_smul.)
Binary operations: (+), (*), (-), (/) #
- measurable_const_add : ∀ (c : M), measurable (has_add.add c)
- measurable_add_const : ∀ (c : M), measurable (λ (_x : M), _x + c)
We say that a type has_measurable_add if ((+) c) and (+ c) are measurable functions.
For a typeclass assuming measurability of uncurry (+) see has_measurable_add₂.
- measurable_add : measurable (λ (p : M × M), p.fst + p.snd)
We say that a type has_measurable_add if uncurry (+) is a measurable functions.
For a typeclass assuming measurability of ((+) c) and (+ c) see has_measurable_add.
- measurable_const_mul : ∀ (c : M), measurable (has_mul.mul c)
- measurable_mul_const : ∀ (c : M), measurable (λ (_x : M), _x * c)
We say that a type has_measurable_mul if ((*) c) and (* c) are measurable functions.
For a typeclass assuming measurability of uncurry (*) see has_measurable_mul₂.
- measurable_mul : measurable (λ (p : M × M), p.fst * p.snd)
We say that a type has_measurable_mul if uncurry (*) is a measurable functions.
For a typeclass assuming measurability of ((*) c) and (* c) see has_measurable_mul.
Instances of this typeclass
A version of measurable_div_const that assumes has_measurable_mul instead of
has_measurable_div. This can be nice to avoid unnecessary type-class assumptions.
A version of measurable_sub_const that assumes has_measurable_add instead of
has_measurable_sub. This can be nice to avoid unnecessary type-class assumptions.
- measurable_pow : measurable (λ (p : β × γ), p.fst ^ p.snd)
This class assumes that the map β × γ → β given by (x, y) ↦ x ^ y is measurable.
Instances of this typeclass
Instances of other typeclasses for has_measurable_pow
- has_measurable_pow.has_sizeof_inst
monoid.has_pow is measurable.
Equations
- measurable_const_sub : ∀ (c : G), measurable (λ (x : G), c - x)
- measurable_sub_const : ∀ (c : G), measurable (λ (x : G), x - c)
We say that a type has_measurable_sub if (λ x, c - x) and (λ x, x - c) are measurable
functions. For a typeclass assuming measurability of uncurry (-) see has_measurable_sub₂.
- measurable_sub : measurable (λ (p : G × G), p.fst - p.snd)
We say that a type has_measurable_sub if uncurry (-) is a measurable functions.
For a typeclass assuming measurability of ((-) c) and (- c) see has_measurable_sub.
Instances of this typeclass
- measurable_const_div : ∀ (c : G₀), measurable (has_div.div c)
- measurable_div_const : ∀ (c : G₀), measurable (λ (_x : G₀), _x / c)
We say that a type has_measurable_div if ((/) c) and (/ c) are measurable functions.
For a typeclass assuming measurability of uncurry (/) see has_measurable_div₂.
Instances of this typeclass
- measurable_div : measurable (λ (p : G₀ × G₀), p.fst / p.snd)
We say that a type has_measurable_div if uncurry (/) is a measurable functions.
For a typeclass assuming measurability of ((/) c) and (/ c) see has_measurable_div.
Instances of this typeclass
- measurable_neg : measurable has_neg.neg
We say that a type has_measurable_neg if x ↦ -x is a measurable function.
Instances of this typeclass
- measurable_inv : measurable has_inv.inv
We say that a type has_measurable_inv if x ↦ x⁻¹ is a measurable function.
Instances of this typeclass
div_inv_monoid.has_pow is measurable.
Equations
- measurable_const_vadd : ∀ (c : M), measurable (has_vadd.vadd c)
- measurable_vadd_const : ∀ (x : α), measurable (λ (c : M), c +ᵥ x)
We say that the action of M on α has_measurable_vadd if for each c the map x ↦ c +ᵥ x
is a measurable function and for each x the map c ↦ c +ᵥ x is a measurable function.
- measurable_const_smul : ∀ (c : M), measurable (has_smul.smul c)
- measurable_smul_const : ∀ (x : α), measurable (λ (c : M), c • x)
We say that the action of M on α has_measurable_smul if for each c the map x ↦ c • x
is a measurable function and for each x the map c ↦ c • x is a measurable function.
Instances of this typeclass
- has_measurable_smul₂.to_has_measurable_smul
- has_continuous_smul.has_measurable_smul
- has_measurable_smul_of_mul
- submonoid.has_measurable_smul
- subgroup.has_measurable_smul
- pi.has_measurable_smul
- units.has_measurable_smul
- has_measurable_smul.op
- has_measurable_smul_opposite_of_mul
- quotient_group.has_measurable_smul
- measurable_vadd : measurable (function.uncurry has_vadd.vadd)
We say that the action of M on α has_measurable_vadd₂ if the map
(c, x) ↦ c +ᵥ x is a measurable function.
Instances of this typeclass
- measurable_smul : measurable (function.uncurry has_smul.smul)
We say that the action of M on α has_measurable_smul₂ if the map
(c, x) ↦ c • x is a measurable function.
add_monoid.has_smul_nat is measurable.
sub_neg_monoid.has_smul_int is measurable.
Equations
Equations
Opposite monoid #
If a scalar is central, then its right action is measurable when its left action is.
If a scalar is central, then its right action is measurable when its left action is.