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 -~----------~----~----~----~------~----~------~--~---