Hi Ondrej,
> I'll play with it and reply later here. Have you considered creating a
> cadabra package for Sage? They may even include it by default.
I'm not sure that that is easy to do; in any case, no, I haven't done
that yet.
> In SymPy we will also be optionally using a Cythonized core, but if
> possible, we'd like to stick to Python whenever possible. What is your
> plan with Cadabra -- do you want to use it from Python?
No, for me the interest is more in the other direction: I have a nice
tensor algebra system with cadabra, but I need to link it to a
'scalar' CAS like sympy to do the rest of the algebra. (For example, I
can manipulate Einstein equations and the like in abstract form, but I
would like to be able to substitute values for the metric tensor
components and compute with those.)
But there is no reason why it couldn't beneficial in both directions.
> I'll look into the sources of it to get a better idea.
There are a couple of things which make cadabra different from other
systems:
- The input format. This is very carefully tuned to allow TeX-like
input of tensorial expressions, and would need some translation
if we want to connect this to sympy.
- Algorithms actions are based on properties of symbols or objects.
For instance, you can define a tensor to implicitly depend on a
coordinate, and have derivative operators take that into account.
- Centralised handling of indices and dummy indices. For instance,
the system knows that
\partial_{a}{ B_{c d} }
is actually a tensor with three open indices, provided you
declare \partial to have the 'IndexInherit' property.
- Tensor polynomial canonicalisation (to reduce tensor polynomials
to a canonical form when the tensors have symmetry properties,
e.g. are symmetric or anti-symmetric in their indices, or
something more complicated). Deals with arbitrary Young tableau
symmetries.
Some of these aspects are implemented in a way which is strongly tied
to the C++ language, but they could certainly be re-implemented in
Python if necessary. And if we can agree on a way to convert sympy
input to cadabra input and vice versa, we might even just keep the
cadabra core as-is.
Cheers,
Kasper
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sympy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---