Group of Tangent-Space Automorphism Fields¶
Given a differentiable manifold \(U\) and a differentiable map
\(\Phi: U \rightarrow M\) to a differentiable manifold \(M\) (possibly \(U = M\)
and \(\Phi=\mathrm{Id}_M\)), the group of tangent-space automorphism fields
associated with \(U\) and \(\Phi\) is the general linear group
\(\mathrm{GL}(\mathfrak{X}(U,\Phi))\) of the module \(\mathfrak{X}(U,\Phi)\) of
vector fields along \(U\) with values on \(M\supset \Phi(U)\) (see
VectorFieldModule).
Note that \(\mathfrak{X}(U, \Phi)\) is a module over
\(C^k(U)\), the algebra of differentiable scalar fields on \(U\).
Elements of \(\mathrm{GL}(\mathfrak{X}(U, \Phi))\) are fields along \(U\)
of automorphisms of tangent spaces to \(M\).
Two classes implement \(\mathrm{GL}(\mathfrak{X}(U, \Phi))\) depending
whether \(M\) is parallelizable or not:
AutomorphismFieldParalGroup and AutomorphismFieldGroup.
AUTHORS:
- Eric Gourgoulhon (2015): initial version 
- Travis Scrimshaw (2016): review tweaks 
- Michael Jung (2019): improve treatment of the identity element 
REFERENCES:
- Chap. 15 of [God1968] 
- class sage.manifolds.differentiable.automorphismfield_group.AutomorphismFieldGroup(vector_field_module)[source]¶
- Bases: - UniqueRepresentation,- Parent- General linear group of the module of vector fields along a differentiable manifold \(U\) with values on a differentiable manifold \(M\). - Given a differentiable manifold \(U\) and a differentiable map \(\Phi: U \rightarrow M\) to a differentiable manifold \(M\) (possibly \(U = M\) and \(\Phi = \mathrm{Id}_M\)), the group of tangent-space automorphism fields associated with \(U\) and \(\Phi\) is the general linear group \(\mathrm{GL}(\mathfrak{X}(U,\Phi))\) of the module \(\mathfrak{X}(U,\Phi)\) of vector fields along \(U\) with values on \(M \supset \Phi(U)\) (see - VectorFieldModule). Note that \(\mathfrak{X}(U,\Phi)\) is a module over \(C^k(U)\), the algebra of differentiable scalar fields on \(U\). Elements of \(\mathrm{GL}(\mathfrak{X}(U,\Phi))\) are fields along \(U\) of automorphisms of tangent spaces to \(M\).- Note - If \(M\) is parallelizable, then - AutomorphismFieldParalGroupmust be used instead.- INPUT: - vector_field_module–- VectorFieldModule; module \(\mathfrak{X}(U,\Phi)\) of vector fields along \(U\) with values on \(M\)
 - EXAMPLES: - Group of tangent-space automorphism fields of the 2-sphere: - sage: M = Manifold(2, 'M') # the 2-dimensional sphere S^2 sage: U = M.open_subset('U') # complement of the North pole sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: V = M.open_subset('V') # complement of the South pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: M.declare_union(U,V) # S^2 is the union of U and V sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', ....: restrictions1= x^2+y^2!=0, restrictions2= u^2+v^2!=0) sage: uv_to_xy = xy_to_uv.inverse() sage: G = M.automorphism_field_group() ; G General linear group of the Module X(M) of vector fields on the 2-dimensional differentiable manifold M - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M') # the 2-dimensional sphere S^2 >>> U = M.open_subset('U') # complement of the North pole >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> V = M.open_subset('V') # complement of the South pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> M.declare_union(U,V) # S^2 is the union of U and V >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', ... restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> uv_to_xy = xy_to_uv.inverse() >>> G = M.automorphism_field_group() ; G General linear group of the Module X(M) of vector fields on the 2-dimensional differentiable manifold M - Gis the general linear group of the vector field module \(\mathfrak{X}(M)\):- sage: XM = M.vector_field_module() ; XM Module X(M) of vector fields on the 2-dimensional differentiable manifold M sage: G is XM.general_linear_group() True - >>> from sage.all import * >>> XM = M.vector_field_module() ; XM Module X(M) of vector fields on the 2-dimensional differentiable manifold M >>> G is XM.general_linear_group() True - Gis a non-abelian group:- sage: G.category() Category of groups sage: G in Groups() True sage: G in CommutativeAdditiveGroups() False - >>> from sage.all import * >>> G.category() Category of groups >>> G in Groups() True >>> G in CommutativeAdditiveGroups() False - The elements of - Gare tangent-space automorphisms:- sage: a = G.an_element(); a Field of tangent-space automorphisms on the 2-dimensional differentiable manifold M sage: a.parent() is G True sage: a.restrict(U).display() 2 ∂/∂x⊗dx + 2 ∂/∂y⊗dy sage: a.restrict(V).display() 2 ∂/∂u⊗du + 2 ∂/∂v⊗dv - >>> from sage.all import * >>> a = G.an_element(); a Field of tangent-space automorphisms on the 2-dimensional differentiable manifold M >>> a.parent() is G True >>> a.restrict(U).display() 2 ∂/∂x⊗dx + 2 ∂/∂y⊗dy >>> a.restrict(V).display() 2 ∂/∂u⊗du + 2 ∂/∂v⊗dv - The identity element of the group - G:- sage: e = G.one() ; e Field of tangent-space identity maps on the 2-dimensional differentiable manifold M sage: eU = U.default_frame() ; eU Coordinate frame (U, (∂/∂x,∂/∂y)) sage: eV = V.default_frame() ; eV Coordinate frame (V, (∂/∂u,∂/∂v)) sage: e.display(eU) Id = ∂/∂x⊗dx + ∂/∂y⊗dy sage: e.display(eV) Id = ∂/∂u⊗du + ∂/∂v⊗dv - >>> from sage.all import * >>> e = G.one() ; e Field of tangent-space identity maps on the 2-dimensional differentiable manifold M >>> eU = U.default_frame() ; eU Coordinate frame (U, (∂/∂x,∂/∂y)) >>> eV = V.default_frame() ; eV Coordinate frame (V, (∂/∂u,∂/∂v)) >>> e.display(eU) Id = ∂/∂x⊗dx + ∂/∂y⊗dy >>> e.display(eV) Id = ∂/∂u⊗du + ∂/∂v⊗dv - Element[source]¶
- alias of - AutomorphismField
 - base_module()[source]¶
- Return the vector-field module of which - selfis the general linear group.- OUTPUT: - VectorFieldModule- EXAMPLES: - Base module of the group of tangent-space automorphism fields of the 2-sphere: - sage: M = Manifold(2, 'M') # the 2-dimensional sphere S^2 sage: U = M.open_subset('U') # complement of the North pole sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: V = M.open_subset('V') # complement of the South pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: M.declare_union(U,V) # S^2 is the union of U and V sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', restrictions1= x^2+y^2!=0, ....: restrictions2= u^2+v^2!=0) sage: uv_to_xy = xy_to_uv.inverse() sage: G = M.automorphism_field_group() sage: G.base_module() Module X(M) of vector fields on the 2-dimensional differentiable manifold M sage: G.base_module() is M.vector_field_module() True - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M') # the 2-dimensional sphere S^2 >>> U = M.open_subset('U') # complement of the North pole >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> V = M.open_subset('V') # complement of the South pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> M.declare_union(U,V) # S^2 is the union of U and V >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), ... restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> uv_to_xy = xy_to_uv.inverse() >>> G = M.automorphism_field_group() >>> G.base_module() Module X(M) of vector fields on the 2-dimensional differentiable manifold M >>> G.base_module() is M.vector_field_module() True 
 - one()[source]¶
- Return identity element of - self.- The group identity element is the field of tangent-space identity maps. - OUTPUT: - AutomorphismFieldrepresenting the identity element
 - EXAMPLES: - Identity element of the group of tangent-space automorphism fields of the 2-sphere: - sage: M = Manifold(2, 'M') # the 2-dimensional sphere S^2 sage: U = M.open_subset('U') # complement of the North pole sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: V = M.open_subset('V') # complement of the South pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: M.declare_union(U,V) # S^2 is the union of U and V sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', restrictions1= x^2+y^2!=0, ....: restrictions2= u^2+v^2!=0) sage: uv_to_xy = xy_to_uv.inverse() sage: G = M.automorphism_field_group() sage: G.one() Field of tangent-space identity maps on the 2-dimensional differentiable manifold M sage: G.one().restrict(U)[:] [1 0] [0 1] sage: G.one().restrict(V)[:] [1 0] [0 1] - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M') # the 2-dimensional sphere S^2 >>> U = M.open_subset('U') # complement of the North pole >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> V = M.open_subset('V') # complement of the South pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> M.declare_union(U,V) # S^2 is the union of U and V >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), ... restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> uv_to_xy = xy_to_uv.inverse() >>> G = M.automorphism_field_group() >>> G.one() Field of tangent-space identity maps on the 2-dimensional differentiable manifold M >>> G.one().restrict(U)[:] [1 0] [0 1] >>> G.one().restrict(V)[:] [1 0] [0 1] 
 
- class sage.manifolds.differentiable.automorphismfield_group.AutomorphismFieldParalGroup(vector_field_module)[source]¶
- Bases: - FreeModuleLinearGroup- General linear group of the module of vector fields along a differentiable manifold \(U\) with values on a parallelizable manifold \(M\). - Given a differentiable manifold \(U\) and a differentiable map \(\Phi: U \rightarrow M\) to a parallelizable manifold \(M\) (possibly \(U = M\) and \(\Phi = \mathrm{Id}_M\)), the group of tangent-space automorphism fields associated with \(U\) and \(\Phi\) is the general linear group \(\mathrm{GL}(\mathfrak{X}(U, \Phi))\) of the module \(\mathfrak{X}(U, \Phi)\) of vector fields along \(U\) with values on \(M \supset \Phi(U)\) (see - VectorFieldFreeModule). Note that \(\mathfrak{X}(U, \Phi)\) is a free module over \(C^k(U)\), the algebra of differentiable scalar fields on \(U\). Elements of \(\mathrm{GL}(\mathfrak{X}(U, \Phi))\) are fields along \(U\) of automorphisms of tangent spaces to \(M\).- Note - If \(M\) is not parallelizable, the class - AutomorphismFieldGroupmust be used instead.- INPUT: - vector_field_module–- VectorFieldFreeModule; free module \(\mathfrak{X}(U,\Phi)\) of vector fields along \(U\) with values on \(M\)
 - EXAMPLES: - Group of tangent-space automorphism fields of a 2-dimensional parallelizable manifold: - sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: XM = M.vector_field_module() ; XM Free module X(M) of vector fields on the 2-dimensional differentiable manifold M sage: G = M.automorphism_field_group(); G General linear group of the Free module X(M) of vector fields on the 2-dimensional differentiable manifold M sage: latex(G) \mathrm{GL}\left( \mathfrak{X}\left(M\right) \right) - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> XM = M.vector_field_module() ; XM Free module X(M) of vector fields on the 2-dimensional differentiable manifold M >>> G = M.automorphism_field_group(); G General linear group of the Free module X(M) of vector fields on the 2-dimensional differentiable manifold M >>> latex(G) \mathrm{GL}\left( \mathfrak{X}\left(M\right) \right) - Gis nothing but the general linear group of the module \(\mathfrak{X}(M)\):- sage: G is XM.general_linear_group() True - >>> from sage.all import * >>> G is XM.general_linear_group() True - Gis a group:- sage: G.category() Category of groups sage: G in Groups() True - >>> from sage.all import * >>> G.category() Category of groups >>> G in Groups() True - It is not an abelian group: - sage: G in CommutativeAdditiveGroups() False - >>> from sage.all import * >>> G in CommutativeAdditiveGroups() False - The elements of - Gare tangent-space automorphisms:- sage: G.Element <class 'sage.manifolds.differentiable.automorphismfield.AutomorphismFieldParal'> sage: a = G.an_element() ; a Field of tangent-space automorphisms on the 2-dimensional differentiable manifold M sage: a.parent() is G True - >>> from sage.all import * >>> G.Element <class 'sage.manifolds.differentiable.automorphismfield.AutomorphismFieldParal'> >>> a = G.an_element() ; a Field of tangent-space automorphisms on the 2-dimensional differentiable manifold M >>> a.parent() is G True - As automorphisms of \(\mathfrak{X}(M)\), the elements of - Gmap a vector field to a vector field:- sage: v = XM.an_element() ; v Vector field on the 2-dimensional differentiable manifold M sage: v.display() 2 ∂/∂x + 2 ∂/∂y sage: a(v) Vector field on the 2-dimensional differentiable manifold M sage: a(v).display() 2 ∂/∂x - 2 ∂/∂y - >>> from sage.all import * >>> v = XM.an_element() ; v Vector field on the 2-dimensional differentiable manifold M >>> v.display() 2 ∂/∂x + 2 ∂/∂y >>> a(v) Vector field on the 2-dimensional differentiable manifold M >>> a(v).display() 2 ∂/∂x - 2 ∂/∂y - Indeed the matrix of - awith respect to the frame \((\partial_x, \partial_y)\) is:- sage: a[X.frame(),:] [ 1 0] [ 0 -1] - >>> from sage.all import * >>> a[X.frame(),:] [ 1 0] [ 0 -1] - The elements of - Gcan also be considered as tensor fields of type \((1,1)\):- sage: a.tensor_type() (1, 1) sage: a.tensor_rank() 2 sage: a.domain() 2-dimensional differentiable manifold M sage: a.display() ∂/∂x⊗dx - ∂/∂y⊗dy - >>> from sage.all import * >>> a.tensor_type() (1, 1) >>> a.tensor_rank() 2 >>> a.domain() 2-dimensional differentiable manifold M >>> a.display() ∂/∂x⊗dx - ∂/∂y⊗dy - The identity element of the group - Gis:- sage: id = G.one() ; id Field of tangent-space identity maps on the 2-dimensional differentiable manifold M sage: id*a == a True sage: a*id == a True sage: a*a^(-1) == id True sage: a^(-1)*a == id True - >>> from sage.all import * >>> id = G.one() ; id Field of tangent-space identity maps on the 2-dimensional differentiable manifold M >>> id*a == a True >>> a*id == a True >>> a*a**(-Integer(1)) == id True >>> a**(-Integer(1))*a == id True - Construction of an element by providing its components with respect to the manifold’s default frame (frame associated to the coordinates \((x,y)\)): - sage: b = G([[1+x^2,0], [0,1+y^2]]) ; b Field of tangent-space automorphisms on the 2-dimensional differentiable manifold M sage: b.display() (x^2 + 1) ∂/∂x⊗dx + (y^2 + 1) ∂/∂y⊗dy sage: (~b).display() # the inverse automorphism 1/(x^2 + 1) ∂/∂x⊗dx + 1/(y^2 + 1) ∂/∂y⊗dy - >>> from sage.all import * >>> b = G([[Integer(1)+x**Integer(2),Integer(0)], [Integer(0),Integer(1)+y**Integer(2)]]) ; b Field of tangent-space automorphisms on the 2-dimensional differentiable manifold M >>> b.display() (x^2 + 1) ∂/∂x⊗dx + (y^2 + 1) ∂/∂y⊗dy >>> (~b).display() # the inverse automorphism 1/(x^2 + 1) ∂/∂x⊗dx + 1/(y^2 + 1) ∂/∂y⊗dy - We check the group law on these elements: - sage: (a*b)^(-1) == b^(-1) * a^(-1) True - >>> from sage.all import * >>> (a*b)**(-Integer(1)) == b**(-Integer(1)) * a**(-Integer(1)) True - Invertible tensor fields of type \((1,1)\) can be converted to elements of - G:- sage: t = M.tensor_field(1, 1, name='t') sage: t[:] = [[1+exp(y), x*y], [0, 1+x^2]] sage: t1 = G(t) ; t1 Field of tangent-space automorphisms t on the 2-dimensional differentiable manifold M sage: t1 in G True sage: t1.display() t = (e^y + 1) ∂/∂x⊗dx + x*y ∂/∂x⊗dy + (x^2 + 1) ∂/∂y⊗dy sage: t1^(-1) Field of tangent-space automorphisms t^(-1) on the 2-dimensional differentiable manifold M sage: (t1^(-1)).display() t^(-1) = 1/(e^y + 1) ∂/∂x⊗dx - x*y/(x^2 + (x^2 + 1)*e^y + 1) ∂/∂x⊗dy + 1/(x^2 + 1) ∂/∂y⊗dy - >>> from sage.all import * >>> t = M.tensor_field(Integer(1), Integer(1), name='t') >>> t[:] = [[Integer(1)+exp(y), x*y], [Integer(0), Integer(1)+x**Integer(2)]] >>> t1 = G(t) ; t1 Field of tangent-space automorphisms t on the 2-dimensional differentiable manifold M >>> t1 in G True >>> t1.display() t = (e^y + 1) ∂/∂x⊗dx + x*y ∂/∂x⊗dy + (x^2 + 1) ∂/∂y⊗dy >>> t1**(-Integer(1)) Field of tangent-space automorphisms t^(-1) on the 2-dimensional differentiable manifold M >>> (t1**(-Integer(1))).display() t^(-1) = 1/(e^y + 1) ∂/∂x⊗dx - x*y/(x^2 + (x^2 + 1)*e^y + 1) ∂/∂x⊗dy + 1/(x^2 + 1) ∂/∂y⊗dy - Since any automorphism field can be considered as a tensor field of type-\((1,1)\) on - M, there is a coercion map from- Gto the module \(T^{(1,1)}(M)\) of type-\((1,1)\) tensor fields:- sage: T11 = M.tensor_field_module((1,1)) ; T11 Free module T^(1,1)(M) of type-(1,1) tensors fields on the 2-dimensional differentiable manifold M sage: T11.has_coerce_map_from(G) True - >>> from sage.all import * >>> T11 = M.tensor_field_module((Integer(1),Integer(1))) ; T11 Free module T^(1,1)(M) of type-(1,1) tensors fields on the 2-dimensional differentiable manifold M >>> T11.has_coerce_map_from(G) True - An explicit call of this coercion map is: - sage: tt = T11(t1) ; tt Tensor field t of type (1,1) on the 2-dimensional differentiable manifold M sage: tt == t True - >>> from sage.all import * >>> tt = T11(t1) ; tt Tensor field t of type (1,1) on the 2-dimensional differentiable manifold M >>> tt == t True - An implicit call of the coercion map is performed to subtract an element of - Gfrom an element of \(T^{(1,1)}(M)\):- sage: s = t - t1 ; s Tensor field t-t of type (1,1) on the 2-dimensional differentiable manifold M sage: s.parent() is T11 True sage: s.display() t-t = 0 - >>> from sage.all import * >>> s = t - t1 ; s Tensor field t-t of type (1,1) on the 2-dimensional differentiable manifold M >>> s.parent() is T11 True >>> s.display() t-t = 0 - as well as for the reverse operation: - sage: s = t1 - t ; s Tensor field t-t of type (1,1) on the 2-dimensional differentiable manifold M sage: s.display() t-t = 0 - >>> from sage.all import * >>> s = t1 - t ; s Tensor field t-t of type (1,1) on the 2-dimensional differentiable manifold M >>> s.display() t-t = 0 - Element[source]¶
- alias of - AutomorphismFieldParal