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_mul
says that both left and right multiplication are measurable;has_measurable_mul₂
says thatλ p : α × α, p.1 * p.2
is 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
pow
andsmul
. - Use
@[to_additive]
to sendhas_measurable_pow
tohas_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.