From 8d753dcaf07b85d423661f0128bd6d1fff7b71ee Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 26 Sep 2022 19:59:04 -0700 Subject: [PATCH] src/sage/manifolds/differentiable/vectorfield_module.py (VectorFieldModule_abstract): New --- .../differentiable/diff_form_module.py | 8 ++----- .../differentiable/tensorfield_module.py | 8 ++----- .../differentiable/vectorfield_module.py | 23 ++++++++++++++----- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/sage/manifolds/differentiable/diff_form_module.py b/src/sage/manifolds/differentiable/diff_form_module.py index 4b9a7cae78c..5a337b6c72c 100644 --- a/src/sage/manifolds/differentiable/diff_form_module.py +++ b/src/sage/manifolds/differentiable/diff_form_module.py @@ -47,10 +47,10 @@ from sage.manifolds.differentiable.diff_form import DiffForm, DiffFormParal from sage.manifolds.differentiable.tensorfield import TensorField from sage.manifolds.differentiable.tensorfield_paral import TensorFieldParal -from sage.manifolds.differentiable.vectorfield_module import VectorFieldModule +from sage.manifolds.differentiable.vectorfield_module import VectorFieldModule_abstract -class DiffFormModule(UniqueRepresentation, Parent): +class DiffFormModule(VectorFieldModule_abstract): r""" Module of differential forms of a given degree `p` (`p`-forms) along a differentiable manifold `U` with values on a differentiable manifold `M`. @@ -558,10 +558,6 @@ def tensor_type(self): return (0, 1) raise NotImplementedError - tensor_power = VectorFieldModule.tensor_power - - tensor = tensor_product = VectorFieldModule.tensor_product - def degree(self): r""" Return the degree of the differential forms in ``self``. diff --git a/src/sage/manifolds/differentiable/tensorfield_module.py b/src/sage/manifolds/differentiable/tensorfield_module.py index d845ae03766..0479792a82e 100644 --- a/src/sage/manifolds/differentiable/tensorfield_module.py +++ b/src/sage/manifolds/differentiable/tensorfield_module.py @@ -50,10 +50,10 @@ MultivectorFieldParal) from sage.manifolds.differentiable.automorphismfield import (AutomorphismField, AutomorphismFieldParal) -from sage.manifolds.differentiable.vectorfield_module import VectorFieldModule +from sage.manifolds.differentiable.vectorfield_module import VectorFieldModule_abstract -class TensorFieldModule(UniqueRepresentation, Parent): +class TensorFieldModule(VectorFieldModule_abstract): r""" Module of tensor fields of a given type `(k,l)` along a differentiable manifold `U` with values on a differentiable manifold `M`, via a @@ -563,10 +563,6 @@ def tensor_type(self): """ return self._tensor_type - tensor_power = VectorFieldModule.tensor_power - - tensor = tensor_product = VectorFieldModule.tensor_product - @cached_method def zero(self): """ diff --git a/src/sage/manifolds/differentiable/vectorfield_module.py b/src/sage/manifolds/differentiable/vectorfield_module.py index 8c023117eab..1d850014fab 100644 --- a/src/sage/manifolds/differentiable/vectorfield_module.py +++ b/src/sage/manifolds/differentiable/vectorfield_module.py @@ -53,14 +53,29 @@ from sage.rings.integer import Integer from sage.structure.parent import Parent from sage.structure.unique_representation import UniqueRepresentation -from sage.tensor.modules.finite_rank_free_module import FiniteRankFreeModule +from sage.tensor.modules.finite_rank_free_module import ( + FiniteRankFreeModule_abstract, + FiniteRankFreeModule, +) if TYPE_CHECKING: from sage.manifolds.differentiable.diff_map import DiffMap from sage.manifolds.differentiable.manifold import DifferentiableManifold -class VectorFieldModule(UniqueRepresentation, Parent): +class VectorFieldModule_abstract(UniqueRepresentation, Parent): + r""" + Abstract base class for modules of vector fields. + """ + + tensor_power = FiniteRankFreeModule_abstract.tensor_power + + tensor_product = FiniteRankFreeModule_abstract.tensor_product + + tensor = FiniteRankFreeModule_abstract.tensor + + +class VectorFieldModule(VectorFieldModule_abstract): r""" Module of vector fields along a differentiable manifold `U` with values on a differentiable manifold `M`, via a differentiable @@ -848,10 +863,6 @@ def _tensor(self, tensor_type, name=None, latex_name=None, sym=None, self, tensor_type, name=name, latex_name=latex_name, sym=sym, antisym=antisym) - tensor_power = FiniteRankFreeModule.tensor_power - - tensor_product = FiniteRankFreeModule.tensor_product - def tensor(self, *args, **kwds): r""" Construct a tensor field on the domain of ``self`` or a tensor product of ``self`` with other modules.