Typeclasses for measurability of operations #
In this file we define classes MeasurableMul
etc and prove dot-style lemmas
(Measurable.mul
, AEMeasurable.mul
etc). For binary operations we define two typeclasses:
MeasurableMul
says that both left and right multiplication are measurable;MeasurableMul₂
says thatfun 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 MeasurableMul₂
etc require α
to have a second countable topology.
We define separate classes for MeasurableDiv
/MeasurableSub
because on some types (e.g., ℕ
, ℝ≥0∞
) division and/or subtraction are not defined as a * b⁻¹
/
a + (-b)
.
For instances relating, e.g., ContinuousMul
to MeasurableMul
see file
MeasureTheory.BorelSpace
.
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 sendMeasurablePow
toMeasurableSMul₂
. - This might require changing the definition (swapping the arguments in the function that is
in the conclusion of
MeasurableSMul
.)
Binary operations: (· + ·)
, (· * ·)
, (· - ·)
, (· / ·)
#
We say that a type has MeasurableAdd
if (· + c)
and (· + c)
are measurable functions.
For a typeclass assuming measurability of uncurry (· + ·)
see MeasurableAdd₂
.
- measurable_const_add : ∀ (c : M), Measurable fun (x : M) => c + x
- measurable_add_const : ∀ (c : M), Measurable fun (x : M) => x + c
Instances
We say that a type has MeasurableAdd₂
if uncurry (· + ·)
is a measurable functions.
For a typeclass assuming measurability of (c + ·)
and (· + c)
see MeasurableAdd
.
- measurable_add : Measurable fun (p : M × M) => p.1 + p.2
Instances
We say that a type has MeasurableMul
if (c * ·)
and (· * c)
are measurable functions.
For a typeclass assuming measurability of uncurry (*)
see MeasurableMul₂
.
- measurable_const_mul : ∀ (c : M), Measurable fun (x : M) => c * x
- measurable_mul_const : ∀ (c : M), Measurable fun (x : M) => x * c
Instances
We say that a type has MeasurableMul₂
if uncurry (· * ·)
is a measurable functions.
For a typeclass assuming measurability of (c * ·)
and (· * c)
see MeasurableMul
.
- measurable_mul : Measurable fun (p : M × M) => p.1 * p.2
Instances
Equations
- (_ : MeasurableAdd M) = (_ : MeasurableAdd M)
Equations
- (_ : MeasurableMul M) = (_ : MeasurableMul M)
Equations
- (_ : MeasurableAdd ((i : ι) → α i)) = (_ : MeasurableAdd ((i : ι) → α i))
Equations
- (_ : MeasurableMul ((i : ι) → α i)) = (_ : MeasurableMul ((i : ι) → α i))
Equations
- (_ : MeasurableAdd₂ ((i : ι) → α i)) = (_ : MeasurableAdd₂ ((i : ι) → α i))
Equations
- (_ : MeasurableMul₂ ((i : ι) → α i)) = (_ : MeasurableMul₂ ((i : ι) → α i))
A version of measurable_sub_const
that assumes MeasurableAdd
instead of
MeasurableSub
. This can be nice to avoid unnecessary type-class assumptions.
A version of measurable_div_const
that assumes MeasurableMul
instead of
MeasurableDiv
. This can be nice to avoid unnecessary type-class assumptions.
This class assumes that the map β × γ → β
given by (x, y) ↦ x ^ y
is measurable.
- measurable_pow : Measurable fun (p : β × γ) => p.1 ^ p.2
Instances
Monoid.Pow
is measurable.
Equations
- (_ : MeasurablePow M ℕ) = (_ : MeasurablePow M ℕ)
We say that a type has MeasurableSub
if (c - ·)
and (· - c)
are measurable
functions. For a typeclass assuming measurability of uncurry (-)
see MeasurableSub₂
.
- measurable_const_sub : ∀ (c : G), Measurable fun (x : G) => c - x
- measurable_sub_const : ∀ (c : G), Measurable fun (x : G) => x - c
Instances
We say that a type has MeasurableSub₂
if uncurry (· - ·)
is a measurable functions.
For a typeclass assuming measurability of (c - ·)
and (· - c)
see MeasurableSub
.
- measurable_sub : Measurable fun (p : G × G) => p.1 - p.2
Instances
We say that a type has MeasurableDiv
if (c / ·)
and (· / c)
are measurable functions.
For a typeclass assuming measurability of uncurry (· / ·)
see MeasurableDiv₂
.
- measurable_const_div : ∀ (c : G₀), Measurable fun (x : G₀) => c / x
- measurable_div_const : ∀ (c : G₀), Measurable fun (x : G₀) => x / c
Instances
We say that a type has MeasurableDiv₂
if uncurry (· / ·)
is a measurable functions.
For a typeclass assuming measurability of (c / ·)
and (· / c)
see MeasurableDiv
.
- measurable_div : Measurable fun (p : G₀ × G₀) => p.1 / p.2
Instances
Equations
- (_ : MeasurableSub G) = (_ : MeasurableSub G)
Equations
- (_ : MeasurableDiv G) = (_ : MeasurableDiv G)
Equations
- (_ : MeasurableSub ((i : ι) → α i)) = (_ : MeasurableSub ((i : ι) → α i))
Equations
- (_ : MeasurableDiv ((i : ι) → α i)) = (_ : MeasurableDiv ((i : ι) → α i))
Equations
- (_ : MeasurableSub₂ ((i : ι) → α i)) = (_ : MeasurableSub₂ ((i : ι) → α i))
Equations
- (_ : MeasurableDiv₂ ((i : ι) → α i)) = (_ : MeasurableDiv₂ ((i : ι) → α i))
We say that a type has MeasurableNeg
if x ↦ -x
is a measurable function.
- measurable_neg : Measurable Neg.neg
Instances
We say that a type has MeasurableInv
if x ↦ x⁻¹
is a measurable function.
- measurable_inv : Measurable Inv.inv
Instances
Equations
- (_ : MeasurableSub G) = (_ : MeasurableSub G)
Equations
- (_ : MeasurableDiv G) = (_ : MeasurableDiv G)
Equations
- (_ : MeasurableNeg ((i : ι) → α i)) = (_ : MeasurableNeg ((i : ι) → α i))
Equations
- (_ : MeasurableInv ((i : ι) → α i)) = (_ : MeasurableInv ((i : ι) → α i))
DivInvMonoid.Pow
is measurable.
Equations
- (_ : MeasurablePow G ℤ) = (_ : MeasurablePow G ℤ)
Equations
- (_ : MeasurableSub₂ G) = (_ : MeasurableSub₂ G)
Equations
- (_ : MeasurableDiv₂ G) = (_ : MeasurableDiv₂ G)
Equations
- (_ : MeasurableInv α) = (_ : MeasurableInv α)
We say that the action of M
on α
has MeasurableVAdd
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_vadd : ∀ (c : M), Measurable fun (x : α) => c +ᵥ x
- measurable_vadd_const : ∀ (x : α), Measurable fun (x_1 : M) => x_1 +ᵥ x
Instances
We say that the action of M
on α
has MeasurableSMul
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 fun (x : α) => c • x
- measurable_smul_const : ∀ (x : α), Measurable fun (x_1 : M) => x_1 • x
Instances
We say that the action of M
on α
has MeasurableVAdd₂
if the map
(c, x) ↦ c +ᵥ x
is a measurable function.
- measurable_vadd : Measurable (Function.uncurry fun (x : M) (x_1 : α) => x +ᵥ x_1)
Instances
We say that the action of M
on α
has Measurable_SMul₂
if the map
(c, x) ↦ c • x
is a measurable function.
- measurable_smul : Measurable (Function.uncurry fun (x : M) (x_1 : α) => x • x_1)
Instances
Equations
- (_ : MeasurableVAdd M M) = (_ : MeasurableVAdd M M)
Equations
- (_ : MeasurableSMul M M) = (_ : MeasurableSMul M M)
Equations
- (_ : MeasurableVAdd₂ M M) = (_ : MeasurableVAdd₂ M M)
Equations
- (_ : MeasurableSMul₂ M M) = (_ : MeasurableSMul₂ M M)
Equations
- (_ : MeasurableVAdd (↥s) α) = (_ : MeasurableVAdd (↥s) α)
Equations
- (_ : MeasurableSMul (↥s) α) = (_ : MeasurableSMul (↥s) α)
Equations
- (_ : MeasurableVAdd (↥s) α) = (_ : MeasurableVAdd (↥s.toAddSubmonoid) α)
Equations
- (_ : MeasurableSMul (↥s) α) = (_ : MeasurableSMul (↥s.toSubmonoid) α)
Equations
- (_ : MeasurableVAdd M β) = (_ : MeasurableVAdd M β)
Equations
- (_ : MeasurableSMul M β) = (_ : MeasurableSMul M β)
Equations
- (_ : MeasurableVAdd M ((i : ι) → α i)) = (_ : MeasurableVAdd M ((i : ι) → α i))
Equations
- (_ : MeasurableSMul M ((i : ι) → α i)) = (_ : MeasurableSMul M ((i : ι) → α i))
AddMonoid.SMul
is measurable.
Equations
- (_ : MeasurableSMul₂ ℕ M) = (_ : MeasurableSMul₂ ℕ M)
SubNegMonoid.SMulInt
is measurable.
Equations
- (_ : MeasurableSMul₂ ℤ M) = (_ : MeasurableSMul₂ ℤ M)
Equations
- AddUnits.instMeasurableSpace = MeasurableSpace.comap AddUnits.val inst✝
Equations
- Units.instMeasurableSpace = MeasurableSpace.comap Units.val inst✝
Equations
- (_ : MeasurableVAdd (AddUnits M) β) = (_ : MeasurableVAdd (AddUnits M) β)
Equations
- (_ : MeasurableSMul Mˣ β) = (_ : MeasurableSMul Mˣ β)
Opposite monoid #
Equations
- AddOpposite.instMeasurableSpace = MeasurableSpace.map AddOpposite.op h
Equations
- MulOpposite.instMeasurableSpace = MeasurableSpace.map MulOpposite.op h
Equations
- (_ : MeasurableAdd Mᵃᵒᵖ) = (_ : MeasurableAdd Mᵃᵒᵖ)
Equations
- (_ : MeasurableMul Mᵐᵒᵖ) = (_ : MeasurableMul Mᵐᵒᵖ)
Equations
- (_ : MeasurableAdd₂ Mᵃᵒᵖ) = (_ : MeasurableAdd₂ Mᵃᵒᵖ)
Equations
- (_ : MeasurableMul₂ Mᵐᵒᵖ) = (_ : MeasurableMul₂ Mᵐᵒᵖ)
If a scalar is central, then its right action is measurable when its left action is.
Equations
- (_ : MeasurableSMul Mᵐᵒᵖ α) = (_ : MeasurableSMul Mᵐᵒᵖ α)
If a scalar is central, then its right action is measurable when its left action is.
Equations
- (_ : MeasurableSMul₂ Mᵐᵒᵖ α) = (_ : MeasurableSMul₂ Mᵐᵒᵖ α)
Equations
- (_ : MeasurableVAdd Mᵃᵒᵖ M) = (_ : MeasurableVAdd Mᵃᵒᵖ M)
Equations
- (_ : MeasurableSMul Mᵐᵒᵖ M) = (_ : MeasurableSMul Mᵐᵒᵖ M)
Equations
- (_ : MeasurableVAdd₂ Mᵃᵒᵖ M) = (_ : MeasurableVAdd₂ Mᵃᵒᵖ M)
Equations
- (_ : MeasurableSMul₂ Mᵐᵒᵖ M) = (_ : MeasurableSMul₂ Mᵐᵒᵖ M)
Big operators: ∏
and ∑
#
Equations
- (_ : MeasurableAdd α) = (_ : MeasurableAdd α)
Equations
- (_ : MeasurableMul α) = (_ : MeasurableMul α)
Equations
- (_ : MeasurableAdd₂ α) = (_ : MeasurableAdd₂ α)
Equations
- (_ : MeasurableMul₂ α) = (_ : MeasurableMul₂ α)
Equations
- (_ : MeasurableNeg α) = (_ : MeasurableNeg α)
Equations
- (_ : MeasurableInv α) = (_ : MeasurableInv α)
Equations
- (_ : MeasurableSub α) = (_ : MeasurableSub α)
Equations
- (_ : MeasurableDiv α) = (_ : MeasurableDiv α)
Equations
- (_ : MeasurableSub₂ α) = (_ : MeasurableSub₂ α)
Equations
- (_ : MeasurableDiv₂ α) = (_ : MeasurableDiv₂ α)