This
article discusses an approach for developing computer software suited
to exploration and experimentation. This approach provides an
environment very congenial for prototyping, experimenting with new
algorithms for research, and testing ideas for instructional software.
The idea is to provide a mathematician with tools for creating a
specialized language tailored for work in a specific area or problem
together with an interactive software system. A rudimentary
language and skeleton system are produced first. In response to the needs of the work,
flesh is added to the skeleton and the language becomes more fully
developed. A special-purpose system, therefore, evolves as it
is used. The most important characteristics of such systems are
their interactive nature, extensibility, ease in modification, and
flexibility.
It is difficult to convey by description what it feels like to use an
approach. It is necessary to provide experience. This is an electronic
article which illustrates the evolutionary
approach using Groups32. The article blends text
exposition with access to computer software. Two versions of Groups32
are available for downloading: an early version (1990) and a recent
version (2000). The article discusses these and the
transitional steps.
This approach makes use of a language, Forth, suited for creating application-
oriented languages. Forth provides an interactive development
environment yet it
can produce software comparable in speed to that produced using
conventional compiled languages. It is suited for easily creating
extensible interactive systems. It is intended that this approach be
useful for a working mathematician. Forth is simple and easy to learn. An
introduction to Forth is included in the article together with a Forth
development system.
Evolution of Groups32
Groups32
is a typical example of a software system which evolved. It was
originally created to solve a particular problem: find a quick
way to
determine whether two small groups (order 1-16) are isomorphic.
Eventually it was extended to incorporate groups of orders 1-32 and
offered a variety of useful commands.
Reviewers of the early version suggested developing Groups32 as an
instructional program. This led to adding features
which made it suitable for testing ideas for instructional
software.
Abstract Algebra is a theoretical subject stressing proofs. The goal is
to integrate use of software into a traditional course rather than
build a course around the use of software. The
guidelines are:
1. The software should be easy and quick to use.
2. The software should be accessible.
3. The software should be useful in a traditional course.
4. The software should enhance thinking ability.
During classroom
tests, Groups32 was made available in a networked computer lab --
allowing changes to be made during the course. Eventually Groups32
was made available on the Internet. This allows students to use it at
home, independent of their platform.
A complete article on the development of Groups32 now appears as
“Evolution of a Computer Application” in JOMA vol 3 (September 2003).
JOMA article preprint (pdf)
To access Groups32 over the Internet see the Groups32 webpage.
A preprint is available of an article On Using Groups32 in Instruction. The article in final form appears in the July/August 2004 issue of International
Journal of Mathematical Education in Science and Technology (IJMEST) vol. 35 no 4 (2004), 475-485.
Groups32 - IDENTIFY command
A new IDENTIFY command has been added on an experimental basis. The user is prompted for a group number. The program
computes information which allows it to uniquely identify the group (up to isomorphism).
The
IDENTIFY command also computes a smallest generating set and
permutation representations for these generators. Note
that the permutation comes from left multiplication by the
generator -- and gives the Cayley embedding of a group of order n in Sn. The command also gives the description of
the group as a member of the Small Group Library which was added to the most recent version of GAP (version 4r4) in 2002.
This
command is most useful for identifying groups that have been imported
(for example, a permutation group generated by
the PERMGRP subpackage and installed as group 1). It also will be
helpful for those who would like to use facilities of GAP to further
investigate a particular group.
EXAMPLES:
G3>> IDENTIFY Group Number 9
G32 number: 9 Order: 7
GAP SmallGroup(7,1)
Generators:
B = (1 2 3 4 5 6 7 )
G9>> IDENTIFY Group Number 8
G32 number: 8 Order: 6
GAP SmallGroup(6,1)
Generators:
B = (1 2 3 )(4 6 5 )
D = (1 4 )(2 5 )(3 6 )