Split a box along one or more hyperplanes #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Main definitions #
A hyperplane {x : ι → ℝ | x i = a} splits a rectangular box I : box_integral.box ι into two
smaller boxes. If a ∉ Ioo (I.lower i, I.upper i), then one of these boxes is empty, so it is not a
box in the sense of box_integral.box.
We introduce the following definitions.
box_integral.box.split_lower I i aandbox_integral.box.split_upper I i aare these boxes (aswith_bot (box_integral.box ι));box_integral.prepartition.split I i ais the partition ofImade of these two boxes (or of one boxIif one of these boxes is empty);box_integral.prepartition.split_many I s, wheres : finset (ι × ℝ)is a finite set of hyperplanes{x : ι → ℝ | x i = a}encoded as pairs(i, a), is the partition ofImade by cutting it along all the hyperplanes ins.
Main results #
The main result box_integral.prepartition.exists_Union_eq_diff says that any prepartition π of
I admits a prepartition π' of I that covers exactly I \ π.Union. One of these prepartitions
is available as box_integral.prepartition.compl.
Tags #
rectangular box, partition, hyperplane
Given a box I and x ∈ (I.lower i, I.upper i), the hyperplane {y : ι → ℝ | y i = x} splits
I into two boxes. box_integral.box.split_lower I i x is the box I ∩ {y | y i ≤ x}
(if it is nonempty). As usual, we represent a box that may be empty as
with_bot (box_integral.box ι).
Equations
- I.split_lower i x = box_integral.box.mk' I.lower (function.update I.upper i (linear_order.min x (I.upper i)))
Given a box I and x ∈ (I.lower i, I.upper i), the hyperplane {y : ι → ℝ | y i = x} splits
I into two boxes. box_integral.box.split_upper I i x is the box I ∩ {y | x < y i}
(if it is nonempty). As usual, we represent a box that may be empty as
with_bot (box_integral.box ι).
Equations
- I.split_upper i x = box_integral.box.mk' (function.update I.lower i (linear_order.max x (I.lower i))) I.upper
The partition of I : box ι into the boxes I ∩ {y | y ≤ x i} and I ∩ {y | x i < y}.
One of these boxes can be empty, then this partition is just the single-box partition ⊤.
Equations
- box_integral.prepartition.split I i x = box_integral.prepartition.of_with_bot {I.split_lower i x, I.split_upper i x} _ _
If x ∉ (I.lower i, I.upper i), then the hyperplane {y | y i = x} does not split I.
Split a box along many hyperplanes {y | y i = x}; each hyperplane is given by the pair
(i x).
Equations
- box_integral.prepartition.split_many I s = s.inf (λ (p : ι × ℝ), box_integral.prepartition.split I p.fst p.snd)
Let s : finset (ι × ℝ) be a set of hyperplanes {x : ι → ℝ | x i = r} in ι → ℝ encoded as
pairs (i, r). Suppose that this set contains all faces of a box J. The hyperplanes of s split
a box I into subboxes. Let Js be one of them. If J and Js have nonempty intersection, then
Js is a subbox of J.
Let s be a finite set of boxes in ℝⁿ = ι → ℝ. Then there exists a finite set t₀ of
hyperplanes (namely, the set of all hyperfaces of boxes in s) such that for any t ⊇ t₀
and any box I in ℝⁿ the following holds. The hyperplanes from t split I into subboxes.
Let J' be one of them, and let J be one of the boxes in s. If these boxes have a nonempty
intersection, then J' ≤ J.
If π is a partition of I, then there exists a finite set s of hyperplanes such that
split_many I s ≤ π.
For every prepartition π of I there exists a prepartition that covers exactly
I \ π.Union.
If π is a prepartition of I, then π.compl is a prepartition of I
such that π.compl.Union = I \ π.Union.
Since the definition of box_integral.prepartition.compl uses Exists.some,
the result depends only on π.Union.