If you have the list [1, 2, 3] and you permute positions 2 and 3, you get [1, 3, 2], then permuting positions 1 and 2 gives [3, 1, 2].
>>> list(Permutation(1, 2)(2, 3)) [0, 3, 1, 2] (the 0 is also included because Permutation assumes 0 indexing). Note the distinction between the permutation, written in cycle notation, and the permuted list. The permutation (1 2)(2 3) is equal to the permutation (1 3 2) >>> Permutation(1, 2)(2, 3) Permutation(1, 3, 2) This means the first element becomes the 3rd, the third element becomes 2nd, and the second element becomes 1st. The distinction is confusing because we use the numbers 0, 1, 2, 3 for both. It may help to instead think of permuting the list ['a', 'b', 'c', 'd']. >>> Permutation(1, 2)(2, 3)(['a', 'b', 'c', 'd']) ['a', 'd', 'b', 'c'] The right-to-left applies to the application of a permutation to a sequence: >>> Permutation(2, 3)(['a', 'b', 'c', 'd']) ['a', 'b', 'd', 'c'] >>> Permutation(1, 2, size=4)(Permutation(2, 3)(['a', 'b', 'c', 'd'])) ['a', 'd', 'b', 'c'] When Permutation is called with a single number, it returns what that numeric index is mapped to >>> Permutation(1, 2)(1) 2 >>> Permutation(1, 2)(2) 1 On Fri, Mar 12, 2021 at 11:15 AM Alexander Ness <[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 As I pointed out above, I believe this is really the source of the confusion here. There is a distinction between permutation itself, written in cycle notation, and the list itself. Unfortunately, the examples use 1..n (or 0..n-1) for both, which can be confusing. It may be easier to show the permutation of a list of Symbols, so that it's clearer that a number represents the index in the permutation itself, and a symbol represents a permuted element of a list. I've read through the docs a couple of times, but I can't tell if they are wrong or just confusing. Either way, I would suggest disambiguation using the above suggestion or something similar. Using the same notation (__call__) for both composition and application of a permutation may also have been a mistake, but I'm not sure what we can do about that. Aaron Meurer > > 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. >> >> -- >> 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. > > -- > 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__Ev9SUwgCsy4irD7gC5XCxQSCHD2FUwN7L%2BPjLNfsxerSA%40mail.gmail.com. -- 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/CAKgW%3D6KEBheFGKh%3DWYSVyR42zbiDkGJ1M76Ln5iqPNVemPeJXw%40mail.gmail.com.
