diff options
author | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
commit | ab8cc85adde879fb963c94d15675783f2cf4b183 (patch) | |
tree | c202482327f474583b750b2c45dedfc4e4312b1d /src/input/perm.input.pamphlet | |
download | open-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz |
Initial population.
Diffstat (limited to 'src/input/perm.input.pamphlet')
-rw-r--r-- | src/input/perm.input.pamphlet | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/src/input/perm.input.pamphlet b/src/input/perm.input.pamphlet new file mode 100644 index 00000000..503c5c91 --- /dev/null +++ b/src/input/perm.input.pamphlet @@ -0,0 +1,185 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/input perm.input} +\author{The Axiom Team} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +\section{License} +<<license>>= +--Copyright The Numerical Algorithms Group Limited 1991. +@ +<<*>>= +<<license>> + +)clear all + +-- This file demonstrates some of the new routines for permutations +-- in AXIOM. ( Last change: 05/16/89 by HWG ) +-- (J. Grabmeier: adjusted to new concept: 08/07/89) +-- (M. Weller : adjusted to 1..: 03/29/90) +-- (J. Grabmeier : adjusted to new algebra 05/14/90) + +-- Permutations can act on every set, finite or infinite. +-- Usually permutations are given as a product of cycles, +-- so the following generates a permutation acting on some +-- elements of GF(29): + +x : List List PrimeField 29 := + [[23,19,7,9,12,11,15],[22,4,14,18,2,5,8],[21,20,10,16,13,6,17]] +px : PERM PrimeField 29 := x + +-- If the permutation consists of just one cycle, you can use the +-- function "cycle" instead of "coerce": + +w : List PrimeField 29 := + [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] +pw : PERM PrimeField 29 := cycle w + +-- For a product of cycles there is also the function "cycles": + +k : List List PrimeField 29 := + [[23,24],[22,16],[21,9],[20,19],[18,12],[17,14],[15,7],[10,6]] +pk : PERM PrimeField 29 := cycles k + +-- Since these permutations generate a group, you can +-- perform various operations on px, pw and pk. +-- You may have to be careful, because permutations are viewed +-- as mappings acting on the left, so (pw*pk)(7) = pw(pk(7)). +-- Here are some examples: + +pw*pk +px**3 + +-- You can ask for inverses: + +inv px + +-- or for the image of some element under a special permutation: + +eval(px,17::PrimeField(29)) + +-- you may try to build commutators: + +commutator(pk,pw) + +-- which is the same as inv(pk) * inv(pw) * pk * pw + +-- You can also ask for the orbit of some element under a permutation: + +orbit(px,11::PrimeField(29)) + +-- or for the elements of the underlying set, which are permuted +-- by a given permutation: + +movedPoints(pk) + +-- Now we take a short look on permutation groups. +-- They are represented as a list of generating permutations: + +gp1 : PERMGRP PrimeField 29 := [ px , pk ] +gp2 : PERMGRP PrimeField 29 := [ pw , px ] +gp3 : PERMGRP PrimeField 29 := [ pw , pk ] + +-- and we can ask for their orders: + +order gp1 +order gp2 +order gp3 + +-- In fact these are the Mathieu-groups M_22, M_23 and M_24. + +-- now a more sophisticated example +-- The following matrices generate the general linear group GL(3,2): + +(m1,m2,m3,m4): Matrix PrimeField 2 +m1 := [[1,1,0],[0,1,0],[0,0,1]] +m2 := [[1,0,0],[0,1,1],[0,0,1]] +m3 := [[1,0,0],[1,1,0],[0,0,1]] +m4 := [[1,0,0],[0,1,0],[0,1,1]] + +-- and these matrices act on the non-zero vectors of the +-- corresponding vector space + +vl : List Vector PrimeField 2 +vl := [[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]] + +-- Now we can write down the action of our matrices on this list vl +-- as a list of pairs + +ll1 : List List Vector PrimeField 2 := + [ [ vl.i , m1*(vl.i) ] for i in 1..7 ] +ll2 : List List Vector PrimeField 2 := + [ [ vl.i , m2*(vl.i) ] for i in 1..7 ] +ll3 : List List Vector PrimeField 2 := + [ [ vl.i , m3*(vl.i) ] for i in 1..7 ] +ll4 : List List Vector PrimeField 2 := + [ [ vl.i , m4*(vl.i) ] for i in 1..7 ] + +-- and we can coerce these lists to permutations + +el1 : PERM Vector PrimeField 2 := coerceListOfPairs ll1 +el2 : PERM Vector PrimeField 2 := coerceListOfPairs ll2 +el3 : PERM Vector PrimeField 2 := coerceListOfPairs ll3 +el4 : PERM Vector PrimeField 2 := coerceListOfPairs ll4 + +-- Now we can do the same operations as before, e.g. + +eval ( el3 , vl.5 ) +el2 * el1 +movedPoints el4 + +-- Let's built the general linear group now + +gl : PERMGRP Vector PrimeField 2 := [ el1 , el2 , el3 , el4 ] + +-- and ask for its order + +order gl + +-- We can also ask for the orbit of the unordered set of vectors + +setOfVectors : Set Vector PrimeField 2 := brace [ vl.2 , vl.4 , vl.6 ] + +-- under gl + +orbit ( gl, setOfVectors ) + +-- and also for the orbit of the ordered list + +listOfVectors : List Vector PrimeField 2 := parts setOfVectors +orbit ( gl, listOfVectors ) + +-- Now Rubik's cube. + +f : PERM INT := cycles [[11,13,15,17],[12,14,16,18],[51,31,21,41],[53,33,23,43],_ + [52,32,22,42]] + +r : PERM INT := cycles [[21,23,25,27],[22,24,26,28],[13,37,67,43],[15,31,61,45],_ + [14,38,68,44]] + +-- Some calculation in Rubik's group: + +(f**2*r**2)**3 + +rc := rubiksGroup() + +order rc + +orbits rc + +-- Can we interchange just two pieces with two visible faces on the cube +-- and leave everything else fixed? + +member? (cycles([[12,14],[32,22]])$(PERM INT),rc) + +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |