Skip to content

Instantly share code, notes, and snippets.

@pedritomelenas
Created November 5, 2015 10:30
Show Gist options
  • Save pedritomelenas/3bf33f911d4a4f417356 to your computer and use it in GitHub Desktop.
Save pedritomelenas/3bf33f911d4a4f417356 to your computer and use it in GitHub Desktop.
Tutorial of absalg with modifications
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tutorial for `Group.py`\n",
"This folder contains an extension of the [absalg](https://github.com/naftaliharris/Abstract-Algebra) library by [Naftali Harris](http://www.naftaliharris.com).\n",
"\n",
"We start by loading the library"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline \n",
"#we will do some drawing at the end...\n",
"from Group import *"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Defining a group\n",
"Let us define a group from scratch. We need a set and a binary operation."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"S=Set(range(5))\n",
"b_op=Function(S.cartesian(S),S,lambda x: (x[0]+x[1])%5)\n",
"G=Group(S,b_op)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can, for instance, list the elements in `G`. Observe that this is just a representation of them."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[0, 1, 2, 3, 4]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(G)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This does not mean that 1 is in `G`."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1 in G"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However 1 is in the underlying set of `G`"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1 in G.Set"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to see 1 in `G`, we need to create an instance of it as element in `G`. And then, we can operate with it."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"one=G(1)\n",
"one*one"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As in this case, `G` is abelian, we can even perform the last operation by using `+`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"one+one"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also, in this case powers become multiples."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"one**3==3*one"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Cayley table of `G` can be calculated as follows (multiplicative table)."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<head><style>\n",
"table, th, td {border: 1px solid black;\n",
" border-collapse: collapse;}\n",
" th, td {padding: 15px;}</style></head><p/>\n",
" <table>\n",
" <tr> <td bgcolor='White'> * </td> <td bgcolor=Red>0</td> <td bgcolor=Yellow>1</td> <td bgcolor=Lime>2</td> <td bgcolor=Blue>3</td> <td bgcolor=Tan>4</td> </tr>\n",
"<tr> <td bgcolor=Red> 0 </td> <td bgcolor=Red>0</td> <td bgcolor=Yellow>1</td> <td bgcolor=Lime>2</td> <td bgcolor=Blue>3</td> <td bgcolor=Tan>4</td></tr>\n",
" <tr> <td bgcolor=Yellow> 1 </td> <td bgcolor=Yellow>1</td> <td bgcolor=Lime>2</td> <td bgcolor=Blue>3</td> <td bgcolor=Tan>4</td> <td bgcolor=Red>0</td></tr>\n",
" <tr> <td bgcolor=Lime> 2 </td> <td bgcolor=Lime>2</td> <td bgcolor=Blue>3</td> <td bgcolor=Tan>4</td> <td bgcolor=Red>0</td> <td bgcolor=Yellow>1</td></tr>\n",
" <tr> <td bgcolor=Blue> 3 </td> <td bgcolor=Blue>3</td> <td bgcolor=Tan>4</td> <td bgcolor=Red>0</td> <td bgcolor=Yellow>1</td> <td bgcolor=Lime>2</td></tr>\n",
" <tr> <td bgcolor=Tan> 4 </td> <td bgcolor=Tan>4</td> <td bgcolor=Red>0</td> <td bgcolor=Yellow>1</td> <td bgcolor=Lime>2</td> <td bgcolor=Blue>3</td></tr>\n",
" </table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G.table()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"frozenset({0, 1, 3, 2, 4})"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Set([i*one for i in range(10)])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can indeed do this last operation by considering the group spanned by `one`; which in this case is `G` itself."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H=G.generate([one])\n",
"H==G"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H==G.generate([1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This means that this group is *cyclic*."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.is_cyclic()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also define a subgroup by its elements. The procedure will raise an error if the set is not a subgroup of the given group"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [],
"source": [
"G1=CyclicGroup(6)\n",
"H=G1.subgroup_by_elms([0,3])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"3 in H.Set"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H(3) in G1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The inverse of an element can be compute in several ways. "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[4, 4]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"[G.inverse(one), one**-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can compute the lattice of subgroups of `G`. The output is a dictionary: `n:set of subgroups of order n`."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"subgs=G.subgroups()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"{1: {Group with 1 elements}, 5: {Group with 5 elements}}"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"subgs"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[[0], [0, 1, 2, 3, 4]]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[list(H) for j in subgs.keys() for H in subgs[j]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since `G` is abelian, all its subgroups are normal."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<generator object <genexpr> at 0x108530230>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all(H.is_normal_subgroup(G) for H in subgs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Indeed groups as `G` are quite common, this is why we dedided to write an specific function to define them: `CyclicGroup`. We will talk later more about it. \n",
"\n",
"The function `CyclicGroup(n)` returns (as defaul) the group $(\\mathbb{Z}_n,+)$."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.is_isomorphic(CyclicGroup(5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cartesian product and quotients\n",
"A way to obtain groups from others is by computing cartesian products, or quotients by normal subgroups.\n",
"\n",
"Let us, for instance, compute `G^2`"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"G2=G.cartesian(G)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The elements of `G2` are tuples. We can as above, instanciate one of its elements."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"one2=G2((1,1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can define the cyclic group generated by `one2`, and check that indeed is a subgroup of `G2`."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H=G2.generate([one2])\n",
"H<=G2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Contrary to what happened above, in this case `H` is not `G2` itself; this is due to the fact that `G2` is no longer cyclic. Let us compute a system of generators of `G2`."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H==G2"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G2.is_cyclic()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(1, 3), (1, 2)]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G2.generators()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We already know that every subgroup of an abelian group is normal, and so we can compute the quotient of `G2` by `H`."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Group with 5 elements"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G2/H"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Its elements are congruency classes, and this is why when listing them, we get a lists of sets."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[Set([(2, 2), (4, 4), (3, 3), (0, 0), (1, 1)]),\n",
" Set([(3, 0), (1, 3), (4, 1), (2, 4), (0, 2)]),\n",
" Set([(4, 3), (3, 2), (1, 0), (2, 1), (0, 4)]),\n",
" Set([(4, 2), (0, 3), (3, 1), (1, 4), (2, 0)]),\n",
" Set([(0, 1), (3, 4), (1, 2), (2, 3), (4, 0)])]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q=G2/H\n",
"list(Q)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q.is_abelian()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q.is_cyclic()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25->[[(0, 0), (1, 3), (3, 0), (2, 1), (0, 3), (4, 0), (1, 2), (3, 3), (4, 4), (2, 2), (4, 1), (1, 1), (3, 2), (0, 4), (1, 4), (2, 3), (4, 2), (1, 0), (0, 1), (3, 1), (0, 2), (2, 0), (4, 3), (3, 4), (2, 4)]]\n",
"5->[[(0, 0), (3, 0), (2, 0), (1, 0), (4, 0)], [(0, 0), (2, 3), (3, 2), (4, 1), (1, 4)], [(0, 0), (0, 1), (0, 3), (0, 2), (0, 4)], [(0, 0), (4, 2), (1, 3), (3, 4), (2, 1)], [(0, 0), (2, 2), (1, 1), (4, 4), (3, 3)], [(0, 0), (1, 2), (3, 1), (2, 4), (4, 3)]]\n",
"1->[[(0, 0)]]\n"
]
}
],
"source": [
"sbgrps=G2.subgroups()\n",
"#[[list(J) for J in sbgrps[j]] for j in sbgrps.keys()]\n",
"for j in sbgrps.keys():\n",
" print(str(j)+\"->\"+str([list(J) for J in sbgrps[j]]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Permutations\n",
"\n",
"Permutations are a fundamental tool for the study of groups. Indeed permutations (bijective maps) of the set $\\{1,\\ldots,n\\}$ under composition are a group that is not abelian for $n\\ge 3$.\n",
"\n",
"We have included a bunch of ways to define a permuation with the class `permutation`.\n",
"\n",
"- `permutation(list of integers)` creates a permutation in which the $i$ goes to the $i$th elmeent in the given list of integers.\n",
"\n",
"- `permutation(sequence of integers)` does the same as above, by considering the sequence as a list.\n",
"\n",
"- `permutation(sequence of tuples)` creates a permutation that is the product of the given tuples, by considering the tuples as cycles.\n",
"\n",
"- `permutation(list of tuples)` does the same as in the preceding case.\n"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"permutation(2,3,1,4)==permutation([2,3,1,4])"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"permutation((1,2),(3,4))==permutation([(1,2),(3,4)])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Composition of permutations is performed by using the `*` operator; powers with `**`."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"( )"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p=permutation((1,2),(3,4))\n",
"p*p"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You may gues from the above output that we are displaying the identity map just by `( )`. Permutations are displayed as a product of disjoint cycles, and printed both in matrix representation and as a product of disjoint cycles."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
" (1, 2)(3, 4)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2, 1, 4, 3] = (1, 2)(3, 4)\n"
]
}
],
"source": [
"print(p)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p**-1==p"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The order of a permutation is computed as follows."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.order()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also we can compute its sign, inversions and decomposition into disjoint cycles."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.sign()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(1, 2), (3, 4)]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.inversions()"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(1, 2), (3, 4)]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.disjoint_cycles()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Groups of permutations\n",
"\n",
"As we mentioned above, permutations of $\\{1,\\ldots, n\\}$ with composition as binary operation are a group, which is known as the symmetric group and it is denoted by $S_n$. We have a function to created groups of permutations."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[( ), (2, 3), (1, 3), (1, 2), (1, 3, 2), (1, 2, 3)]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S3=SymmetricGroup(3)\n",
"list(S3)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"p=S3(permutation(3,2,1))\n",
"q=S3(permutation(2,1,3))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"H=S3.generate([p,q])"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"frozenset({ (2, 3), (1, 2, 3), (1, 3), ( ), (1, 2), (1, 3, 2)})"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H.group_elems"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"An important subgroup of the symmetric group $S_n$ is the group of all even (sign=1) permutations, which is known as the alternating group and denoted by $A_n$. It is well known that $A_n$ is a normal subgroup of $S_n$."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[Set([ (1, 2, 3), (1, 3, 2), ( )]), Set([ (2, 3), (1, 2), (1, 3)])]"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A3=AlternatingGroup(3)\n",
"list(S3/A3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And in this way we are listing odd and even permutations in separate sets."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The symmetric group $S_n$ has always a \"copy\" of `CyclicGroup(n)`, which is the subgroup of $S_n$ spanned by the cycle $(1\\ldots n)$. We can construct it as follows. "
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[( ), (1, 2, 3), (1, 3, 2)]"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"C3=CyclicGroup(3,\"permutations\")\n",
"list(C3)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[( ), (1, 2, 3), (1, 3, 2)]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z3=CyclicGroup(3)\n",
"list(C3)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"C3.is_isomorphic(Z3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another important subgroup of the $S_n$ is the dihedral group of movements that leave invariant an $n$-gon centered in the origin. This group can be represented either by permutations or by symmetries and rotations."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<head><style>\n",
"table, th, td {border: 1px solid black;\n",
" border-collapse: collapse;}\n",
" th, td {padding: 15px;}</style></head><p/>\n",
" <table>\n",
" <tr> <td bgcolor='White'> * </td> <td bgcolor=Red>'R0'</td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Lime>'R2'</td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Tan>'S3'</td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Violet>'S1'</td> <td bgcolor=SkyBlue>'S0'</td> </tr>\n",
"<tr> <td bgcolor=Red> 'R0' </td> <td bgcolor=Red>'R0'</td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Lime>'R2'</td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Tan>'S3'</td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Violet>'S1'</td> <td bgcolor=SkyBlue>'S0'</td></tr>\n",
" <tr> <td bgcolor=Yellow> 'R1' </td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Lime>'R2'</td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Red>'R0'</td> <td bgcolor=SkyBlue>'S0'</td> <td bgcolor=Tan>'S3'</td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Violet>'S1'</td></tr>\n",
" <tr> <td bgcolor=Lime> 'R2' </td> <td bgcolor=Lime>'R2'</td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Red>'R0'</td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Violet>'S1'</td> <td bgcolor=SkyBlue>'S0'</td> <td bgcolor=Tan>'S3'</td> <td bgcolor=YellowGreen>'S2'</td></tr>\n",
" <tr> <td bgcolor=Blue> 'R3' </td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Red>'R0'</td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Lime>'R2'</td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Violet>'S1'</td> <td bgcolor=SkyBlue>'S0'</td> <td bgcolor=Tan>'S3'</td></tr>\n",
" <tr> <td bgcolor=Tan> 'S3' </td> <td bgcolor=Tan>'S3'</td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Violet>'S1'</td> <td bgcolor=SkyBlue>'S0'</td> <td bgcolor=Red>'R0'</td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Lime>'R2'</td> <td bgcolor=Blue>'R3'</td></tr>\n",
" <tr> <td bgcolor=YellowGreen> 'S2' </td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Violet>'S1'</td> <td bgcolor=SkyBlue>'S0'</td> <td bgcolor=Tan>'S3'</td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Red>'R0'</td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Lime>'R2'</td></tr>\n",
" <tr> <td bgcolor=Violet> 'S1' </td> <td bgcolor=Violet>'S1'</td> <td bgcolor=SkyBlue>'S0'</td> <td bgcolor=Tan>'S3'</td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Lime>'R2'</td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Red>'R0'</td> <td bgcolor=Yellow>'R1'</td></tr>\n",
" <tr> <td bgcolor=SkyBlue> 'S0' </td> <td bgcolor=SkyBlue>'S0'</td> <td bgcolor=Tan>'S3'</td> <td bgcolor=YellowGreen>'S2'</td> <td bgcolor=Violet>'S1'</td> <td bgcolor=Yellow>'R1'</td> <td bgcolor=Lime>'R2'</td> <td bgcolor=Blue>'R3'</td> <td bgcolor=Red>'R0'</td></tr>\n",
" </table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"D4=DihedralGroup(4)\n",
"D4.table()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Product and intersection of subgroups\n",
"Product and intersection of subgroups of a group $G$ are again subgroups of $G$"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"[( ),\n",
" (1, 4, 3, 2),\n",
" (1, 3)(2, 4),\n",
" (2, 4),\n",
" (1, 2, 3, 4),\n",
" (1, 4)(2, 3),\n",
" (1, 2)(3, 4),\n",
" (1, 3)]"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Dp4=DihedralGroup(4,\"permutations\")\n",
"list(Dp4)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Group with 24 elements"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A4=AlternatingGroup(4)\n",
"A4*Dp4"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[( ), (1, 4)(2, 3), (1, 2)(3, 4), (1, 3)(2, 4)]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(A4.intersection(Dp4))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can for instance, illustrate the third isometry theorem: $KN/N\\cong K/(K\\cap N)$."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q1=(A4*Dp4)/A4\n",
"Q2=Dp4/(A4.intersection(Dp4))\n",
"Q1.is_isomorphic(Q2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lateral classes, conjugacy clases and center"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lateral classes are easy to construct; they are considered as sets."
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{ (1, 2, 3, 4),\n",
" (2, 3),\n",
" (1, 3, 4, 2),\n",
" (1, 3, 2, 4),\n",
" (1, 3),\n",
" (1, 4),\n",
" (1, 2),\n",
" (1, 4, 3, 2),\n",
" (1, 2, 4, 3),\n",
" (1, 4, 2, 3),\n",
" (2, 4),\n",
" (3, 4)}"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S4=SymmetricGroup(4)\n",
"p=S4(permutation([2,3,4,1]))\n",
"p*A4"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{ (2, 4),\n",
" (3, 4),\n",
" (1, 3, 2, 4),\n",
" (1, 3, 4, 2),\n",
" (1, 2, 3, 4),\n",
" (1, 4, 3, 2),\n",
" (1, 2),\n",
" (1, 4, 2, 3),\n",
" (2, 3),\n",
" (1, 3),\n",
" (1, 2, 4, 3),\n",
" (1, 4)}"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A4*p"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a group $G$, the conjugacy class of an element $x$ ($\\{gxg^-1\\mid g\\in G\\}$) and of a subgroup $H$ ($\\{gHg^{-1}\\mid g\\in G\\}$) can be calculated as follows."
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"frozenset({ (1, 3, 2, 4),\n",
" (1, 4, 2, 3),\n",
" (1, 4, 3, 2),\n",
" (1, 2, 4, 3),\n",
" (1, 3, 4, 2),\n",
" (1, 2, 3, 4)})"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.conjugacy_class()"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{frozenset({ (1, 2, 3),\n",
" ( ),\n",
" (1, 2)(3, 4),\n",
" (1, 4, 3),\n",
" (1, 3, 4),\n",
" (2, 4, 3),\n",
" (1, 4, 2),\n",
" (1, 4)(2, 3),\n",
" (1, 2, 4),\n",
" (1, 3, 2),\n",
" (1, 3)(2, 4),\n",
" (2, 3, 4)})}"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A4.conjugacy_class()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And also the set of all conjugacy classes."
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{frozenset({ (1, 4, 3, 2),\n",
" (1, 3, 2, 4),\n",
" (1, 4, 2, 3),\n",
" (1, 2, 4, 3),\n",
" (1, 3, 4, 2),\n",
" (1, 2, 3, 4)}),\n",
" frozenset({ (1, 4, 3),\n",
" (1, 2, 3),\n",
" (1, 4, 2),\n",
" (1, 2, 4),\n",
" (1, 3, 2),\n",
" (2, 3, 4),\n",
" (1, 3, 4),\n",
" (2, 4, 3)}),\n",
" frozenset({ (1, 3)(2, 4), (1, 4)(2, 3), (1, 2)(3, 4)}),\n",
" frozenset({ (2, 4), (1, 3), (1, 4), (3, 4), (1, 2), (2, 3)})}"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S4.conjugacy_classes()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The normalizar of a subgroup $H$ ($\\{g\\in G\\mid gH=Hg\\}$) can be computed with `normalizer`."
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Group with 24 elements"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A4.normalizer()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And the center (the set of elements that commute with all the elements in $G$) with `center`."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Group with 1 elements"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S4.center()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Quaternions and the Klein group"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"['1', 'i', 'k', 'j', '-i', '-k', '-j', '-1']"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q2=QuaternionGroup()\n",
"list(Q2)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Group with 2 elements"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q2.center()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Klein group can be represented as $\\mathbb{Z}_2\\times \\mathbb{Z}_2$ or as a subgroup of $A_4$ (and thus of $S_4$)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"K=KleinGroup()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(0, 0), (0, 1), (1, 0), (1, 1)]"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(K)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[( ), (1, 4)(2, 3), (1, 3)(2, 4), (1, 2)(3, 4)]"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(KleinGroup(\"permutations\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is well known that the quaternions modulo its center yield the Klein group."
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"Q=Q2/Q2.center()"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q.is_cyclic()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Q.is_isomorphic(K)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Groups of units\n",
"The group of units (wrt multiplication) of $\\mathbb{Z}_n$ is constructed as follows."
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<head><style>\n",
"table, th, td {border: 1px solid black;\n",
" border-collapse: collapse;}\n",
" th, td {padding: 15px;}</style></head><p/>\n",
" <table>\n",
" <tr> <td bgcolor='White'> * </td> <td bgcolor=Red>1</td> <td bgcolor=Yellow>5</td> </tr>\n",
"<tr> <td bgcolor=Red> 1 </td> <td bgcolor=Red>1</td> <td bgcolor=Yellow>5</td></tr>\n",
" <tr> <td bgcolor=Yellow> 5 </td> <td bgcolor=Yellow>5</td> <td bgcolor=Red>1</td></tr>\n",
" </table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G=GroupOfUnitsModInt(6)\n",
"G.table()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Drawing the lattice of subgroups\n",
"We first load the modules and functions needed to draw."
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from IPython.display import Image\n",
"import graphviz as gv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we define a graph, and the group. The vertices of the graph will be the subgroups of the given group."
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"g1=gv.Graph(format='png')\n",
"G=SymmetricGroup(3)\n",
"sbs_d=G.subgroups()\n",
"sbs=[H for j in sbs_d.keys() for H in sbs_d[j]] \n",
"for g in sbs:\n",
" g1.node(str(list(g)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we select the edges of our graph and add them to the graph."
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"edges=[(a,b) for a in sbs for b in sbs if (b <= a) and (a!=b)]\n",
"g1.node_attr={'shape':'rectangle',}\n",
"for e in edges:\n",
" g1.edge(str(list(e[0])),str(list(e[1])))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally we draw the graph using `graphviz`."
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"png_str = g1.render()\n",
"Image(data=png_str)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now with $\\mathbb{Z}_4\\times \\mathbb{Z}_3$"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G=CyclicGroup(4).cartesian(CyclicGroup(3))\n",
"g1=gv.Graph(format='png')\n",
"sbs_d=G.subgroups()\n",
"sbs=[H for j in sbs_d.keys() for H in sbs_d[j]] \n",
"for g in sbs:\n",
" g1.node(str(list(g)))\n",
"edges=[(a,b) for a in sbs for b in sbs if (b <= a) and (a!=b)]\n",
"g1.node_attr={'shape':'rectangle',}\n",
"for e in edges:\n",
" g1.edge(str(list(e[0])),str(list(e[1])))\n",
"png_str = g1.render()\n",
"Image(data=png_str)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or we can draw the Cayley graph of $S_3$ with respect to $(1,2,3)$ and $(2,3)$"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G=SymmetricGroup(3)\n",
"g1=gv.Digraph(format='png',engine='circo')\n",
"p=G(permutation([1,3,2]))\n",
"q=G(permutation([2,3,1]))\n",
"vertices=[repr(a) for a in G]\n",
"for v in vertices:\n",
" g1.node(v)\n",
"edges1=[(repr(a),repr(b)) for a in G for b in G if b==a*p]\n",
"for e in edges1:\n",
" g1.edge(e[0],e[1],\"p\",_attributes={'color':'red'})\n",
"edges2=[(repr(a),repr(b)) for a in G for b in G if b==a*q]\n",
"for e in edges2:\n",
" g1.edge(e[0],e[1],\"q\",_attributes={'color':'blue'})\n",
"png_str = g1.render()\n",
"Image(data=png_str)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment