Poincare's lemma, pointwise form: a closed form on a convex set has a primitive
ProvedRudin.ch10_primitive_of_closedThis is the analytic core of Rudin's Theorem 10.39 (Poincare's lemma), stated pointwise rather than through integrals over surfaces.
Let be convex and open and let be a -form of class in which is closed in the pointwise sense that its exterior derivative vanishes as an alternating form:
Then has a primitive: there is an -form of class in with , the equality again being understood as an equality of alternating forms, i.e.
for every index tuple . Since a form is presented here by coefficients indexed by all tuples, not only the increasing ones, the alternating sums are the invariant content of the equation ; two forms with the same alternations have the same integrals over all surfaces. The standard construction of on a convex set is the homotopy (cone) operator based at a point of , integrating the coefficients of along the segments joining that point to .
import Mathlib import Definitions.Def_Rudin_ch10_forms open Filter Topology MeasureTheory
namespace Rudin
/-- Rudin, Theorem 10.39 (Poincaré's lemma), pointwise form: on a convex open set `E` every
`(m+1)`-form `ω` of class `C'` whose exterior derivative vanishes as an alternating form has a
primitive. That is, there is an `m`-form `η` of class `C'` in `E` with `dη = ω` as alternating
forms: at every point of `E` the alternating sums of the coefficients of `dη` and of `ω` agree. -/
theorem ch10_primitive_of_closed (m n : ℕ) (E : Set (Fin n → ℝ)) (hE : IsOpen E)
(hconv : Convex ℝ E) (ω : KForm (m + 1) n) (hω : ∀ i, ContDiffOn ℝ 1 (ω.coeff i) E)
(hclosed : ∀ x ∈ E, ∀ i : Fin (m + 1 + 1) → Fin n,
∑ σ : Equiv.Perm (Fin (m + 1 + 1)), (Equiv.Perm.sign σ : ℝ) *
(extDeriv ω).coeff (fun r => i (σ r)) x = 0) :
∃ η : KForm m n, (∀ i, ContDiffOn ℝ 1 (η.coeff i) E) ∧
∀ x ∈ E, ∀ i : Fin (m + 1) → Fin n,
∑ σ : Equiv.Perm (Fin (m + 1)), (Equiv.Perm.sign σ : ℝ) *
(extDeriv η).coeff (fun r => i (σ r)) x
= ∑ σ : Equiv.Perm (Fin (m + 1)), (Equiv.Perm.sign σ : ℝ) *
ω.coeff (fun r => i (σ r)) x := by sorry
end Rudin