Skip to content

Fix treatment of pullback on parallelizable manifolds #22563

@egourgoulhon

Description

@egourgoulhon

The following is a bug:

sage: S1 = Manifold(1, 'S^1') # the circle
sage: U = S1.open_subset('U') # the complement of one point
sage: Xt.<t> =  U.chart('t:(0,2*pi)') # the standard angle coordinate
sage: V = S1.open_subset('V') # the complement of the point t=pi
sage: Xu.<u> = V.chart('u:(0,2*pi)') # the angle t-pi
sage: S1.declare_union(U, V)
sage: e = S1.vector_frame('e') # a global vector frame (makes S^1 parallelizable)
sage: R2 = Manifold(2, 'R^2', start_index=1) # Euclidean space R^2
sage: X2.<x,y> = R2.chart() # Cartesian coordinates
sage: F = S1.diff_map(R2, {(Xt,X2): [cos(t), sin(t)],
....:                      (Xu,X2): [-cos(u), -sin(u)]}) # embedding S^1 --> R^2
sage: dx = X2.coframe()[1] # the 1-form dx on R^2
sage: a = F.pullback(dx) ; a
1-form on the 1-dimensional differentiable manifold S^1
sage: a._components
{Coordinate frame (V, (d/du)): 1-index components w.r.t. Coordinate frame (V, (d/du)),
 Coordinate frame (U, (d/dt)): 1-index components w.r.t. Coordinate frame (U, (d/dt))}

As a tensor field on S^1, a should have components only on frames which domain is S^1 and not some strict subsets of it, like U and V. Only restrictions of a to U and V (as stored in a._restrictions) shall be initialized in the current case.

This ticket fixes the issue. It also changes the names of the pullback helper function and its arguments for a better readability. It also corrects some typos in the error messages in methods of DiffMap.

CC: @tscrim

Component: geometry

Keywords: pullback

Author: Eric Gourgoulhon

Branch/Commit: 02add83

Reviewer: Travis Scrimshaw

Issue created by migration from https://trac.sagemath.org/ticket/22563

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions