Opened 14 months ago

Last modified 6 days ago

#32974 new enhancement

Natural bundles: local data (and orientations)

Reported by: gh-tobiasdiez Owned by:
Priority: major Milestone:
Component: manifolds Keywords:
Cc: tscrim, nthiery, gh-mjungmath, egourgoulhon Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: public/manifolds/natural_data (Commits, GitHub, GitLab) Commit: 9a6ba21c18035ebe5da6def40fc0577cbec59eb3
Dependencies: Stopgaps:

Status badges


The theory of natural bundles provides a convienent framework to specify geometric data on manifolds. A natural bundle is a frame bundle over a manifold M with an action by the diffeomorphism group M. The frame bundle and bundles associated to the frame bundle are natural. Thus, on abstract grounds, things like orientation, vector fields, diff forms, metrics, symplectic forms etc are all examples of sections of natural bundles.

In this ticket, we introduce the class NaturalLocalData which represents the data that is needed to encode local sections of natural bundles. This concept is illustrated and applied to specify orientations of manifolds as assigning +1 or -1 to a vector frame.

The implementation uses the following results about natural bundles:

  • Every natural bundle E is (under sufficiently general assumptions) an associated bundle of a jet-prolongation L^r M of the frame bundle LM. That is, E = L^r M \times_{\rho} V where \rho is an action of the jet-prolongation of GL on the manifold V.
  • Every (local) diffeomorhpism of M lifts to a bundle automorphism by taking its jet.
  • A frame is a local trivialization of the frame bundle, and thus yields a natural trivialization of E.
  • In this local trivialization, a section of E is just a V-valued function.
  • Conversely, a collection of local V-valued functions defines a section of E iff they transform correctly under the action of diffeomorphisms.

In other words, a section of E is specified by assigning to a frame a V-valued function. This is what the class NaturalLocalData is capturing. The naturality (e.g. the known transformation behavior under diffeos) is used to a) check that a collection of V-valued functions indeed specifies a global section (check_consistency) and b) to calculate the representation in charts other than the ones originally used (still to be implemented). On some way, one could view this as a refactorization and genearlization of the "restrictions" and "components" functions of tensor fields using the mathematical concept of natural bundles. The simplest example (and often sufficiently general) is the case of first-order natural bundles, corresponding to r=1 above. That is, E is just an associated bundle to the frame bundle, using some action of GL(n). For example, the orientation bundle is given by action of GL(n) on Z_2 by multiplication by A.det().sign().

In a follow-up ticket, natural transformations are implemented. These are diffeo-equivariant maps between natural bundles. Examples are almost all basic constructions, e.g. contractions of tensor fields, curvature maps, assigning volume forms to metrics, exterior differential, etc.

The implementation is still in its early stages, but feedback is very welcome before I continue working on this (in a 'wrong' direction). For example, one question I had is why tensor fields etc use the concept of restriction, and only in a second step are represented by their components wrt to frame - instead of directly collecting only components wrt to frames. Also ideas how to best migrate existing code to these natural bundles are appreciated. Specifying the orientation in this new framework is easy, but the other migrations will be much more involved (and I don't plan to do this as part of this ticket).

Change History (12)

comment:1 Changed 14 months ago by gh-mjungmath

Possibly related: #31703.

Before we introduce new bundles over manifolds, I'd suggest we should implement quite general (fiber) bundles over manifolds. The category framework should be of great use here. Punchline: there is a purely categorical description of bundles over manifolds using isomorphisms in the corresponding category. Sections can be realized by their (pre)sheaf property (see above).

Based on such an implementation, natural bundles, in particular frame bundles, orientation bundles, even vector bundles and tensor bundles, become a special case.

Why? We should not swing from bundle to bundle and add more and more bundles individually if there's a general description we can (probably more conveniently) make use of first.

Last edited 14 months ago by gh-mjungmath (previous) (diff)

comment:2 Changed 14 months ago by gh-tobiasdiez

Thanks for the feedback. I think sheaves are a great idea in general. However, they are perpendicular to the main idea of natural bunldes. Sheaves would handle how you restrict data from one subset to another one; sections of sheaves are not really more than a bunch of data with a "restrict" method. On the other hand, natural bundles give you a way to calculate data in a different chart using the transformation properties under diffeomorphism.

But you are right, once sheaves are implemented one could let NaturalLocalData inherit from PresheafSection to handle the restriction business.

Note also that I didn't implement natural bundles directly, but only what would correspond to their local sections.

comment:3 in reply to:  2 Changed 14 months ago by gh-mjungmath

Last edited 14 months ago by gh-mjungmath (previous) (diff)

comment:4 in reply to:  2 Changed 14 months ago by gh-mjungmath

Replying to gh-tobiasdiez:

Note also that I didn't implement natural bundles directly, but only what would correspond to their local sections.

I see. It was just a comment. We should keep in mind, the more special cases of bundles we implement, the more work we have to refactor them into the generalized framework that will be inevitable to implement at some point.

comment:5 Changed 14 months ago by gh-mjungmath

Do you have references/literature?

comment:6 Changed 14 months ago by gh-mjungmath

Looks to me that natural bundles are already the most canonical things you can have over manifolds. Is it true that any non-natural bundle does not contain useful (geometric) information?

If that is the case, natural bundles are perhaps the thing we actually need. Unfortunately, I don't know enough to form an opinion here.

comment:7 Changed 14 months ago by gh-tobiasdiez

Natural bundles are quite general. More or less everything that you can phrase in terms of frames and that behaves "naturally" with respect to changes of frames is a section of a natural bundle. There are a few things that are not quite natural, such as spin structures (they need coverings of frame bundles). But most of what I've seen so far in sage could be treated with natural bundles. The simplest examples only involve the first derivative of the diffeomorphism (e.g. metrics, vector fields, diff forms, orientation, ...) and are sections of associated bundles to the frame bundle. So nothing too fancy there. Things get more ugly if the transformation property is more complicated such as for connections (which are second order natural).

Is it true that any non-natural bundle does not contain useful (geometric) information?

That probably depends on your definition of "geometric information". There are definitely interesting bundles that are not natural. For example, the Hopf fibration is not natural (but the tautological line bundle is). As a rule of thumb, every bundle that you can construct only using the base will be natural.

References are hard. The canonical book is but I find it terribly hard to read. Perhaps more approachable are and

comment:8 in reply to:  7 Changed 14 months ago by gh-mjungmath

Fascinating! Thank you for the explanation and references.

Replying to gh-tobiasdiez:

That probably depends on your definition of "geometric information".

Well, I'd consider spin bundles already quite geometric. So I assume the answer is "no".

comment:9 Changed 13 months ago by gh-tobiasdiez

More feedback is strongly appreciated before I continue working on this. Thanks!

comment:10 Changed 10 months ago by mkoeppe

Milestone: sage-9.6sage-9.7

comment:11 Changed 5 months ago by mkoeppe

Milestone: sage-9.7sage-9.8

comment:12 Changed 6 days ago by mkoeppe

Milestone: sage-9.8
Note: See TracTickets for help on using tickets.