@@ -11,6 +11,9 @@ public import Mathlib.Analysis.Calculus.Deriv.AffineMap
1111public import Mathlib.Analysis.Calculus.Deriv.Shift
1212public 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]`,
316330then 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