#15439: sage/combinat/matrices/latin.py: isotopism method uses product of
permutations
-------------------------------------------------+-------------------------
       Reporter:  darij                          |        Owner:
           Type:  defect                         |       Status:  new
       Priority:  major                          |    Milestone:  sage-5.13
      Component:  combinatorics                  |   Resolution:
       Keywords:  permutation, combinat, latin   |    Merged in:
  square                                         |    Reviewers:
        Authors:                                 |  Work issues:
Report Upstream:  N/A                            |       Commit:
         Branch:                                 |     Stopgaps:
   Dependencies:                                 |
-------------------------------------------------+-------------------------
Changes (by ncohen):

 * cc: nthiery, fhivert (added)


Comment:

 Hellooooooooooooooo !!!!

 1) I did not know what an isotopism was either, and it looks like we could
 add a link toward the following Wikipedia page if we patch this file :
 http://en.wikipedia.org/wiki/Latin_square#Equivalence_classes_of_Latin_squares

 2) "Morally", this '*' can be any of the two actions, as it should only
 apply to permutations with disjoint supports : this part of the function
 builds a permutation from a 'cycles notation', i.e. {{{'(1,2,3)(4,5)'}}}.
 It builds a permutation for each cycle and multiplies the results, so both
 actions should be fine.

 3) Morally, this part of the code is made for disjoint cycles notations,
 but nothing actually checks that. And given a permutation in cycle
 notation (as a string) {{{'(1,2,3)(4,5)'}}}, don't you have the very same
 problem knowing in which order they should be applied ? Or is that clear
 for everybody ? I honestly ask the question, I personally always used
 permutations like function composition, and all that happens with this
 left/right action is beyond me `:-P`

 4) This code has *NOTHING* to do there. Its only purpose is to accept any
 kind of permutation input on 0..n-1 and to output a permutation on 1..n.
 It's like this code should appear in the constructor of `Permutations`,
 with a flag `translate_from_0n_to_1n=True`

 5) Having something like `Permutations.global_options` which redefines the
 meaning of {{{'*'}}} is ***__criminal__***.

   a) How the hell can such a thing be implemented when there is a ticket
 like this one, which PROVES that some parts of Sage's code use the '*' on
 multiplications, and that those functions could return WRONG RESULTS when
 this flag is changed ?

   b) And how can such a thing can be implemented WITHOUT MAKING SURE that
 no '*' can appear again on permutation code in Sage ?

 Nathann

--
Ticket URL: <http://trac.sagemath.org/ticket/15439#comment:1>
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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to