#10134: Provide the enumeration of word morphisms from a range of integers
-------------------------------+--------------------------------------------
   Reporter:  slabbe           |       Owner:  slabbe    
       Type:  enhancement      |      Status:  needs_work
   Priority:  major            |   Milestone:  sage-4.6.1
  Component:  combinatorics    |    Keywords:            
     Author:  Sébastien Labbé  |    Upstream:  N/A       
   Reviewer:                   |      Merged:            
Work_issues:                   |  
-------------------------------+--------------------------------------------
Changes (by abmasse):

  * status:  needs_review => needs_work


Comment:

 Hi Sébastien!

 I took a look at your patch. It should be easy to review but I still have
 some comments:

   1. I dislike the parameter name `l` for two reasons. First, it might be
 confused with the digit `1`. Second, because it is not significant. I
 suggest you use the name `lengths` or `order_iterating`, well, anything
 else more significant.
   1. The possible values for `l` are quite confusing. List means
 something, tuple, something else... I don't know if there's a more
 understandable interface that could be offered. Maybe there could be a
 parameter `lengths_interval` or `fixed_lengths`, etc. that could
 distinguish the different cases.
   1. The sentence "The length of the list must be the number of letters in
 the alphabet, and the `i`-th integer of `l` determines the length of the
 word mapped to by the `i`-th letter of the (ordered) alphabet" is not very
 clear. Maybe it would be better to describe it with mathematical
 expressions (although it's harder to read in terminal mode). I would
 suggest something simpler such as : "If `l` is a list, then it describes
 the length of the images for each letter of the morphism."

 I know my ideas aren't very clear, but maybe it could still inspire you
 into improving the docstring. I'll wait for your answer to resume the
 review. Note also that I get some doctest failures:

 {{{

 **********************************************************************
 File
 
"/Users/alexandre/Applications/sage/devel/sage-t10134/sage/combinat/words/words.py",
 line 1138:
     sage: for m in W.iter_morphisms((0, 3), min_length=0): print m
 Expected:
     WordMorphism: a->, b->
     WordMorphism: a->a, b->
     WordMorphism: a->b, b->
     WordMorphism: a->, b->a
     WordMorphism: a->, b->b
     WordMorphism: a->aa, b->
     WordMorphism: a->ab, b->
     WordMorphism: a->ba, b->
     WordMorphism: a->bb, b->
     WordMorphism: a->a, b->a
     WordMorphism: a->a, b->b
     WordMorphism: a->b, b->a
     WordMorphism: a->b, b->b
     WordMorphism: a->, b->aa
     WordMorphism: a->, b->ab
     WordMorphism: a->, b->ba
     WordMorphism: a->, b->bb
 Got:
     WordMorphism: a->, b->aaa
     WordMorphism: a->, b->aab
     WordMorphism: a->, b->aba
     WordMorphism: a->, b->abb
     WordMorphism: a->, b->baa
     WordMorphism: a->, b->bab
     WordMorphism: a->, b->bba
     WordMorphism: a->, b->bbb
 **********************************************************************
 File
 
"/Users/alexandre/Applications/sage/devel/sage-t10134/sage/combinat/words/words.py",
 line 1159:
     sage: for m in W.iter_morphisms( (2, 4) ): print m
 Expected:
     WordMorphism: a->a, b->a
     WordMorphism: a->a, b->b
     WordMorphism: a->b, b->a
     WordMorphism: a->b, b->b
     WordMorphism: a->aa, b->a
     WordMorphism: a->aa, b->b
     WordMorphism: a->ab, b->a
     WordMorphism: a->ab, b->b
     WordMorphism: a->ba, b->a
     WordMorphism: a->ba, b->b
     WordMorphism: a->bb, b->a
     WordMorphism: a->bb, b->b
     WordMorphism: a->a, b->aa
     WordMorphism: a->a, b->ab
     WordMorphism: a->a, b->ba
     WordMorphism: a->a, b->bb
     WordMorphism: a->b, b->aa
     WordMorphism: a->b, b->ab
     WordMorphism: a->b, b->ba
     WordMorphism: a->b, b->bb
 Got:
     WordMorphism: a->aa, b->aaaa
     WordMorphism: a->aa, b->aaab
     WordMorphism: a->aa, b->aaba
     WordMorphism: a->aa, b->aabb
     WordMorphism: a->aa, b->abaa
     WordMorphism: a->aa, b->abab
     WordMorphism: a->aa, b->abba
     WordMorphism: a->aa, b->abbb
     WordMorphism: a->aa, b->baaa
     WordMorphism: a->aa, b->baab
     WordMorphism: a->aa, b->baba
     WordMorphism: a->aa, b->babb
     WordMorphism: a->aa, b->bbaa
     WordMorphism: a->aa, b->bbab
     WordMorphism: a->aa, b->bbba
     WordMorphism: a->aa, b->bbbb
     WordMorphism: a->ab, b->aaaa
     WordMorphism: a->ab, b->aaab
     WordMorphism: a->ab, b->aaba
     WordMorphism: a->ab, b->aabb
     WordMorphism: a->ab, b->abaa
     WordMorphism: a->ab, b->abab
     WordMorphism: a->ab, b->abba
     WordMorphism: a->ab, b->abbb
     WordMorphism: a->ab, b->baaa
     WordMorphism: a->ab, b->baab
     WordMorphism: a->ab, b->baba
     WordMorphism: a->ab, b->babb
     WordMorphism: a->ab, b->bbaa
     WordMorphism: a->ab, b->bbab
     WordMorphism: a->ab, b->bbba
     WordMorphism: a->ab, b->bbbb
     WordMorphism: a->ba, b->aaaa
     WordMorphism: a->ba, b->aaab
     WordMorphism: a->ba, b->aaba
     WordMorphism: a->ba, b->aabb
     WordMorphism: a->ba, b->abaa
     WordMorphism: a->ba, b->abab
     WordMorphism: a->ba, b->abba
     WordMorphism: a->ba, b->abbb
     WordMorphism: a->ba, b->baaa
     WordMorphism: a->ba, b->baab
     WordMorphism: a->ba, b->baba
     WordMorphism: a->ba, b->babb
     WordMorphism: a->ba, b->bbaa
     WordMorphism: a->ba, b->bbab
     WordMorphism: a->ba, b->bbba
     WordMorphism: a->ba, b->bbbb
     WordMorphism: a->bb, b->aaaa
     WordMorphism: a->bb, b->aaab
     WordMorphism: a->bb, b->aaba
     WordMorphism: a->bb, b->aabb
     WordMorphism: a->bb, b->abaa
     WordMorphism: a->bb, b->abab
     WordMorphism: a->bb, b->abba
     WordMorphism: a->bb, b->abbb
     WordMorphism: a->bb, b->baaa
     WordMorphism: a->bb, b->baab
     WordMorphism: a->bb, b->baba
     WordMorphism: a->bb, b->babb
     WordMorphism: a->bb, b->bbaa
     WordMorphism: a->bb, b->bbab
     WordMorphism: a->bb, b->bbba
     WordMorphism: a->bb, b->bbbb
 **********************************************************************
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10134#comment:2>
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 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/sage-trac?hl=en.

Reply via email to