xTras changelog
===============
v1.4.2, 2014-10-30
------------------
* Added RicciToRiemann.
* Added KretschmannToRiemann.
* ToRiemann also converts rank-2 curature tensors if the curvature relations are not enabled.
* ToRicci also converts contractions of Riemann tensors to Ricci tensors even if the curvature relations are not enabled.
v1.4.1, 2014-10-07
------------------
* IndexConfigurations gives correct results for expressions with more than one tangent bundle.
* EulerDensity is faster, and takes the option Verbose.
* xTras now needs xTensor 1.1.1.
v1.4.0, 2014-08-22
------------------
* AllContractions automatically parallelizes on Mathematica 8 or newer.
* AllContractions has an improved algorithm.
* AllContractions directly calls the external xPerm executable, which makes it about 5x faster.
* ConstantSymbolsOf now takes multiple arguments.
* RiemannSimplification's error-message is more human-readable.
v1.3.3, 2014-03-31
------------------
* xTras now requires xTensor 1.1.0.
* Products of symmetrized derivatives that commutate are now fully canonicalized.
* Improved speed of perturbations of symmetrized derivatives.
* Fixed two PrintAs related issues.
* FromIndexFree is now compatible with $AutoSymmetrizeCovDs = True.
* CollectTensors is more verbose while simplifying coefficients.
v1.3.2, 2014-03-03
---------------------
* Symmetrized derivatives use the chain rule on scalar functions.
* Improved speed of SymmetrizeCovDs in some situations.
* SymmetrizeCovDs strips all dummy indices before caching.
* VarD on symmetrized derivatives w.r.t. to another derivative works.
* Symmetrized covariant derivatives pass Validate.
* CollectTensors is faster on expressions that are (partially) collected.
* TensorWrapper is much faster on large products (was exponential in the number of terms, is now linear).
* Fixed warning message in SolveTensors.
v1.3.1, 2014-02-22
------------------
* Added the function ConstantSymbolsOf.
* Added possibility (controlled by the variable $AutoSymmetrizeCovDs)
to automatically symmetrize covariant derivatives.
* Added caching to SymmetrizeCovDs, controlled by the "UseCache" option.
* Improved algorithm for symmetrizing covariant derivatives in the case
when there is no torsion and the derivative is metric-compatible.
* Perturbation no longer expands symmetrized covariant derivatives.
v1.3.0, 2014-02-10
------------------
Big changes:
* Added functions for symmetrizing covariant derivatives (SymmetrizeCovDs and ExpandSymCovDs).
* Added the symmetrized Riemann tensor.
Other changes:
* Added the function ToRiemann.
* RiemannYoungProject only projects if the Riemann tensor has its full symmetries; otherwise it does nothing.
* RiemannYoungProject also projects Weyl and symmetrized Riemann tensors.
* TableauSymmetric now inherits the value of its option ManifestSymmetry from YoungSymmetrize.
v1.2.3, 2013-11-22
------------------
* Added GradChristoffelToRiemann.
v1.2.2, 2013-09-14
------------------
Again a small bugfix release:
* RemoveConstants, RemoveTensors, and TermsOf now also work on non-expanded sums.
v1.2.1, 2013-08-16
------------------
This is a small bugfix release. The changes are:
* Defining a metric with PD as its Levi-Civita derivative is no longer broken.
* Extra curvature tensors Schouten, SchoutenCC, and EinsteinCC tensors are defined only when there
is curvature. Furthermore, they become non-symmetric when there is torsion, and are properly
extended, projected, and orthogonalized when needed.
* Added torsion to the RHS of the contracted Bianchi identities returned by CurvatureRelationsBianchi.
v1.2.0, 2013-08-12
------------------
Big changes:
* Added built-in documentation.
* Added the xTrasHelp command, which opens the xTras documentation.
* Added fancy usage messages.
* All public symbols are back in the same context ("xAct`xTras`").
Other changes:
* Added DefNiceConstantSymbol.
* Added TableauDimension.
* Added the AllContractions:nocontr message, which is generated when AllContractions
returns nothing (for various reasons).
* AllContractions also takes Lists as second arguments.
* AllContractions can also handle expression with odd number of indices.
* AllContractions gives less duplicate results.
* AllContractions returns an empty list instead of throwing an exception for cases
where there are no contractions.
* Changed Implode/ExplodeIndices to To/FromIndexFree.
* Changed UncontractedPairs to UncontracedIndices.
* Fixed bug in SolveTensors.
* It is now possible to change dimensions between ConstructDDIs calls.
* Removed DoTensorCollect.
* Removed ExpandPerturbationDer.
* Removed FS.
* Removed MakeEquationRule.
* Removed MetricPermutations.
* Removed OrderCoefficient.
* Removed PerturbationOfMetric.
* Removed PerturbationParameter.
* Removed PerturbationParameterOfMetric.
* Removed TensorCollect.
* Removed TensorCollector.
* Removed UnorderedPairsPermutations.
* Reset $CovDFormat and CurvatureRelations at load time.
* RiemannYoungProject and RiemannYoungRule take the option ManifestSymmetry.
* RiemannYoungRule and RiemannYoungProject no longer take a levelspec argument,
but always project the Riemann and its first derivative onto their Young tableaux.
* TableauSymmetric is MMA 6 compatible.
* TermsOf now removes constants.
* The default value of Description is None.
* TimeString[60] returns "1 minute" instead of "60 seconds".
* YoungProject is faster.
* YoungTableauQ is a bit more precise.
v1.1.3, 2013-05-29
------------------
Changes:
* Added MakeTraceless.
* Added ConstructDDIs.
* Added YoungSymmetric.
* Added ToLevelSpec.
* Added ExplodeIndices and ImplodeIndices.
* Added MakeContractionAnsatz.
* Removed ContractedPairs.
* Don't define the auxiliary tensor in AllContractions if it already exists.
* AllContractions returns fewer duplicate contractions.
* SolveTensors solves by default for monomials.
* CollectTensors works better with Scalar objects.
* Made CollectTensors a bit more verbose.
* Fixed a bug in CollectTensors (where canonicalization of tensors would prevent collecting).
* The default perturbation parameter of the metric is no longer called "\[Epsilon]metric",
but "PerturbationParametermetric".
v1.1.2, 2013-03-06
------------------
What's new:
* Added option ManifestSymmetry to YoungSymmetrize that controls the convention of symmetrizing
(i.e. first symmetric, then antisymmetric, or the other way around).
* Fixed a small bug in CollectTensors.
* Allow Young tableaux to be subsets of free indicesof expressions / tensors.
* Changed SolveTensors to allow for patterns in list of tensors to solve for.
* Fixed trying to set Bianchi identities for flat metrics.
* Fixed build file.
* Fixed: SolveConstants doesn't try to solve for numeric symbols (such as Pi).
* Replaced some Modules with Withs.
* InvarWrapper nicely aborts if the Invar database is not found.
v1.1.1, 2013-01-26
------------------
What's new:
* xTras now requires MMA 6.
* Broken xTras into multiple packages.
* Added Kretschmann scalar to SymmetricSpaceRules.
* Added ToRicci.
* Added RiemannYoungProject.
* Added option Parallelization to MapTimed. If True, MapTimed uses ParallelMap.
* Added MapTensors / MapTimedTensors.
* Added CollectConstants.
* Renamed TensorCollector to TensorWrapper.
* Renamed TensorCollect to CollectTensors.
* Renamed PreferBox/DivOf to SortCovDsToBox/Div.
* Renamed RiemannDivRule / RicciDivRule to CurvatureRelationsBianchi.
* Renamed the function KillingVectorOf to MetricOfKillingVector;
the option KillingVectorOf is still named the same.
* Removed PreferBox/DivOfRule.
* Removed option MonitorSteps from MapTimed.
* Changed DerivativeOrder slightly (added thread over Plus and support for Kretschmann scalar).
* Changed IndexConfigurations to return a sorted list.
* Changed EulerDensity to return object with Scalar heads.
* Changed Invar functions to block printing of reading of Invar database.
* Changed default printing of metric perturbations to PrintAs[Perturbation] <> PrintAs[metric].
* Fixed a bug in MapTensors. It now passes options to its internal function.
* Fixed a bug in SolveTensors. (Forgot to add a levelspec to Position.
Don't know why it previously worked on MMA < 9.)
* SolveTensors only sorts the tensors it solves for when the user doesn't specify them
(with SolveTensors[expr==0] ).
* SolveTensors sorts the tensors to solve for by first removing TensorWrappers.
* RemoveConstants now also removes constants from expressions without tensors (resulting in 1).
* CollectTensors no longer threads over lists (as it is no longer necessary).
* AllContractions sorts answer and deletes duplicates and zero.
* Introduced UnitConstant to TensorWrapper.
* VarL performs variations w.r.t. metric determinant separately.
* MapTimed no longer has the DoTensorCollect option.
* FullSimplification doesn't call TensorCollect in the end, but ToCanonical.
* DefMetric no longer has the DefVariation option, but instead a DefMetricPerturbation option.
* DefMetricPerturbation automatically defines a metric variation (DefMetricVariation is now private).
v1.0.6, 2012-12-23
------------------
What's new:
* Added SolveTensors, which can solve (a system of) linear tensor equations,
and deprecates MakeEquationRule.
* Added IndexConfigurations.
* Added PreferDifOf and PreferBoxOf functions.
* Added MapTimedIfPlus.
* Added options (Un)contractedPairs to AllContractions.
* Added options RemoveTensorCollector and Verbose to TensorCollect.
* TensorCollect prints a message if things might not have been fully collected.
* TensorCollector threads over Equal.
* TensorCollector prints like Scalar: with colored parentheses around the wrapped expression.
* New and faster algorithm for AllContractions, that contracts indices stepwise.
* Delete duplicate equations from ToConstantSymbolEquations.
* Another (sigh) and faster rewrite of TensorCollect.
* Speed improvements in SolveConstants.
* MapTimed prints info a bit nicer.
* Don't restrict ToConstantSymbolEquations to work only on things that don't contain lists
(this prevented it to work on basis expressions).
v1.0.5, 2012-11-09
------------------
What's new:
* Made TensorCollect listable.
* ToConstantSymbolEquations handles more cases (lists, a==b==c).
* SolveConstants now takes a ! argument, which specify which variables we shouldn't solve for.
* Changed AllContractions, both the algorithm and the interface.
v1.0.4, 2012-10-25
------------------
What's new:
* Added two xCoba extensions, ComputeBasisValues and ImplodedTensorValues.
* Added Perturbation(Parameter)OfMetric.
* Added SolveConstants, which is much more similar to Solve than TensorCollectSolve was.
* Removed TensorCollectSolve.
* Renamed MyRiemannSimplify to RiemannSimplification.
* Changed MakeEquationRule such that it only works for equations (LHS == RHS).
* $RicciSign is now taken into account in various functions.
* Fixed a minor bug ( #&/ instead of #&/@ ) in PreferDivOfRule.
* Remove zeros from AllContractions.
* Don't show Def messages for temporary constants.
* Updated some usage messages.
v1.0.3, 2012-10-10
------------------
What's new:
* Added SortedCovDsQ
* Added AllContractions.
* Added MetricPermutations.
* MapTimed now works for generic levelspecs.
* Gave RiemannYoungRule a levelspec.
* Different implementation of Killing vectors. No longer need to issue the 'Killing' command.
* Killing vector are now defined w.r.t. to metrics, not CovDs.
* Allow for label indices in Killing vectors.
* Added version check for xTensor.
* xTras initialization messages are more like xAct.
* Automatically define metric variations by default when defining a metric.
* Removed the FD symbols and functionality.
* Renamed FS to FullSimplification.
* MyRiemannSimplify now only acts on Riccis and Riemanns, fixing a bug that appeared when it acted
on other curvature tensors.
* MyRiemannSimplify checks more carefully for wrong values of $InvSimplifyLevel
* Fixed bug in MakeEquationRule that caused the LHS to still be partly present in the RHS.
* ExpandPerturbation now knows how to deal with extra curvature tensors.
* Removed ExpandPerturbationDer from VarDt function, hopefully fixing a bug that was probably
caused by using SeparateMetric[] twice.
* Fixed a bug in YoungTableauQ that prevented symmetric Young tableaux from evaluating to True.
v1.0.2, 2012-08-19
------------------
What's new:
* Implemented Killing vectors. Killing vectors can be define w.r.t. a covariant derivative while
define the vector itself, e.g. DefTensor[V[-a],M,KillingVectorOf->CD].
* Fixed a bug in ConstantExprQ.
v1.0.1, 2012-05-06
------------------
What's new:
* Added xTension hook. The package automatically defines Schouten tensors etc. when calling DefMetric.
* Fixed a bug in InvarWrapper (so MyRiemannSimplify should work in more cases).
* Renamed TimedMap to MapTimed.
v1.0.0, 2012-03-25
------------------
First version.