Name(s):

Exploring Abstract Algebra with Mathematica
Al Hibbard and Ken Levasseur
© Copyright 1998 Springer-Verlag New York, Inc.

Group Lab 8
Isomorphisms

8.0 Note regarding Exploring Abstract Algebra with Mathematica

This lab is intended to supplement an abstract algebra course. It is part of a series of labs and packages under the name Exploring Abstract Algebra with Mathematica, a joint project by Al Hibbard (Central College) and Ken Levasseur (UMass-Lowell). This is also the title of a book published by TELOS/Springer Verlag that contains this lab. This book includes labs for group theory, labs for ring theory, and a users guide with printed and electronic documentation.

For more information on the Exploring Abstract Algebra with Mathematica project, go to our web site at http://www.central.edu/eaam.html. This site is also mirrored at http://www.uml.edu/Dept/Math/eaam/eaam.html. There you will find the latest versions of the packages in AbstractAlgebra, the latest palettes available to supplement AbstractAlgebra, and other related resources.

You may also contact either of the authors:

Al Hibbard
Central College
Pella, IA 50219
hibbarda@central.edu

Ken Levasseur
UMass Lowell
Lowell, MA
01854
Kenneth_Levasseur@uml.edu

Last revision: April 25, 1998

© Copyright 1998 Springer-Verlag New York, Inc.

8.1 Prerequisites

To complete this lab, you should be familiar enough with the basic properties of groups to be able to compare the various pairs of groups that you will be asked to examine. No previous labs are necessary.

8.2 Goals

This lab explores the notion of isomorphisms. First we define an isomorphism and then we see how one can be constructed. Next we explore when two groups are isomorphic.

8.3 What is an isomorphism?

Before beginning, we read in the necessary code for this lab.

Needs["AbstractAlgebra`Master`"] ;

SwitchStructureTo[Group] ;

Let’s consider two groups, G_1 and G_2.

Clear[G]

G_1 = U[10]

G_2 = Z[4]

An important question in abstract algebra (and in mathematics in general) is “When are two objects the ‘same’ by some appropriate measurement?” In this case, are groups G_1 and G_2 the same? Clearly they have different elements and different operations, so they are not identical. They do, however, both have four elements and in this way they are the same. Therefore, we can construct a one-to-one, onto function (bijection) from G_1 to G_2. In fact, there are 24 different ways of setting up such functions.

Q1. Explain how one comes up with 24 different bijections from G_1 to G_2. How many functions (bijections or not) are there from G_1 to G_2?

Answer:

If we consider only the number of elements (four in each, in our case), we ignore a large portion of the richness of groups and we ignore the operation altogether. Since each group has a special element, the identity, it may be reasonable to want to match these up.

GroupIdentity[G_1]

GroupIdentity[G_2]

Thus, if we want to define a function f:G_1G_2 that somehow illustrates “sameness,” we might want to define f(1)=0.

Clear[f]

f[1] = 0

Q2. With this assumption, how many different bijections are there from G_1 to G_2?

Answer:

We need three more matches to make a bijection. Consider the element 3 in G_1. To what should it be mapped? Is there any special property related to 3 that should also exist with the element in G_2 to which it will be mapped? What about the order of 3?

OrderOfElement[G_1, 3]

It would seem reasonable to want to map 3 to an element in G_2 of the same order. What are the orders of the elements in G_2?

OrderOfAllElements[G_2]

If the output is not clear, ask about the function:

? OrderOfAllElements

So we see that the two elements 1 and 3 in G_2 both have order 4. (Of course, you may have already known this; we are illustrating a general process we might take.) Suppose we map 3 in G_1 to 1 in G_2.

f[3] = 1

Q3. With this assumption, now how many different bijections are there from G_1 to G_2?

Answer:

Since we are mapping 3 to 1, it might be reasonable to map the inverse of 3 in G_1 to the inverse of 1 in G_2. (Again, you should already know the results of the following; we are illustrating a general procedure.)

GroupInverse[G_1, 3]

GroupInverse[G_2, 1]

So we map 7 in G_1 to 3 in G_2.

f[7] = 3

Since |g|=(| g)^(-1)|, we know that the orders in this assignment match. The two remaining elements are put together by default.

f[9] = 2

Do the orders match in this case?

OrderOfElement[G_1, 9]

OrderOfElement[G_2, 2]

Indeed. If all we care about is whether orders match up, we are done and we might call these two groups the same. There might be other issues to consider, however. In G_1, when we multiply 7 by 9 we get 3.

Clear[op]

op_1 = Operation[G_1] ;

op_1[7, 9]

Let’s review our definition of f:

? f

We see that 7 is mapped to 3 and 9 is mapped to 2. What happens if we add 3 (the image of 7) and 2 (the image of 9) in G_2? Surely we get 1.

op_2 = Operation[G_2] ;

op_2[3, 2]

More important, observe that 1=3+2=f(7)+f(9) but also 1=f(3)=f(7*9). In other words,

f(7*9)=f(7)+f(9).

Note that on the left-hand side, the operation inside the parentheses is taking place inside G_1 (the domain of f), while the operation on the right-hand side is taking place inside G_2. In this case, we say f is “operation preserving” for the elements 7 and 9. What about other pairs? We can make a table and check all possibilities:

els = Elements[G_1]

Table[f[op_1[els[[i]], els[[j]]]] == op_2[f[els[[i]]], f[els[[j]]]], {i, 4}, {j, 4}]

Or if you want to see more details:

ListOperationPreservingElements[f, G_1, G_2]

This shows that the function f is operation preserving for all the elements in G_1. This is when algebraists are satisfied with calling two groups G_1 and G_2 the same: there exists a bijection f:G_1G_2 that is operation-preserving in the sense that

f(x*y)=f(x)*f(y)

for all elements x and y in G_1 (with the understanding that on the left-hand side the operation taking place between x and y is the operation in G_1 and the operation taking place on the right-hand side between f(x) and f(y) is taking place in G_2). In such a case, the two groups are said to be isomorphic and the defining function f is said to be an isomorphism.

Q4. Change G_1 to U_8 and determine whether U_8 and _4 are isomorphic. If so, provide the isomorphism; if not, indicate why not. (Clear[f] before beginning.)

Answer:

8.4 Creating Morphoids

In previous labs, we have used a structure called a Groupoid when we worked with groups. Now we use a structure called a Morphoid to work with morphisms, including homomorphisms and isomorphisms. Recall from the previous section that an isomorphism f between two groups is a bijective (one-to-one and onto) mapping such that f(x*y)=f(x)*f(y) for all elements x and y in the domain. If we relax the condition that f is bijective and require only the “operation-preserving” part, we have a homomorphism. A Morphoid is a structure that has the potential of being a homomorphism (and therefore potentially also an isomorphism).

Recall that our function f was defined as follows.

Clear[f]

f[1] = 0 ;

f[3] = 1 ;

f[7] = 3 ;

f[9] = 2 ;

We can use FormMorphoid to create a Morphoid based on f.

func1 = FormMorphoid[f, U[10], Z[4]]

Alternatively we can set up a list of rules that are equivalent to f.

rules = Map[Rule[#, f[#]] &, Elements[U[10]]]

The FormMorphoid function can also handle a list of rules to create a Morphoid.

func1alt = FormMorphoid[rules, U[10], Z[4]]

The two Morphoids func1 and func1alt appear to be different, but they are really the same. Morphoids can be defined either by a list of rules or a function. If the underlying correspondences between the elements of the Groupoids are the same, the Morphoids are considered to be equal.

EqualMorphoidQ[func1, func1alt]

We already know that func1 is an isomorphism. Let’s set this knowledge aside for the moment (for the sake of learning how to use some of the available tools in situations where we don’t know if we have an isomorphism). What we want to know is whether, for any given pair of elements in G_1, the operations are preserved?

First we will take a specific pair, 9 and 3.

PreservesQ[func1, {9, 3}, Mode→Visual]

In this case, we see that f(9*3) does equal f(9)+f(3), since 9*3 is 7 in G_1 and the image of 7 is 3, which happens to be the sum of 2 (the image of 9) and 1 (the image of 3). Note that the operation in G_1 is multiplication (hence, *), whereas it is addition in G_2 (and so + is used).

Lets pick two random elements and check out whether the operations of G_1 and G_2 are preserved under the Morphoid func1 (based on f).

{g, h} = RandomElements[G_1, 2]

PreservesQ[func1, {g, h}, Mode→Visual]

Q5. Evaluate the two lines of code again several times. Do you find any case where the operations were not preserved? Why or why not?

Answer:

Note that PreservesQ is used when one wishes to explore whether a function is operation preserving for a particular pair of elements. More generally, we are interested in doing this for all possible pairs. The function MorphismQ does this for us. Here we use it in the Visual mode; pairs that are preserved are colored at their point of intersection in the table.

MorphismQ[func1, Mode→Visual]

We can also check to see if func1 is an isomorphism as well as a homomorphism.

IsomorphismQ[func1]

In case one begins to think that having a homomorphism happens naturally, lets take a look at an example where not all the elements preserve the operation. We define a Morphoid func2 that has _4 as its domain and _5 for its codomain, and the rule to get from the domain to the codomain is to take an element from _4, add 1, and then reduce this result mod 5.

func2 = FormMorphoid[Mod[#1 + 1, 5] &, Z[4], Z[5]]

Now let’s check out which elements preserve the operations.

MorphismQ[func2, Mode→Visual]

We see that some do and some do not. In particular, since the entry at the intersection of the row headed by 1 and the column headed by 2 is not colored, func2 is not operation-preserving for the pair (1,2). Let’s look at this in detail.

PreservesQ[func2, {1, 2}, Mode→Visual]

Q6. Explain in your own words how and why this failed. Why were the operations not preserved?

Answer:

As you work with homomorphisms in greater detail, you will learn about the kernel and the image of a homomorphism. For the two Morphoids created here, we illustrate how to obtain the kernel and image.

K_1 = Kernel[func1]

I_1 = Image[func1]

K_2 = Kernel[func2]

I_2 = Image[func2]

The operations of these Groupoids are as follows.

Map[Operation, {K_1, I_1, K_2, I_2}]

Q7. Which of the four (the two kernels and the two images) are groups? Justify your answer.

Answer:

8.5 Seeing isomorphisms

Often, by looking at appropriate data, one can almost literally “see” an isomorphism at hand. Here we look at some examples.

8.5.1 Example 1

Consider the example with which we first started.

G_1 = U[10]

G_2 = Z[4]

Let’s look at the Cayley tables of these two groups.

CayleyTable[{G_1, G_2}, Mode→Visual] ;

We have shown that these two groups were isomorphic. Shouldn’t their Cayley tables be identical? Think about why they are not. Perhaps if we ordered the elements in the second table in the order corresponding to the first (via our isomorphism), we might obtain different results.

CayleyTable[{{G_1}, {G_2, TheSet→ {0, 1, 3, 2}}}, Mode→Visual] ;

This looks better. Now the isomorphism is clear.

8.5.2 Example 2

We now consider U_10 and another group of order four.

G_1 = U[10]

G_2 = U[12]

Are these two isomorphic?

CayleyTable[{G_1, G_2}, Mode→Visual] ;

Certainly the two tables do not look alike, but we know that this does not necessarily mean that the two groups are not isomorphic. Below we rearrange the elements of U_10.

CayleyTable[{{G_1, TheSet→ {1, 9, 3, 7}}, {G_2}}, Mode→Visual] ;

Q8. Try other arrangements for the elements in U_10 until you show that the two groups are isomorphic or conclude that they are not isomorphic. If they are isomorphic, describe how the isomorphism map works; if they are not isomorphic, explain why not.

Answer:

8.5.3 Example 3

We now consider the group D_2 and its Cayley table.

G_1 = Dihedral[2]

CayleyTable[G_1, Mode→Visual] ;

We have seen several other groups of order four. Find one that is isomorphic to D_2. Define it and then show the Cayley tables side by side.

G_2 =

CayleyTable[{G_1, G_2}, Mode→Visual]

If the elements in G_2 are not arranged to properly reflect the isomorphism, do so below.

CayleyTable[{{G_1}, {G_2, TheSet→ {}}}, Mode→Visual]

Q9. What is the other group to which D_2 is isomorphic and what are the details of the isomorphism? (Specify which elements are mapped to which.)

Answer:

8.5.4 Example 4

Following are several groups of order six.

Are any of these isomorphic to one another? Here are some tools you may wish to use.

CayleyTable[{G_1, G_2, G_3, G_4, G_5, G_6}, Mode→Visual] ;

(* After evaluating this, you may wish to enlarge the graphic by selecting it and then dragging from a corner . *)

AbelianQ[{G_1, G_2, G_3, G_4, G_5, G_6}]

CyclicQ[{G_1, G_2, G_3, G_4, G_5, G_6}]

TableForm[OrderOfAllElements[{G_1, G_2, G_3, G_4, G_5, G_6}], TableDepth→1]

OrderOfAllElements[{G_1, G_2, G_3, G_4, G_5, G_6}, Mode→Textual] ;

? GroupCenter

Map[GroupCenter, {G_1, G_2, G_3, G_4, G_5, G_6}]//ColumnForm

? CommutatorSubgroup

Map[Elements[CommutatorSubgroup[#]] &,  {G_1, G_2, G_3, G_4, G_5, G_6}]//ColumnForm

Q10. If groups H_1 and H_2 are isomorphic, we denote this by H_1=H_2. For every pair (G_i,G_j) of groups in {G_1,G_2,G_3,G_4,G_5,G_6}, determine whether G_i=G_j. Note: There are “six-choose-two”(

6
2
)— such pairs to consider.

Answer:

Q11. You probably found that D_3 was isomorphic to at least one of the other groups. Below, we use the variable otherGroup to denote the group you had in mind; change G_4 to the group you have in mind and evaluate the following cell. You now see the list of elements in your chosen group. Between the {} on the right-hand side of orderedElementsOfOtherGroup, place the elements of your chosen group matched up according to the elements of D_3. After double-checking your ordering, evaluate the cell and the cell that defines the rules for this isomorphism, as well as the Morphoid f itself. Now use the tools illustrated earlier and verify that f is indeed an isomorphism (assuming that you correctly found an isomorphic group).

Answer:

otherGroup = G_4

Elements[otherGroup]

Elements[Dihedral[3]]

orderedElementsOfOtherGroup = {}

rules = Transpose[{Elements[Dihedral[3]], orderedElementsOfOtherGroup}]/.{x_, y_} :>x→y

f = FormMorphoid[rules, Dihedral[3], otherGroup]

Q12. Consider the set H={1,Rot,Rot^2}, which is a subgroup of D_3. What is the image of H under f? (You may wish to use the following line.) Is this also a subgroup of the image of D_3?

Answer:

Image[f, {1, Rot, Rot^2}]

8.6 Mathematica commands used in this lab

If you wish to learn more about how to use the Mathematica commands or functions used in this lab, type ? followed by the command. Following are some functions used in this lab that may be useful for later work.

?GroupIdentity

?OrderOfElement

?OrderOfAllElements

?GroupInverse

?Operation

?Elements

?FormMorphoid

?EqualMorphoidQ

?PreservesQ

?RandomElements

?MorphismQ

?IsomorphismQ

?Kernel

?Image

?CayleyTable

?TheSet

?Symmetric

?DirectSum

?AbelianQ

?CyclicQ

?GroupCenter

?CommutatorSubgroup


Created by Mathematica  (June 14, 2006) Valid XHTML 1.1!