Documentation

CsdLean4.Mathlib.Analysis.Normed.Module.Alternating.Wedge

The exterior product of continuous alternating maps #

TERM-SCOPE(Kahler) β€” the phrase "top-power identity" appears below in the restricted sense the source repository's terms register records: the identity is what this file makes sayable, and it is neither stated nor proved here. (The marker is repository bookkeeping; it goes with the References block if the file is ever sent upstream.)

Category: 1-Mathlib (CSD-free; upstream target Mathlib.Analysis.Normed.Module.Alternating).

Mathlib has the exterior product of two AlternatingMaps (AlternatingMap.domCoprod, valued in the tensor product of the two codomains) and it has ContinuousAlternatingMap. It does not have the exterior product of two continuous alternating maps: domCoprod occurs in exactly three algebraic files, and ContinuousAlternatingMap.domCoprod is zero declarations at the pin. MATHLIB-ABSENT(ContinuousAlternatingMap.domCoprod)

⚠️ And it cannot be stated in the tensor-valued form. There is no topology on F βŠ—[π•œ] G at the pin, so E [β‹€^ΞΉa βŠ• ΞΉb]β†’L[π•œ] (F βŠ—[π•œ] G) is not a type. The standard fix, and the one taken here, is to pair the two codomains through a continuous bilinear map B : F β†’L[π•œ] G β†’L[π•œ] H. Every use in sight has that shape β€” for real-valued forms B is multiplication β€” and the tensor-valued version is recovered from this one the moment a topology on the tensor product exists, by taking B to be TensorProduct.mk.

Contents #

Honest scope #

Delivered: the binary product and its two defining equations. NOT built here, and not claimed:

The point of the file is narrow and worth stating plainly: with it, a top-power identity of the shape Ο‰^(N-1)/(N-1)! = ΞΌ_FS becomes sayable in Lean. It does not make any such statement true, and nothing here depends on it.

Provenance and references. The Mathlib-gaps register; the backlog (XL, "Manifold exterior calculus"); the terms register (moment map); CsdLean4/Mathlib/Analysis/InnerProductSpace/KahlerWedge.lean (the consumer).

noncomputable def ContinuousLinearMap.liftTensor {π•œ : Type u_1} [NontriviallyNormedField π•œ] {F : Type u_3} {G : Type u_4} {H : Type u_5} [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] [NormedAddCommGroup H] [NormedSpace π•œ H] (B : F β†’L[π•œ] G β†’L[π•œ] H) :
TensorProduct π•œ F G β†’β‚—[π•œ] H

The linear map F βŠ—[π•œ] G β†’β‚—[π•œ] H induced by a continuous bilinear map B.

This is TensorProduct.lift of the underlying bilinear map. The continuity of B is not used here β€” there is no topology on the source β€” only downstream, where the composite is shown to be a continuous function of the vector family.

Equations
Instances For
    @[simp]
    theorem ContinuousLinearMap.liftTensor_tmul {π•œ : Type u_1} [NontriviallyNormedField π•œ] {F : Type u_3} {G : Type u_4} {H : Type u_5} [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] [NormedAddCommGroup H] [NormedSpace π•œ H] (B : F β†’L[π•œ] G β†’L[π•œ] H) (x : F) (y : G) :
    B.liftTensor (x βŠ—β‚œ[π•œ] y) = (B x) y
    def ContinuousAlternatingMap.domDomCongr {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} {F : Type u_3} [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {ΞΉ : Type u_8} {ΞΉ' : Type u_9} (Οƒ : ΞΉ ≃ ΞΉ') (f : E [β‹€^ΞΉ]β†’L[π•œ] F) :
    E [β‹€^ΞΉ']β†’L[π•œ] F

    Reindex a continuous alternating map along an equivalence of index types.

    Mathlib has this for AlternatingMap (AlternatingMap.domDomCongr) and for ContinuousMultilinearMap (ContinuousMultilinearMap.domDomCongr), but not for ContinuousAlternatingMap β€” MATHLIB-ABSENT(ContinuousAlternatingMap.domDomCongr).

    It is needed here rather than merely wanted: wedge is indexed by ΞΉa βŠ• ΞΉb, while extDeriv and every other differential-form API in Mathlib is indexed by Fin n, so without a reindexing the product of two forms cannot be fed back into the calculus it came from.

    Equations
    Instances For
      @[simp]
      theorem ContinuousAlternatingMap.domDomCongr_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} {F : Type u_3} [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {ΞΉ : Type u_8} {ΞΉ' : Type u_9} (Οƒ : ΞΉ ≃ ΞΉ') (f : E [β‹€^ΞΉ]β†’L[π•œ] F) (v : ΞΉ' β†’ E) :
      (domDomCongr Οƒ f) v = f fun (i : ΞΉ) => v (Οƒ i)
      theorem ContinuousAlternatingMap.continuous_liftTensor_summand {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} {F : Type u_3} {G : Type u_4} {H : Type u_5} [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] [NormedAddCommGroup H] [NormedSpace π•œ H] {ΞΉa : Type u_6} {ΞΉb : Type u_7} [Fintype ΞΉa] [Fintype ΞΉb] [DecidableEq ΞΉa] [DecidableEq ΞΉb] (B : F β†’L[π•œ] G β†’L[π•œ] H) (a : E [β‹€^ΞΉa]β†’L[π•œ] F) (b : E [β‹€^ΞΉb]β†’L[π•œ] G) (Οƒ : Equiv.Perm.ModSumCongr ΞΉa ΞΉb) :

      The mathematical content of this file. One summand of the antisymmetrisation, paired through B, is a continuous function of the vector family.

      The summand is a class in Equiv.Perm.ModSumCongr ΞΉa ΞΉb; on a representative Οƒ it is Equiv.Perm.sign Οƒ β€’ (a (v ∘ Οƒ ∘ Sum.inl) βŠ—β‚œ b (v ∘ Οƒ ∘ Sum.inr)). Pairing through B and reading off continuity needs precomposition with Οƒ (continuous coordinatewise), a and b, and the joint continuity of B (ContinuousLinearMap.continuousβ‚‚) β€” being separately continuous in each slot would not suffice.

      noncomputable def ContinuousAlternatingMap.wedge {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} {F : Type u_3} {G : Type u_4} {H : Type u_5} [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] [NormedAddCommGroup H] [NormedSpace π•œ H] {ΞΉa : Type u_6} {ΞΉb : Type u_7} [Fintype ΞΉa] [Fintype ΞΉb] [DecidableEq ΞΉa] [DecidableEq ΞΉb] (B : F β†’L[π•œ] G β†’L[π•œ] H) (a : E [β‹€^ΞΉa]β†’L[π•œ] F) (b : E [β‹€^ΞΉb]β†’L[π•œ] G) :
      E [β‹€^ΞΉa βŠ• ΞΉb]β†’L[π•œ] H

      β˜… The exterior product of two continuous alternating maps, with the codomains paired through a continuous bilinear map B.

      Its underlying alternating map is the algebraic AlternatingMap.domCoprod postcomposed with ContinuousLinearMap.liftTensor B (wedge_toAlternatingMap, which is rfl); the new content is that the result is continuous.

      Equations
      Instances For
        @[simp]
        theorem ContinuousAlternatingMap.wedge_toAlternatingMap {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} {F : Type u_3} {G : Type u_4} {H : Type u_5} [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] [NormedAddCommGroup H] [NormedSpace π•œ H] {ΞΉa : Type u_6} {ΞΉb : Type u_7} [Fintype ΞΉa] [Fintype ΞΉb] [DecidableEq ΞΉa] [DecidableEq ΞΉb] (B : F β†’L[π•œ] G β†’L[π•œ] H) (a : E [β‹€^ΞΉa]β†’L[π•œ] F) (b : E [β‹€^ΞΉb]β†’L[π•œ] G) :

        The continuous exterior product is the algebraic one, paired through B. Every fact Mathlib proves about AlternatingMap.domCoprod transfers along this equation.

        theorem ContinuousAlternatingMap.wedge_apply {π•œ : Type u_1} [NontriviallyNormedField π•œ] {E : Type u_2} {F : Type u_3} {G : Type u_4} {H : Type u_5} [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G] [NormedAddCommGroup H] [NormedSpace π•œ H] {ΞΉa : Type u_6} {ΞΉb : Type u_7} [Fintype ΞΉa] [Fintype ΞΉb] [DecidableEq ΞΉa] [DecidableEq ΞΉb] (B : F β†’L[π•œ] G β†’L[π•œ] H) (a : E [β‹€^ΞΉa]β†’L[π•œ] F) (b : E [β‹€^ΞΉb]β†’L[π•œ] G) (v : ΞΉa βŠ• ΞΉb β†’ E) :

        The pointwise formula: a signed sum over shuffle classes.