Can you provide simple yet comprehensive examples of the sort of matching
and transformations that you'd like to support?
On Mar 22, 2014 12:55 PM, "F. B." <[email protected]> wrote:

>
>
> On Saturday, March 22, 2014 3:26:36 PM UTC+1, Matthew wrote:
>>
>> > @Matthew Rocklin: would you try to generalize your multiple dispatch
>> module to pattern dispatch?
>>
>> The multipledispatch package will only be about dispatch against types.
>>  This package is intended for general programming and so efficiently covers
>> the common case.
>>
>> However a long time ago though I was on a pattern matching and logic
>> programming kick.  There are old/derelict unify and strategies modules in
>> SymPy as a result. Most development was eventually transferred to the LogPy
>> project, an implementation of miniKanren.  Among other things it held a
>> basic unification/reification system, a dispatch system for those
>> functions, and a less basic though still inefficient
>> associative-commutative unification/reification system.
>>
>> In a SymPy branch I built up LogPy/SymPy integration and played with a
>> simplification system that defined itself based on (source-pattern,
>> target-pattern, boolean condition patterns) a la
>>
>> Abs(x) -> x if x is positive
>>
>> It worked fine but was slow in the case of associative-commutative
>> operators.  I'll throw up some links below.  I suggest that if we want to
>> continue this conversation we do it on a separate issue.
>>
>
> For what I mean, pattern dispatch can be very helpful for this issue. I
> mean, I added the algorithm to simplify gamma matrices, and my conclusion
> is that tensor manipulations should be performed by a pattern
> matching/pattern dispatching system. It would be a mess to implement every
> single tensor-manipulation rule by hand with for- or while-loops.
>
> Pattern matching efficiency is not important here, we just need an easy
> way to translate physics laws to SymPy. An API to perform pattern
> matching/pattern dispatch is what is really required here, even if it has
> non-optimized algorithms behind it, efficiency can be later improved.
> Tensors are complicated data structures, and modern physics has an enormous
> amount of possible operations on all of their parts (tensors themselves,
> their indices, their symmetry group).
>
> I once saw a post claiming that pattern matching would also be helpful to
> the quantum module, and in fact I guess that having to write many lines of
> code to implement simple physics transformation laws can be frustrating.
>
>
>> The trick behind efficient pattern matching in our case is to match an
>> input expression against all of the patterns at once.  The patterns should
>> be stored in a data structure like a Trie.  This is relatively
>> straightforward in the non-associative-commutative case but a mess in the
>> associative-commutative case.
>>
>>
> The symmetry structure of tensors and tensor indices is more complicated.
> But maybe can avoid using these specificities with the pattern matcher.
>
> I suggest that if Petrov gets accepted to the GSoC, we setup a pattern
> dispatcher to allow him to implement the tensor manipulation rules more
> easily during this summer. Please give me some feedback about this idea,
> I'm no expert in pattern matching algorithms and am unlikely to work on it
> if I'm alone.
>
>>  --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/d9cbd48e-5e81-415e-aa8e-1d7dcac1fc2a%40googlegroups.com<https://groups.google.com/d/msgid/sympy/d9cbd48e-5e81-415e-aa8e-1d7dcac1fc2a%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAJ8oX-Efe1LDhLziEaP8L9Af0hxFr-UW3ur%2BhKJ%2BD10Ca6GBYA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to