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 ∈ boxes
is 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
.