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 sympy@googlegroups.com
To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to