ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- BoxIntegral.Prepartition.injOn_setOf_mem_Icc_setOf_lower_eq
theorem injOn_setOf_mem_Icc_setOf_lower_eq (x : ι → ℝ) :
    InjOn (fun J : Box ι => { i | J.lower i = x i }) { J | J ∈ π ∧ x ∈ Box.Icc J } 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (x : ι → ℝ)
Goal: Set.InjOn (fun J => {i | J.lower i = x i}) {J | J ∈ π ∧ x ∈ BoxIntegral.Box.Icc J}
-- BoxIntegral.Prepartition.card_filter_mem_Icc_le
theorem card_filter_mem_Icc_le [Fintype ι] (x : ι → ℝ) :
    (π.boxes.filter fun J : Box ι => x ∈ Box.Icc J).card ≤ 2 ^ Fintype.card ι 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) [Fintype ι] (x : ι → ℝ)
Goal: (Finset.filter (fun J => x ∈ BoxIntegral.Box.Icc J) π.boxes).card ≤ 2 ^ Fintype.card ι
-- BoxIntegral.Prepartition.iUnion_def
theorem iUnion_def : π.iUnion = ⋃ J ∈ π, ↑J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: π.iUnion = ⋃ J ∈ π, ↑J
-- BoxIntegral.Prepartition.iUnion_def'
theorem iUnion_def' : π.iUnion = ⋃ J ∈ π.boxes, ↑J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: π.iUnion = ⋃ J ∈ π.boxes, ↑J
-- BoxIntegral.Prepartition.mem_iUnion
@[simp]
theorem mem_iUnion : x ∈ π.iUnion ↔ ∃ J ∈ π, x ∈ J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {x : ι → ℝ}
Goal: x ∈ π.iUnion ↔ ∃ J ∈ π, x ∈ J
-- BoxIntegral.Prepartition.iUnion_single
@[simp]
theorem iUnion_single (h : J ≤ I) : (single I J h).iUnion = J 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (h : J ≤ I)
Goal: (BoxIntegral.Prepartition.single I J h).iUnion = ↑J
-- BoxIntegral.Prepartition.iUnion_top
@[simp]
theorem iUnion_top : (⊤ : Prepartition I).iUnion = I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι}
Goal: ⊤.iUnion = ↑I
-- BoxIntegral.Prepartition.iUnion_eq_empty
@[simp]
theorem iUnion_eq_empty : π₁.iUnion = ∅ ↔ π₁ = ⊥ 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ : BoxIntegral.Prepartition I}
Goal: π₁.iUnion = ∅ ↔ π₁ = ⊥
-- BoxIntegral.Prepartition.iUnion_bot
@[simp]
theorem iUnion_bot : (⊥ : Prepartition I).iUnion = ∅ 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι}
Goal: ⊥.iUnion = ∅
-- BoxIntegral.Prepartition.subset_iUnion
theorem subset_iUnion (h : J ∈ π) : ↑J ⊆ π.iUnion 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (h : J ∈ π)
Goal: ↑J ⊆ π.iUnion
-- BoxIntegral.Prepartition.iUnion_subset
theorem iUnion_subset : π.iUnion ⊆ I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: π.iUnion ⊆ ↑I
-- BoxIntegral.Prepartition.iUnion_mono
@[mono]
theorem iUnion_mono (h : π₁ ≤ π₂) : π₁.iUnion ⊆ π₂.iUnion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} (h : π₁ ≤ π₂)
Goal: π₁.iUnion ⊆ π₂.iUnion
-- BoxIntegral.Prepartition.disjoint_boxes_of_disjoint_iUnion
theorem disjoint_boxes_of_disjoint_iUnion (h : Disjoint π₁.iUnion π₂.iUnion) :
    Disjoint π₁.boxes π₂.boxes 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} (h : Disjoint π₁.iUnion π₂.iUnion)
Goal: Disjoint π₁.boxes π₂.boxes
-- BoxIntegral.Prepartition.le_iff_nonempty_imp_le_and_iUnion_subset
theorem le_iff_nonempty_imp_le_and_iUnion_subset :
    π₁ ≤ π₂ ↔
      (∀ J ∈ π₁, ∀ J' ∈ π₂, (J ∩ J' : Set (ι → ℝ)).Nonempty → J ≤ J') ∧ π₁.iUnion ⊆ π₂.iUnion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I}
Goal: π₁ ≤ π₂ ↔ (∀ J ∈ π₁, ∀ J' ∈ π₂, (↑J ∩ ↑J').Nonempty → J ≤ J') ∧ π₁.iUnion ⊆ π₂.iUnion
-- BoxIntegral.Prepartition.eq_of_boxes_subset_iUnion_superset
theorem eq_of_boxes_subset_iUnion_superset (h₁ : π₁.boxes ⊆ π₂.boxes) (h₂ : π₂.iUnion ⊆ π₁.iUnion) :
    π₁ = π₂ 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} (h₁ : π₁.boxes ⊆ π₂.boxes) (h₂ : π₂.iUnion ⊆ π₁.iUnion)
Goal: π₁ = π₂
-- BoxIntegral.Prepartition.biUnion_boxes
@[simps]
def biUnion (πi : ∀ J : Box ι, Prepartition J) : Prepartition I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J)
Goal: (π.biUnion πi).boxes = π.boxes.biUnion fun J => (πi J).boxes
-- BoxIntegral.Prepartition.mem_biUnion
@[simp]
theorem mem_biUnion : J ∈ π.biUnion πi ↔ ∃ J' ∈ π, J ∈ πi J' 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J}
Goal: J ∈ π.biUnion πi ↔ ∃ J' ∈ π, J ∈ πi J'
-- BoxIntegral.Prepartition.biUnion_le
theorem biUnion_le (πi : ∀ J, Prepartition J) : π.biUnion πi ≤ π 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J)
Goal: π.biUnion πi ≤ π
-- BoxIntegral.Prepartition.biUnion_top
@[simp]
theorem biUnion_top : (π.biUnion fun _ => ⊤) = π 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: (π.biUnion fun x => ⊤) = π
-- BoxIntegral.Prepartition.biUnion_congr
@[congr]
theorem biUnion_congr (h : π₁ = π₂) (hi : ∀ J ∈ π₁, πi₁ J = πi₂ J) :
    π₁.biUnion πi₁ = π₂.biUnion πi₂ 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} {πi₁ πi₂ : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} (h : π₁ = π₂) (hi : ∀ J ∈ π₁, πi₁ J = πi₂ J)
Goal: π₁.biUnion πi₁ = π₂.biUnion πi₂
-- BoxIntegral.Prepartition.biUnion_congr_of_le
theorem biUnion_congr_of_le (h : π₁ = π₂) (hi : ∀ J ≤ I, πi₁ J = πi₂ J) :
    π₁.biUnion πi₁ = π₂.biUnion πi₂ 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} {πi₁ πi₂ : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} (h : π₁ = π₂) (hi : ∀ J ≤ I, πi₁ J = πi₂ J)
Goal: π₁.biUnion πi₁ = π₂.biUnion πi₂
-- BoxIntegral.Prepartition.iUnion_biUnion
@[simp]
theorem iUnion_biUnion (πi : ∀ J : Box ι, Prepartition J) :
    (π.biUnion πi).iUnion = ⋃ J ∈ π, (πi J).iUnion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J)
Goal: (π.biUnion πi).iUnion = ⋃ J ∈ π, (πi J).iUnion
-- BoxIntegral.Prepartition.sum_biUnion_boxes
@[simp]
theorem sum_biUnion_boxes {M : Type*} [AddCommMonoid M] (π : Prepartition I)
    (πi : ∀ J, Prepartition J) (f : Box ι → M) :
    (∑ J ∈ π.boxes.biUnion fun J => (πi J).boxes, f J) =
      ∑ J ∈ π.boxes, ∑ J' ∈ (πi J).boxes, f J' 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {M : Type u_2} [AddCommMonoid M] (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J) (f : BoxIntegral.Box ι → M)
Goal: ∑ J ∈ π.boxes.biUnion fun J => (πi J).boxes, f J = ∑ J ∈ π.boxes, ∑ J' ∈ (πi J).boxes, f J'
-- BoxIntegral.Prepartition.biUnionIndex_mem
theorem biUnionIndex_mem (hJ : J ∈ π.biUnion πi) : π.biUnionIndex πi J ∈ π 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} (hJ : J ∈ π.biUnion πi)
Goal: π.biUnionIndex πi J ∈ π
-- BoxIntegral.Prepartition.biUnionIndex_le
theorem biUnionIndex_le (πi : ∀ J, Prepartition J) (J : Box ι) : π.biUnionIndex πi J ≤ I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J) (J : BoxIntegral.Box ι)
Goal: π.biUnionIndex πi J ≤ I
-- BoxIntegral.Prepartition.mem_biUnionIndex
theorem mem_biUnionIndex (hJ : J ∈ π.biUnion πi) : J ∈ πi (π.biUnionIndex πi J) 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} (hJ : J ∈ π.biUnion πi)
Goal: J ∈ πi (π.biUnionIndex πi J)
-- BoxIntegral.Prepartition.le_biUnionIndex
theorem le_biUnionIndex (hJ : J ∈ π.biUnion πi) : J ≤ π.biUnionIndex πi J 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} (hJ : J ∈ π.biUnion πi)
Goal: J ≤ π.biUnionIndex πi J
-- BoxIntegral.Prepartition.biUnionIndex_of_mem
theorem biUnionIndex_of_mem (hJ : J ∈ π) {J'} (hJ' : J' ∈ πi J) : π.biUnionIndex πi J' = J 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} (hJ : J ∈ π) {J' : BoxIntegral.Box ι} (hJ' : J' ∈ πi J)
Goal: π.biUnionIndex πi J' = J
-- BoxIntegral.Prepartition.biUnion_assoc
theorem biUnion_assoc (πi : ∀ J, Prepartition J) (πi' : Box ι → ∀ J : Box ι, Prepartition J) :
    (π.biUnion fun J => (πi J).biUnion (πi' J)) =
      (π.biUnion πi).biUnion fun J => πi' (π.biUnionIndex πi J) J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J) (πi' : BoxIntegral.Box ι → (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J)
Goal: (π.biUnion fun J => (πi J).biUnion (πi' J)) = (π.biUnion πi).biUnion fun J => πi' (π.biUnionIndex πi J) J
-- BoxIntegral.Prepartition.mem_ofWithBot
@[simp]
theorem mem_ofWithBot {boxes : Finset (WithBot (Box ι))} {h₁ h₂} :
    J ∈ (ofWithBot boxes h₁ h₂ : Prepartition I) ↔ (J : WithBot (Box ι)) ∈ boxes 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} {boxes : Finset (WithBot (BoxIntegral.Box ι))} {h₁ : ∀ J ∈ boxes, J ≤ ↑I} {h₂ : (↑boxes).Pairwise Disjoint}
Goal: J ∈ BoxIntegral.Prepartition.ofWithBot boxes h₁ h₂ ↔ ↑J ∈ boxes
-- BoxIntegral.Prepartition.iUnion_ofWithBot
@[simp]
theorem iUnion_ofWithBot (boxes : Finset (WithBot (Box ι)))
    (le_of_mem : ∀ J ∈ boxes, (J : WithBot (Box ι)) ≤ I)
    (pairwise_disjoint : Set.Pairwise (boxes : Set (WithBot (Box ι))) Disjoint) :
    (ofWithBot boxes le_of_mem pairwise_disjoint).iUnion = ⋃ J ∈ boxes, ↑J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (boxes : Finset (WithBot (BoxIntegral.Box ι))) (le_of_mem : ∀ J ∈ boxes, J ≤ ↑I) (pairwise_disjoint : (↑boxes).Pairwise Disjoint)
Goal: (BoxIntegral.Prepartition.ofWithBot boxes le_of_mem pairwise_disjoint).iUnion = ⋃ J ∈ boxes, ↑J
-- BoxIntegral.Prepartition.ofWithBot_le
theorem ofWithBot_le {boxes : Finset (WithBot (Box ι))}
    {le_of_mem : ∀ J ∈ boxes, (J : WithBot (Box ι)) ≤ I}
    {pairwise_disjoint : Set.Pairwise (boxes : Set (WithBot (Box ι))) Disjoint}
    (H : ∀ J ∈ boxes, J ≠ ⊥ → ∃ J' ∈ π, J ≤ ↑J') :
    ofWithBot boxes le_of_mem pairwise_disjoint ≤ π 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {boxes : Finset (WithBot (BoxIntegral.Box ι))} {le_of_mem : ∀ J ∈ boxes, J ≤ ↑I} {pairwise_disjoint : (↑boxes).Pairwise Disjoint} (H : ∀ J ∈ boxes, J ≠ ⊥ → ∃ J' ∈ π, J ≤ ↑J')
Goal: BoxIntegral.Prepartition.ofWithBot boxes le_of_mem pairwise_disjoint ≤ π
-- BoxIntegral.Prepartition.le_ofWithBot
theorem le_ofWithBot {boxes : Finset (WithBot (Box ι))}
    {le_of_mem : ∀ J ∈ boxes, (J : WithBot (Box ι)) ≤ I}
    {pairwise_disjoint : Set.Pairwise (boxes : Set (WithBot (Box ι))) Disjoint}
    (H : ∀ J ∈ π, ∃ J' ∈ boxes, ↑J ≤ J') : π ≤ ofWithBot boxes le_of_mem pairwise_disjoint 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {boxes : Finset (WithBot (BoxIntegral.Box ι))} {le_of_mem : ∀ J ∈ boxes, J ≤ ↑I} {pairwise_disjoint : (↑boxes).Pairwise Disjoint} (H : ∀ J ∈ π, ∃ J' ∈ boxes, ↑J ≤ J')
Goal: π ≤ BoxIntegral.Prepartition.ofWithBot boxes le_of_mem pairwise_disjoint
-- BoxIntegral.Prepartition.ofWithBot_mono
theorem ofWithBot_mono {boxes₁ : Finset (WithBot (Box ι))}
    {le_of_mem₁ : ∀ J ∈ boxes₁, (J : WithBot (Box ι)) ≤ I}
    {pairwise_disjoint₁ : Set.Pairwise (boxes₁ : Set (WithBot (Box ι))) Disjoint}
    {boxes₂ : Finset (WithBot (Box ι))} {le_of_mem₂ : ∀ J ∈ boxes₂, (J : WithBot (Box ι)) ≤ I}
    {pairwise_disjoint₂ : Set.Pairwise (boxes₂ : Set (WithBot (Box ι))) Disjoint}
    (H : ∀ J ∈ boxes₁, J ≠ ⊥ → ∃ J' ∈ boxes₂, J ≤ J') :
    ofWithBot boxes₁ le_of_mem₁ pairwise_disjoint₁ ≤
      ofWithBot boxes₂ le_of_mem₂ pairwise_disjoint₂ 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {boxes₁ : Finset (WithBot (BoxIntegral.Box ι))} {le_of_mem₁ : ∀ J ∈ boxes₁, J ≤ ↑I} {pairwise_disjoint₁ : (↑boxes₁).Pairwise Disjoint} {boxes₂ : Finset (WithBot (BoxIntegral.Box ι))} {le_of_mem₂ : ∀ J ∈ boxes₂, J ≤ ↑I} {pairwise_disjoint₂ : (↑boxes₂).Pairwise Disjoint} (H : ∀ J ∈ boxes₁, J ≠ ⊥ → ∃ J' ∈ boxes₂, J ≤ J')
Goal: BoxIntegral.Prepartition.ofWithBot boxes₁ le_of_mem₁ pairwise_disjoint₁ ≤
  BoxIntegral.Prepartition.ofWithBot boxes₂ le_of_mem₂ pairwise_disjoint₂
-- BoxIntegral.Prepartition.sum_ofWithBot
theorem sum_ofWithBot {M : Type*} [AddCommMonoid M] (boxes : Finset (WithBot (Box ι)))
    (le_of_mem : ∀ J ∈ boxes, (J : WithBot (Box ι)) ≤ I)
    (pairwise_disjoint : Set.Pairwise (boxes : Set (WithBot (Box ι))) Disjoint) (f : Box ι → M) :
    (∑ J ∈ (ofWithBot boxes le_of_mem pairwise_disjoint).boxes, f J) =
      ∑ J ∈ boxes, Option.elim' 0 f J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {M : Type u_2} [AddCommMonoid M] (boxes : Finset (WithBot (BoxIntegral.Box ι))) (le_of_mem : ∀ J ∈ boxes, J ≤ ↑I) (pairwise_disjoint : (↑boxes).Pairwise Disjoint) (f : BoxIntegral.Box ι → M)
Goal: ∑ J ∈ (BoxIntegral.Prepartition.ofWithBot boxes le_of_mem pairwise_disjoint).boxes, f J =
  ∑ J ∈ boxes, Option.elim' 0 f J
-- BoxIntegral.Prepartition.mem_restrict
@[simp]
theorem mem_restrict : J₁ ∈ π.restrict J ↔ ∃ J' ∈ π, (J₁ : WithBot (Box ι)) = ↑J ⊓ ↑J' 
Arguments: {ι : Type u_1} {I J J₁ : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: J₁ ∈ π.restrict J ↔ ∃ J' ∈ π, ↑J₁ = ↑J ⊓ ↑J'
-- BoxIntegral.Prepartition.mem_restrict'
theorem mem_restrict' : J₁ ∈ π.restrict J ↔ ∃ J' ∈ π, (J₁ : Set (ι → ℝ)) = ↑J ∩ ↑J' 
Arguments: {ι : Type u_1} {I J J₁ : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: J₁ ∈ π.restrict J ↔ ∃ J' ∈ π, ↑J₁ = ↑J ∩ ↑J'
-- BoxIntegral.Prepartition.restrict_mono
@[mono]
theorem restrict_mono {π₁ π₂ : Prepartition I} (Hle : π₁ ≤ π₂) : π₁.restrict J ≤ π₂.restrict J 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} (Hle : π₁ ≤ π₂)
Goal: π₁.restrict J ≤ π₂.restrict J
-- BoxIntegral.Prepartition.monotone_restrict
theorem monotone_restrict : Monotone fun π : Prepartition I => restrict π J 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι}
Goal: Monotone fun π => π.restrict J
-- BoxIntegral.Prepartition.restrict_boxes_of_le
theorem restrict_boxes_of_le (π : Prepartition I) (h : I ≤ J) : (π.restrict J).boxes = π.boxes 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (h : I ≤ J)
Goal: (π.restrict J).boxes = π.boxes
-- BoxIntegral.Prepartition.restrict_self
@[simp]
theorem restrict_self : π.restrict I = π 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: π.restrict I = π
-- BoxIntegral.Prepartition.iUnion_restrict
@[simp]
theorem iUnion_restrict : (π.restrict J).iUnion = (J : Set (ι → ℝ)) ∩ (π.iUnion) 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: (π.restrict J).iUnion = ↑J ∩ π.iUnion
-- BoxIntegral.Prepartition.restrict_biUnion
@[simp]
theorem restrict_biUnion (πi : ∀ J, Prepartition J) (hJ : J ∈ π) :
    (π.biUnion πi).restrict J = πi J 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J) (hJ : J ∈ π)
Goal: (π.biUnion πi).restrict J = πi J
-- BoxIntegral.Prepartition.biUnion_le_iff
theorem biUnion_le_iff {πi : ∀ J, Prepartition J} {π' : Prepartition I} :
    π.biUnion πi ≤ π' ↔ ∀ J ∈ π, πi J ≤ π'.restrict J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} {π' : BoxIntegral.Prepartition I}
Goal: π.biUnion πi ≤ π' ↔ ∀ J ∈ π, πi J ≤ π'.restrict J
-- BoxIntegral.Prepartition.le_biUnion_iff
theorem le_biUnion_iff {πi : ∀ J, Prepartition J} {π' : Prepartition I} :
    π' ≤ π.biUnion πi ↔ π' ≤ π ∧ ∀ J ∈ π, π'.restrict J ≤ πi J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J} {π' : BoxIntegral.Prepartition I}
Goal: π' ≤ π.biUnion πi ↔ π' ≤ π ∧ ∀ J ∈ π, π'.restrict J ≤ πi J
-- BoxIntegral.Prepartition.inf_def
theorem inf_def (π₁ π₂ : Prepartition I) : π₁ ⊓ π₂ = π₁.biUnion fun J => π₂.restrict J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π₁ π₂ : BoxIntegral.Prepartition I)
Goal: π₁ ⊓ π₂ = π₁.biUnion fun J => π₂.restrict J
-- BoxIntegral.Prepartition.mem_inf
@[simp]
theorem mem_inf {π₁ π₂ : Prepartition I} :
    J ∈ π₁ ⊓ π₂ ↔ ∃ J₁ ∈ π₁, ∃ J₂ ∈ π₂, (J : WithBot (Box ι)) = ↑J₁ ⊓ ↑J₂ 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I}
Goal: J ∈ π₁ ⊓ π₂ ↔ ∃ J₁ ∈ π₁, ∃ J₂ ∈ π₂, ↑J = ↑J₁ ⊓ ↑J₂
-- BoxIntegral.Prepartition.iUnion_inf
@[simp]
theorem iUnion_inf (π₁ π₂ : Prepartition I) : (π₁ ⊓ π₂).iUnion = π₁.iUnion ∩ π₂.iUnion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π₁ π₂ : BoxIntegral.Prepartition I)
Goal: (π₁ ⊓ π₂).iUnion = π₁.iUnion ∩ π₂.iUnion
-- BoxIntegral.Prepartition.filter_boxes
@[simps]
def filter (π : Prepartition I) (p : Box ι → Prop) : Prepartition I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (p : BoxIntegral.Box ι → Prop)
Goal: (π.filter p).boxes = Finset.filter p π.boxes
-- BoxIntegral.Prepartition.mem_filter
@[simp]
theorem mem_filter {p : Box ι → Prop} : J ∈ π.filter p ↔ J ∈ π ∧ p J 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {p : BoxIntegral.Box ι → Prop}
Goal: J ∈ π.filter p ↔ J ∈ π ∧ p J
-- BoxIntegral.Prepartition.filter_le
theorem filter_le (π : Prepartition I) (p : Box ι → Prop) : π.filter p ≤ π 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (p : BoxIntegral.Box ι → Prop)
Goal: π.filter p ≤ π
-- BoxIntegral.Prepartition.filter_of_true
theorem filter_of_true {p : Box ι → Prop} (hp : ∀ J ∈ π, p J) : π.filter p = π 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) {p : BoxIntegral.Box ι → Prop} (hp : ∀ J ∈ π, p J)
Goal: π.filter p = π
-- BoxIntegral.Prepartition.filter_true
@[simp]
theorem filter_true : (π.filter fun _ => True) = π 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I)
Goal: (π.filter fun x => True) = π
-- BoxIntegral.Prepartition.iUnion_filter_not
@[simp]
theorem iUnion_filter_not (π : Prepartition I) (p : Box ι → Prop) :
    (π.filter fun J => ¬p J).iUnion = π.iUnion \ (π.filter p).iUnion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) (p : BoxIntegral.Box ι → Prop)
Goal: (π.filter fun J => ¬p J).iUnion = π.iUnion \ (π.filter p).iUnion
-- BoxIntegral.Prepartition.sum_fiberwise
theorem sum_fiberwise {α M} [AddCommMonoid M] (π : Prepartition I) (f : Box ι → α) (g : Box ι → M) :
    (∑ y ∈ π.boxes.image f, ∑ J ∈ (π.filter fun J => f J = y).boxes, g J) =
      ∑ J ∈ π.boxes, g J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {α : Type u_2} {M : Type u_3} [AddCommMonoid M] (π : BoxIntegral.Prepartition I) (f : BoxIntegral.Box ι → α) (g : BoxIntegral.Box ι → M)
Goal: ∑ y ∈ Finset.image f π.boxes, ∑ J ∈ (π.filter fun J => f J = y).boxes, g J = ∑ J ∈ π.boxes, g J
-- BoxIntegral.Prepartition.disjUnion_boxes
@[simps]
def disjUnion (π₁ π₂ : Prepartition I) (h : Disjoint π₁.iUnion π₂.iUnion) : Prepartition I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π₁ π₂ : BoxIntegral.Prepartition I) (h : Disjoint π₁.iUnion π₂.iUnion)
Goal: (π₁.disjUnion π₂ h).boxes = π₁.boxes ∪ π₂.boxes
-- BoxIntegral.Prepartition.mem_disjUnion
@[simp]
theorem mem_disjUnion (H : Disjoint π₁.iUnion π₂.iUnion) :
    J ∈ π₁.disjUnion π₂ H ↔ J ∈ π₁ ∨ J ∈ π₂ 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} (H : Disjoint π₁.iUnion π₂.iUnion)
Goal: J ∈ π₁.disjUnion π₂ H ↔ J ∈ π₁ ∨ J ∈ π₂
-- BoxIntegral.Prepartition.iUnion_disjUnion
@[simp]
theorem iUnion_disjUnion (h : Disjoint π₁.iUnion π₂.iUnion) :
    (π₁.disjUnion π₂ h).iUnion = π₁.iUnion ∪ π₂.iUnion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} (h : Disjoint π₁.iUnion π₂.iUnion)
Goal: (π₁.disjUnion π₂ h).iUnion = π₁.iUnion ∪ π₂.iUnion
-- BoxIntegral.Prepartition.sum_disj_union_boxes
@[simp]
theorem sum_disj_union_boxes {M : Type*} [AddCommMonoid M] (h : Disjoint π₁.iUnion π₂.iUnion)
    (f : Box ι → M) :
    ∑ J ∈ π₁.boxes ∪ π₂.boxes, f J = (∑ J ∈ π₁.boxes, f J) + ∑ J ∈ π₂.boxes, f J 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} {M : Type u_2} [AddCommMonoid M] (h : Disjoint π₁.iUnion π₂.iUnion) (f : BoxIntegral.Box ι → M)
Goal: ∑ J ∈ π₁.boxes ∪ π₂.boxes, f J = ∑ J ∈ π₁.boxes, f J + ∑ J ∈ π₂.boxes, f J
-- BoxIntegral.Prepartition.distortion_le_of_mem
theorem distortion_le_of_mem (h : J ∈ π) : J.distortion ≤ π.distortion 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) [Fintype ι] (h : J ∈ π)
Goal: J.distortion ≤ π.distortion
-- BoxIntegral.Prepartition.distortion_le_iff
theorem distortion_le_iff {c : ℝ≥0} : π.distortion ≤ c ↔ ∀ J ∈ π, Box.distortion J ≤ c 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) [Fintype ι] {c : ℝ≥0}
Goal: π.distortion ≤ c ↔ ∀ J ∈ π, J.distortion ≤ c
-- BoxIntegral.Prepartition.distortion_biUnion
theorem distortion_biUnion (π : Prepartition I) (πi : ∀ J, Prepartition J) :
    (π.biUnion πi).distortion = π.boxes.sup fun J => (πi J).distortion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} [Fintype ι] (π : BoxIntegral.Prepartition I) (πi : (J : BoxIntegral.Box ι) → BoxIntegral.Prepartition J)
Goal: (π.biUnion πi).distortion = π.boxes.sup fun J => (πi J).distortion
-- BoxIntegral.Prepartition.distortion_disjUnion
@[simp]
theorem distortion_disjUnion (h : Disjoint π₁.iUnion π₂.iUnion) :
    (π₁.disjUnion π₂ h).distortion = max π₁.distortion π₂.distortion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π₁ π₂ : BoxIntegral.Prepartition I} [Fintype ι] (h : Disjoint π₁.iUnion π₂.iUnion)
Goal: (π₁.disjUnion π₂ h).distortion = max π₁.distortion π₂.distortion
-- BoxIntegral.Prepartition.distortion_of_const
theorem distortion_of_const {c} (h₁ : π.boxes.Nonempty) (h₂ : ∀ J ∈ π, Box.distortion J = c) :
    π.distortion = c 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} (π : BoxIntegral.Prepartition I) [Fintype ι] {c : ℝ≥0} (h₁ : π.boxes.Nonempty) (h₂ : ∀ J ∈ π, J.distortion = c)
Goal: π.distortion = c
-- BoxIntegral.Prepartition.distortion_top
@[simp]
theorem distortion_top (I : Box ι) : distortion (⊤ : Prepartition I) = I.distortion 
Arguments: {ι : Type u_1} [Fintype ι] (I : BoxIntegral.Box ι)
Goal: ⊤.distortion = I.distortion
-- BoxIntegral.Prepartition.distortion_bot
@[simp]
theorem distortion_bot (I : Box ι) : distortion (⊥ : Prepartition I) = 0 
Arguments: {ι : Type u_1} [Fintype ι] (I : BoxIntegral.Box ι)
Goal: ⊥.distortion = 0
-- BoxIntegral.Prepartition.isPartition_iff_iUnion_eq
theorem isPartition_iff_iUnion_eq {π : Prepartition I} : π.IsPartition ↔ π.iUnion = I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π : BoxIntegral.Prepartition I}
Goal: π.IsPartition ↔ π.iUnion = ↑I
-- BoxIntegral.Prepartition.isPartition_single_iff
@[simp]
theorem isPartition_single_iff (h : J ≤ I) : IsPartition (single I J h) ↔ J = I 
Arguments: {ι : Type u_1} {I J : BoxIntegral.Box ι} (h : J ≤ I)
Goal: (BoxIntegral.Prepartition.single I J h).IsPartition ↔ J = I
-- BoxIntegral.Prepartition.isPartitionTop
theorem isPartitionTop (I : Box ι) : IsPartition (⊤ : Prepartition I) 
Arguments: {ι : Type u_1} (I : BoxIntegral.Box ι)
Goal: ⊤.IsPartition
-- BoxIntegral.Prepartition.IsPartition.iUnion_eq
theorem iUnion_eq (h : π.IsPartition) : π.iUnion = I 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π : BoxIntegral.Prepartition I} (h : π.IsPartition)
Goal: π.iUnion = ↑I
-- BoxIntegral.Prepartition.IsPartition.iUnion_subset
theorem iUnion_subset (h : π.IsPartition) (π₁ : Prepartition I) : π₁.iUnion ⊆ π.iUnion 
Arguments: {ι : Type u_1} {I : BoxIntegral.Box ι} {π : BoxIntegral.Prepartition I} (h : π.IsPartition) (π₁ : BoxIntegral.Prepartition I)
Goal: π₁.iUnion ⊆ π.iUnion