Imports
/- Copyright (c) 2026 Juan Jose Fernandez Morales. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Juan Jose Fernandez Morales -/ module public import PhyslibAlpha.ClassicalFieldTheory.Local.FirstVariation.Support

First variation integration by parts

i. Overview

This module contains the repeated integration-by-parts step needed for the local first-variation formula, together with the termwise and summed packaged versions used later in the Euler-Lagrange criterion.

ii. Key results

    ClassicalFieldTheory.Local.integral_mul_iteratedDeriv_eq_sign

    ClassicalFieldTheory.Local.hasTermwiseIntegratedByPartsFormula_of_regular

    ClassicalFieldTheory.Local.hasIntegratedByPartsFormula_of_termwise

iii. Table of contents

    A. Repeated integration by parts

    B. Termwise formulas

iv. References

    J. Cortés and A. Haupt, Lecture Notes on Mathematical Methods of Classical Physics, Chapter 5, Theorem 5.2.

@[expose] public section

A. Repeated integration by parts

The integration-by-parts step sending the linearized density to the Euler-Lagrange pairing.

def HasIntegratedByPartsFormula (L : Lagrangian d m k) (f : Space d EuclideanSpace (Fin m)) : Prop := η : AdmissibleVariation d (EuclideanSpace (Fin m)), x, firstVariationDensity L f η x = firstVariationValue L f η

Termwise integration-by-parts data for the linearized first-variation density.

def HasTermwiseIntegratedByPartsFormula (L : Lagrangian d m k) (f : Space d EuclideanSpace (Fin m)) : Prop := η : AdmissibleVariation d (EuclideanSpace (Fin m)), I : DerivativeIndex d k, a : Fin m, Integrable (firstVariationDensityTerm L f η I a) Integrable (fun x => eulerLagrangeTerm L I a f x * (η x) a) ( x, firstVariationDensityTerm L f η I a x) = x, eulerLagrangeTerm L I a f x * (η x) a
d:i:Fin dg:Space d h:Space d hg:ContDiff ghh:IsTestFunction h (a : Space d), -((fderiv g a) (Space.basis i) * h a) = (x : Space d), -(fderiv g x) (Space.basis i) * h x d:i:Fin dg:Space d h:Space d hg:ContDiff ghh:IsTestFunction hx:Space d-((fderiv g x) (Space.basis i) * h x) = -(fderiv g x) (Space.basis i) * h x All goals completed! 🐙d:i:Fin dL:List (Fin d)ih: {g h : Space d }, ContDiff g IsTestFunction h (x : Space d), g x * List.foldr (fun i f => Space.deriv i f) h L x = (x : Space d), (-1) ^ L.length * List.foldr (fun i f => Space.deriv i f) g L x * h xg:Space d h:Space d hg:ContDiff ghh:IsTestFunction hhdg:ContDiff (Space.deriv i g)hhL:IsTestFunction (List.foldr (fun j f => Space.deriv j f) h L)x:Space d-((-1) ^ L.length * (Space.deriv i (List.foldr (fun j h => Space.deriv j h) g L) x * h x)) = (-1) ^ L.length * -1 * Space.deriv i (List.foldr (fun j f => Space.deriv j f) g L) x * h x All goals completed! 🐙

Repeated integration by parts for iterated coordinate derivatives against a test function.

lemma integral_mul_iteratedDeriv_eq_sign {g h : Space d } (I : MultiIndex d) (hg : ContDiff g) (hh : IsTestFunction h) : x, g x * ∂^[I] h x = x, (((-1 : ) ^ I.order) * ∂^[I] g x) * h x := d:g:Space d h:Space d I:MultiIndex dhg:ContDiff ghh:IsTestFunction h (x : Space d), g x * Space.iteratedDeriv I h x = (x : Space d), (-1) ^ I.order * Space.iteratedDeriv I g x * h x All goals completed! 🐙

B. Termwise formulas

Concrete termwise integration by parts for the first-variation density, assuming the jet coordinate coefficient functions are smooth along the field.

d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hcoeff: (I : DerivativeIndex d k) (a : Fin m), ContDiff fun x => L.coordDeriv I a (jetAt k f x)η:AdmissibleVariation d (EuclideanSpace (Fin m))I:DerivativeIndex d ka:Fin mg:Space d := fun x => L.coordDeriv I a (jetAt k f x)h:Space d := fun x => (η.toFun x).ofLp ahg:ContDiff ghh:IsTestFunction hhtd:ContDiff (Space.iteratedDeriv (↑I) g)htdSign:ContDiff fun x => (-1) ^ (↑I).order * Space.iteratedDeriv (↑I) g xIntegrable (fun x => eulerLagrangeTerm L I a f x * (η.toFun x).ofLp a) volume All goals completed! 🐙 d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hcoeff: (I : DerivativeIndex d k) (a : Fin m), ContDiff fun x => L.coordDeriv I a (jetAt k f x)η:AdmissibleVariation d (EuclideanSpace (Fin m))I:DerivativeIndex d ka:Fin mg:Space d := fun x => L.coordDeriv I a (jetAt k f x)h:Space d := fun x => (η.toFun x).ofLp ahg:ContDiff ghh:IsTestFunction h (x : Space d), firstVariationDensityTerm L f η I a x = (x : Space d), eulerLagrangeTerm L I a f x * (η.toFun x).ofLp a All goals completed! 🐙
lemma hasTermwiseIntegratedByPartsFormula_of_regular (L : Lagrangian d m k) (f : Space d EuclideanSpace (Fin m)) (hcoeff : Lagrangian.ContDiffCoordDerivAlongField L f) : HasTermwiseIntegratedByPartsFormula L f := d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hcoeff:L.ContDiffCoordDerivAlongField fHasTermwiseIntegratedByPartsFormula L f All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙 _ = firstVariationValue L f η := d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)η:AdmissibleVariation d (EuclideanSpace (Fin m))hterm:HasTermwiseIntegratedByPartsFormula L f (x : Space d), eulerLagrangeOp L f x, η.toFun x⟫_ = firstVariationValue L f η All goals completed! 🐙lemma hasIntegratedByPartsFormula_of_termwise (L : Lagrangian d m k) (f : Space d EuclideanSpace (Fin m)) (hterm : HasTermwiseIntegratedByPartsFormula L f) : HasIntegratedByPartsFormula L f := d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fHasIntegratedByPartsFormula L f d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m)) (x : Space d), firstVariationDensity L f η x = firstVariationValue L f η calc x, firstVariationDensity L f η x = I : DerivativeIndex d k, a : Fin m, x, firstVariationDensityTerm L f η I a x := d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m)) (x : Space d), firstVariationDensity L f η x = I, a, (x : Space d), firstVariationDensityTerm L f η I a x All goals completed! 🐙 _ = I : DerivativeIndex d k, a : Fin m, x, eulerLagrangeTerm L I a f x * (η x) a := d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m)) I, a, (x : Space d), firstVariationDensityTerm L f η I a x = I, a, (x : Space d), eulerLagrangeTerm L I a f x * (η.toFun x).ofLp a d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m)) x Finset.univ, a, (x_1 : Space d), firstVariationDensityTerm L f η x a x_1 = a, (x_1 : Space d), eulerLagrangeTerm L x a f x_1 * (η.toFun x_1).ofLp a d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m))I:DerivativeIndex d ka✝:I Finset.univ a, (x : Space d), firstVariationDensityTerm L f η I a x = a, (x : Space d), eulerLagrangeTerm L I a f x * (η.toFun x).ofLp a d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m))I:DerivativeIndex d ka✝:I Finset.univ x Finset.univ, (x_1 : Space d), firstVariationDensityTerm L f η I x x_1 = (x_1 : Space d), eulerLagrangeTerm L I x f x_1 * (η.toFun x_1).ofLp x d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m))I:DerivativeIndex d ka✝¹:I Finset.univa:Fin ma✝:a Finset.univ (x : Space d), firstVariationDensityTerm L f η I a x = (x : Space d), eulerLagrangeTerm L I a f x * (η.toFun x).ofLp a All goals completed! 🐙 _ = firstVariationValue L f η := d:m:k:L:Lagrangian d m kf:Space d EuclideanSpace (Fin m)hterm:HasTermwiseIntegratedByPartsFormula L fη:AdmissibleVariation d (EuclideanSpace (Fin m)) I, a, (x : Space d), eulerLagrangeTerm L I a f x * (η.toFun x).ofLp a = firstVariationValue L f η All goals completed! 🐙