~ubuntu-branches/debian/squeeze/maxima/squeeze

« back to all changes in this revision

Viewing changes to doc/info/Groups.texi

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2006-10-18 14:52:42 UTC
  • mto: (1.1.5 upstream)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20061018145242-vzyrm5hmxr8kiosf
ImportĀ upstreamĀ versionĀ 5.10.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
@c end concepts Groups
 
1
 
2
2
@menu
3
 
* Definitions for Groups::      
 
3
* Definitions for Groups::
4
4
@end menu
5
5
 
6
6
@node Definitions for Groups,  , Groups, Groups
7
7
@section Definitions for Groups
8
 
@c @node TODD_COXETER
9
 
@c @unnumberedsec phony
10
 
@defun TODD_COXETER (relations,subgroup)
11
 
 
12
 
Find the order of G/H where G is the Free Group modulo RELATIONS, and
13
 
H is the subgroup of G generated by SUBGROUP.  SUBGROUP is an optional
 
8
 
 
9
@deffn {Function} todd_coxeter (@var{relations}, @var{subgroup})
 
10
@deffnx {Function} todd_coxeter (@var{relations})
 
11
 
 
12
Find the order of G/H where G is the Free Group modulo @var{relations}, and
 
13
H is the subgroup of G generated by @var{subgroup}.  @var{subgroup} is an optional
14
14
argument, defaulting to [].  In doing this it produces a
15
15
multiplication table for the right action of G on G/H, where the
16
 
cosets are enumerated [H,Hg2,Hg3,...]  This can be seen internally in
17
 
the $todd_coxeter_state.  The multiplication tables for the variables
18
 
are in table:todd_coxeter_state[2] Then table[i] gives the table for
19
 
the ith variable.  mulcoset(coset,i) := table[varnum][coset];
 
16
cosets are enumerated [H,Hg2,Hg3,...].  This can be seen internally in
 
17
the @code{$todd_coxeter_state}.
 
18
 
 
19
The multiplication tables for the variables are in
 
20
@code{table:todd_coxeter_state[2]}.  Then @code{table[i]} gives the table for
 
21
the ith variable.  @code{mulcoset(coset,i) := table[varnum][coset];}
20
22
 
21
23
Example:
22
24
 
 
25
@c ===beg===
 
26
@c symet(n):=create_list(
 
27
@c         if (j - i) = 1 then (p(i,j))^^3 else
 
28
@c             if (not i = j) then (p(i,j))^^2 else
 
29
@c                 p(i,i) , j, 1, n-1, i, 1, j);
 
30
@c p(i,j) := concat(x,i).concat(x,j);
 
31
@c symet(5);
 
32
@c todd_coxeter(%o3);
 
33
@c todd_coxeter(%o3,[x1]);
 
34
@c todd_coxeter(%o3,[x1,x2]);
 
35
@c table:todd_coxeter_state[2]$
 
36
@c table[1];
 
37
@c ===end===
23
38
@example
24
 
(%i1) symet(n):=create_list(if (j - i) = 1 then (p(i,j))^^3 else
25
 
     if (not i = j) then (p(i,j))^^2 else p(i,i) , j,1,n-1,i,1,j);
26
 
                                                      <3>
27
 
(%o1) SYMET(N) := CREATE_LIST(IF J - I = 1 THEN P(I, J)
28
 
 
29
 
                               <2>
30
 
 ELSE (IF NOT I = J THEN P(I, J)
31
 
 ELSE P(I, I)), J, 1, N - 1, I, 1, J)
32
 
(%i2) p(i,j) :=concat(x,i).concat(x,j);
33
 
(%o2)                P(I, J) := CONCAT(X, I) . CONCAT(X, J)
 
39
(%i1) symet(n):=create_list(
 
40
        if (j - i) = 1 then (p(i,j))^^3 else
 
41
            if (not i = j) then (p(i,j))^^2 else
 
42
                p(i,i) , j, 1, n-1, i, 1, j);
 
43
                                                       <3>
 
44
(%o1) symet(n) := create_list(if j - i = 1 then p(i, j)
 
45
 
 
46
                                <2>
 
47
 else (if not i = j then p(i, j)    else p(i, i)), j, 1, n - 1, 
 
48
 
 
49
i, 1, j)
 
50
(%i2) p(i,j) := concat(x,i).concat(x,j);
 
51
(%o2)        p(i, j) := concat(x, i) . concat(x, j)
34
52
(%i3) symet(5);
35
 
                        <3>                    <2>           <3>
36
 
(%o3) [X1 . X1, (X1 . X2)   , X2 . X2, (X1 . X3)   , (X2 . X3)   , 
 
53
         <2>           <3>    <2>           <2>           <3>
 
54
(%o3) [x1   , (x1 . x2)   , x2   , (x1 . x3)   , (x2 . x3)   , 
37
55
 
38
 
                      <2>                <2>           <3>
39
 
X3 . X3,     (X1 . X4)   , (X2 . X4)   , (X3 . X4)   , X4 . X4]
 
56
            <2>           <2>           <2>           <3>    <2>
 
57
          x3   , (x1 . x4)   , (x2 . x4)   , (x3 . x4)   , x4   ]
40
58
(%i4) todd_coxeter(%o3);
41
59
 
42
60
Rows tried 426
43
 
(%o4)                                 120
 
61
(%o4)                          120
44
62
(%i5) todd_coxeter(%o3,[x1]);
45
63
 
46
64
Rows tried 213
47
 
(%o5)                                 60
 
65
(%o5)                          60
48
66
(%i6) todd_coxeter(%o3,[x1,x2]);
49
67
 
50
68
Rows tried 71
51
 
(%o6)                                 20
 
69
(%o6)                          20
52
70
(%i7) table:todd_coxeter_state[2]$
53
 
(%i8) table:todd_coxeter_state[2]$
54
 
(%i9) table[1];
55
 
(%o9) @{Array: FIXNUM #(0 2 1 3 7 6 5 4 8 11 17 9 12 14 13 20
56
 
           16 10 18 19 15 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0)@}
 
71
(%i8) table[1];
 
72
(%o8) @{Array: (SIGNED-BYTE 30) #(0 2 1 3 7 6 5 4 8 11 17 9 12 14 #
 
73
 
 
74
13 20 16 10 18 19 15 0 0 0 0 0 0 0 0 0 0 0 0
 
75
 
 
76
  0 0 0)@}
 
77
 
57
78
@end example
58
79
 
59
 
Note only the elements 1 thru 20 of this array %o9  are meaningful.
60
 
table[1][4] = 7 indicates coset4.var1 = coset7
61
 
 
62
 
 
63
 
 
64
 
@end defun
 
80
Note only the elements 1 thru 20 of this array @code{%o8} are meaningful.
 
81
@code{table[1][4] = 7} indicates coset4.var1 = coset7
 
82
 
 
83
@end deffn
 
84