Changelog
Version 1.0.1 (25 March 2017)
This version is released as part of SageMath 7.6. There are only minor changes with respect to v1.0:
Improvements:
 The computation of Lie derivatives has been parallelized (cf. ticket #22200)
Bug fixes:
 List functionality of free module bases (cf. ticket #22518)
 Display of tensors on free modules of finite rank (cf. ticket #22520)
 Checking validity of coordinate values on a chart (cf. ticket #22535)
 Symbolic derivatives in simplification of coordinate functions (cf. ticket #22503)
Version 1.0 (11 January 2017)
Besides the full integration in SageMath 7.5, there are only minor changes with respect to v0.9.1:
Syntactic changes:
 Method
plot
of classesRealChart
andVectorField
: keyword argumentnb_values
renamednumber_values
 Method
structure_coef
of classVectorFrame
renamedstructure_coeff
 Class
OpenInterval
: argumentsubinterval_of
renamedambient
in the constructor  Class
RealLine
: LateX name changed from\RR
to\Bold{R}
Internal changes:
 Systematic use of
Python3compatible syntax (to prepare the
migration of
SageMath to Python3); in particular:
 All occurences of
iteritems()
changed toitems()
 All occurences of
itervalues()
changed tovalues()
 Classes
ScalarField
andTensorField
: method__nonzero__
renamed__bool__
 Class
TensorField
: method__div__
renamed__truediv__
 All occurences of
 Classes
TensorFieldModule
,VectorFieldModule
andDiffFormModule
: add cached methodzero
 Classes
DiffForm
andDiffFormParal
: methodexterior_derivative
is cached (via the decorator@cached_method
)  Class
VectorFrame
: methodstructure_coeff
is cached (via the decorator@cached_method
)
Other changes:
 Improvements in the documentation; in particular 3D graphics have been added to the
reference manual for illustrating the use of some
plot
methods  Values set by the user to some keyword arguments of
plot
methods become the new default values until further explicit change (this behavior is provided by the decorator@options
):TangentVector.plot
: argumentscale
VectorField.plot
: argumentsmax_range
,scale
andcolor
DifferentiableCurve.plot
: argumentsthickness
,plot_points
,max_range
andaspect_ratio
Version 0.9.1 (19 September 2016)
This release propagates further code changes related to the integration of SageManifolds into SageMath (cf. the metaticket #18528); it also adds a few new functionalities.
New functionalities:
 Computation of the Schouten tensor, the Cotton conformal tensor and the CottonYork conformal tensor associated to a given pseudoRiemannian metric
 Add structure of Lie algebroid to modules of vector fields (classes
VectorFieldModule
andVectorFieldFreeModule
): new methodVectorField.bracket
 Parallelization of vector field plots
 Parallelization of arithmetics of fully antisymmetric tensor components
 Improved rendering of variables in partial derivatives, using LaTeX display
of symbols (class
ExpressionNice
)  Add comparison operator for transition maps (class
CoordChange
)  Add list functionalities for bases (methods
__len__
and__iter__
in classesFreeModuleBasis
andFreeModuleCoBasis
)
Syntactic changes:
 Method
CoordChange.set_inverse
: replace the keywordcheck
byverbose
, the default being nowverbose=False
 Introduction of
Manifold.options
to control the display of mathematical expressions instead of the global functionsnice_derivatives
andomit_function_args
, which have been suppressed  Function
set_axes_labels
(to set labels on 3D plots) no longer imported at the startup time; if required, one has to typefrom sage.manifolds.utilities import set_axes_labels
 Function
xder
(exterior derivative) no longer imported at the startup time; if required, one has to typefrom sage.manifolds.utilities import xder
 Class
DiffForm
: methodexterior_der
renamedexterior_derivative
 Classes
DiffScalarField
,TensorField
andTensorFieldParal
: methodlie_der
renamedlie_derivative
, withlie_der
kept as an alias of the latter
More internal changes:
 Manifold structure now described via specific singleton classes:
TopologicalStructure
,RealTopologicalStructure
,DifferentialStructure
andRealDifferentialStructure
 Class
TopologicalManifoldSubset
renamedManifoldSubset
 Class
TopologicalManifoldPoint
renamedManifoldPoint
 Manifold subsets are no longer facade parents
 Class
ManifoldSubset
: new methodslift
andretract
 Introduction of the commutative algebra of all symbolic coordinate functions on a given chart: new class
CoordFunctionSymbRing
and classCoordFunction
now inheritates fromAlgebraElement
 Class
FiniteRankFreeModule
: category changed fromModules(ring)
toModules(ring).FiniteDimensional()
 Some changes to prepare the migration to Python 3 (e.g.
print
replaced byprint()
)
Version 0.9 (10 December 2015)
This is a major release, resulting from an important refactoring of the code, in view of a full integration of SageManifolds into SageMath (cf. the metaticket #18528 on the SageMath developer trac). The major changes are
 Topological properties have been separated from differential ones, by
implementing topological manifolds (new class
TopologicalManifold
) and making the class for differentiable manifolds (DifferentiableManifold
) inherit fromTopologicalManifold
.  The base field over which manifolds are defined is no longer assumed to be the real field: it can be any topological field (nondiscrete to define differentiability for diff. manifolds). This allows to define easily complex manifolds, by setting the field to C.
 The class
ManifoldOpenSubset
has been suppressed: open subsets of manifolds are now instances ofTopologicalManifold
orDifferentiableManifold
(since an open subset of a top/diff manifold is a top/diff manifold by itself)  Functions defined on a coordinate patch are no longer necessarily symbolic
functions of the coordinates: they now pertain to the generic class
CoordFunction
, symbolic functions being described by a subclass of it (CoordFunctionSymb
). This opens the way for "numerical" manifolds, like spacetimes generated by numerical relativity codes.  Better parallelization, governed by the new singleton class
Parallelism
and the global functionuse_multiproc
.
Some syntactic changes:
 differentiable manifolds: renaming of some methods:
aff_connection()
>affine_connection()
diff_mapping()
>diff_map()
frame_change()
>change_of_frame()
frame_changes()
>changes_of_frame()
lorentz_metric()
>lorentzian_metric()
riemann_metric()
>riemannian_metric()
set_frame_change()
>set_change_of_frame()
 charts: method
coord_change()
removed, onlytransition_map()
remains  manifolds maps: method
multi_function_chart()
renamed tocoord_functions()
 curves in manifolds: method
coord_functions()
renamed tocoord_expr()
 differential forms: method
hodge_star()
renamed tohodge_dual()
 in all methods
plot()
: optional argumentmax_value
renamed tomax_range
Version 0.8 (16 May 2015)
Changes for the end user:
 Plot of vector fields: new method
VectorField.plot()
 Possibility of parallelizing heavy computations: parallelization is implemented for basic tensor calculus (arithmetics, contractions) and for calculus regarding affine connections (connection coefficients, action on a tensor field, Riemann curvature tensor)
 Nice display of partial derivatives
 Standard math functions exp, cos, sin, etc. on scalar fields
 Display of tensor components as a list, one per line: new methods
TensorField.display_comp()
andFreeModuleTensor.display_comp()
 Nice display of connection coefficients: new method
AffConnection.display()
 Nice display of Christoffel symbols: new method
Metric.christoffel_symbols_display()
 Nice display of chart transition maps: new method
CoordChange.display()
Internal changes:
 Better handling of uniqueness of tangent spaces
 Suppression of the class
ZeroScalarField
, for a better integration in Sage'sParent/Element
framework
Version 0.7 (12 March 2015)
This is a major release, with numerous internal changes, leading to a better
integration in Sage Parent
/Element
framework.

New Python classes have been introduced:
FreeModuleHomset, FiniteRankFreeModuleMorphism, FreeModuleLinearGroup, ExtPowerFreeModule, ManifoldHomset, ManifoldCurveSet, ManifoldCurve, OpenInterval, AutomorphismFieldParalGroup, AutomorphismFieldGroup, DiffFormModule, DiffFormFreeModule
.  Other classes have been removed:
FreeModuleEndomorphism, FreeModuleIdentityMap, FreeModuleLinForm, IdentityMap, EndomorphismField, EndomorphismFieldParal, TangentIdentityField, TangentIdentityFieldParal, OneForm
.
For the end user, new features are
 the introduction of curves in manifolds (with some plotting capabilities)
 improvements in differential mappings between manifolds, including mapping composition and mapping differential
 the introduction of homomorphisms between free modules
Some semantic changes have also been performed:
 Methods
view()
have been renameddisplay()
(withdisp()
as an abbreviation);view()
is still usable but generates a deprecation warning.  Method
open_domain()
has been renamedopen_subset()
.  Method
view_bases()
has been renamedprint_bases()
.  Class
Domain
has been renamedManifoldSubset
.  Class
OpenDomain
has been renamedManifoldOpenSubset
.  Class
Point
has been renamedManifoldPoint
.
Version 0.6 (28 September 2014)
 Graphical output for charts (method
Chart.plot()
) and points (methodPoint.plot()
); here are some examples.  Introduction of index notation to denote tensor contractions and
tensor symmetrizations (new class
TensorWithIndices
); see these links: [1], [2] and [3].  The argument of methods
symmetrize()
andantisymmetrize()
in tensor classes is now directly a sequence of index positions (and no longer a single list/tuple encapsulating such a sequence).  Method
self_contract()
of tensor classes renamedtrace()
.  The code for tensor contractions has been optimized; moreover multiple tensor contractions are now allowed.
 The documentation (reference manuals [4] and [5]) has been improved.
Version 0.5 (12 July 2014)
This is a major release, involving the introduction of algebraic structures
to describe tensor fields, namely modules over the algebra of scalar fields,
among which free modules of finite rank.
This is achieved via Sage Parent
/Element
scheme and
coercion model. A view of the corresponding Python class architecture is
here.
For the end user, new features are
 A rigorous treatment of nonparallelizable manifold
 Tangent spaces at a given manifold point and tensors on them, possibly as values of tensor fields at the point
 Tensor fields along an open subset of a manifold taking their values on another manifold (via some differential mapping between the two manifolds)
 Only the Python classes
Manifold
,RealLine
andFiniteRankFreeModule
are imported in the global name space of a Sage session. All constructions of objects not belonging to these classes are to be performed by method calls on other objects.
Version 0.4 (10 February 2014)
 class
Domain
:Parent
/Element
scheme used forDomain
/Point
, withDomain
in the category ofSets
 members
atlas
,frames
andcoframes
are now lists (and no longer dictionaries)
 class
Chart
: member
name
suppressed  new methods:
__hash__
and__eq__
 member
 class
ScalarField
: member
express
: now a dictionary with keys being the charts (and no longer their names)
 member
 class
DiffMapping
: member
coord_expression
: now a dictionary with keys being the charts (and no longer their names)
 member
 class
TensorField
: member
components
: now a dictionary with keys being the vector frames (and no longer their names)
 member
 class
VectorFrame
: method
__call__
changed to__getitem__
 new methods:
__hash__
and__eq__
 method
 class
CoFrame
: method
__call__
changed to__getitem__
 method
 class
CoordBasis
renamed toCoordFrame
 class
CompWithSym
: corrected treatment of preexisting symmetries in methods
symmetrize
andantisymmetrize
 corrected treatment of preexisting symmetries in methods
Version 0.3 (24 November 2013)
 Changes towards a better integration in Sage:
Parent
/Element
scheme used forManifold
/Point
 construction of objects via factory methods (no need to have the various class constructors in the global namespace)
 use of the preparser tool <x,y,...> to explicitely set the coordinates in the global namespace
 New classes
Domain
andOpenDomain
to deal with manifold subdomains: mappings and tensor fields can be now defined on subdomains only.  class
Manifold
: inherits from
OpenDomain
and Sage'sParent
 inherits from
 class
Point
: inherits from Sage's
Element
 inherits from Sage's
 class
Chart
: the coordinates are no longer set by default to global variables: the preparser tool <,> must be used for this
 added coordinate restrictions, subcharts and supercharts to deal with subdomains
 new methods
subchart()
,transition_map()
,valid_coordinates()
,__getitem__()
 method
__call__()
applies now to a point and returns the point's coordinates
 class
DiffMapping
: mappings between manifolds now defined on subdomains
 new method
add_expr()
in addition toset_expr()
 class
Submanifold
: complete reorganization (in particular subclass
MCurve
has been suppressed)  method
pushforward()
added
 complete reorganization (in particular subclass
 class
VectorFrame
: added subframes and superframes to deal with subdomains
 class
Components
: construction is now on the vector frame + number of indices
 class
ScalarField
: new methods
common_charts()
andadd_expr()
 method
gradient()
renamed todifferential()
 multidomain handling in the arithmetic
 new methods
 class
TensorField
: tensor fields are now defined on subdomains (instead of the whole manifold)
 new method
add_comp()
in addition toset_comp()
 method
show()
renamed toview()
 New example worksheets have been added (sphere S^{2}, de Sitter and antide Sitter spaces) and other worksheets have been updated (see the example worksheets)
 Development repository moved from svn to git
Version 0.2 (12 September 2013)
svn revision 395
 class
Chart
: the coordinate ranges are now passed in the arguments (as intervals) and are used to set assumptions on the coordinates
 class
MultiFunctionChart
: the various functions are now stored as instances of class
FunctionChart
(and no longer as symbolic expressions)  new method:
expr()
 modified method:
jacobian()
: returns an array ofFunctionChart
instances  modified method:
jacobian_det()
: returns a instance ofFunctionChart
 the various functions are now stored as instances of class
 class
Point
: added fields
name
andlatex_name
 suppressed method
change_coord()
: the changeofcoordinate computation is now taken in charge by methodcoord()
 added fields
 class
DiffMapping
: new methods:
multi_function_chart(), expr(), show(), pullback()
 method
new_coord_representation()
changed toset_express()
 new methods:
 class
Components
: new method:
mtrace()
 new method:
 class
TensorField
: new method:
mtrace()
 new method:
 Many doctests changed to comply with Sage 5.11 (new ordering in symbolic expressions resulting from some change in pynac, cf. ticket 9880 on Sage Trac)
Version 0.1 (7 July 2013)
svn revision 318
First public release.