#14402: Implement tensor product of infinite crystals
-----------------------------------------------------+----------------------
       Reporter:  tscrim                             |         Owner:  
sage-combinat
           Type:  enhancement                        |        Status:  
needs_review 
       Priority:  major                              |     Milestone:  
sage-5.10    
      Component:  combinatorics                      |    Resolution:           
    
       Keywords:  infinite crystals, tensor product  |   Work issues:           
    
Report Upstream:  N/A                                |     Reviewers:           
    
        Authors:  Ben Salisbury, Travis Scrimshaw    |     Merged in:           
    
   Dependencies:  #14454                             |      Stopgaps:           
    
-----------------------------------------------------+----------------------

Comment (by aschilling):

 Hi Ben and Travis,

 Thanks for your work on this! Here are some initial comments:

 - The patch needs proper header (needs to be exported).

 - Please specify in the documentation of
 TensorProductOfCrystalsOptions=GlobalOptions what the various options are
 and what they mean. Currently this is not explained.

 - Please remove the period at the end of line 379 of tensor_product.py

 - It might be easier to explain the tensor product rule using the
 signature rule (in addition to the formulas that you use). That is more
 conceptual and usually easier to follow. Also, you introduce the notation
 a_i(k), but then you do not actually use it in the formulas for
 \varepsilon and \varphi. Why not?

 - You just mention "Examples with non-regular and infinite crystals::".
 Perhaps say a few more words what is special about them. Also, please
 mention the Kashiwara and antiKashiwara options in the documentation of
 TensorProductOfCrystals, so that the user can find this and is aware of
 the options!

 - The computation of epsilon and phi in your code does not seem very
 efficient
 {{{
         Ep = lambda k: sum(self[-j].epsilon(i) for j in range(1, k+1))
         Ph = lambda k: sum(self[-j].phi(i) for j in range(1, k))
         return max(Ep(k) - Ph(k) for k in range(1, len(self)+1))
 }}}
 You are computing the partial sums over and over. Why not something like
 {{{
        a = [ self[-1].epsilon(i) ]
        for j in range(1,k):
            a += [a[-1]+self[-j-1].epsilon(i) - self[-j].phi(i)]
        return max(a)
 }}}
 and similarly for phi. You could also optimize the computation of a_i(k)
 (which I guess is in _sig) and then use the formula of epsilon in terms of
 a_i(k).

 - Could you please explain why the previous implementation in
 CrystalOfWords did not do the same thing?

 So much for now.

 Anne

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14402#comment:3>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" 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/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to