Partitions of rectangular boxes in ℝⁿ #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define (pre)partitions of rectangular boxes in ℝⁿ. A partition of a box I in
ℝⁿ (see box_integral.prepartition and box_integral.prepartition.is_partition) is a finite set
of pairwise disjoint boxes such that their union is exactly I. We use boxes : finset (box ι) to
store the set of boxes.
Many lemmas about box integrals deal with pairwise disjoint collections of subboxes, so we define a
structure box_integral.prepartition (I : box_integral.box ι) that stores a collection of boxes
such that
- each box
J ∈ boxesis a subbox ofI; - the boxes are pairwise disjoint as sets in
ℝⁿ.
Then we define a predicate box_integral.prepartition.is_partition; π.is_partition means that the
boxes of π actually cover the whole I. We also define some operations on prepartitions:
box_integral.partition.bUnion: split each box of a partition into smaller boxes;box_integral.partition.restrict: restrict a partition to a smaller box.
We also define a semilattice_inf structure on box_integral.partition I for all
I : box_integral.box ι.
Tags #
rectangular box, partition
- boxes : finset (box_integral.box ι)
- le_of_mem' : ∀ (J : box_integral.box ι), J ∈ self.boxes → J ≤ I
- pairwise_disjoint : ↑(self.boxes).pairwise (disjoint on coe)
A prepartition of I : box_integral.box ι is a finite set of pairwise disjoint subboxes of
I.
Instances for box_integral.prepartition
- box_integral.prepartition.has_sizeof_inst
- box_integral.prepartition.has_mem
- box_integral.prepartition.has_le
- box_integral.prepartition.partial_order
- box_integral.prepartition.order_top
- box_integral.prepartition.order_bot
- box_integral.prepartition.inhabited
- box_integral.prepartition.has_inf
- box_integral.prepartition.semilattice_inf
Equations
- box_integral.prepartition.has_mem = {mem := λ (J : box_integral.box ι) (π : box_integral.prepartition I), J ∈ π.boxes}
The singleton prepartition {J}, J ≤ I.
Equations
- box_integral.prepartition.single I J h = {boxes := {J}, le_of_mem' := _, pairwise_disjoint := _}
We say that π ≤ π' if each box of π is a subbox of some box of π'.
Equations
- box_integral.prepartition.has_le = {le := λ (π π' : box_integral.prepartition I), ∀ ⦃I_1 : box_integral.box ι⦄, I_1 ∈ π → (∃ (I' : box_integral.box ι) (H : I' ∈ π'), I_1 ≤ I')}
Equations
- box_integral.prepartition.partial_order = {le := has_le.le box_integral.prepartition.has_le, lt := preorder.lt._default has_le.le, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _}
Equations
- box_integral.prepartition.order_top = {top := box_integral.prepartition.single I I box_integral.prepartition.order_top._proof_1, le_top := _}
Equations
- box_integral.prepartition.order_bot = {bot := {boxes := ∅, le_of_mem' := _, pairwise_disjoint := _}, bot_le := _}
Equations
An auxiliary lemma used to prove that the same point can't belong to more than
2 ^ fintype.card ι closed boxes of a prepartition.
The set of boxes of a prepartition that contain x in their closures has cardinality
at most 2 ^ fintype.card ι.
Given a prepartition π : box_integral.prepartition I, π.Union is the part of I covered by
the boxes of π.
Given a prepartition π of a box I and a collection of prepartitions πi J of all boxes
J ∈ π, returns the prepartition of I into the union of the boxes of all πi J.
Though we only use the values of πi on the boxes of π, we require πi to be a globally defined
function.
Equations
- π.bUnion πi = {boxes := π.boxes.bUnion (λ (J : box_integral.box ι), (πi J).boxes), le_of_mem' := _, pairwise_disjoint := _}
Given a box J ∈ π.bUnion πi, returns the box J' ∈ π such that J ∈ πi J'.
For J ∉ π.bUnion πi, returns I.
Uniqueness property of box_integral.partition.bUnion_index.
Create a box_integral.prepartition from a collection of possibly empty boxes by filtering out
the empty one if it exists.
Equations
- box_integral.prepartition.of_with_bot boxes le_of_mem pairwise_disjoint = {boxes := ⇑finset.erase_none boxes, le_of_mem' := _, pairwise_disjoint := _}
Restrict a prepartition to a box.
Equations
- π.restrict J = box_integral.prepartition.of_with_bot (finset.image (λ (J' : box_integral.box ι), ↑J ⊓ ↑J') π.boxes) _ _
Restricting to a larger box does not change the set of boxes. We cannot claim equality of prepartitions because they have different types.
Equations
- box_integral.prepartition.has_inf = {inf := λ (π₁ π₂ : box_integral.prepartition I), π₁.bUnion (λ (J : box_integral.box ι), π₂.restrict J)}
Equations
- box_integral.prepartition.semilattice_inf = {inf := has_inf.inf box_integral.prepartition.has_inf, le := partial_order.le box_integral.prepartition.partial_order, lt := partial_order.lt box_integral.prepartition.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, inf_le_left := _, inf_le_right := _, le_inf := _}
The prepartition with boxes {J ∈ π | p J}.
Equations
- π.filter p = {boxes := finset.filter p π.boxes, le_of_mem' := _, pairwise_disjoint := _}
Union of two disjoint prepartitions.
Equations
- π₁.disj_union π₂ h = {boxes := π₁.boxes ∪ π₂.boxes, le_of_mem' := _, pairwise_disjoint := _}
The distortion of a prepartition is the maximum of the distortions of the boxes of this prepartition.
Equations
A prepartition π of I is a partition if the boxes of π cover the whole I.