mathlib documentation

analysis.box_integral.partition.additive

Box additive functions #

We say that a function f : box ι → M from boxes in ℝⁿ to a commutative additive monoid M is box additive on subboxes of I₀ : with_top (box ι) if for any box J, ↑J ≤ I₀, and a partition π of J, f J = ∑ J' in π.boxes, f J'. We use I₀ : with_top (box ι) instead of I₀ : box ι to use the same definition for functions box additive on subboxes of a box and for functions box additive on all boxes.

Examples of box-additive functions include the measure of a box and the integral of a fixed integrable function over a box.

In this file we define box-additive functions and prove that a function such that f J = f (J ∩ {x | x i < y}) + f (J ∩ {x | y ≤ x i}) is box-additive.

Tags #

rectangular box, additive function

structure box_integral.box_additive_map (ι : Type u_3) (M : Type u_4) [add_comm_monoid M] (I : with_top (box_integral.box ι)) :
Type (max u_3 u_4)

A function on box ι is called box additive if for every box J and a partition π of J we have f J = ∑ Ji in π.boxes, f Ji. A function is called box additive on subboxes of I : box ι if the same property holds for J ≤ I. We formalize these two notions in the same definition using I : with_bot (box ι): the value I = ⊤ corresponds to functions box additive on the whole space.

@[protected, instance]
def box_integral.box_additive_map.has_coe_to_fun {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} :
has_coe_to_fun →ᵇᵃ[I₀] M) (λ (_x : ι →ᵇᵃ[I₀] M), box_integral.box ι → M)
Equations
@[simp]
theorem box_integral.box_additive_map.to_fun_eq_coe {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} (f : ι →ᵇᵃ[I₀] M) :
@[simp]
theorem box_integral.box_additive_map.coe_mk {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} (f : box_integral.box ι → M) (h : ∀ (J : box_integral.box ι), J I₀∀ («π» : box_integral.prepartition J), «π».is_partition∑ (Ji : box_integral.box ι) in «π».boxes, f Ji = f J) :
theorem box_integral.box_additive_map.coe_injective {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} :
function.injective (λ (f : ι →ᵇᵃ[I₀] M) (x : box_integral.box ι), f x)
@[simp]
theorem box_integral.box_additive_map.coe_inj {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} {f g : ι →ᵇᵃ[I₀] M} :
f = g f = g
theorem box_integral.box_additive_map.sum_partition_boxes {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} {I : box_integral.box ι} (f : ι →ᵇᵃ[I₀] M) (hI : I I₀) {π : box_integral.prepartition I} (h : «π».is_partition) :
∑ (J : box_integral.box ι) in «π».boxes, f J = f I
@[simp]
theorem box_integral.box_additive_map.has_zero_zero_apply {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} :
0 = 0
@[protected, instance]
def box_integral.box_additive_map.has_zero {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} :
Equations
@[protected, instance]
def box_integral.box_additive_map.inhabited {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} :
Equations
@[protected, instance]
def box_integral.box_additive_map.has_add {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} :
has_add →ᵇᵃ[I₀] M)
Equations
@[protected, instance]
def box_integral.box_additive_map.add_comm_monoid {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} :
Equations
@[simp]
theorem box_integral.box_additive_map.map_split_add {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} {I : box_integral.box ι} (f : ι →ᵇᵃ[I₀] M) (hI : I I₀) (i : ι) (x : ) :
@[simp]
theorem box_integral.box_additive_map.restrict_apply {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} (f : ι →ᵇᵃ[I₀] M) (I : with_top (box_integral.box ι)) (hI : I I₀) (ᾰ : box_integral.box ι) :
(f.restrict I hI) = f ᾰ
def box_integral.box_additive_map.restrict {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} (f : ι →ᵇᵃ[I₀] M) (I : with_top (box_integral.box ι)) (hI : I I₀) :

If f is box-additive on subboxes of I₀, then it is box-additive on subboxes of any I ≤ I₀.

Equations
def box_integral.box_additive_map.of_map_split_add {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] [fintype ι] (f : box_integral.box ι → M) (I₀ : with_top (box_integral.box ι)) (hf : ∀ (I : box_integral.box ι), I I₀∀ {i : ι} {x : }, x set.Ioo (I.lower i) (I.upper i)option.elim (I.split_lower i x) 0 f + option.elim (I.split_upper i x) 0 f = f I) :
ι →ᵇᵃ[I₀] M

If f : box ι → M is box additive on partitions of the form split I i x, then it is box additive.

Equations
def box_integral.box_additive_map.map {ι : Type u_1} {M : Type u_2} {N : Type u_3} [add_comm_monoid M] [add_comm_monoid N] {I₀ : with_top (box_integral.box ι)} (f : ι →ᵇᵃ[I₀] M) (g : M →+ N) :
ι →ᵇᵃ[I₀] N

If g : M → N is an additive map and f is a box additive map, then g ∘ f is a box additive map.

Equations
@[simp]
theorem box_integral.box_additive_map.map_apply {ι : Type u_1} {M : Type u_2} {N : Type u_3} [add_comm_monoid M] [add_comm_monoid N] {I₀ : with_top (box_integral.box ι)} (f : ι →ᵇᵃ[I₀] M) (g : M →+ N) :
(f.map g) = g f
theorem box_integral.box_additive_map.sum_boxes_congr {ι : Type u_1} {M : Type u_2} [add_comm_monoid M] {I₀ : with_top (box_integral.box ι)} {I : box_integral.box ι} [fintype ι] (f : ι →ᵇᵃ[I₀] M) (hI : I I₀) {π₁ π₂ : box_integral.prepartition I} (h : π₁.Union = π₂.Union) :
∑ (J : box_integral.box ι) in π₁.boxes, f J = ∑ (J : box_integral.box ι) in π₂.boxes, f J

If f is a box additive function on subboxes of I and π₁, π₂ are two prepartitions of I that cover the same part of I, then ∑ J in π₁.boxes, f J = ∑ J in π₂.boxes, f J.

noncomputable def box_integral.box_additive_map.to_smul {ι : Type u_1} {I₀ : with_top (box_integral.box ι)} {E : Type u_4} [normed_group E] [normed_space E] (f : ι →ᵇᵃ[I₀] ) :

If f is a box-additive map, then so is the map sending I to the scalar multiplication by f I as a continuous linear map from E to itself.

Equations
@[simp]
theorem box_integral.box_additive_map.to_smul_apply {ι : Type u_1} {I₀ : with_top (box_integral.box ι)} {E : Type u_4} [normed_group E] [normed_space E] (f : ι →ᵇᵃ[I₀] ) (I : box_integral.box ι) (x : E) :
((f.to_smul) I) x = f I x
@[simp]
theorem box_integral.box_additive_map.upper_sub_lower_apply {n : } {G : Type u} [add_comm_group G] (I₀ : box_integral.box (fin (n + 1))) (i : fin (n + 1)) (f : box_integral.box (fin n) → G) (fb : (set.Icc (I₀.lower i) (I₀.upper i))(fin n →ᵇᵃ[(I₀.face i)] G)) (hf : ∀ (x : ) (hx : x set.Icc (I₀.lower i) (I₀.upper i)) (J : box_integral.box (fin n)), f x J = (fb x, hx⟩) J) (J : box_integral.box (fin (n + 1))) :
(box_integral.box_additive_map.upper_sub_lower I₀ i f fb hf) J = f (J.upper i) (J.face i) - f (J.lower i) (J.face i)
def box_integral.box_additive_map.upper_sub_lower {n : } {G : Type u} [add_comm_group G] (I₀ : box_integral.box (fin (n + 1))) (i : fin (n + 1)) (f : box_integral.box (fin n) → G) (fb : (set.Icc (I₀.lower i) (I₀.upper i))(fin n →ᵇᵃ[(I₀.face i)] G)) (hf : ∀ (x : ) (hx : x set.Icc (I₀.lower i) (I₀.upper i)) (J : box_integral.box (fin n)), f x J = (fb x, hx⟩) J) :
fin (n + 1) →ᵇᵃ[I₀] G

Given a box I₀ in ℝⁿ⁺¹, f x : box (fin n) → G is a family of functions indexed by a real x and for x ∈ [I₀.lower i, I₀.upper i], f x is box-additive on subboxes of the i-th face of I₀, then λ J, f (J.upper i) (J.face i) - f (J.lower i) (J.face i) is box-additive on subboxes of I₀.

Equations