Documentation

CsdLean4.Mathlib.Geometry.Manifold.VectorBundle.AlternatingMap

The bundle of continuous alternating maps is a C^n vector bundle #

Category: 1-Mathlib (CSD-free; upstream target Mathlib.Geometry.Manifold.VectorBundle, beside Hom.lean).

Mathlib has the bundle of continuous alternating maps as a topological vector bundle (Topology/VectorBundle/ContinuousAlternatingMap.lean) and it has Hom.lean doing the smooth case for the bundle of continuous linear maps. It has nothing alternating anywhere under Geometry/Manifold/. MATHLIB-ABSENT(ContMDiffVectorBundle.continuousAlternatingMap)

The proof mirrors Hom.lean exactly once the coordinate change is available, and the coordinate change decomposes — by rfl — as postcomposition after pullback:

compContinuousAlternatingMapCLM (e₂.coordChangeL b)
  ∘L compContinuousLinearMapCLM (e₁'.coordChangeL b)

with both factors smooth by Analysis/Normed/Module/Alternating/Pullback.lean.

⚠️ The elaboration trap, recorded because it cost a full attempt #

The first attempt at the coordinate-change lemma failed and was recorded — wrongly — as an "instance-path mismatch" needing plumbing. It is not that. The two topologies on a continuous-linear-map space are the same instance (inferInstance = ContinuousLinearMap.topologicalSpace by rfl, checked). What fails is elaboration order: writing

have h : ContDiff 𝕜 n (fun L : F₂ →L[𝕜] F₂ => (compContinuousAlternatingMapCLM L : … →L[𝕜] …))

re-synthesises the instances from the ascription and lands on the normed path, while the term carries the topological-module path; the application check then runs at reducible transparency and does not unfold them. Stating the same fact through the term — ContDiff 𝕜 n ⇑(compContinuousAlternatingMapCLM …) — typechecks immediately. That is the whole fix, and it is why this module states its two ContDiff hypotheses in that shape.

Honest scope #

⚠️ What remains of step (2a) is the last mile, and it is not this. With this instance, differential forms on a manifold as smooth sections (ContMDiffSection I _ n fun x ↦ TangentSpace I x [⋀^ι]→L[𝕜] Bundle.Trivial M G x) are one definition away — but that definition needs the total-space topology instance to synthesise for the specific (tangent bundle, trivial bundle) pair, which it does not do out of the box. Not built here, and the row stays open until it is.

⚠️ Still no exterior derivative. That is step (2b), upstream's own TODO, and nothing here touches it. And as with steps (0) and (1): no physics waits on any of this.

Provenance and references. The Mathlib-gaps register; the backlog (XL, "Manifold exterior calculus"); Mathlib/Geometry/Manifold/VectorBundle/Hom.lean (the template); CsdLean4/Mathlib/Analysis/Normed/Module/Alternating/Pullback.lean (both factors).

theorem contMDiffOn_continuousAlternatingMapCoordChange {𝕜 : Type u_1} {B : Type u_2} {F₁ : Type u_3} {F₂ : Type u_4} {ι : Type u_5} {n : WithTop ℕ∞} {E₁ : B → Type u_6} {E₂ : B → Type u_7} [NontriviallyNormedField 𝕜] [CharZero 𝕜] [Fintype ι] [DecidableEq ι] [(x : B) → AddCommGroup (E₁ x)] [(x : B) → Module 𝕜 (E₁ x)] [NormedAddCommGroup F₁] [NormedSpace 𝕜 F₁] [TopologicalSpace (Bundle.TotalSpace F₁ E₁)] [(x : B) → TopologicalSpace (E₁ x)] [(x : B) → AddCommGroup (E₂ x)] [(x : B) → Module 𝕜 (E₂ x)] [NormedAddCommGroup F₂] [NormedSpace 𝕜 F₂] [TopologicalSpace (Bundle.TotalSpace F₂ E₂)] [(x : B) → TopologicalSpace (E₂ x)] {EB : Type u_8} [NormedAddCommGroup EB] [NormedSpace 𝕜 EB] {HB : Type u_9} [TopologicalSpace HB] {IB : ModelWithCorners 𝕜 EB HB} [TopologicalSpace B] [ChartedSpace HB B] [FiberBundle F₁ E₁] [VectorBundle 𝕜 F₁ E₁] [FiberBundle F₂ E₂] [VectorBundle 𝕜 F₂ E₂] {e₁ e₁' : Bundle.Trivialization F₁ Bundle.TotalSpace.proj} {e₂ e₂' : Bundle.Trivialization F₂ Bundle.TotalSpace.proj} [ContMDiffVectorBundle n F₁ E₁ IB] [ContMDiffVectorBundle n F₂ E₂ IB] [MemTrivializationAtlas e₁] [MemTrivializationAtlas e₁'] [MemTrivializationAtlas e₂] [MemTrivializationAtlas e₂'] :
ContMDiffOn IB (modelWithCornersSelf 𝕜 (F₁ [⋀^ι]→L[𝕜] F₂ →L[𝕜] F₁ [⋀^ι]→L[𝕜] F₂)) n (Bundle.Pretrivialization.continuousAlternatingMapCoordChange 𝕜 ι e₁ e₁' e₂ e₂') (e₁.baseSet ∩ e₂.baseSet ∩ (e₁'.baseSet ∩ e₂'.baseSet))
instance Bundle.ContinuousAlternatingMap.vectorPrebundle.isContMDiff {𝕜 : Type u_1} {B : Type u_2} {F₁ : Type u_3} {F₂ : Type u_4} {ι : Type u_5} {n : WithTop ℕ∞} {E₁ : B → Type u_6} {E₂ : B → Type u_7} [NontriviallyNormedField 𝕜] [CharZero 𝕜] [Fintype ι] [DecidableEq ι] [(x : B) → AddCommGroup (E₁ x)] [(x : B) → Module 𝕜 (E₁ x)] [NormedAddCommGroup F₁] [NormedSpace 𝕜 F₁] [TopologicalSpace (TotalSpace F₁ E₁)] [(x : B) → TopologicalSpace (E₁ x)] [(x : B) → AddCommGroup (E₂ x)] [(x : B) → Module 𝕜 (E₂ x)] [NormedAddCommGroup F₂] [NormedSpace 𝕜 F₂] [TopologicalSpace (TotalSpace F₂ E₂)] [(x : B) → TopologicalSpace (E₂ x)] {EB : Type u_8} [NormedAddCommGroup EB] [NormedSpace 𝕜 EB] {HB : Type u_9} [TopologicalSpace HB] {IB : ModelWithCorners 𝕜 EB HB} [TopologicalSpace B] [ChartedSpace HB B] [FiberBundle F₁ E₁] [VectorBundle 𝕜 F₁ E₁] [FiberBundle F₂ E₂] [VectorBundle 𝕜 F₂ E₂] [∀ (x : B), IsTopologicalAddGroup (E₂ x)] [∀ (x : B), ContinuousSMul 𝕜 (E₂ x)] [ContMDiffVectorBundle n F₁ E₁ IB] [ContMDiffVectorBundle n F₂ E₂ IB] :
VectorPrebundle.IsContMDiff IB (vectorPrebundle 𝕜 ι F₁ E₁ F₂ E₂) n
instance ContMDiffVectorBundle.continuousAlternatingMap {𝕜 : Type u_1} {B : Type u_2} {F₁ : Type u_3} {F₂ : Type u_4} {ι : Type u_5} {n : WithTop ℕ∞} {E₁ : B → Type u_6} {E₂ : B → Type u_7} [NontriviallyNormedField 𝕜] [CharZero 𝕜] [Fintype ι] [DecidableEq ι] [(x : B) → AddCommGroup (E₁ x)] [(x : B) → Module 𝕜 (E₁ x)] [NormedAddCommGroup F₁] [NormedSpace 𝕜 F₁] [TopologicalSpace (Bundle.TotalSpace F₁ E₁)] [(x : B) → TopologicalSpace (E₁ x)] [(x : B) → AddCommGroup (E₂ x)] [(x : B) → Module 𝕜 (E₂ x)] [NormedAddCommGroup F₂] [NormedSpace 𝕜 F₂] [TopologicalSpace (Bundle.TotalSpace F₂ E₂)] [(x : B) → TopologicalSpace (E₂ x)] {EB : Type u_8} [NormedAddCommGroup EB] [NormedSpace 𝕜 EB] {HB : Type u_9} [TopologicalSpace HB] {IB : ModelWithCorners 𝕜 EB HB} [TopologicalSpace B] [ChartedSpace HB B] [FiberBundle F₁ E₁] [VectorBundle 𝕜 F₁ E₁] [FiberBundle F₂ E₂] [VectorBundle 𝕜 F₂ E₂] [∀ (x : B), IsTopologicalAddGroup (E₂ x)] [∀ (x : B), ContinuousSMul 𝕜 (E₂ x)] [ContMDiffVectorBundle n F₁ E₁ IB] [ContMDiffVectorBundle n F₂ E₂ IB] :
ContMDiffVectorBundle n (F₁ [⋀^ι]→L[𝕜] F₂) (fun (b : B) => E₁ b [⋀^ι]→L[𝕜] E₂ b) IB