ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Sat, 03 Dec 2016 17:58:15 +0100Action of a permutation on a list (and other objects)https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/Hi, i'm a beginner user in Sage and I am currently trying to do a few exercises about the Rubik's Cube from the book "Adventures in Group Theory" from D. Joyner
from a general move on the rubik cube (defined as a permutation of its 48 facets) i want to define its restriction to the subset of corner (or edge) facets.
rubik=CubeGroup()
r=rubik.R()
l=rubik.L()
r*l^(-1)
> (1,40,41,17)(3,38,43,19)(4,37,44,20)(5,36,45,21)(6,35,46,22)(8,33,48,24)\
> (9,14,16,11)(10,12,15,13)(25,27,32,30)(26,29,31,28)
corner_list=[1,3,6,8,9 ,11,14,16,17,19,22,24,25,27,30,32,33,35,38,40,41,43,46,38]
edge_list =[2,4,5,7,10,12,13,15,18,20,21,23,26,28,29,31,34,36,37,39,42,44,45,47]
basically i would like to look at the action of this permutation on those lists, and i should have for the corners
(1,40,41,17)(3,38,43,19)( 6,35,46,22 )(8,33,48,24)(9,14,16,11)(25,27,32,30)
and for the edges
(4,37,44,20)(5,36,45,21)(10,12,15,13)(26,29,31,28)
i see there is a method called _r_action but it doesn't look like its working here
(r*l^(-1))._r_action(corner_list)
> Traceback (click to the left of this
> block for traceback) ...
> AttributeError:
> 'sage.groups.perm_gps.permgroup_element.PermutationGroupElement'
> object has no attribute '_r_action'
I guess another way of doing it would be to define a (surjective) homomorphism from S(48) into S(edges) and S(corners) but i don't know how to do it
EDIT: i am trying a solution along these lines by trying to define an homomorphism. lets try with a simpler example
G=SymmetricGroup(5)
G.gens()
> [(1,2,3,4,5), (1,2)]
H=PermutationGroup([(3,4,5),(3,4)])
phi = PermutationGroupMorphism_im_gens(G, H,[(3,4,5),()])
phi
> Permutation group morphism: From:
> Symmetric group of order 5! as a
> permutation group To: Permutation
> Group with generators [(3,4), (3,4,5)]
> Defn: [(1,2,3,4,5), (1,2)] ->
> [(3,4,5), ()]
g=G([(1,2,3,4,5)])
g
> (1,2,3,4,5)
phi(g)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "_sage_input_68.py", line 10, in
> <module>
> exec compile(u'open("___code___.py","w").write("#
> -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("cGhpKGcp"),globals())+"\\n");
> execfile(os.path.abspath("___code___.py"))
> File "", line 1, in <module>
> File "/private/var/folders/gm/z065gk616xg6g0xgn4c7_bvc0000gn/T/tmpg7JGoB/___code___.py", line 2, in <module>
> exec compile(u'phi(g) File "", line 1, in <module>
> File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup_morphism.py",
> line 136, in __call__
> return self.image(g) File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup_morphism.py",
> line 115, in image
> G = self._gap_().Image(J) File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/interface.py",
> line 632, in __call__
> return self._obj.parent().function_call(self._name,
> [self._obj] + list(args), kwds) File
> "/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/gap.py",
> line 921, in function_call
> res = self.eval(marker+cmd) File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/gap.py",
> line 573, in eval
> result = Expect.eval(self, input_line, **kwds) File
> "/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/expect.py",
> line 1239, in eval
> for L in code.split('\n') if L != '']) File
> "/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/gap.py",
> line 771, in _eval_line
> raise RuntimeError(message) RuntimeError: Gap produced error
> output Error, usage: Image(<map>),
> Image(<map>,<elm>),
> Image(<map>,<coll>)
>
> executing
> __SAGE_LAST__:="__SAGE_LAST__";;Image($sage20,$sage19);;
I think i tried the same syntax than here
http://doc.sagemath.org/html/en/reference/groups/sage/groups/perm_gps/permgroup_morphism.html
surely i must have done something wrong , but what ?
thanksSun, 27 Nov 2016 10:46:05 +0100https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/Answer by tmonteil for <p>Hi, i'm a beginner user in Sage and I am currently trying to do a few exercises about the Rubik's Cube from the book "Adventures in Group Theory" from D. Joyner</p>
<p>from a general move on the rubik cube (defined as a permutation of its 48 facets) i want to define its restriction to the subset of corner (or edge) facets.</p>
<pre><code>rubik=CubeGroup()
r=rubik.R()
l=rubik.L()
r*l^(-1)
</code></pre>
<blockquote>
<p>(1,40,41,17)(3,38,43,19)(4,37,44,20)(5,36,45,21)(6,35,46,22)(8,33,48,24)\
(9,14,16,11)(10,12,15,13)(25,27,32,30)(26,29,31,28)</p>
</blockquote>
<pre><code>corner_list=[1,3,6,8,9 ,11,14,16,17,19,22,24,25,27,30,32,33,35,38,40,41,43,46,38]
edge_list =[2,4,5,7,10,12,13,15,18,20,21,23,26,28,29,31,34,36,37,39,42,44,45,47]
</code></pre>
<p>basically i would like to look at the action of this permutation on those lists, and i should have for the corners
(1,40,41,17)(3,38,43,19)( 6,35,46,22 )(8,33,48,24)(9,14,16,11)(25,27,32,30)</p>
<p>and for the edges
(4,37,44,20)(5,36,45,21)(10,12,15,13)(26,29,31,28)</p>
<p>i see there is a method called _r_action but it doesn't look like its working here</p>
<pre><code>(r*l^(-1))._r_action(corner_list)
</code></pre>
<blockquote>
<p>Traceback (click to the left of this
block for traceback) ...
AttributeError:
'sage.groups.perm_gps.permgroup_element.PermutationGroupElement'
object has no attribute '_r_action'</p>
</blockquote>
<p>I guess another way of doing it would be to define a (surjective) homomorphism from S(48) into S(edges) and S(corners) but i don't know how to do it</p>
<p>EDIT: i am trying a solution along these lines by trying to define an homomorphism. lets try with a simpler example</p>
<pre><code>G=SymmetricGroup(5)
G.gens()
</code></pre>
<blockquote>
<p>[(1,2,3,4,5), (1,2)]</p>
</blockquote>
<pre><code>H=PermutationGroup([(3,4,5),(3,4)])
phi = PermutationGroupMorphism_im_gens(G, H,[(3,4,5),()])
phi
</code></pre>
<blockquote>
<p>Permutation group morphism: From:
Symmetric group of order 5! as a
permutation group To: Permutation
Group with generators [(3,4), (3,4,5)]
Defn: [(1,2,3,4,5), (1,2)] ->
[(3,4,5), ()]</p>
</blockquote>
<pre><code>g=G([(1,2,3,4,5)])
g
</code></pre>
<blockquote>
<p>(1,2,3,4,5)</p>
</blockquote>
<pre><code>phi(g)
</code></pre>
<blockquote>
<p>Traceback (most recent call last): <br>
File "<stdin>", line 1, in <module> <br>
File "_sage_input_68.py", line 10, in
<module>
exec compile(u'open("___code___.py","w").write("#
-<em>- coding: utf-8 -</em>-\n" + _support_.preparse_worksheet_cell(base64.b64decode("cGhpKGcp"),globals())+"\n");
execfile(os.path.abspath("___code___.py"))
File "", line 1, in <module>
File "/private/var/folders/gm/z065gk616xg6g0xgn4c7_bvc0000gn/T/tmpg7JGoB/___code___.py", line 2, in <module>
exec compile(u'phi(g) File "", line 1, in <module>
File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup_morphism.py",
line 136, in __call__
return self.image(g) File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup_morphism.py",
line 115, in image
G = self._gap_().Image(J) File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/interface.py",
line 632, in __call__
return self._obj.parent().function_call(self._name,
[self._obj] + list(args), kwds) File
"/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/gap.py",
line 921, in function_call
res = self.eval(marker+cmd) File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/gap.py",
line 573, in eval
result = Expect.eval(self, input_line, **kwds) File
"/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/expect.py",
line 1239, in eval
for L in code.split('\n') if L != '']) File
"/Applications/SageMath/local/lib/python2.7/site-packages/sage/interfaces/gap.py",
line 771, in _eval_line
raise RuntimeError(message) RuntimeError: Gap produced error
output Error, usage: Image(<map>),
Image(<map>,<elm>),
Image(<map>,<coll>)</p>
<p>executing
__SAGE_LAST__:="__SAGE_LAST__";;Image($sage20,$sage19);;</p>
</blockquote>
<p>I think i tried the same syntax than here
<a href="http://doc.sagemath.org/html/en/reference/groups/sage/groups/perm_gps/permgroup_morphism.html">http://doc.sagemath.org/html/en/refer...</a></p>
<p>surely i must have done something wrong , but what ?</p>
<p>thanks</p>
https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/?answer=35748#post-id-35748You can write the action yourself:
sage: p = r*l^(-1)
sage: [p(i) for i in corner_list]
[40, 38, 35, 33, 14, 9, 16, 11, 1, 3, 6, 8, 27, 32, 25, 30, 48, 46, 43, 41, 17, 19, 22, 43]
sage: [p(i) for i in edge_list]
[2, 37, 36, 7, 12, 15, 10, 13, 18, 4, 5, 23, 29, 26, 31, 28, 34, 45, 44, 39, 42, 20, 21, 47]
If you want to use some additional methods by viewing `p` as an element of the symmetric group $S_48$, or as a permutation, you can to:
sage: p.parent()
The Rubik's cube group with generators R,L,F,B,U,D in SymmetricGroup(48).
sage: S = SymmetricGroup(48)
sage: s = S(p) ; s
(1,40,41,17)(3,38,43,19)(4,37,44,20)(5,36,45,21)(6,35,46,22)(8,33,48,24)(9,14,16,11)(10,12,15,13)(25,27,32,30)(26,29,31,28)
sage: s.parent()
Symmetric group of order 48! as a permutation group
sage: P = Permutation(p) ; P
[40, 2, 38, 37, 36, 35, 7, 33, 14, 12, 9, 15, 10, 16, 13, 11, 1, 18, 3, 4, 5, 6, 23, 8, 27, 29, 32, 26, 31, 25, 28, 30, 48, 34, 46, 45, 44, 43, 39, 41, 17, 42, 19, 20, 21, 22, 47, 24]
sage: P.parent()
Standard permutations
Sun, 27 Nov 2016 11:40:33 +0100https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/?answer=35748#post-id-35748Comment by fagui for <p>You can write the action yourself:</p>
<pre><code>sage: p = r*l^(-1)
sage: [p(i) for i in corner_list]
[40, 38, 35, 33, 14, 9, 16, 11, 1, 3, 6, 8, 27, 32, 25, 30, 48, 46, 43, 41, 17, 19, 22, 43]
sage: [p(i) for i in edge_list]
[2, 37, 36, 7, 12, 15, 10, 13, 18, 4, 5, 23, 29, 26, 31, 28, 34, 45, 44, 39, 42, 20, 21, 47]
</code></pre>
<p>If you want to use some additional methods by viewing <code>p</code> as an element of the symmetric group $S_48$, or as a permutation, you can to:</p>
<pre><code>sage: p.parent()
The Rubik's cube group with generators R,L,F,B,U,D in SymmetricGroup(48).
sage: S = SymmetricGroup(48)
sage: s = S(p) ; s
(1,40,41,17)(3,38,43,19)(4,37,44,20)(5,36,45,21)(6,35,46,22)(8,33,48,24)(9,14,16,11)(10,12,15,13)(25,27,32,30)(26,29,31,28)
sage: s.parent()
Symmetric group of order 48! as a permutation group
sage: P = Permutation(p) ; P
[40, 2, 38, 37, 36, 35, 7, 33, 14, 12, 9, 15, 10, 16, 13, 11, 1, 18, 3, 4, 5, 6, 23, 8, 27, 29, 32, 26, 31, 25, 28, 30, 48, 34, 46, 45, 44, 43, 39, 41, 17, 42, 19, 20, 21, 22, 47, 24]
sage: P.parent()
Standard permutations
</code></pre>
https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/?comment=35901#post-id-35901@tmonteil could you have a second look please ? thanksSat, 03 Dec 2016 17:58:15 +0100https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/?comment=35901#post-id-35901Comment by fagui for <p>You can write the action yourself:</p>
<pre><code>sage: p = r*l^(-1)
sage: [p(i) for i in corner_list]
[40, 38, 35, 33, 14, 9, 16, 11, 1, 3, 6, 8, 27, 32, 25, 30, 48, 46, 43, 41, 17, 19, 22, 43]
sage: [p(i) for i in edge_list]
[2, 37, 36, 7, 12, 15, 10, 13, 18, 4, 5, 23, 29, 26, 31, 28, 34, 45, 44, 39, 42, 20, 21, 47]
</code></pre>
<p>If you want to use some additional methods by viewing <code>p</code> as an element of the symmetric group $S_48$, or as a permutation, you can to:</p>
<pre><code>sage: p.parent()
The Rubik's cube group with generators R,L,F,B,U,D in SymmetricGroup(48).
sage: S = SymmetricGroup(48)
sage: s = S(p) ; s
(1,40,41,17)(3,38,43,19)(4,37,44,20)(5,36,45,21)(6,35,46,22)(8,33,48,24)(9,14,16,11)(10,12,15,13)(25,27,32,30)(26,29,31,28)
sage: s.parent()
Symmetric group of order 48! as a permutation group
sage: P = Permutation(p) ; P
[40, 2, 38, 37, 36, 35, 7, 33, 14, 12, 9, 15, 10, 16, 13, 11, 1, 18, 3, 4, 5, 6, 23, 8, 27, 29, 32, 26, 31, 25, 28, 30, 48, 34, 46, 45, 44, 43, 39, 41, 17, 42, 19, 20, 21, 22, 47, 24]
sage: P.parent()
Standard permutations
</code></pre>
https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/?comment=35749#post-id-35749thank you , but you are not really answering to my question. There are 24 edge facets and 24 corner facets, and i want to see the 2 natural projections of p on S(24)
_r_action doesn't work on PSun, 27 Nov 2016 12:03:15 +0100https://ask.sagemath.org/question/35747/action-of-a-permutation-on-a-list-and-other-objects/?comment=35749#post-id-35749