Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

Worksheets related to Applied Discrete Structures

Views: 15777
Image: ubuntu2004
Kernel: SageMath 9.4
%html <h1>Permutation Groups using SageMath&nbsp;</h1> <p><strong><em><a title="Applied Discrete Structures" href=" http://faculty.uml.edu/klevasseur/ads2" target="_blank">Applied Discrete Structures</a>&nbsp;</em>by Alan Doerr &amp; Kenneth Levasseur is licensed under a Creative Commons Attribution - Noncommercial - &nbsp;No Derivative Works 3.0 United States License.</strong></p> <p>By Cayley's Theorem, all groups can be represented as permutation groups, subgroups of the full permutation group on the group's domain. For finite groups, the set on which the permutations are performed can be simplifed to a set of integers with cardinality equal to the order of the group.</p><p>These topics are introduced in Chapter 15 of <em>Applied Discrete Structures</em>.</p>
File "<ipython-input-2-e5ac2c8e0713>", line 2 <h1>Permutation Groups using SageMath&nbsp;</h1> ^ SyntaxError: invalid syntax
G=SymmetricGroup(8) G
Symmetric group of order 8! as a permutation group
] Individual elements of \(G\) are represented with cycle notation and the wrapper <c>G( )</c>. The identity is <c>G(())</c>. The output form of these elements drops the outer wrapper.
File "<ipython-input-6-1879157fd2b1>", line 1 ] Individual elements of * BackslashOperator() * (G * BackslashOperator() * ) are represented with cycle notation and the wrapper <c>G( )</c>. The identity is <c>G(())</c>. The output form of these elements drops the outer wrapper. ^ SyntaxError: unmatched ']'
r=G((1,2,3,4,5,6,7,8)) r
f=G([(2,8),(3,7),(4,6)]) f
%html <p> Use an asterisk, <c>*</c>, and integer exponents for operating on elements of a group. Here is the conjugate of <c>f</c> with respect to <c>r</c>. Notice that since \(G\) is nonabelian, \(r\) and its inverse do no cancel out. However, the cycle structure is preserved: <c>f</c> and its conjugate both consist of three disjoint transpositions. </p>
r^-1*f*r
%html <p> We can make a similar observation when we conjugate <c>r</c> with respect to <c>f</c>. </p>
f^-1*r*f
%html <p> Here is a list of powers of <c>r</c> starting with <c>r^0 = ( )</c> and ending with <c>r^7</c>. Recall that <c>range(8)</c> evaluates to the list of integers from 0 to 7. </p>
map(lambda k:r^k,range(8))
%html <p> Of course since <c>r</c> is a cycle of length 8, its order is 8 and we get this result: </p>
r^8
%html <p> Other common groups are available, represented with permutations. Here we examine the dihedral group \(D_4\). Among the other groups are cyclic groups (CyclicPermutationGroup); dicyclic groups (DiCyclicGroup), which include the quaternion group; and the alternating groups (AlternatingGroup). </p>
D4=DihedralGroup(4)
D4.list()
D4.cayley_table(names='digits')
%html <p> Knowing a set of generators for \(D_4\), we could have used <c>PermutationGroup</c> to generate the group. We do that here for \(D_5\) </p>
D5=PermutationGroup([(1,2,3,4,5),[(1,2),(3,5)]])
D5.cayley_graph().show()
%html <p> For each subgroup of \(D_5\), we print the order of the subgroup followed by a generating set. This shows that all subgroups of \(D_5\) are cyclic but \(D_5\) itself is not. </p>
for H in D5.subgroups(): print H.order(),H.gens()
%html <p> Here are the normal subgroups of \(D_5\). </p>
for H in D5.normal_subgroups(): print H.order(),H.gens()
%html <p> Here, we see why the subgroup generated by \((1,5)(2,4)\) isn't normal because we get a different subgroup when whe conjugate it with \((1,2,3,4,5)\). </p>
g=D5([(1,5),(2,4)]) H=D5.subgroup([g]) [H.list(),H.conjugate([(1,2,3,4,5)]).list()]