[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
simp only [← set_integral_congr_set_ae (Box.coe_ae_eq_Icc _)]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1 =
    ∑ x : Fin (n + 1),
      ((∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.upper I x) x_1) x) -
        ∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.lower I x) x_1) x)
[PROOFSTEP]
have A := (Hi.mono_set Box.coe_subset_Icc).hasBoxIntegral ⊥ rfl
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1 =
    ∑ x : Fin (n + 1),
      ((∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.upper I x) x_1) x) -
        ∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.lower I x) x_1) x)
[PROOFSTEP]
have B :=
  hasIntegral_GP_divergence_of_forall_hasDerivWithinAt I f f' (s ∩ Box.Icc I) (hs.mono (inter_subset_left _ _))
    (fun x hx => Hc _ hx.2) fun x hx => Hd _ ⟨hx.1, fun h => hx.2 ⟨h, hx.1⟩⟩
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1 =
    ∑ x : Fin (n + 1),
      ((∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.upper I x) x_1) x) -
        ∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.lower I x) x_1) x)
[PROOFSTEP]
rw [continuousOn_pi] at Hc 
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1 =
    ∑ x : Fin (n + 1),
      ((∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.upper I x) x_1) x) -
        ∫ (x_1 : Fin n → ℝ) in ↑(Box.face I x), f (Fin.insertNth x (Box.lower I x) x_1) x)
[PROOFSTEP]
refine' (A.unique B).trans (sum_congr rfl fun i _ => _)
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
⊢ BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
        BoxAdditiveMap.volume -
      BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
        BoxAdditiveMap.volume =
    (∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
      ∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i
[PROOFSTEP]
refine' congr_arg₂ Sub.sub _ _
[GOAL]
case refine'_1
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
⊢ BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
      BoxAdditiveMap.volume =
    ∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i
[PROOFSTEP]
have := Box.continuousOn_face_Icc (Hc i) (Set.right_mem_Icc.2 (I.lower_le_upper i))
[GOAL]
case refine'_1
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
this : ContinuousOn ((fun y => f y i) ∘ Fin.insertNth i (Box.upper I i)) (↑Box.Icc (Box.face I i))
⊢ BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
      BoxAdditiveMap.volume =
    ∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i
[PROOFSTEP]
have := (this.integrableOn_compact (μ := volume) (Box.isCompact_Icc _)).mono_set Box.coe_subset_Icc
[GOAL]
case refine'_1
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
this✝ : ContinuousOn ((fun y => f y i) ∘ Fin.insertNth i (Box.upper I i)) (↑Box.Icc (Box.face I i))
this : IntegrableOn ((fun y => f y i) ∘ Fin.insertNth i (Box.upper I i)) ↑(Box.face I i)
⊢ BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
      BoxAdditiveMap.volume =
    ∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i
[PROOFSTEP]
exact (this.hasBoxIntegral ⊥ rfl).integral_eq
[GOAL]
case refine'_2
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
⊢ BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
      BoxAdditiveMap.volume =
    ∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i
[PROOFSTEP]
have := Box.continuousOn_face_Icc (Hc i) (Set.left_mem_Icc.2 (I.lower_le_upper i))
[GOAL]
case refine'_2
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
this : ContinuousOn ((fun y => f y i) ∘ Fin.insertNth i (Box.lower I i)) (↑Box.Icc (Box.face I i))
⊢ BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
      BoxAdditiveMap.volume =
    ∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i
[PROOFSTEP]
have := (this.integrableOn_compact (μ := volume) (Box.isCompact_Icc _)).mono_set Box.coe_subset_Icc
[GOAL]
case refine'_2
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (fun y => f y i) (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc I \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc I) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
A :
  HasIntegral I ⊥ (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (BoxAdditiveMap.toSMul (Measure.toBoxAdditive volume))
    (∫ (x : Fin (n + 1) → ℝ) in ↑I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i)
B :
  HasIntegral I IntegrationParams.GP (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) BoxAdditiveMap.volume
    (∑ i : Fin (n + 1),
      (BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.upper I i) x) i)
          BoxAdditiveMap.volume -
        BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
          BoxAdditiveMap.volume))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
this✝ : ContinuousOn ((fun y => f y i) ∘ Fin.insertNth i (Box.lower I i)) (↑Box.Icc (Box.face I i))
this : IntegrableOn ((fun y => f y i) ∘ Fin.insertNth i (Box.lower I i)) ↑(Box.face I i)
⊢ BoxIntegral.integral (Box.face I i) IntegrationParams.GP (fun x => f (Fin.insertNth i (Box.lower I i) x) i)
      BoxAdditiveMap.volume =
    ∫ (x : Fin n → ℝ) in ↑(Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i
[PROOFSTEP]
exact (this.hasBoxIntegral ⊥ rfl).integral_eq
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
rcases I.exists_seq_mono_tendsto with ⟨J, hJ_sub, hJl, hJu⟩
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
have hJ_sub' : ∀ k, Box.Icc (J k) ⊆ Box.Icc I := fun k => (hJ_sub k).trans I.Ioo_subset_Icc
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
have hJ_le : ∀ k, J k ≤ I := fun k => Box.le_iff_Icc.2 (hJ_sub' k)
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
have HcJ : ∀ k, ContinuousOn f (Box.Icc (J k)) := fun k => Hc.mono (hJ_sub' k)
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
have HdJ : ∀ (k), ∀ x ∈ (Box.Icc (J k)) \ s, HasFDerivWithinAt f (f' x) (Box.Icc (J k)) x := fun k x hx =>
  (Hd x ⟨hJ_sub k hx.1, hx.2⟩).hasFDerivWithinAt
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
have HiJ : ∀ k, IntegrableOn (∑ i, f' · (e i) i) (Box.Icc (J k)) volume := fun k =>
  Hi.mono_set
    (hJ_sub' k)
      -- Apply the previous lemma to `J k`.
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
have HJ_eq := fun k =>
  integral_divergence_of_hasFDerivWithinAt_off_countable_aux₁ (J k) f f' s hs (HcJ k) (HdJ k)
    (HiJ k)
      -- Note that the LHS of `HJ_eq k` tends to the LHS of the goal as `k → ∞`.
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
have hI_tendsto :
  Tendsto (fun k => ∫ x in Box.Icc (J k), ∑ i, f' x (e i) i) atTop (𝓝 (∫ x in Box.Icc I, ∑ i, f' x (e i) i)) :=
  by
  simp only [IntegrableOn, ← Measure.restrict_congr_set (Box.Ioo_ae_eq_Icc _)] at Hi ⊢
  rw [← Box.iUnion_Ioo_of_tendsto J.monotone hJl hJu] at Hi ⊢
  exact tendsto_set_integral_of_monotone (fun k => (J k).measurableSet_Ioo) (Box.Ioo.comp J).monotone Hi
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
⊢ Tendsto (fun k => ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i) atTop
    (𝓝 (∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i))
[PROOFSTEP]
simp only [IntegrableOn, ← Measure.restrict_congr_set (Box.Ioo_ae_eq_Icc _)] at Hi ⊢
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
Hi : Integrable fun x => ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1
⊢ Tendsto (fun k => ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Ioo (↑J k), ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1) atTop
    (𝓝 (∫ (x : Fin (n + 1) → ℝ) in ↑Box.Ioo I, ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1))
[PROOFSTEP]
rw [← Box.iUnion_Ioo_of_tendsto J.monotone hJl hJu] at Hi ⊢
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
Hi : Integrable fun x => ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1
⊢ Tendsto (fun k => ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Ioo (↑J k), ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1) atTop
    (𝓝 (∫ (x : Fin (n + 1) → ℝ) in ⋃ (n_1 : ℕ), ↑Box.Ioo (↑J n_1), ∑ x_1 : Fin (n + 1), ↑(f' x) (e x_1) x_1))
[PROOFSTEP]
exact tendsto_set_integral_of_monotone (fun k => (J k).measurableSet_Ioo) (Box.Ioo.comp J).monotone Hi
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
hI_tendsto :
  Tendsto (fun k => ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i) atTop
    (𝓝 (∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i))
⊢ ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
        ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)
[PROOFSTEP]
refine' tendsto_nhds_unique_of_eventuallyEq hI_tendsto _ (eventually_of_forall HJ_eq)
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
hI_tendsto :
  Tendsto (fun k => ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i) atTop
    (𝓝 (∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc I, ∑ i : Fin (n + 1), ↑(f' x) (e i) i))
⊢ Tendsto
    (fun x =>
      ∑ i : Fin (n + 1),
        ((∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.upper (↑J x) i) x_1) i) -
          ∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.lower (↑J x) i) x_1) i))
    atTop
    (𝓝
      (∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)))
[PROOFSTEP]
clear hI_tendsto
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : Tendsto (Box.lower ∘ ↑J) atTop (𝓝 I.lower)
hJu : Tendsto (Box.upper ∘ ↑J) atTop (𝓝 I.upper)
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
⊢ Tendsto
    (fun x =>
      ∑ i : Fin (n + 1),
        ((∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.upper (↑J x) i) x_1) i) -
          ∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.lower (↑J x) i) x_1) i))
    atTop
    (𝓝
      (∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)))
[PROOFSTEP]
rw [tendsto_pi_nhds] at hJl hJu 
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
⊢ Tendsto
    (fun x =>
      ∑ i : Fin (n + 1),
        ((∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.upper (↑J x) i) x_1) i) -
          ∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.lower (↑J x) i) x_1) i))
    atTop
    (𝓝
      (∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)))
[PROOFSTEP]
suffices
  ∀ (i : Fin (n + 1)) (c : ℕ → ℝ) (d),
    (∀ k, c k ∈ Icc (I.lower i) (I.upper i)) →
      Tendsto c atTop (𝓝 d) →
        Tendsto (fun k => ∫ x in Box.Icc ((J k).face i), f (i.insertNth (c k) x) i) atTop
          (𝓝 <| ∫ x in Box.Icc (I.face i), f (i.insertNth d x) i)
  by
  rw [Box.Icc_eq_pi] at hJ_sub' 
  refine' tendsto_finset_sum _ fun i _ => (this _ _ _ _ (hJu _)).sub (this _ _ _ _ (hJl _))
  exacts [fun k => hJ_sub' k (J k).upper_mem_Icc _ trivial, fun k => hJ_sub' k (J k).lower_mem_Icc _ trivial]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
this :
  ∀ (i : Fin (n + 1)) (c : ℕ → ℝ) (d : ℝ),
    (∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)) →
      Tendsto c atTop (𝓝 d) →
        Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
          (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
⊢ Tendsto
    (fun x =>
      ∑ i : Fin (n + 1),
        ((∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.upper (↑J x) i) x_1) i) -
          ∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.lower (↑J x) i) x_1) i))
    atTop
    (𝓝
      (∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)))
[PROOFSTEP]
rw [Box.Icc_eq_pi] at hJ_sub' 
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ Set.pi Set.univ fun i => Set.Icc (Box.lower I i) (Box.upper I i)
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
this :
  ∀ (i : Fin (n + 1)) (c : ℕ → ℝ) (d : ℝ),
    (∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)) →
      Tendsto c atTop (𝓝 d) →
        Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
          (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
⊢ Tendsto
    (fun x =>
      ∑ i : Fin (n + 1),
        ((∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.upper (↑J x) i) x_1) i) -
          ∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (Box.lower (↑J x) i) x_1) i))
    atTop
    (𝓝
      (∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.upper I i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i (Box.lower I i) x) i)))
[PROOFSTEP]
refine' tendsto_finset_sum _ fun i _ => (this _ _ _ _ (hJu _)).sub (this _ _ _ _ (hJl _))
[GOAL]
case refine'_1
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ Set.pi Set.univ fun i => Set.Icc (Box.lower I i) (Box.upper I i)
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
this :
  ∀ (i : Fin (n + 1)) (c : ℕ → ℝ) (d : ℝ),
    (∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)) →
      Tendsto c atTop (𝓝 d) →
        Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
          (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
⊢ ∀ (k : ℕ), (Box.upper ∘ ↑J) k i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
case refine'_2
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ Set.pi Set.univ fun i => Set.Icc (Box.lower I i) (Box.upper I i)
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
this :
  ∀ (i : Fin (n + 1)) (c : ℕ → ℝ) (d : ℝ),
    (∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)) →
      Tendsto c atTop (𝓝 d) →
        Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
          (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
i : Fin (n + 1)
x✝ : i ∈ Finset.univ
⊢ ∀ (k : ℕ), Box.lower (↑J k) i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
[PROOFSTEP]
exacts [fun k => hJ_sub' k (J k).upper_mem_Icc _ trivial, fun k => hJ_sub' k (J k).lower_mem_Icc _ trivial]
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
⊢ ∀ (i : Fin (n + 1)) (c : ℕ → ℝ) (d : ℝ),
    (∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)) →
      Tendsto c atTop (𝓝 d) →
        Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
          (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
intro i c d hc hcd
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
have hd : d ∈ Icc (I.lower i) (I.upper i) := isClosed_Icc.mem_of_tendsto hcd (eventually_of_forall hc)
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
have Hic : ∀ k, IntegrableOn (fun x => f (i.insertNth (c k) x) i) (Box.Icc (I.face i)) := fun k =>
  (Box.continuousOn_face_Icc ((continuous_apply i).comp_continuousOn Hc) (hc k)).integrableOn_Icc
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
have Hid : IntegrableOn (fun x => f (i.insertNth d x) i) (Box.Icc (I.face i)) :=
  (Box.continuousOn_face_Icc ((continuous_apply i).comp_continuousOn Hc) hd).integrableOn_Icc
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
have H :
  Tendsto (fun k => ∫ x in Box.Icc ((J k).face i), f (i.insertNth d x) i) atTop
    (𝓝 <| ∫ x in Box.Icc (I.face i), f (i.insertNth d x) i) :=
  by
  have hIoo : (⋃ k, Box.Ioo ((J k).face i)) = Box.Ioo (I.face i) :=
    Box.iUnion_Ioo_of_tendsto ((Box.monotone_face i).comp J.monotone) (tendsto_pi_nhds.2 fun _ => hJl _)
      (tendsto_pi_nhds.2 fun _ => hJu _)
  simp only [IntegrableOn, ← Measure.restrict_congr_set (Box.Ioo_ae_eq_Icc _), ← hIoo] at Hid ⊢
  exact
    tendsto_set_integral_of_monotone (fun k => ((J k).face i).measurableSet_Ioo)
      (Box.Ioo.monotone.comp ((Box.monotone_face i).comp J.monotone)) Hid
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
have hIoo : (⋃ k, Box.Ioo ((J k).face i)) = Box.Ioo (I.face i) :=
  Box.iUnion_Ioo_of_tendsto ((Box.monotone_face i).comp J.monotone) (tendsto_pi_nhds.2 fun _ => hJl _)
    (tendsto_pi_nhds.2 fun _ => hJu _)
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
hIoo : ⋃ (k : ℕ), ↑Box.Ioo (Box.face (↑J k) i) = ↑Box.Ioo (Box.face I i)
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
simp only [IntegrableOn, ← Measure.restrict_congr_set (Box.Ioo_ae_eq_Icc _), ← hIoo] at Hid ⊢
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
hIoo : ⋃ (k : ℕ), ↑Box.Ioo (Box.face (↑J k) i) = ↑Box.Ioo (Box.face I i)
Hid : Integrable fun x => f (Fin.insertNth i d x) i
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Ioo (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ⋃ (k : ℕ), ↑Box.Ioo (Box.face (↑J k) i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
exact
  tendsto_set_integral_of_monotone (fun k => ((J k).face i).measurableSet_Ioo)
    (Box.Ioo.monotone.comp ((Box.monotone_face i).comp J.monotone)) Hid
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
⊢ Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
[PROOFSTEP]
refine' H.congr_dist (Metric.nhds_basis_closedBall.tendsto_right_iff.2 fun ε εpos => _)
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
⊢ ∀ᶠ (x : ℕ) in atTop,
    dist (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i d x) i)
        (∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (c x) x_1) i) ∈
      Metric.closedBall 0 ε
[PROOFSTEP]
have hvol_pos : ∀ J : Box (Fin n), 0 < ∏ j, (J.upper j - J.lower j) := fun J =>
  prod_pos fun j hj =>
    sub_pos.2 <|
      J.lower_lt_upper
        _
          /- Choose `δ > 0` such that for any `x y ∈ I.Icc` at distance at most `δ`, the distance between
              `f x` and `f y` is at most `ε / volume (I.face i).Icc`, then the distance between the integrals
              is at most `(ε / volume (I.face i).Icc) * volume ((J k).face i).Icc ≤ ε`. -/
[GOAL]
case intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
⊢ ∀ᶠ (x : ℕ) in atTop,
    dist (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i d x) i)
        (∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (c x) x_1) i) ∈
      Metric.closedBall 0 ε
[PROOFSTEP]
rcases Metric.uniformContinuousOn_iff_le.1 (I.isCompact_Icc.uniformContinuousOn_of_continuous Hc)
    (ε / ∏ j, ((I.face i).upper j - (I.face i).lower j)) (div_pos εpos (hvol_pos (I.face i))) with
  ⟨δ, δpos, hδ⟩
[GOAL]
case intro.intro.intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
⊢ ∀ᶠ (x : ℕ) in atTop,
    dist (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i d x) i)
        (∫ (x_1 : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J x) i), f (Fin.insertNth i (c x) x_1) i) ∈
      Metric.closedBall 0 ε
[PROOFSTEP]
refine' (hcd.eventually (Metric.ball_mem_nhds _ δpos)).mono fun k hk => _
[GOAL]
case intro.intro.intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
⊢ dist (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i)
      (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) ∈
    Metric.closedBall 0 ε
[PROOFSTEP]
have Hsub : Box.Icc ((J k).face i) ⊆ Box.Icc (I.face i) := Box.le_iff_Icc.1 (Box.face_mono (hJ_le _) i)
[GOAL]
case intro.intro.intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
⊢ dist (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i)
      (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (c k) x) i) ∈
    Metric.closedBall 0 ε
[PROOFSTEP]
rw [mem_closedBall_zero_iff, Real.norm_eq_abs, abs_of_nonneg dist_nonneg, dist_eq_norm, ←
  integral_sub (Hid.mono_set Hsub) ((Hic _).mono_set Hsub)]
[GOAL]
case intro.intro.intro.intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
⊢ ‖∫ (a : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d a) i - f (Fin.insertNth i (c k) a) i‖ ≤ ε
[PROOFSTEP]
calc
  ‖∫ x in Box.Icc ((J k).face i), f (i.insertNth d x) i - f (i.insertNth (c k) x) i‖ ≤
      (ε / ∏ j, ((I.face i).upper j - (I.face i).lower j)) * (volume (Box.Icc ((J k).face i))).toReal :=
    by
    refine
      norm_set_integral_le_of_norm_le_const' (((J k).face i).measure_Icc_lt_top _) ((J k).face i).measurableSet_Icc
        fun x hx => ?_
    rw [← dist_eq_norm]
    calc
      dist (f (i.insertNth d x) i) (f (i.insertNth (c k) x) i) ≤ dist (f (i.insertNth d x)) (f (i.insertNth (c k) x)) :=
        dist_le_pi_dist (f (i.insertNth d x)) (f (i.insertNth (c k) x)) i
      _ ≤ ε / ∏ j, ((I.face i).upper j - (I.face i).lower j) :=
        hδ _ (I.mapsTo_insertNth_face_Icc hd <| Hsub hx) _ (I.mapsTo_insertNth_face_Icc (hc _) <| Hsub hx) ?_
    rw [Fin.dist_insertNth_insertNth, dist_self, dist_comm]
    exact max_le hk.le δpos.lt.le
  _ ≤ ε :=
    by
    rw [Box.Icc_def, Real.volume_Icc_pi_toReal ((J k).face i).lower_le_upper, ← le_div_iff (hvol_pos _)]
    refine' div_le_div_of_le_left εpos.le (hvol_pos _) (prod_le_prod (fun j _ => _) fun j _ => _)
    exacts [sub_nonneg.2 (Box.lower_le_upper _ _),
      sub_le_sub ((hJ_sub' _ (J _).upper_mem_Icc).2 _) ((hJ_sub' _ (J _).lower_mem_Icc).1 _)]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
⊢ ‖∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i - f (Fin.insertNth i (c k) x) i‖ ≤
    (ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)) *
      ENNReal.toReal (↑↑volume (↑Box.Icc (Box.face (↑J k) i)))
[PROOFSTEP]
refine
  norm_set_integral_le_of_norm_le_const' (((J k).face i).measure_Icc_lt_top _) ((J k).face i).measurableSet_Icc
    fun x hx => ?_
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
x : Fin n → ℝ
hx : x ∈ ↑Box.Icc (Box.face (↑J k) i)
⊢ ‖f (Fin.insertNth i d x) i - f (Fin.insertNth i (c k) x) i‖ ≤
    ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
[PROOFSTEP]
rw [← dist_eq_norm]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
x : Fin n → ℝ
hx : x ∈ ↑Box.Icc (Box.face (↑J k) i)
⊢ dist (f (Fin.insertNth i d x) i) (f (Fin.insertNth i (c k) x) i) ≤
    ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
[PROOFSTEP]
calc
  dist (f (i.insertNth d x) i) (f (i.insertNth (c k) x) i) ≤ dist (f (i.insertNth d x)) (f (i.insertNth (c k) x)) :=
    dist_le_pi_dist (f (i.insertNth d x)) (f (i.insertNth (c k) x)) i
  _ ≤ ε / ∏ j, ((I.face i).upper j - (I.face i).lower j) :=
    hδ _ (I.mapsTo_insertNth_face_Icc hd <| Hsub hx) _ (I.mapsTo_insertNth_face_Icc (hc _) <| Hsub hx) ?_
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
x : Fin n → ℝ
hx : x ∈ ↑Box.Icc (Box.face (↑J k) i)
⊢ dist (Fin.insertNth i d x) (Fin.insertNth i (c k) x) ≤ δ
[PROOFSTEP]
rw [Fin.dist_insertNth_insertNth, dist_self, dist_comm]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
x : Fin n → ℝ
hx : x ∈ ↑Box.Icc (Box.face (↑J k) i)
⊢ max (dist (c k) d) 0 ≤ δ
[PROOFSTEP]
exact max_le hk.le δpos.lt.le
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
⊢ (ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)) *
      ENNReal.toReal (↑↑volume (↑Box.Icc (Box.face (↑J k) i))) ≤
    ε
[PROOFSTEP]
rw [Box.Icc_def, Real.volume_Icc_pi_toReal ((J k).face i).lower_le_upper, ← le_div_iff (hvol_pos _)]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
⊢ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j) ≤
    ε / ∏ j : Fin n, (Box.upper (Box.face (↑J k) i) j - Box.lower (Box.face (↑J k) i) j)
[PROOFSTEP]
refine' div_le_div_of_le_left εpos.le (hvol_pos _) (prod_le_prod (fun j _ => _) fun j _ => _)
[GOAL]
case refine'_1
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
j : Fin n
x✝ : j ∈ Finset.univ
⊢ 0 ≤ Box.upper (Box.face (↑J k) i) j - Box.lower (Box.face (↑J k) i) j
case refine'_2
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
I : Box (Fin (n + 1))
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (↑Box.Icc I)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Ioo I \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc I)
J : ℕ →o Box (Fin (n + 1))
hJ_sub : ∀ (n_1 : ℕ), ↑Box.Icc (↑J n_1) ⊆ ↑Box.Ioo I
hJl : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.lower ∘ ↑J) i x) atTop (𝓝 (Box.lower I x))
hJu : ∀ (x : Fin (n + 1)), Tendsto (fun i => (Box.upper ∘ ↑J) i x) atTop (𝓝 (Box.upper I x))
hJ_sub' : ∀ (k : ℕ), ↑Box.Icc (↑J k) ⊆ ↑Box.Icc I
hJ_le : ∀ (k : ℕ), ↑J k ≤ I
HcJ : ∀ (k : ℕ), ContinuousOn f (↑Box.Icc (↑J k))
HdJ : ∀ (k : ℕ) (x : Fin (n + 1) → ℝ), x ∈ ↑Box.Icc (↑J k) \ s → HasFDerivWithinAt f (f' x) (↑Box.Icc (↑J k)) x
HiJ : ∀ (k : ℕ), IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (↑Box.Icc (↑J k))
HJ_eq :
  ∀ (k : ℕ),
    ∫ (x : Fin (n + 1) → ℝ) in ↑Box.Icc (↑J k), ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
      ∑ i : Fin (n + 1),
        ((∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.upper (↑J k) i) x) i) -
          ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i (Box.lower (↑J k) i) x) i)
i : Fin (n + 1)
c : ℕ → ℝ
d : ℝ
hc : ∀ (k : ℕ), c k ∈ Set.Icc (Box.lower I i) (Box.upper I i)
hcd : Tendsto c atTop (𝓝 d)
hd : d ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hic : ∀ (k : ℕ), IntegrableOn (fun x => f (Fin.insertNth i (c k) x) i) (↑Box.Icc (Box.face I i))
Hid : IntegrableOn (fun x => f (Fin.insertNth i d x) i) (↑Box.Icc (Box.face I i))
H :
  Tendsto (fun k => ∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face (↑J k) i), f (Fin.insertNth i d x) i) atTop
    (𝓝 (∫ (x : Fin n → ℝ) in ↑Box.Icc (Box.face I i), f (Fin.insertNth i d x) i))
ε : ℝ
εpos : 0 < ε
hvol_pos : ∀ (J : Box (Fin n)), 0 < ∏ j : Fin n, (Box.upper J j - Box.lower J j)
δ : ℝ
δpos : δ > 0
hδ :
  ∀ (x : Fin (n + 1) → ℝ),
    x ∈ ↑Box.Icc I →
      ∀ (y : Fin (n + 1) → ℝ),
        y ∈ ↑Box.Icc I →
          dist x y ≤ δ → dist (f x) (f y) ≤ ε / ∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)
k : ℕ
hk : dist (c k) d < δ
Hsub : ↑Box.Icc (Box.face (↑J k) i) ⊆ ↑Box.Icc (Box.face I i)
j : Fin n
x✝ : j ∈ Finset.univ
⊢ Box.upper (Box.face (↑J k) i) j - Box.lower (Box.face (↑J k) i) j ≤
    Box.upper (Box.face I i) j - Box.lower (Box.face I i) j
[PROOFSTEP]
exacts [sub_nonneg.2 (Box.lower_le_upper _ _),
  sub_le_sub ((hJ_sub' _ (J _).upper_mem_Icc).2 _) ((hJ_sub' _ (J _).lower_mem_Icc).1 _)]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
⊢ ∫ (x : Fin (n + 1) → ℝ) in Set.Icc a b, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
        ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i)
[PROOFSTEP]
rcases em (∃ i, a i = b i) with (⟨i, hi⟩ | hne)
[GOAL]
case inl.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
⊢ ∫ (x : Fin (n + 1) → ℝ) in Set.Icc a b, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
        ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i)
[PROOFSTEP]
rw [volume_pi, ← set_integral_congr_set_ae Measure.univ_pi_Ioc_ae_eq_Icc]
[GOAL]
case inl.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
⊢ (∫ (x : Fin (n + 1) → ℝ) in Set.pi Set.univ fun i => Set.Ioc (a i) (b i),
      ∑ i : Fin (n + 1), ↑(f' x) (e i) i ∂Measure.pi fun x => volume) =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
        ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i)
[PROOFSTEP]
have hi' : Ioc (a i) (b i) = ∅ := Ioc_eq_empty hi.not_lt
[GOAL]
case inl.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
hi' : Set.Ioc (a i) (b i) = ∅
⊢ (∫ (x : Fin (n + 1) → ℝ) in Set.pi Set.univ fun i => Set.Ioc (a i) (b i),
      ∑ i : Fin (n + 1), ↑(f' x) (e i) i ∂Measure.pi fun x => volume) =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
        ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i)
[PROOFSTEP]
have : (pi Set.univ fun j => Ioc (a j) (b j)) = ∅ := univ_pi_eq_empty hi'
[GOAL]
case inl.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
hi' : Set.Ioc (a i) (b i) = ∅
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
⊢ (∫ (x : Fin (n + 1) → ℝ) in Set.pi Set.univ fun i => Set.Ioc (a i) (b i),
      ∑ i : Fin (n + 1), ↑(f' x) (e i) i ∂Measure.pi fun x => volume) =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
        ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i)
[PROOFSTEP]
rw [this, integral_empty, sum_eq_zero]
[GOAL]
case inl.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
hi' : Set.Ioc (a i) (b i) = ∅
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
⊢ ∀ (x : Fin (n + 1)),
    x ∈ Finset.univ →
      (∫ (x_1 : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove x) (b ∘ Fin.succAbove x), f (Fin.insertNth x (b x) x_1) x) -
          ∫ (x_1 : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove x) (b ∘ Fin.succAbove x), f (Fin.insertNth x (a x) x_1) x =
        0
[PROOFSTEP]
rintro j -
[GOAL]
case inl.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
hi' : Set.Ioc (a i) (b i) = ∅
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
j : Fin (n + 1)
⊢ (∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (b j) x) j) -
      ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (a j) x) j =
    0
[PROOFSTEP]
rcases eq_or_ne i j with (rfl | hne)
[GOAL]
case inl.intro.inl
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
hi' : Set.Ioc (a i) (b i) = ∅
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
⊢ (∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
      ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i =
    0
[PROOFSTEP]
simp [hi]
[GOAL]
case inl.intro.inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
i : Fin (n + 1)
hi : a i = b i
hi' : Set.Ioc (a i) (b i) = ∅
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
j : Fin (n + 1)
hne : i ≠ j
⊢ (∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (b j) x) j) -
      ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (a j) x) j =
    0
[PROOFSTEP]
rcases Fin.exists_succAbove_eq hne with ⟨i, rfl⟩
[GOAL]
case inl.intro.inr.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
j : Fin (n + 1)
i : Fin n
hi : a (Fin.succAbove j i) = b (Fin.succAbove j i)
hi' : Set.Ioc (a (Fin.succAbove j i)) (b (Fin.succAbove j i)) = ∅
hne : Fin.succAbove j i ≠ j
⊢ (∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (b j) x) j) -
      ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (a j) x) j =
    0
[PROOFSTEP]
have : Icc (a ∘ j.succAbove) (b ∘ j.succAbove) =ᵐ[volume] (∅ : Set ℝⁿ)
[GOAL]
case this
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
j : Fin (n + 1)
i : Fin n
hi : a (Fin.succAbove j i) = b (Fin.succAbove j i)
hi' : Set.Ioc (a (Fin.succAbove j i)) (b (Fin.succAbove j i)) = ∅
hne : Fin.succAbove j i ≠ j
⊢ Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j) =ᵐ[volume] ∅
[PROOFSTEP]
rw [ae_eq_empty, Real.volume_Icc_pi, prod_eq_zero (Finset.mem_univ i)]
[GOAL]
case this
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
this : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
j : Fin (n + 1)
i : Fin n
hi : a (Fin.succAbove j i) = b (Fin.succAbove j i)
hi' : Set.Ioc (a (Fin.succAbove j i)) (b (Fin.succAbove j i)) = ∅
hne : Fin.succAbove j i ≠ j
⊢ ENNReal.ofReal ((b ∘ Fin.succAbove j) i - (a ∘ Fin.succAbove j) i) = 0
[PROOFSTEP]
simp [hi]
[GOAL]
case inl.intro.inr.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
this✝ : (Set.pi Set.univ fun j => Set.Ioc (a j) (b j)) = ∅
j : Fin (n + 1)
i : Fin n
hi : a (Fin.succAbove j i) = b (Fin.succAbove j i)
hi' : Set.Ioc (a (Fin.succAbove j i)) (b (Fin.succAbove j i)) = ∅
hne : Fin.succAbove j i ≠ j
this : Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j) =ᵐ[volume] ∅
⊢ (∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (b j) x) j) -
      ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove j) (b ∘ Fin.succAbove j), f (Fin.insertNth j (a j) x) j =
    0
[PROOFSTEP]
rw [set_integral_congr_set_ae this, set_integral_congr_set_ae this, integral_empty, integral_empty, sub_self]
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
hne : ¬∃ i, a i = b i
⊢ ∫ (x : Fin (n + 1) → ℝ) in Set.Icc a b, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
        ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i)
[PROOFSTEP]
have hlt : ∀ i, a i < b i := fun i => (hle i).lt_of_ne fun hi => hne ⟨i, hi⟩
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
n : ℕ
a b : Fin (n + 1) → ℝ
hle : a ≤ b
f : (Fin (n + 1) → ℝ) → Fin (n + 1) → E
f' : (Fin (n + 1) → ℝ) → (Fin (n + 1) → ℝ) →L[ℝ] Fin (n + 1) → E
s : Set (Fin (n + 1) → ℝ)
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : Fin (n + 1) → ℝ), x ∈ (Set.pi Set.univ fun i => Set.Ioo (a i) (b i)) \ s → HasFDerivAt f (f' x) x
Hi : IntegrableOn (fun x => ∑ i : Fin (n + 1), ↑(f' x) (e i) i) (Set.Icc a b)
hne : ¬∃ i, a i = b i
hlt : ∀ (i : Fin (n + 1)), a i < b i
⊢ ∫ (x : Fin (n + 1) → ℝ) in Set.Icc a b, ∑ i : Fin (n + 1), ↑(f' x) (e i) i =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (b i) x) i) -
        ∫ (x : Fin n → ℝ) in Set.Icc (a ∘ Fin.succAbove i) (b ∘ Fin.succAbove i), f (Fin.insertNth i (a i) x) i)
[PROOFSTEP]
exact integral_divergence_of_hasFDerivWithinAt_off_countable_aux₂ ⟨a, b, hlt⟩ f f' s hs Hc Hd Hi
[GOAL]
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
⊢ ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
[PROOFSTEP]
ext1 x
[GOAL]
case h
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
x : F
⊢ x ∈ ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) ↔ x ∈ Set.Icc a b
[PROOFSTEP]
simp only [Set.mem_preimage, Set.mem_Icc, he_ord]
[GOAL]
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
⊢ Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
[PROOFSTEP]
rw [← hIcc, eL.symm_preimage_preimage]
[GOAL]
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ ∫ (x : F) in Set.Icc a b, DF x =
    ∫ (x : F) in Set.Icc a b, ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
[PROOFSTEP]
simp only [hDF]
[GOAL]
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ ∫ (x : F) in Set.Icc a b, ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i)) =
    ∫ (x : (fun x => Fin (n + 1) → ℝ) a) in Set.Icc (↑eL a) (↑eL b),
      ∑ i : Fin (n + 1), ↑(f' i (↑(ContinuousLinearEquiv.symm eL) x)) (↑(ContinuousLinearEquiv.symm eL) (e i))
[PROOFSTEP]
rw [← he_vol.set_integral_preimage_emb he_emb]
[GOAL]
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ ∫ (x : F) in Set.Icc a b, ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i)) =
    ∫ (x : F) in ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b),
      ∑ i : Fin (n + 1), ↑(f' i (↑(ContinuousLinearEquiv.symm eL) (↑eL x))) (↑(ContinuousLinearEquiv.symm eL) (e i))
[PROOFSTEP]
simp only [hIcc, eL.symm_apply_apply]
[GOAL]
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ ∫ (x : (fun x => Fin (n + 1) → ℝ) a) in Set.Icc (↑eL a) (↑eL b),
      ∑ i : Fin (n + 1), ↑(f' i (↑(ContinuousLinearEquiv.symm eL) x)) (↑(ContinuousLinearEquiv.symm eL) (e i)) =
    ∑ i : Fin (n + 1),
      ((∫ (x : Fin n → ℝ) in Set.Icc (↑eL a ∘ Fin.succAbove i) (↑eL b ∘ Fin.succAbove i),
          f i (↑(ContinuousLinearEquiv.symm eL) (Fin.insertNth i (↑eL b i) x))) -
        ∫ (x : Fin n → ℝ) in Set.Icc (↑eL a ∘ Fin.succAbove i) (↑eL b ∘ Fin.succAbove i),
          f i (↑(ContinuousLinearEquiv.symm eL) (Fin.insertNth i (↑eL a i) x)))
[PROOFSTEP]
refine
  integral_divergence_of_hasFDerivWithinAt_off_countable' (eL a) (eL b) ((he_ord _ _).2 hle)
    (fun i x => f i (eL.symm x)) (fun i x => f' i (eL.symm x) ∘L (eL.symm : ℝⁿ⁺¹ →L[ℝ] F)) (eL.symm ⁻¹' s)
    (hs.preimage eL.symm.injective) ?_ ?_ ?_
[GOAL]
case refine_1
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ ∀ (i : Fin (n + 1)), ContinuousOn ((fun i x => f i (↑(ContinuousLinearEquiv.symm eL) x)) i) (Set.Icc (↑eL a) (↑eL b))
[PROOFSTEP]
exact fun i => (Hc i).comp eL.symm.continuousOn hIcc'.subset
[GOAL]
case refine_2
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ ∀ (x : Fin (n + 1) → ℝ),
    x ∈ (Set.pi Set.univ fun i => Set.Ioo (↑eL a i) (↑eL b i)) \ ↑(ContinuousLinearEquiv.symm eL) ⁻¹' s →
      ∀ (i : Fin (n + 1)),
        HasFDerivAt ((fun i x => f i (↑(ContinuousLinearEquiv.symm eL) x)) i)
          ((fun i x =>
              ContinuousLinearMap.comp (f' i (↑(ContinuousLinearEquiv.symm eL) x)) ↑(ContinuousLinearEquiv.symm eL))
            i x)
          x
[PROOFSTEP]
refine' fun x hx i => (Hd (eL.symm x) ⟨_, hx.2⟩ i).comp x eL.symm.hasFDerivAt
[GOAL]
case refine_2
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
x : Fin (n + 1) → ℝ
hx : x ∈ (Set.pi Set.univ fun i => Set.Ioo (↑eL a i) (↑eL b i)) \ ↑(ContinuousLinearEquiv.symm eL) ⁻¹' s
i : Fin (n + 1)
⊢ ↑(ContinuousLinearEquiv.symm eL) x ∈ interior (Set.Icc a b)
[PROOFSTEP]
rw [← hIcc]
[GOAL]
case refine_2
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
x : Fin (n + 1) → ℝ
hx : x ∈ (Set.pi Set.univ fun i => Set.Ioo (↑eL a i) (↑eL b i)) \ ↑(ContinuousLinearEquiv.symm eL) ⁻¹' s
i : Fin (n + 1)
⊢ ↑(ContinuousLinearEquiv.symm eL) x ∈ interior (↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b))
[PROOFSTEP]
refine' preimage_interior_subset_interior_preimage eL.continuous _
[GOAL]
case refine_2
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
x : Fin (n + 1) → ℝ
hx : x ∈ (Set.pi Set.univ fun i => Set.Ioo (↑eL a i) (↑eL b i)) \ ↑(ContinuousLinearEquiv.symm eL) ⁻¹' s
i : Fin (n + 1)
⊢ ↑(ContinuousLinearEquiv.symm eL) x ∈ ↑eL ⁻¹' interior (Set.Icc (↑eL a) (↑eL b))
[PROOFSTEP]
simpa only [Set.mem_preimage, eL.apply_symm_apply, ← pi_univ_Icc, interior_pi_set (@finite_univ (Fin _) _),
  interior_Icc] using hx.1
[GOAL]
case refine_3
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ IntegrableOn
    (fun x =>
      ∑ i : Fin (n + 1),
        ↑((fun i x =>
                ContinuousLinearMap.comp (f' i (↑(ContinuousLinearEquiv.symm eL) x)) ↑(ContinuousLinearEquiv.symm eL))
              i x)
          (e i))
    (Set.Icc (↑eL a) (↑eL b))
[PROOFSTEP]
rw [← he_vol.integrableOn_comp_preimage he_emb, hIcc]
[GOAL]
case refine_3
E : Type u
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : CompleteSpace E
n : ℕ
F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : PartialOrder F
inst✝¹ : MeasureSpace F
inst✝ : BorelSpace F
eL : F ≃L[ℝ] Fin (n + 1) → ℝ
he_ord : ∀ (x y : F), ↑eL x ≤ ↑eL y ↔ x ≤ y
he_vol : MeasurePreserving ↑eL
f : Fin (n + 1) → F → E
f' : Fin (n + 1) → F → F →L[ℝ] E
s : Set F
hs : Set.Countable s
a b : F
hle : a ≤ b
Hc : ∀ (i : Fin (n + 1)), ContinuousOn (f i) (Set.Icc a b)
Hd : ∀ (x : F), x ∈ interior (Set.Icc a b) \ s → ∀ (i : Fin (n + 1)), HasFDerivAt (f i) (f' i x) x
DF : F → E
hDF : ∀ (x : F), DF x = ∑ i : Fin (n + 1), ↑(f' i x) (↑(ContinuousLinearEquiv.symm eL) (e i))
Hi : IntegrableOn DF (Set.Icc a b)
he_emb : MeasurableEmbedding ↑eL
hIcc : ↑eL ⁻¹' Set.Icc (↑eL a) (↑eL b) = Set.Icc a b
hIcc' : Set.Icc (↑eL a) (↑eL b) = ↑(ContinuousLinearEquiv.symm eL) ⁻¹' Set.Icc a b
⊢ IntegrableOn
    ((fun x =>
        ∑ i : Fin (n + 1),
          ↑((fun i x =>
                  ContinuousLinearMap.comp (f' i (↑(ContinuousLinearEquiv.symm eL) x)) ↑(ContinuousLinearEquiv.symm eL))
                i x)
            (e i)) ∘
      ↑eL)
    (Set.Icc a b)
[PROOFSTEP]
simp [← hDF, (· ∘ ·), Hi]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
set e : ℝ ≃L[ℝ] ℝ¹ := (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ).symm
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
have e_symm : ∀ x, e.symm x = x 0 := fun x => rfl
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
set F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight (1 : ℝ →L[ℝ] ℝ) (f' x)
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
have hF' : ∀ x y, F' x y = y • f' x := fun x y => rfl
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
calc
  ∫ x in a..b, f' x = ∫ x in Icc a b, f' x := by
    rw [intervalIntegral.integral_of_le hle, set_integral_congr_set_ae Ioc_ae_eq_Icc]
  _ =
      ∑ i : Fin 1,
        ((∫ x in Icc (e a ∘ i.succAbove) (e b ∘ i.succAbove), f (e.symm <| i.insertNth (e b i) x)) -
          ∫ x in Icc (e a ∘ i.succAbove) (e b ∘ i.succAbove), f (e.symm <| i.insertNth (e a i) x)) :=
    by
    simp only [← interior_Icc] at Hd 
    refine'
      integral_divergence_of_hasFDerivWithinAt_off_countable_of_equiv e _ _ (fun _ => f) (fun _ => F') s hs a b hle
        (fun _ => Hc) (fun x hx _ => Hd x hx) _ _ _
    · exact fun x y => (OrderIso.funUnique (Fin 1) ℝ).symm.le_iff_le
    · exact (volume_preserving_funUnique (Fin 1) ℝ).symm _
    · intro x; rw [Fin.sum_univ_one, hF', e_symm, Pi.single_eq_same, one_smul]
    · rw [intervalIntegrable_iff_integrable_Ioc_of_le hle] at Hi 
      exact Hi.congr_set_ae Ioc_ae_eq_Icc.symm
  _ = f b - f a := by
    simp only [Fin.sum_univ_one, e_symm]
    have : ∀ c : ℝ, const (Fin 0) c = isEmptyElim := fun c => Subsingleton.elim _ _
    simp [this, volume_pi, Measure.pi_of_empty fun _ : Fin 0 => volume]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
⊢ ∫ (x : ℝ) in a..b, f' x = ∫ (x : ℝ) in Set.Icc a b, f' x
[PROOFSTEP]
rw [intervalIntegral.integral_of_le hle, set_integral_congr_set_ae Ioc_ae_eq_Icc]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
⊢ ∫ (x : ℝ) in Set.Icc a b, f' x =
    ∑ i : Fin 1,
      ((∫ (x : Fin 0 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          f (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e b i) x))) -
        ∫ (x : Fin 0 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          f (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e a i) x)))
[PROOFSTEP]
simp only [← interior_Icc] at Hd 
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
Hd : ∀ (x : ℝ), x ∈ interior (Set.Icc a b) \ s → HasDerivAt f (f' x) x
⊢ ∫ (x : ℝ) in Set.Icc a b, f' x =
    ∑ i : Fin 1,
      ((∫ (x : Fin 0 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          f (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e b i) x))) -
        ∫ (x : Fin 0 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          f (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e a i) x)))
[PROOFSTEP]
refine'
  integral_divergence_of_hasFDerivWithinAt_off_countable_of_equiv e _ _ (fun _ => f) (fun _ => F') s hs a b hle
    (fun _ => Hc) (fun x hx _ => Hd x hx) _ _ _
[GOAL]
case refine'_1
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
Hd : ∀ (x : ℝ), x ∈ interior (Set.Icc a b) \ s → HasDerivAt f (f' x) x
⊢ ∀ (x y : ℝ), ↑e x ≤ ↑e y ↔ x ≤ y
[PROOFSTEP]
exact fun x y => (OrderIso.funUnique (Fin 1) ℝ).symm.le_iff_le
[GOAL]
case refine'_2
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
Hd : ∀ (x : ℝ), x ∈ interior (Set.Icc a b) \ s → HasDerivAt f (f' x) x
⊢ MeasurePreserving ↑e
[PROOFSTEP]
exact (volume_preserving_funUnique (Fin 1) ℝ).symm _
[GOAL]
case refine'_3
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
Hd : ∀ (x : ℝ), x ∈ interior (Set.Icc a b) \ s → HasDerivAt f (f' x) x
⊢ ∀ (x : ℝ), f' x = ∑ i : Fin (0 + 1), ↑((fun x => F') i x) (↑(ContinuousLinearEquiv.symm e) (Pi.single i 1))
[PROOFSTEP]
intro x
[GOAL]
case refine'_3
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
Hd : ∀ (x : ℝ), x ∈ interior (Set.Icc a b) \ s → HasDerivAt f (f' x) x
x : ℝ
⊢ f' x = ∑ i : Fin (0 + 1), ↑((fun x => F') i x) (↑(ContinuousLinearEquiv.symm e) (Pi.single i 1))
[PROOFSTEP]
rw [Fin.sum_univ_one, hF', e_symm, Pi.single_eq_same, one_smul]
[GOAL]
case refine'_4
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
Hd : ∀ (x : ℝ), x ∈ interior (Set.Icc a b) \ s → HasDerivAt f (f' x) x
⊢ IntegrableOn (fun x => f' x) (Set.Icc a b)
[PROOFSTEP]
rw [intervalIntegrable_iff_integrable_Ioc_of_le hle] at Hi 
[GOAL]
case refine'_4
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hi : IntegrableOn f' (Set.Ioc a b)
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
Hd : ∀ (x : ℝ), x ∈ interior (Set.Icc a b) \ s → HasDerivAt f (f' x) x
⊢ IntegrableOn (fun x => f' x) (Set.Icc a b)
[PROOFSTEP]
exact Hi.congr_set_ae Ioc_ae_eq_Icc.symm
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
⊢ ∑ i : Fin 1,
      ((∫ (x : Fin 0 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          f (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e b i) x))) -
        ∫ (x : Fin 0 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          f (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e a i) x))) =
    f b - f a
[PROOFSTEP]
simp only [Fin.sum_univ_one, e_symm]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
⊢ (∫ (x : Fin 0 → ℝ) in
        Set.Icc (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) a ∘ Fin.succAbove 0)
          (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) b ∘ Fin.succAbove 0),
        f (Fin.insertNth 0 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) b 0) x 0)) -
      ∫ (x : Fin 0 → ℝ) in
        Set.Icc (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) a ∘ Fin.succAbove 0)
          (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) b ∘ Fin.succAbove 0),
        f (Fin.insertNth 0 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) a 0) x 0) =
    f b - f a
[PROOFSTEP]
have : ∀ c : ℝ, const (Fin 0) c = isEmptyElim := fun c => Subsingleton.elim _ _
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
hle : a ≤ b
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
e : ℝ ≃L[ℝ] Fin 1 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)
e_symm : ∀ (x : Fin 1 → ℝ), ↑(ContinuousLinearEquiv.symm e) x = x 0
F' : ℝ → ℝ →L[ℝ] E := fun x => smulRight 1 (f' x)
hF' : ∀ (x y : ℝ), ↑(F' x) y = y • f' x
this : ∀ (c : ℝ), const (Fin 0) c = fun a => isEmptyElim a
⊢ (∫ (x : Fin 0 → ℝ) in
        Set.Icc (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) a ∘ Fin.succAbove 0)
          (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) b ∘ Fin.succAbove 0),
        f (Fin.insertNth 0 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) b 0) x 0)) -
      ∫ (x : Fin 0 → ℝ) in
        Set.Icc (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) a ∘ Fin.succAbove 0)
          (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) b ∘ Fin.succAbove 0),
        f (Fin.insertNth 0 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.funUnique (Fin 1) ℝ ℝ)) a 0) x 0) =
    f b - f a
[PROOFSTEP]
simp [this, volume_pi, Measure.pi_of_empty fun _ : Fin 0 => volume]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f [[a, b]]
Hd : ∀ (x : ℝ), x ∈ Set.Ioo (min a b) (max a b) \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
cases' le_total a b with hab hab
[GOAL]
case inl
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f [[a, b]]
Hd : ∀ (x : ℝ), x ∈ Set.Ioo (min a b) (max a b) \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
hab : a ≤ b
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
simp only [uIcc_of_le hab, min_eq_left hab, max_eq_right hab] at *
[GOAL]
case inl
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
s : Set ℝ
hs : Set.Countable s
Hi : IntervalIntegrable f' volume a b
hab : a ≤ b
Hc : ContinuousOn f (Set.Icc a b)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo a b \ s → HasDerivAt f (f' x) x
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
exact integral_eq_of_hasDerivWithinAt_off_countable_of_le f f' hab hs Hc Hd Hi
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
s : Set ℝ
hs : Set.Countable s
Hc : ContinuousOn f [[a, b]]
Hd : ∀ (x : ℝ), x ∈ Set.Ioo (min a b) (max a b) \ s → HasDerivAt f (f' x) x
Hi : IntervalIntegrable f' volume a b
hab : b ≤ a
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
simp only [uIcc_of_ge hab, min_eq_right hab, max_eq_left hab] at *
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
s : Set ℝ
hs : Set.Countable s
Hi : IntervalIntegrable f' volume a b
hab : b ≤ a
Hc : ContinuousOn f (Set.Icc b a)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo b a \ s → HasDerivAt f (f' x) x
⊢ ∫ (x : ℝ) in a..b, f' x = f b - f a
[PROOFSTEP]
rw [intervalIntegral.integral_symm, neg_eq_iff_eq_neg, neg_sub]
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' : ℝ → E
a b : ℝ
s : Set ℝ
hs : Set.Countable s
Hi : IntervalIntegrable f' volume a b
hab : b ≤ a
Hc : ContinuousOn f (Set.Icc b a)
Hd : ∀ (x : ℝ), x ∈ Set.Ioo b a \ s → HasDerivAt f (f' x) x
⊢ ∫ (x : ℝ) in b..a, f' x = f a - f b
[PROOFSTEP]
exact integral_eq_of_hasDerivWithinAt_off_countable_of_le f f' hab hs Hc Hd Hi.symm
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ∫ (x : ℝ × ℝ) in Set.Icc a b, ↑(f' x) (1, 0) + ↑(g' x) (0, 1) =
    ∑ i : Fin 2,
      ((∫ (x : Fin 1 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          Matrix.vecCons f ![g] i (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e b i) x))) -
        ∫ (x : Fin 1 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          Matrix.vecCons f ![g] i (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e a i) x)))
[PROOFSTEP]
refine'
  integral_divergence_of_hasFDerivWithinAt_off_countable_of_equiv e _ _ ![f, g] ![f', g'] s hs a b hle _ (fun x hx => _)
    _ _ Hi
[GOAL]
case refine'_1
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ∀ (x y : ℝ × ℝ), ↑e x ≤ ↑e y ↔ x ≤ y
[PROOFSTEP]
exact fun x y => (OrderIso.finTwoArrowIso ℝ).symm.le_iff_le
[GOAL]
case refine'_2
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ MeasurePreserving ↑e
[PROOFSTEP]
exact (volume_preserving_finTwoArrow ℝ).symm _
[GOAL]
case refine'_3
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ∀ (i : Fin (1 + 1)), ContinuousOn (Matrix.vecCons f ![g] i) (Set.Icc a b)
[PROOFSTEP]
exact Fin.forall_fin_two.2 ⟨Hcf, Hcg⟩
[GOAL]
case refine'_4
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
x : ℝ × ℝ
hx : x ∈ interior (Set.Icc a b) \ s
⊢ ∀ (i : Fin (1 + 1)), HasFDerivAt (Matrix.vecCons f ![g] i) (Matrix.vecCons f' ![g'] i x) x
[PROOFSTEP]
rw [Icc_prod_eq, interior_prod_eq, interior_Icc, interior_Icc] at hx 
[GOAL]
case refine'_4
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
x : ℝ × ℝ
hx : x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s
⊢ ∀ (i : Fin (1 + 1)), HasFDerivAt (Matrix.vecCons f ![g] i) (Matrix.vecCons f' ![g'] i x) x
[PROOFSTEP]
exact Fin.forall_fin_two.2 ⟨Hdf x hx, Hdg x hx⟩
[GOAL]
case refine'_5
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ∀ (x : ℝ × ℝ),
    ↑(f' x) (1, 0) + ↑(g' x) (0, 1) =
      ∑ i : Fin (1 + 1), ↑(Matrix.vecCons f' ![g'] i x) (↑(ContinuousLinearEquiv.symm e) (Pi.single i 1))
[PROOFSTEP]
intro x
[GOAL]
case refine'_5
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
x : ℝ × ℝ
⊢ ↑(f' x) (1, 0) + ↑(g' x) (0, 1) =
    ∑ i : Fin (1 + 1), ↑(Matrix.vecCons f' ![g'] i x) (↑(ContinuousLinearEquiv.symm e) (Pi.single i 1))
[PROOFSTEP]
rw [Fin.sum_univ_two]
[GOAL]
case refine'_5
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
x : ℝ × ℝ
⊢ ↑(f' x) (1, 0) + ↑(g' x) (0, 1) =
    ↑(Matrix.vecCons f' ![g'] 0 x) (↑(ContinuousLinearEquiv.symm e) (Pi.single 0 1)) +
      ↑(Matrix.vecCons f' ![g'] 1 x) (↑(ContinuousLinearEquiv.symm e) (Pi.single 1 1))
[PROOFSTEP]
rfl
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ∑ i : Fin 2,
      ((∫ (x : Fin 1 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          Matrix.vecCons f ![g] i (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e b i) x))) -
        ∫ (x : Fin 1 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          Matrix.vecCons f ![g] i (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e a i) x))) =
    ((∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) - ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)) +
      ((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd))
[PROOFSTEP]
have : ∀ (a b : ℝ¹) (f : ℝ¹ → E), ∫ x in Icc a b, f x = ∫ x in Icc (a 0) (b 0), f fun _ => x := fun a b f ↦
  by
  convert
    (((volume_preserving_funUnique (Fin 1) ℝ).symm _).set_integral_preimage_emb (MeasurableEquiv.measurableEmbedding _)
        f _).symm
  exact ((OrderIso.funUnique (Fin 1) ℝ).symm.preimage_Icc a b).symm
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a✝ b✝ : ℝ × ℝ
hle : a✝ ≤ b✝
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f✝ (Set.Icc a✝ b✝)
Hcg : ContinuousOn g (Set.Icc a✝ b✝)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a✝.fst b✝.fst ×ˢ Set.Ioo a✝.snd b✝.snd \ s → HasFDerivAt f✝ (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a✝.fst b✝.fst ×ˢ Set.Ioo a✝.snd b✝.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a✝ b✝)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
a b : Fin 1 → ℝ
f : (Fin 1 → ℝ) → E
⊢ ∫ (x : Fin 1 → ℝ) in Set.Icc a b, f x = ∫ (x : ℝ) in Set.Icc (a 0) (b 0), f fun x_1 => x
[PROOFSTEP]
convert
  (((volume_preserving_funUnique (Fin 1) ℝ).symm _).set_integral_preimage_emb (MeasurableEquiv.measurableEmbedding _) f
      _).symm
[GOAL]
case h.e'_3.h.e'_6.h.e'_4
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a✝ b✝ : ℝ × ℝ
hle : a✝ ≤ b✝
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f✝ (Set.Icc a✝ b✝)
Hcg : ContinuousOn g (Set.Icc a✝ b✝)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a✝.fst b✝.fst ×ˢ Set.Ioo a✝.snd b✝.snd \ s → HasFDerivAt f✝ (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a✝.fst b✝.fst ×ˢ Set.Ioo a✝.snd b✝.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a✝ b✝)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
a b : Fin 1 → ℝ
f : (Fin 1 → ℝ) → E
⊢ Set.Icc (a 0) (b 0) = ↑(MeasurableEquiv.symm (MeasurableEquiv.funUnique (Fin 1) ℝ)) ⁻¹' Set.Icc a b
[PROOFSTEP]
exact ((OrderIso.funUnique (Fin 1) ℝ).symm.preimage_Icc a b).symm
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
this :
  ∀ (a b : Fin 1 → ℝ) (f : (Fin 1 → ℝ) → E),
    ∫ (x : Fin 1 → ℝ) in Set.Icc a b, f x = ∫ (x : ℝ) in Set.Icc (a 0) (b 0), f fun x_1 => x
⊢ ∑ i : Fin 2,
      ((∫ (x : Fin 1 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          Matrix.vecCons f ![g] i (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e b i) x))) -
        ∫ (x : Fin 1 → ℝ) in Set.Icc (↑e a ∘ Fin.succAbove i) (↑e b ∘ Fin.succAbove i),
          Matrix.vecCons f ![g] i (↑(ContinuousLinearEquiv.symm e) (Fin.insertNth i (↑e a i) x))) =
    ((∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) - ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)) +
      ((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd))
[PROOFSTEP]
simp only [Fin.sum_univ_two, this]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
this :
  ∀ (a b : Fin 1 → ℝ) (f : (Fin 1 → ℝ) → E),
    ∫ (x : Fin 1 → ℝ) in Set.Icc a b, f x = ∫ (x : ℝ) in Set.Icc (a 0) (b 0), f fun x_1 => x
⊢ ((∫ (x : ℝ) in
          Set.Icc ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) a ∘ Fin.succAbove 0) 0)
            ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) b ∘ Fin.succAbove 0) 0),
          Matrix.vecCons f ![g] 0
            (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)))
              (Fin.insertNth 0 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) b 0) fun x_1 =>
                x))) -
        ∫ (x : ℝ) in
          Set.Icc ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) a ∘ Fin.succAbove 0) 0)
            ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) b ∘ Fin.succAbove 0) 0),
          Matrix.vecCons f ![g] 0
            (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)))
              (Fin.insertNth 0 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) a 0) fun x_1 =>
                x))) +
      ((∫ (x : ℝ) in
          Set.Icc ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) a ∘ Fin.succAbove 1) 0)
            ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) b ∘ Fin.succAbove 1) 0),
          Matrix.vecCons f ![g] 1
            (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)))
              (Fin.insertNth 1 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) b 1) fun x_1 =>
                x))) -
        ∫ (x : ℝ) in
          Set.Icc ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) a ∘ Fin.succAbove 1) 0)
            ((↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) b ∘ Fin.succAbove 1) 0),
          Matrix.vecCons f ![g] 1
            (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)))
              (Fin.insertNth 1 (↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)) a 1) fun x_1 =>
                x))) =
    ((∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) - ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)) +
      ((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd))
[PROOFSTEP]
rfl
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ((∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) - ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)) +
      ((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd)) =
    (((∫ (x : ℝ) in a.fst..b.fst, g (x, b.snd)) - ∫ (x : ℝ) in a.fst..b.fst, g (x, a.snd)) +
        ∫ (y : ℝ) in a.snd..b.snd, f (b.fst, y)) -
      ∫ (y : ℝ) in a.snd..b.snd, f (a.fst, y)
[PROOFSTEP]
simp only [intervalIntegral.integral_of_le hle.1, intervalIntegral.integral_of_le hle.2,
  set_integral_congr_set_ae (Ioc_ae_eq_Icc (α := ℝ) (μ := volume))]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ((∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) - ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)) +
      ((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd)) =
    (((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd)) +
        ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) -
      ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)
[PROOFSTEP]
abel
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a b : ℝ × ℝ
hle : a ≤ b
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f (Set.Icc a b)
Hcg : ContinuousOn g (Set.Icc a b)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a.fst b.fst ×ˢ Set.Ioo a.snd b.snd \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a b)
e : (ℝ × ℝ) ≃L[ℝ] Fin 2 → ℝ := ContinuousLinearEquiv.symm (ContinuousLinearEquiv.finTwoArrow ℝ ℝ)
⊢ ((∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) - ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)) +
      ((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd)) =
    (((∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, b.snd)) - ∫ (x : ℝ) in Set.Icc a.fst b.fst, g (x, a.snd)) +
        ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (b.fst, y)) -
      ∫ (y : ℝ) in Set.Icc a.snd b.snd, f (a.fst, y)
[PROOFSTEP]
abel
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₁ a₂ b₁ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
wlog h₁ : a₁ ≤ b₁ generalizing a₁ b₁
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₁ a₂ b₁ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
this :
  ∀ (a₁ b₁ : ℝ),
    ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
          (∀ (x : ℝ × ℝ),
              x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
            IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
              a₁ ≤ b₁ →
                ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                  (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) +
                      ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
                    ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
h₁ : ¬a₁ ≤ b₁
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
specialize this b₁ a₁
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₁ a₂ b₁ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : ¬a₁ ≤ b₁
this :
  ContinuousOn f ([[b₁, a₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[b₁, a₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min b₁ a₁) (max b₁ a₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min b₁ a₁) (max b₁ a₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[b₁, a₁]] ×ˢ [[a₂, b₂]]) →
            b₁ ≤ a₁ →
              ∫ (x : ℝ) in b₁..a₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - ∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (a₁, y)) -
                  ∫ (y : ℝ) in a₂..b₂, f (b₁, y)
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
rw [uIcc_comm b₁ a₁, min_comm b₁ a₁, max_comm b₁ a₁] at this 
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₁ a₂ b₁ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : ¬a₁ ≤ b₁
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₁ ≤ a₁ →
              ∫ (x : ℝ) in b₁..a₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - ∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (a₁, y)) -
                  ∫ (y : ℝ) in a₂..b₂, f (b₁, y)
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
simp only [intervalIntegral.integral_symm b₁ a₁]
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₁ a₂ b₁ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : ¬a₁ ≤ b₁
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₁ ≤ a₁ →
              ∫ (x : ℝ) in b₁..a₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - ∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (a₁, y)) -
                  ∫ (y : ℝ) in a₂..b₂, f (b₁, y)
⊢ -∫ (x : ℝ) in b₁..a₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((-∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - -∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
refine' (congr_arg Neg.neg (this Hcf Hcg Hdf Hdg Hi (le_of_not_le h₁))).trans _
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₁ a₂ b₁ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : ¬a₁ ≤ b₁
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₁ ≤ a₁ →
              ∫ (x : ℝ) in b₁..a₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - ∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (a₁, y)) -
                  ∫ (y : ℝ) in a₂..b₂, f (b₁, y)
⊢ -((((∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - ∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (a₁, y)) -
        ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) =
    (((-∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - -∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
abel
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₁ a₂ b₁ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : ¬a₁ ≤ b₁
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₁ ≤ a₁ →
              ∫ (x : ℝ) in b₁..a₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - ∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (a₁, y)) -
                  ∫ (y : ℝ) in a₂..b₂, f (b₁, y)
⊢ -((((∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - ∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (a₁, y)) -
        ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) =
    (((-∫ (x : ℝ) in b₁..a₁, g (x, b₂)) - -∫ (x : ℝ) in b₁..a₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
abel
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₂ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : a₁ ≤ b₁
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
wlog h₂ : a₂ ≤ b₂ generalizing a₂ b₂
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₂ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : a₁ ≤ b₁
this :
  ∀ (a₂ b₂ : ℝ),
    ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
          (∀ (x : ℝ × ℝ),
              x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
            IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
              a₂ ≤ b₂ →
                ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                  (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) +
                      ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
                    ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
h₂ : ¬a₂ ≤ b₂
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
specialize this b₂ a₂
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₂ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : a₁ ≤ b₁
h₂ : ¬a₂ ≤ b₂
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[b₂, a₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[b₂, a₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min b₂ a₂) (max b₂ a₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min b₂ a₂) (max b₂ a₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[b₂, a₂]]) →
            b₂ ≤ a₂ →
              ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in b₂..a₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in a₁..b₁, g (x, a₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, b₂)) + ∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
                  ∫ (y : ℝ) in b₂..a₂, f (a₁, y)
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
rw [uIcc_comm b₂ a₂, min_comm b₂ a₂, max_comm b₂ a₂] at this 
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₂ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : a₁ ≤ b₁
h₂ : ¬a₂ ≤ b₂
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₂ ≤ a₂ →
              ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in b₂..a₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in a₁..b₁, g (x, a₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, b₂)) + ∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
                  ∫ (y : ℝ) in b₂..a₂, f (a₁, y)
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
simp only [intervalIntegral.integral_symm b₂ a₂, intervalIntegral.integral_neg]
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₂ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : a₁ ≤ b₁
h₂ : ¬a₂ ≤ b₂
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₂ ≤ a₂ →
              ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in b₂..a₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in a₁..b₁, g (x, a₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, b₂)) + ∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
                  ∫ (y : ℝ) in b₂..a₂, f (a₁, y)
⊢ -∫ (x : ℝ) in a₁..b₁, ∫ (x_1 : ℝ) in b₂..a₂, ↑(f' (x, x_1)) (1, 0) + ↑(g' (x, x_1)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + -∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
      -∫ (y : ℝ) in b₂..a₂, f (a₁, y)
[PROOFSTEP]
refine' (congr_arg Neg.neg (this Hcf Hcg Hdf Hdg Hi (le_of_not_le h₂))).trans _
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₂ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : a₁ ≤ b₁
h₂ : ¬a₂ ≤ b₂
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₂ ≤ a₂ →
              ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in b₂..a₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in a₁..b₁, g (x, a₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, b₂)) + ∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
                  ∫ (y : ℝ) in b₂..a₂, f (a₁, y)
⊢ -((((∫ (x : ℝ) in a₁..b₁, g (x, a₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, b₂)) + ∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
        ∫ (y : ℝ) in b₂..a₂, f (a₁, y)) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + -∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
      -∫ (y : ℝ) in b₂..a₂, f (a₁, y)
[PROOFSTEP]
abel
[GOAL]
case inr
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
a₂ b₂ : ℝ
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₁ : a₁ ≤ b₁
h₂ : ¬a₂ ≤ b₂
this :
  ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
    ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
      (∀ (x : ℝ × ℝ),
          x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x) →
        (∀ (x : ℝ × ℝ),
            x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x) →
          IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]]) →
            b₂ ≤ a₂ →
              ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in b₂..a₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
                (((∫ (x : ℝ) in a₁..b₁, g (x, a₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, b₂)) + ∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
                  ∫ (y : ℝ) in b₂..a₂, f (a₁, y)
⊢ -((((∫ (x : ℝ) in a₁..b₁, g (x, a₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, b₂)) + ∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
        ∫ (y : ℝ) in b₂..a₂, f (a₁, y)) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + -∫ (y : ℝ) in b₂..a₂, f (b₁, y)) -
      -∫ (y : ℝ) in b₂..a₂, f (a₁, y)
[PROOFSTEP]
abel
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
Hcf : ContinuousOn f ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hcg : ContinuousOn g ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (min a₁ b₁) (max a₁ b₁) ×ˢ Set.Ioo (min a₂ b₂) (max a₂ b₂) \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) ([[a₁, b₁]] ×ˢ [[a₂, b₂]])
h₂ : a₂ ≤ b₂
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
simp only [uIcc_of_le h₁, uIcc_of_le h₂, min_eq_left, max_eq_right, h₁, h₂] at Hcf Hcg Hdf Hdg Hi 
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
Hcg : ContinuousOn g (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
calc
  (∫ x in a₁..b₁, ∫ y in a₂..b₂, f' (x, y) (1, 0) + g' (x, y) (0, 1)) =
      ∫ x in Icc a₁ b₁, ∫ y in Icc a₂ b₂, f' (x, y) (1, 0) + g' (x, y) (0, 1) :=
    by
    simp only [intervalIntegral.integral_of_le, h₁, h₂,
      set_integral_congr_set_ae (Ioc_ae_eq_Icc (α := ℝ) (μ := volume))]
  _ = ∫ x in Icc a₁ b₁ ×ˢ Icc a₂ b₂, f' x (1, 0) + g' x (0, 1) := (set_integral_prod _ Hi).symm
  _ = (((∫ x in a₁..b₁, g (x, b₂)) - ∫ x in a₁..b₁, g (x, a₂)) + ∫ y in a₂..b₂, f (b₁, y)) - ∫ y in a₂..b₂, f (a₁, y) :=
    by
    rw [Icc_prod_Icc] at *
    apply
        integral_divergence_prod_Icc_of_hasFDerivWithinAt_off_countable_of_le f g f' g' (a₁, a₂) (b₁, b₂) ⟨h₁, h₂⟩ s <;>
      assumption
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
Hcg : ContinuousOn g (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
⊢ ∫ (x : ℝ) in a₁..b₁, ∫ (y : ℝ) in a₂..b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1) =
    ∫ (x : ℝ) in Set.Icc a₁ b₁, ∫ (y : ℝ) in Set.Icc a₂ b₂, ↑(f' (x, y)) (1, 0) + ↑(g' (x, y)) (0, 1)
[PROOFSTEP]
simp only [intervalIntegral.integral_of_le, h₁, h₂, set_integral_congr_set_ae (Ioc_ae_eq_Icc (α := ℝ) (μ := volume))]
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
Hcg : ContinuousOn g (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂)
⊢ ∫ (x : ℝ × ℝ) in Set.Icc a₁ b₁ ×ˢ Set.Icc a₂ b₂, ↑(f' x) (1, 0) + ↑(g' x) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
rw [Icc_prod_Icc] at *
[GOAL]
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
Hcg : ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
⊢ ∫ (x : ℝ × ℝ) in Set.Icc (a₁, a₂) (b₁, b₂), ↑(f' x) (1, 0) + ↑(g' x) (0, 1) =
    (((∫ (x : ℝ) in a₁..b₁, g (x, b₂)) - ∫ (x : ℝ) in a₁..b₁, g (x, a₂)) + ∫ (y : ℝ) in a₂..b₂, f (b₁, y)) -
      ∫ (y : ℝ) in a₂..b₂, f (a₁, y)
[PROOFSTEP]
apply integral_divergence_prod_Icc_of_hasFDerivWithinAt_off_countable_of_le f g f' g' (a₁, a₂) (b₁, b₂) ⟨h₁, h₂⟩ s
[GOAL]
case hs
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
Hcg : ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
⊢ Set.Countable s
[PROOFSTEP]
assumption
[GOAL]
case Hcf
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
Hcg : ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
⊢ ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
[PROOFSTEP]
assumption
[GOAL]
case Hcg
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
Hcg : ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
⊢ ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
[PROOFSTEP]
assumption
[GOAL]
case Hdf
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
Hcg : ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
⊢ ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (a₁, a₂).fst (b₁, b₂).fst ×ˢ Set.Ioo (a₁, a₂).snd (b₁, b₂).snd \ s → HasFDerivAt f (f' x) x
[PROOFSTEP]
assumption
[GOAL]
case Hdg
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
Hcg : ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
⊢ ∀ (x : ℝ × ℝ), x ∈ Set.Ioo (a₁, a₂).fst (b₁, b₂).fst ×ˢ Set.Ioo (a₁, a₂).snd (b₁, b₂).snd \ s → HasFDerivAt g (g' x) x
[PROOFSTEP]
assumption
[GOAL]
case Hi
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ℝ × ℝ → E
f' g' : ℝ × ℝ → ℝ × ℝ →L[ℝ] E
s : Set (ℝ × ℝ)
hs : Set.Countable s
a₁ b₁ : ℝ
h₁ : a₁ ≤ b₁
a₂ b₂ : ℝ
h₂ : a₂ ≤ b₂
Hcf : ContinuousOn f (Set.Icc (a₁, a₂) (b₁, b₂))
Hcg : ContinuousOn g (Set.Icc (a₁, a₂) (b₁, b₂))
Hdf : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt f (f' x) x
Hdg : ∀ (x : ℝ × ℝ), x ∈ Set.Ioo a₁ b₁ ×ˢ Set.Ioo a₂ b₂ \ s → HasFDerivAt g (g' x) x
Hi : IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
⊢ IntegrableOn (fun x => ↑(f' x) (1, 0) + ↑(g' x) (0, 1)) (Set.Icc (a₁, a₂) (b₁, b₂))
[PROOFSTEP]
assumption
