File: Mathlib/Analysis/BoxIntegral/Partition/Tagged.lean

full_name: BoxIntegral.TaggedPrepartition.tag
code: /-- A tagged prepartition is a prepartition enriched with a tagged point for each box of the
prepartition. For simplicity we require that `tag` is defined for all boxes in `ι → ℝ` but
we will use only the values of `tag` on the boxes of the partition. -/
structure TaggedPrepartition (I : Box ι) extends Prepartition I where
  /-- Choice of tagged point of each box in this prepartition:
    we extend this to a total function, on all boxes in `ι → ℝ`. -/
  tag : Box ι → ι → ℝ
  /-- Each tagged point belongs to `I` -/
  tag_mem_Icc : ∀ J, tag J ∈ Box.Icc I
goal: BoxIntegral.Box ι → ι → ℝ

full_name: BoxIntegral.TaggedPrepartition
code: /-- A tagged prepartition is a prepartition enriched with a tagged point for each box of the
prepartition. For simplicity we require that `tag` is defined for all boxes in `ι → ℝ` but
we will use only the values of `tag` on the boxes of the partition. -/
structure TaggedPrepartition (I : Box ι) extends Prepartition I where
  /-- Choice of tagged point of each box in this prepartition:
    we extend this to a total function, on all boxes in `ι → ℝ`. -/
  tag : Box ι → ι → ℝ
  /-- Each tagged point belongs to `I` -/
  tag_mem_Icc : ∀ J, tag J ∈ Box.Icc I
goal: Type u_1

full_name: BoxIntegral.TaggedPrepartition.tag_mem_Icc
code: /-- A tagged prepartition is a prepartition enriched with a tagged point for each box of the
prepartition. For simplicity we require that `tag` is defined for all boxes in `ι → ℝ` but
we will use only the values of `tag` on the boxes of the partition. -/
structure TaggedPrepartition (I : Box ι) extends Prepartition I where
  /-- Choice of tagged point of each box in this prepartition:
    we extend this to a total function, on all boxes in `ι → ℝ`. -/
  tag : Box ι → ι → ℝ
  /-- Each tagged point belongs to `I` -/
  tag_mem_Icc : ∀ J, tag J ∈ Box.Icc I
goal: self.tag J ∈ BoxIntegral.Box.Icc I

full_name: BoxIntegral.TaggedPrepartition.instMembershipBox
code: instance : Membership (Box ι) (TaggedPrepartition I) 
goal: Membership (BoxIntegral.Box ι) (BoxIntegral.TaggedPrepartition I)

full_name: BoxIntegral.TaggedPrepartition.mem_toPrepartition
code: @[simp]
theorem mem_toPrepartition {π : TaggedPrepartition I} : J ∈ π.toPrepartition ↔ J ∈ π 
goal: J ∈ π.toPrepartition ↔ J ∈ π

full_name: BoxIntegral.TaggedPrepartition.mem_mk
code: @[simp]
theorem mem_mk (π : Prepartition I) (f h) : J ∈ mk π f h ↔ J ∈ π 
goal: J ∈ { toPrepartition := π, tag := f, tag_mem_Icc := h } ↔ J ∈ π

full_name: BoxIntegral.TaggedPrepartition.iUnion
code: /-- Union of all boxes of a tagged prepartition. -/
def iUnion : Set (ι → ℝ) 
goal: Set (ι → ℝ)

full_name: BoxIntegral.TaggedPrepartition.iUnion_def
code: theorem iUnion_def : π.iUnion = ⋃ J ∈ π, ↑J 
goal: π.iUnion = ⋃ J ∈ π, ↑J

full_name: BoxIntegral.TaggedPrepartition.iUnion_mk
code: @[simp]
theorem iUnion_mk (π : Prepartition I) (f h) : (mk π f h).iUnion = π.iUnion 
goal: { toPrepartition := π, tag := f, tag_mem_Icc := h }.iUnion = π.iUnion

full_name: BoxIntegral.TaggedPrepartition.iUnion_toPrepartition
code: @[simp]
theorem iUnion_toPrepartition : π.toPrepartition.iUnion = π.iUnion 
goal: π.iUnion = π.iUnion

full_name: BoxIntegral.TaggedPrepartition.mem_iUnion
code: @[simp]
theorem mem_iUnion : x ∈ π.iUnion ↔ ∃ J ∈ π, x ∈ J 
goal: x ∈ π.iUnion ↔ ∃ J ∈ π, x ∈ J

full_name: BoxIntegral.TaggedPrepartition.subset_iUnion
code: theorem subset_iUnion (h : J ∈ π) : ↑J ⊆ π.iUnion 
goal: ↑J ⊆ π.iUnion

full_name: BoxIntegral.TaggedPrepartition.iUnion_subset
code: theorem iUnion_subset : π.iUnion ⊆ I 
goal: π.iUnion ⊆ ↑I

full_name: BoxIntegral.TaggedPrepartition.IsPartition
code: /-- A tagged prepartition is a partition if it covers the whole box. -/
def IsPartition 
goal: Prop

full_name: BoxIntegral.TaggedPrepartition.isPartition_iff_iUnion_eq
code: theorem isPartition_iff_iUnion_eq : IsPartition π ↔ π.iUnion = I 
goal: π.IsPartition ↔ π.iUnion = ↑I

full_name: BoxIntegral.TaggedPrepartition.filter_boxes_val
code: /-- The tagged partition made of boxes of `π` that satisfy predicate `p`. -/
@[simps! (config := .asFn)]
def filter (p : Box ι → Prop) : TaggedPrepartition I 
goal: (π.filter p).boxes.val = Multiset.filter p π.boxes.val

full_name: BoxIntegral.TaggedPrepartition.filter_tag
code: /-- The tagged partition made of boxes of `π` that satisfy predicate `p`. -/
@[simps! (config := .asFn)]
def filter (p : Box ι → Prop) : TaggedPrepartition I 
goal: (π.filter p).tag = π.tag

full_name: BoxIntegral.TaggedPrepartition.filter
code: /-- The tagged partition made of boxes of `π` that satisfy predicate `p`. -/
@[simps! (config := .asFn)]
def filter (p : Box ι → Prop) : TaggedPrepartition I 
goal: BoxIntegral.TaggedPrepartition I

full_name: BoxIntegral.TaggedPrepartition.mem_filter
code: @[simp]
theorem mem_filter {p : Box ι → Prop} : J ∈ π.filter p ↔ J ∈ π ∧ p J 
goal: J ∈ π.filter p ↔ J ∈ π ∧ p J

full_name: BoxIntegral.TaggedPrepartition.iUnion_filter_not
code: @[simp]
theorem iUnion_filter_not (π : TaggedPrepartition I) (p : Box ι → Prop) :
    (π.filter fun J => ¬p J).iUnion = π.iUnion \ (π.filter p).iUnion 
goal: (π.filter fun J => ¬p J).iUnion = π.iUnion \ (π.filter p).iUnion

full_name: BoxIntegral.Prepartition.biUnionTagged
code: /-- Given a partition `π` of `I : BoxIntegral.Box ι` and a collection of tagged partitions
`πi J` of all boxes `J ∈ π`, returns the tagged partition of `I` into all the boxes of `πi J`
with tags coming from `(πi J).tag`. -/
def biUnionTagged (π : Prepartition I) (πi : ∀ J : Box ι, TaggedPrepartition J) :
    TaggedPrepartition I 
goal: BoxIntegral.TaggedPrepartition I

full_name: BoxIntegral.Prepartition.mem_biUnionTagged
code: @[simp]
theorem mem_biUnionTagged (π : Prepartition I) {πi : ∀ J, TaggedPrepartition J} :
    J ∈ π.biUnionTagged πi ↔ ∃ J' ∈ π, J ∈ πi J' 
goal: J ∈ π.biUnionTagged πi ↔ ∃ J' ∈ π, J ∈ πi J'

full_name: BoxIntegral.Prepartition.tag_biUnionTagged
code: theorem tag_biUnionTagged (π : Prepartition I) {πi : ∀ J, TaggedPrepartition J} (hJ : J ∈ π) {J'}
    (hJ' : J' ∈ πi J) : (π.biUnionTagged πi).tag J' = (πi J).tag J' 
goal: (π.biUnionTagged πi).tag J' = (πi J).tag J'

full_name: BoxIntegral.Prepartition.iUnion_biUnionTagged
code: @[simp]
theorem iUnion_biUnionTagged (π : Prepartition I) (πi : ∀ J, TaggedPrepartition J) :
    (π.biUnionTagged πi).iUnion = ⋃ J ∈ π, (πi J).iUnion 
goal: (π.biUnionTagged πi).iUnion = ⋃ J ∈ π, (πi J).iUnion

full_name: BoxIntegral.Prepartition.forall_biUnionTagged
code: theorem forall_biUnionTagged (p : (ι → ℝ) → Box ι → Prop) (π : Prepartition I)
    (πi : ∀ J, TaggedPrepartition J) :
    (∀ J ∈ π.biUnionTagged πi, p ((π.biUnionTagged πi).tag J) J) ↔
      ∀ J ∈ π, ∀ J' ∈ πi J, p ((πi J).tag J') J' 
goal: (∀ J ∈ π.biUnionTagged πi, p ((π.biUnionTagged πi).tag J) J) ↔ ∀ J ∈ π, ∀ J' ∈ πi J, p ((πi J).tag J') J'

full_name: BoxIntegral.Prepartition.IsPartition.biUnionTagged
code: theorem IsPartition.biUnionTagged {π : Prepartition I} (h : IsPartition π)
    {πi : ∀ J, TaggedPrepartition J} (hi : ∀ J ∈ π, (πi J).IsPartition) :
    (π.biUnionTagged πi).IsPartition 
goal: (π.biUnionTagged πi).IsPartition

full_name: BoxIntegral.TaggedPrepartition.biUnionPrepartition_tag
code: /-- Given a tagged partition `π` of `I` and a (not tagged) partition `πi J hJ` of each `J ∈ π`,
returns the tagged partition of `I` into all the boxes of all `πi J hJ`. The tag of a box `J`
is defined to be the `π.tag` of the box of the partition `π` that includes `J`.

Note that usually the result is not a Henstock partition. -/
@[simps (config := .asFn) tag]
def biUnionPrepartition (π : TaggedPrepartition I) (πi : ∀ J : Box ι, Prepartition J) :
    TaggedPrepartition I 
goal: (π.biUnionPrepartition πi).tag = fun J => π.tag (π.biUnionIndex πi J)

full_name: BoxIntegral.TaggedPrepartition.biUnionPrepartition
code: /-- Given a tagged partition `π` of `I` and a (not tagged) partition `πi J hJ` of each `J ∈ π`,
returns the tagged partition of `I` into all the boxes of all `πi J hJ`. The tag of a box `J`
is defined to be the `π.tag` of the box of the partition `π` that includes `J`.

Note that usually the result is not a Henstock partition. -/
@[simps (config := .asFn) tag]
def biUnionPrepartition (π : TaggedPrepartition I) (πi : ∀ J : Box ι, Prepartition J) :
    TaggedPrepartition I 
goal: BoxIntegral.TaggedPrepartition I

full_name: BoxIntegral.TaggedPrepartition.IsPartition.biUnionPrepartition
code: theorem IsPartition.biUnionPrepartition {π : TaggedPrepartition I} (h : IsPartition π)
    {πi : ∀ J, Prepartition J} (hi : ∀ J ∈ π, (πi J).IsPartition) :
    (π.biUnionPrepartition πi).IsPartition 
goal: (π.biUnionPrepartition πi).IsPartition

full_name: BoxIntegral.TaggedPrepartition.infPrepartition
code: /-- Given two partitions `π₁` and `π₁`, one of them tagged and the other is not, returns the tagged
partition with `toPrepartition = π₁.toPrepartition ⊓ π₂` and tags coming from `π₁`.

Note that usually the result is not a Henstock partition. -/
def infPrepartition (π : TaggedPrepartition I) (π' : Prepartition I) : TaggedPrepartition I 
goal: BoxIntegral.TaggedPrepartition I

full_name: BoxIntegral.TaggedPrepartition.infPrepartition_toPrepartition
code: @[simp]
theorem infPrepartition_toPrepartition (π : TaggedPrepartition I) (π' : Prepartition I) :
    (π.infPrepartition π').toPrepartition = π.toPrepartition ⊓ π' 
goal: (π.infPrepartition π').toPrepartition = π.toPrepartition ⊓ π'

full_name: BoxIntegral.TaggedPrepartition.mem_infPrepartition_comm
code: theorem mem_infPrepartition_comm :
    J ∈ π₁.infPrepartition π₂.toPrepartition ↔ J ∈ π₂.infPrepartition π₁.toPrepartition 
goal: J ∈ π₁.infPrepartition π₂.toPrepartition ↔ J ∈ π₂.infPrepartition π₁.toPrepartition

full_name: BoxIntegral.TaggedPrepartition.IsPartition.infPrepartition
code: theorem IsPartition.infPrepartition (h₁ : π₁.IsPartition) {π₂ : Prepartition I}
    (h₂ : π₂.IsPartition) : (π₁.infPrepartition π₂).IsPartition 
goal: (π₁.infPrepartition π₂).IsPartition

full_name: BoxIntegral.TaggedPrepartition.IsHenstock
code: /-- A tagged partition is said to be a Henstock partition if for each `J ∈ π`, the tag of `J`
belongs to `J.Icc`. -/
def IsHenstock (π : TaggedPrepartition I) : Prop 
goal: Prop

full_name: BoxIntegral.TaggedPrepartition.isHenstock_biUnionTagged
code: @[simp]
theorem isHenstock_biUnionTagged {π : Prepartition I} {πi : ∀ J, TaggedPrepartition J} :
    IsHenstock (π.biUnionTagged πi) ↔ ∀ J ∈ π, (πi J).IsHenstock 
goal: (π.biUnionTagged πi).IsHenstock ↔ ∀ J ∈ π, (πi J).IsHenstock

full_name: BoxIntegral.TaggedPrepartition.IsHenstock.card_filter_tag_eq_le
code: /-- In a Henstock prepartition, there are at most `2 ^ Fintype.card ι` boxes with a given tag. -/
theorem IsHenstock.card_filter_tag_eq_le [Fintype ι] (h : π.IsHenstock) (x : ι → ℝ) :
    (π.boxes.filter fun J => π.tag J = x).card ≤ 2 ^ Fintype.card ι 
goal: (Finset.filter (fun J => π.tag J = x) π.boxes).card ≤ 2 ^ Fintype.card ι

full_name: BoxIntegral.TaggedPrepartition.IsSubordinate
code: /-- A tagged partition `π` is subordinate to `r : (ι → ℝ) → ℝ` if each box `J ∈ π` is included in
the closed ball with center `π.tag J` and radius `r (π.tag J)`. -/
def IsSubordinate [Fintype ι] (π : TaggedPrepartition I) (r : (ι → ℝ) → Ioi (0 : ℝ)) : Prop 
goal: Prop

full_name: BoxIntegral.TaggedPrepartition.isSubordinate_biUnionTagged
code: @[simp]
theorem isSubordinate_biUnionTagged [Fintype ι] {π : Prepartition I}
    {πi : ∀ J, TaggedPrepartition J} :
    IsSubordinate (π.biUnionTagged πi) r ↔ ∀ J ∈ π, (πi J).IsSubordinate r 
goal: (π.biUnionTagged πi).IsSubordinate r ↔ ∀ J ∈ π, (πi J).IsSubordinate r

full_name: BoxIntegral.TaggedPrepartition.IsSubordinate.biUnionPrepartition
code: theorem IsSubordinate.biUnionPrepartition [Fintype ι] (h : IsSubordinate π r)
    (πi : ∀ J, Prepartition J) : IsSubordinate (π.biUnionPrepartition πi) r 
goal: (π.biUnionPrepartition πi).IsSubordinate r

full_name: BoxIntegral.TaggedPrepartition.IsSubordinate.infPrepartition
code: theorem IsSubordinate.infPrepartition [Fintype ι] (h : IsSubordinate π r) (π' : Prepartition I) :
    IsSubordinate (π.infPrepartition π') r 
goal: (π.infPrepartition π').IsSubordinate r

full_name: BoxIntegral.TaggedPrepartition.IsSubordinate.mono'
code: theorem IsSubordinate.mono' [Fintype ι] {π : TaggedPrepartition I} (hr₁ : π.IsSubordinate r₁)
    (h : ∀ J ∈ π, r₁ (π.tag J) ≤ r₂ (π.tag J)) : π.IsSubordinate r₂ 
goal: π.IsSubordinate r₂

full_name: BoxIntegral.TaggedPrepartition.IsSubordinate.mono
code: theorem IsSubordinate.mono [Fintype ι] {π : TaggedPrepartition I} (hr₁ : π.IsSubordinate r₁)
    (h : ∀ x ∈ Box.Icc I, r₁ x ≤ r₂ x) : π.IsSubordinate r₂ 
goal: π.IsSubordinate r₂

full_name: BoxIntegral.TaggedPrepartition.IsSubordinate.diam_le
code: theorem IsSubordinate.diam_le [Fintype ι] {π : TaggedPrepartition I} (h : π.IsSubordinate r)
    (hJ : J ∈ π.boxes) : diam (Box.Icc J) ≤ 2 * r (π.tag J) 
goal: Metric.diam (BoxIntegral.Box.Icc J) ≤ 2 * ↑(r (π.tag J))

full_name: BoxIntegral.TaggedPrepartition.single_tag
code: /-- Tagged prepartition with single box and prescribed tag. -/
@[simps! (config := .asFn)]
def single (I J : Box ι) (hJ : J ≤ I) (x : ι → ℝ) (h : x ∈ Box.Icc I) : TaggedPrepartition I 
goal: (BoxIntegral.TaggedPrepartition.single I J hJ x h).tag = fun x_1 => x

full_name: BoxIntegral.TaggedPrepartition.single
code: /-- Tagged prepartition with single box and prescribed tag. -/
@[simps! (config := .asFn)]
def single (I J : Box ι) (hJ : J ≤ I) (x : ι → ℝ) (h : x ∈ Box.Icc I) : TaggedPrepartition I 
goal: BoxIntegral.TaggedPrepartition I

full_name: BoxIntegral.TaggedPrepartition.single_boxes_val
code: /-- Tagged prepartition with single box and prescribed tag. -/
@[simps! (config := .asFn)]
def single (I J : Box ι) (hJ : J ≤ I) (x : ι → ℝ) (h : x ∈ Box.Icc I) : TaggedPrepartition I 
goal: (BoxIntegral.TaggedPrepartition.single I J hJ x h).boxes.val = {J}

full_name: BoxIntegral.TaggedPrepartition.mem_single
code: @[simp]
theorem mem_single {J'} (hJ : J ≤ I) (h : x ∈ Box.Icc I) : J' ∈ single I J hJ x h ↔ J' = J 
goal: J' ∈ BoxIntegral.TaggedPrepartition.single I J hJ x h ↔ J' = J

full_name: BoxIntegral.TaggedPrepartition.instInhabited
code: instance (I : Box ι) : Inhabited (TaggedPrepartition I) 
goal: Inhabited (BoxIntegral.TaggedPrepartition I)

full_name: BoxIntegral.TaggedPrepartition.isPartition_single_iff
code: theorem isPartition_single_iff (hJ : J ≤ I) (h : x ∈ Box.Icc I) :
    (single I J hJ x h).IsPartition ↔ J = I 
goal: (BoxIntegral.TaggedPrepartition.single I J hJ x h).IsPartition ↔ J = I

full_name: BoxIntegral.TaggedPrepartition.isPartition_single
code: theorem isPartition_single (h : x ∈ Box.Icc I) : (single I I le_rfl x h).IsPartition 
goal: (BoxIntegral.TaggedPrepartition.single I I ⋯ x h).IsPartition

full_name: BoxIntegral.TaggedPrepartition.forall_mem_single
code: theorem forall_mem_single (p : (ι → ℝ) → Box ι → Prop) (hJ : J ≤ I) (h : x ∈ Box.Icc I) :
    (∀ J' ∈ single I J hJ x h, p ((single I J hJ x h).tag J') J') ↔ p x J 
goal: (∀ J' ∈ BoxIntegral.TaggedPrepartition.single I J hJ x h,
    p ((BoxIntegral.TaggedPrepartition.single I J hJ x h).tag J') J') ↔
  p x J

full_name: BoxIntegral.TaggedPrepartition.isHenstock_single_iff
code: @[simp]
theorem isHenstock_single_iff (hJ : J ≤ I) (h : x ∈ Box.Icc I) :
    IsHenstock (single I J hJ x h) ↔ x ∈ Box.Icc J 
goal: (BoxIntegral.TaggedPrepartition.single I J hJ x h).IsHenstock ↔ x ∈ BoxIntegral.Box.Icc J

full_name: BoxIntegral.TaggedPrepartition.isHenstock_single
code: theorem isHenstock_single (h : x ∈ Box.Icc I) : IsHenstock (single I I le_rfl x h) 
goal: (BoxIntegral.TaggedPrepartition.single I I ⋯ x h).IsHenstock

full_name: BoxIntegral.TaggedPrepartition.isSubordinate_single
code: @[simp]
theorem isSubordinate_single [Fintype ι] (hJ : J ≤ I) (h : x ∈ Box.Icc I) :
    IsSubordinate (single I J hJ x h) r ↔ Box.Icc J ⊆ closedBall x (r x) 
goal: (BoxIntegral.TaggedPrepartition.single I J hJ x h).IsSubordinate r ↔ BoxIntegral.Box.Icc J ⊆ Metric.closedBall x ↑(r x)

full_name: BoxIntegral.TaggedPrepartition.iUnion_single
code: @[simp]
theorem iUnion_single (hJ : J ≤ I) (h : x ∈ Box.Icc I) : (single I J hJ x h).iUnion = J 
goal: (BoxIntegral.TaggedPrepartition.single I J hJ x h).iUnion = ↑J

full_name: BoxIntegral.TaggedPrepartition.disjUnion
code: /-- Union of two tagged prepartitions with disjoint unions of boxes. -/
def disjUnion (π₁ π₂ : TaggedPrepartition I) (h : Disjoint π₁.iUnion π₂.iUnion) :
    TaggedPrepartition I 
goal: BoxIntegral.TaggedPrepartition I

full_name: BoxIntegral.TaggedPrepartition.disjUnion_boxes
code: @[simp]
theorem disjUnion_boxes (h : Disjoint π₁.iUnion π₂.iUnion) :
    (π₁.disjUnion π₂ h).boxes = π₁.boxes ∪ π₂.boxes 
goal: (π₁.disjUnion π₂ h).boxes = π₁.boxes ∪ π₂.boxes

full_name: BoxIntegral.TaggedPrepartition.mem_disjUnion
code: @[simp]
theorem mem_disjUnion (h : Disjoint π₁.iUnion π₂.iUnion) :
    J ∈ π₁.disjUnion π₂ h ↔ J ∈ π₁ ∨ J ∈ π₂ 
goal: J ∈ π₁.disjUnion π₂ h ↔ J ∈ π₁ ∨ J ∈ π₂

full_name: BoxIntegral.TaggedPrepartition.iUnion_disjUnion
code: @[simp]
theorem iUnion_disjUnion (h : Disjoint π₁.iUnion π₂.iUnion) :
    (π₁.disjUnion π₂ h).iUnion = π₁.iUnion ∪ π₂.iUnion 
goal: (π₁.disjUnion π₂ h).iUnion = π₁.iUnion ∪ π₂.iUnion

full_name: BoxIntegral.TaggedPrepartition.disjUnion_tag_of_mem_left
code: theorem disjUnion_tag_of_mem_left (h : Disjoint π₁.iUnion π₂.iUnion) (hJ : J ∈ π₁) :
    (π₁.disjUnion π₂ h).tag J = π₁.tag J 
goal: (π₁.disjUnion π₂ h).tag J = π₁.tag J

full_name: BoxIntegral.TaggedPrepartition.disjUnion_tag_of_mem_right
code: theorem disjUnion_tag_of_mem_right (h : Disjoint π₁.iUnion π₂.iUnion) (hJ : J ∈ π₂) :
    (π₁.disjUnion π₂ h).tag J = π₂.tag J 
goal: (π₁.disjUnion π₂ h).tag J = π₂.tag J

full_name: BoxIntegral.TaggedPrepartition.IsSubordinate.disjUnion
code: theorem IsSubordinate.disjUnion [Fintype ι] (h₁ : IsSubordinate π₁ r) (h₂ : IsSubordinate π₂ r)
    (h : Disjoint π₁.iUnion π₂.iUnion) : IsSubordinate (π₁.disjUnion π₂ h) r 
goal: (π₁.disjUnion π₂ h).IsSubordinate r

full_name: BoxIntegral.TaggedPrepartition.IsHenstock.disjUnion
code: theorem IsHenstock.disjUnion (h₁ : IsHenstock π₁) (h₂ : IsHenstock π₂)
    (h : Disjoint π₁.iUnion π₂.iUnion) : IsHenstock (π₁.disjUnion π₂ h) 
goal: (π₁.disjUnion π₂ h).IsHenstock

full_name: BoxIntegral.TaggedPrepartition.embedBox
code: /-- If `I ≤ J`, then every tagged prepartition of `I` is a tagged prepartition of `J`. -/
def embedBox (I J : Box ι) (h : I ≤ J) : TaggedPrepartition I ↪ TaggedPrepartition J 
goal: BoxIntegral.TaggedPrepartition I ↪ BoxIntegral.TaggedPrepartition J

full_name: BoxIntegral.TaggedPrepartition.distortion
code: /-- The distortion of a tagged prepartition is the maximum of distortions of its boxes. -/
def distortion : ℝ≥0 
goal: ℝ≥0

full_name: BoxIntegral.TaggedPrepartition.distortion_le_of_mem
code: theorem distortion_le_of_mem (h : J ∈ π) : J.distortion ≤ π.distortion 
goal: J.distortion ≤ π.distortion

full_name: BoxIntegral.TaggedPrepartition.distortion_le_iff
code: theorem distortion_le_iff {c : ℝ≥0} : π.distortion ≤ c ↔ ∀ J ∈ π, Box.distortion J ≤ c 
goal: π.distortion ≤ c ↔ ∀ J ∈ π, J.distortion ≤ c

full_name: BoxIntegral.Prepartition.distortion_biUnionTagged
code: @[simp]
theorem _root_.BoxIntegral.Prepartition.distortion_biUnionTagged (π : Prepartition I)
    (πi : ∀ J, TaggedPrepartition J) :
    (π.biUnionTagged πi).distortion = π.boxes.sup fun J => (πi J).distortion 
goal: (π.biUnionTagged πi).distortion = π.boxes.sup fun J => (πi J).distortion

full_name: BoxIntegral.TaggedPrepartition.distortion_biUnionPrepartition
code: @[simp]
theorem distortion_biUnionPrepartition (π : TaggedPrepartition I) (πi : ∀ J, Prepartition J) :
    (π.biUnionPrepartition πi).distortion = π.boxes.sup fun J => (πi J).distortion 
goal: (π.biUnionPrepartition πi).distortion = π.boxes.sup fun J => (πi J).distortion

full_name: BoxIntegral.TaggedPrepartition.distortion_disjUnion
code: @[simp]
theorem distortion_disjUnion (h : Disjoint π₁.iUnion π₂.iUnion) :
    (π₁.disjUnion π₂ h).distortion = max π₁.distortion π₂.distortion 
goal: (π₁.disjUnion π₂ h).distortion = max π₁.distortion π₂.distortion

full_name: BoxIntegral.TaggedPrepartition.distortion_of_const
code: theorem distortion_of_const {c} (h₁ : π.boxes.Nonempty) (h₂ : ∀ J ∈ π, Box.distortion J = c) :
    π.distortion = c 
goal: π.distortion = c

full_name: BoxIntegral.TaggedPrepartition.distortion_single
code: @[simp]
theorem distortion_single (hJ : J ≤ I) (h : x ∈ Box.Icc I) :
    distortion (single I J hJ x h) = J.distortion 
goal: (BoxIntegral.TaggedPrepartition.single I J hJ x h).distortion = J.distortion

full_name: BoxIntegral.TaggedPrepartition.distortion_filter_le
code: theorem distortion_filter_le (p : Box ι → Prop) : (π.filter p).distortion ≤ π.distortion 
goal: (π.filter p).distortion ≤ π.distortion