Skip to content

Commit 4b144de

Browse files
committed
Merge remote-tracking branch 'origin/feat/curveIntegral-segment-FTC' into HEAD
2 parents de50c2f + 00207b9 commit 4b144de

1 file changed

Lines changed: 51 additions & 13 deletions

File tree

  • Mathlib/MeasureTheory/Integral/CurveIntegral

Mathlib/MeasureTheory/Integral/CurveIntegral/Basic.lean

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ public import Mathlib.Analysis.Calculus.Deriv.AffineMap
1111
public import Mathlib.Analysis.Calculus.Deriv.Shift
1212
public import Mathlib.MeasureTheory.Integral.IntervalIntegral.Basic
1313

14+
import Mathlib.Analysis.Calculus.AddTorsor.AffineMap
15+
import Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus
16+
1417
/-!
1518
# Integral of a 1-form along a path
1619
@@ -286,35 +289,46 @@ theorem curveIntegral_trans (h₁ : CurveIntegrable ω γab) (h₂ : CurveIntegr
286289
simp only [curveIntegral_def]
287290
norm_num
288291

289-
theorem curveIntegralFun_segment [NormedSpace ℝ E] (ω : E → E →L[𝕜] F) (a b : E)
290-
{t : ℝ} (ht : t ∈ I) : curveIntegralFun ω (.segment a b) t = ω (lineMap a b t) (b - a) := by
292+
end PathOperations
293+
294+
section Segment
295+
296+
variable {𝕜 E F : Type*} [RCLike 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedSpace ℝ E]
297+
[NormedAddCommGroup F] [NormedSpace 𝕜 F] {a b c d : E} {ω : E → E →L[𝕜] F}
298+
{γ γab : Path a b} {γbc : Path b c} {t : ℝ}
299+
300+
theorem curveIntegralFun_segment (ω : E → E →L[𝕜] F) (a b : E) {t : ℝ} (ht : t ∈ I) :
301+
curveIntegralFun ω (.segment a b) t = ω (lineMap a b t) (b - a) := by
291302
have := Path.eqOn_extend_segment a b
292303
simp only [curveIntegralFun_def, this ht, derivWithin_congr this (this ht),
293304
(hasDerivWithinAt_lineMap ..).derivWithin (uniqueDiffOn_Icc_zero_one t ht)]
294305

295-
theorem curveIntegrable_segment [NormedSpace ℝ E] :
296-
CurveIntegrable ω (.segment a b) ↔
306+
theorem curveIntegrable_segment : CurveIntegrable ω (.segment a b) ↔
297307
IntervalIntegrable (fun t ↦ ω (lineMap a b t) (b - a)) volume 0 1 := by
298308
rw [CurveIntegrable, intervalIntegrable_congr]
299309
rw [uIoc_of_le zero_le_one]
300310
exact .mono Ioc_subset_Icc_self fun _t ↦ curveIntegralFun_segment ω a b
301311

302-
theorem curveIntegral_segment [NormedSpace ℝ E] [NormedSpace ℝ F] (ω : E → E →L[𝕜] F) (a b : E) :
312+
@[simp] theorem curveIntegrable_segment_const (ω : E →L[𝕜] F) (a b : E) :
313+
CurveIntegrable (fun _ : E ↦ ω) (.segment a b) :=
314+
curveIntegrable_segment.mpr intervalIntegrable_const
315+
316+
theorem curveIntegral_segment [NormedSpace ℝ F] (ω : E → E →L[𝕜] F) (a b : E) :
303317
∫ᶜ x in .segment a b, ω x = ∫ t in 0..1, ω (lineMap a b t) (b - a) := by
304318
rw [curveIntegral_def]
305319
refine intervalIntegral.integral_congr fun t ht ↦ ?_
306320
rw [uIcc_of_le zero_le_one] at ht
307321
exact curveIntegralFun_segment ω a b ht
308322

309323
@[simp]
310-
theorem curveIntegral_segment_const [NormedSpace ℝ E] [CompleteSpace F] (ω : E →L[𝕜] F) (a b : E) :
324+
theorem curveIntegral_segment_const [CompleteSpace F] (ω : E →L[𝕜] F) (a b : E) :
311325
∫ᶜ _ in .segment a b, ω = ω (b - a) := by
312326
letI : NormedSpace ℝ F := .restrictScalars ℝ 𝕜 F
313327
simp [curveIntegral_segment]
314328

315329
/-- If `‖ω z‖ ≤ C` at all points of the segment `[a -[ℝ] b]`,
316330
then the curve integral `∫ᶜ x in .segment a b, ω x` has norm at most `C * ‖b - a‖`. -/
317-
theorem norm_curveIntegral_segment_le [NormedSpace ℝ E] {C : ℝ} (h : ∀ z ∈ [a -[ℝ] b], ‖ω z‖ ≤ C) :
331+
theorem norm_curveIntegral_segment_le {C : ℝ} (h : ∀ z ∈ [a -[ℝ] b], ‖ω z‖ ≤ C) :
318332
‖∫ᶜ x in .segment a b, ω x‖ ≤ C * ‖b - a‖ := calc
319333
‖∫ᶜ x in .segment a b, ω x‖ ≤ C * ‖b - a‖ * |1 - 0| := by
320334
letI : NormedSpace ℝ F := .restrictScalars ℝ 𝕜 F
@@ -325,18 +339,42 @@ theorem norm_curveIntegral_segment_le [NormedSpace ℝ E] {C : ℝ} (h : ∀ z
325339
apply_rules [(ω _).le_of_opNorm_le, mem_image_of_mem, Ioc_subset_Icc_self]
326340
_ = C * ‖b - a‖ := by simp
327341

328-
/-- If a 1-form `ω` is continuous on a set `s`,
329-
then it is curve integrable along any $C^1$ path in this set. -/
330-
theorem ContinuousOn.curveIntegrable_of_contDiffOn [NormedSpace ℝ E] {s : Set E}
331-
(hω : ContinuousOn ω s) (hγ : ContDiffOn ℝ 1 γ.extend I) (hγs : ∀ t, γ t ∈ s) :
332-
CurveIntegrable ω γ := by
342+
theorem ContinuousOn.curveIntegrable_of_contDiffOn {s : Set E} (hω : ContinuousOn ω s)
343+
(hγ : ContDiffOn ℝ 1 γ.extend I) (hγs : ∀ t, γ t ∈ s) : CurveIntegrable ω γ := by
333344
apply ContinuousOn.intervalIntegrable_of_Icc zero_le_one
334345
simp only [funext (curveIntegralFun_def ω γ)]
335346
apply ContinuousOn.clm_apply
336347
· exact hω.comp (by fun_prop) fun _ _ ↦ hγs _
337348
· exact hγ.continuousOn_derivWithin uniqueDiffOn_Icc_zero_one le_rfl
338349

339-
end PathOperations
350+
@[fun_prop]
351+
theorem Path.contDiffOn_segment_extend (a b : E) :
352+
ContDiffOn ℝ 1 (Path.segment a b).extend I :=
353+
(AffineMap.contDiff_lineMap a b).contDiffOn.congr (Path.eqOn_extend_segment a b)
354+
355+
theorem ContinuousOn.curveIntegrable_segment (hω : ContinuousOn ω [a -[ℝ] b]) :
356+
CurveIntegrable ω (.segment a b) :=
357+
hω.curveIntegrable_of_contDiffOn (Path.contDiffOn_segment_extend a b)
358+
fun t ↦ Path.range_segment a b ▸ Set.mem_range_self t
359+
360+
theorem Continuous.curveIntegrable_segment (hω : Continuous ω) :
361+
CurveIntegrable ω (.segment a b) := hω.continuousOn.curveIntegrable_segment
362+
363+
/-- **Fundamental theorem of calculus along a line segment.** If `f : E → F` is differentiable
364+
on `[a -[ℝ] b]` and its derivative is continuous on the segment, then the curve integral of
365+
`fderiv ℝ f` along the segment equals `f b - f a`. -/
366+
theorem curveIntegral_fderiv_segment [NormedSpace ℝ F] [CompleteSpace F] {f : E → F}
367+
(hf : ∀ z ∈ [a -[ℝ] b], DifferentiableAt ℝ f z)
368+
(hcont : ContinuousOn (fderiv ℝ f) [a -[ℝ] b]) :
369+
∫ᶜ z in .segment a b, fderiv ℝ f z = f b - f a := by
370+
rw [curveIntegral_segment]
371+
simpa using intervalIntegral.integral_eq_sub_of_hasDerivAt
372+
(fun t ht ↦ (hf _ (segment_eq_image_lineMap ℝ a b ▸ mem_image_of_mem _
373+
(uIcc_of_le (zero_le_one : (0 : ℝ) ≤ 1) ▸ ht))).hasFDerivAt
374+
|>.comp_hasDerivAt t AffineMap.hasDerivAt_lineMap)
375+
(curveIntegrable_segment.mp hcont.curveIntegrable_segment)
376+
377+
end Segment
340378

341379
/-!
342380
### Algebraic operations on the 1-form

0 commit comments

Comments
 (0)