Hi again, Note also that GAP handles permutations identically to SymPy, and the manual states unambiguously that "GAP multiplies permutations from left to right!":
https://college.cengage.com/mathematics/gallian/abstract_algebra/5e/shared/gap/gap_manual.pdf?URL=www.kau.edu.sa (p. 25). Again, this follows the conventional element interpretation, rather than the position interpretation. I understand the arguments in favor of the position interpretation, but I would encourage you to adopt the convention that, as far as I can tell, is in wider use. Thanks, Alex On Fri, Mar 12, 2021 at 1:34 PM Chris Smith <[email protected]> wrote: > ...but then I see in the notes "decomposing a cycle" where the author is > definitely referring to elements being switched. But it makes sense to me > to make the references refer to position so they can be applied regardless > of the identity of the elements (as in Aaron's example using a string). > This might be something to make clear at the outset of the Permutation > documentation. > > If you are more comfortable working with swaps in the order given you can > write a utility function something like this: > > ``` > def eswap(*p): > assert len(p)%2==0 > big = max(p) > rv = list(range(big+1)) > for i,j in zip(p[::2],p[1::2]): > k,l = [rv.index(w) for w in (i,j)] > rv[k], rv[l] = rv[l],rv[k] > return Permutation(rv) > > >>> eswap(1,3,1,2) > (132) > >>> eswap(1,2,1,3) > (123) > ``` > /c > > On Friday, March 12, 2021 at 3:17:34 PM UTC-6 Chris Smith wrote: > >> From page two of the notes I reconstruct the same output >> >> ` >> >>> (Permutation(1,5)(2,6,4)).list() >> [0, 5, 6, 3, 2, 1, 4] >> ` >> Could it be that the semantics (which are the same when you start with an >> ordered list and do only one cycle) are the confusing issue in that you >> thought it meant elements but it really refers to position? >> >> /c >> >> On Friday, March 12, 2021 at 12:15:35 PM UTC-6 [email protected] wrote: >> >>> Hi Chris, >>> >>> The convention that I'm familiar with is that the notation (both cycle >>> notation and the two-line notation) represents the exchange of >>> *elements*, not positions. See for example >>> >>> >>> http://www.math.caltech.edu/~2015-16/1term/ma006a/17.%20More%20permutations.pdf >>> >>> pp. 4--5. >>> >>> So my interpretation of t*s where t=(1,2) and s=(2,3) (multiplying from >>> R to L) would be: >>> >>> 1 -s-> 1 -t-> 2 >>> 2 -s-> 3 -t-> 3 >>> 3 -s-> 2 -t-> 1, >>> >>> hence (1,2,3) ("1 goes to 2, 2 goes to 3, 3 goes to 1"), or (in list >>> form) [0, 2, 3, 1]. >>> >>> Is transposition of elements from right to left (my interpretation) >>> equivalent to transposition of positions from left to right (your >>> interpretation)? I can't think of any counterexamples, but I'll chew on it. >>> >>> At the very least, I think that just specifying a multiplication >>> direction without specifying what's being permuted (elements or positions) >>> is ambiguous. >>> >>> Thanks again, >>> Alex >>> >>> On Fri, Mar 12, 2021 at 8:29 AM Chris Smith <[email protected]> wrote: >>> >>>> My thinking is expression in the transformations of the original list >>>> of items, [0,1,2,3]. If you first transpose the 2nd and third position you >>>> get [0,1,3,2] and then if you transpose 1st and 2nd position you get >>>> [0,3,1,2]. You'll see my name all over the docs for that module so if you >>>> can find the error in my thinking here, you are close to the source ;-) >>>> >>>> /c >>>> >>>> On Thursday, March 11, 2021 at 9:47:05 PM UTC-6 [email protected] wrote: >>>> >>>>> Hi Chris, >>>>> >>>>> Thanks for your response. When you write, >>>>> >>>>> > If you let `p = Permutation(1,2)(2,3)` then `p.list()` gives `[0, 3, >>>>> 1, 2]` which is consistent with R to L interpretation >>>>> >>>>> I think this is incorrect (and I contend that the docs are incorrect >>>>> on this point as well). >>>>> Multiplying the transpositions (1,2)(2,3) from R to L, we end up with >>>>> the cycle (1,2,3), >>>>> which in list form is [0, 2, 3, 1] (if `p.list()` is the second line >>>>> of 2-line permutation notation). >>>>> >>>>> What do you think? >>>>> >>>>> On Thu, Mar 11, 2021 at 7:33 PM Chris Smith <[email protected]> wrote: >>>>> >>>>>> So documentation here, "The composite of two permutations p*q means >>>>>> first apply p, then q" should read "...apply q, then p", right? This >>>>>> would >>>>>> be an easy issue to open and fix if there is consensus that it is wrong >>>>>> as >>>>>> written. But note that using the composition of function syntax reverses >>>>>> the order, "One can use also the notation p(i) = i^p, but then the >>>>>> composition rule is (p*q)(i) = q(p(i)), not p(q(i)):" >>>>>> >>>>>> /c >>>>>> >>>>>> On Thursday, March 11, 2021 at 8:37:25 PM UTC-6 Chris Smith wrote: >>>>>> >>>>>>> Given elements `0,1,2,3`, `Permutation(1,2)(2,3)` interpreting R to >>>>>>> L gives `0123->0132->0312`; interpreting L to R gives `0123->0213->0231` >>>>>>> >>>>>>> If you let `p = Permutation(1,2)(2,3)` then `p.list()` gives `[0, 3, >>>>>>> 1, 2]` which is consistent with R to L interpretation. So the assumption >>>>>>> that spelling it `Permutation(1,2)*Permutation(2,3)` means left to right >>>>>>> must be wrong? >>>>>>> >>>>>>> /c >>>>>>> >>>>>>> On Monday, February 22, 2021 at 3:51:02 PM UTC-6 [email protected] >>>>>>> wrote: >>>>>>> >>>>>>>> Hi everyone, >>>>>>>> >>>>>>>> I've been experimenting with the "Permutations" module, trying to >>>>>>>> follow the examples in the documentation here: >>>>>>>> >>>>>>>> >>>>>>>> https://docs.sympy.org/latest/modules/combinatorics/permutations.html >>>>>>>> >>>>>>>> As expected, >>>>>>>> >>>>>>>> Permutation(1, 2)(2, 3) == Permutation(1, 2) * Permutation(2, 3) >>>>>>>> >>>>>>>> But doesn't this mean that the permutations are applied from left >>>>>>>> to right, since (as described in the docs) left-to-right permutation >>>>>>>> multiplication p*q is equivalent to composition q o p? >>>>>>>> >>>>>>>> If so, this contradicts the documentation's claim that "The >>>>>>>> convention is that the permutations are applied from *right to >>>>>>>> left*". >>>>>>>> >>>>>>>> If not, I must be confused about something, and would appreciate >>>>>>>> any corrections. >>>>>>>> >>>>>>>> Thanks for your help, >>>>>>>> Alex >>>>>>>> >>>>>>>> -- >>>>>> You received this message because you are subscribed to a topic in >>>>>> the Google Groups "sympy" group. >>>>>> To unsubscribe from this topic, visit >>>>>> https://groups.google.com/d/topic/sympy/5MTQFwB7xIo/unsubscribe. >>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>> [email protected]. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/sympy/7556df78-eb14-408c-bf38-326dafaa1318n%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/sympy/7556df78-eb14-408c-bf38-326dafaa1318n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "sympy" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/sympy/5MTQFwB7xIo/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> [email protected]. >>>> >>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sympy/b0302a20-7afa-48e7-ac63-2f467c0b164cn%40googlegroups.com >>>> <https://groups.google.com/d/msgid/sympy/b0302a20-7afa-48e7-ac63-2f467c0b164cn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- > You received this message because you are subscribed to a topic in the > Google Groups "sympy" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sympy/5MTQFwB7xIo/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/05b31174-bc37-45ed-8a34-bc69b636cc10n%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/05b31174-bc37-45ed-8a34-bc69b636cc10n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CABL__EuMSdO%2BPciLo_GNPGATgvd9RKE3mavdk8gtu-a_ZE_MPA%40mail.gmail.com.
