File: resolutionAccess_SmallGroupRep.gi

package info (click to toggle)
gap-hapcryst 0.1.15-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,088 kB
  • sloc: xml: 1,475; javascript: 155; makefile: 118; sh: 3
file content (116 lines) | stat: -rw-r--r-- 3,906 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#############################################################################
##
#W resolutionAccess_SmallGroupRep.gi 			 HAPcryst package		 Marc Roeder
##
##  

##
##
#Y	 Copyright (C) 2006 Marc Roeder 
#Y 
#Y This program is free software; you can redistribute it and/or 
#Y modify it under the terms of the GNU General Public License 
#Y as published by the Free Software Foundation; either version 2 
#Y of the License, or (at your option) any later version. 
#Y 
#Y This program is distributed in the hope that it will be useful, 
#Y but WITHOUT ANY WARRANTY; without even the implied warranty of 
#Y MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
#Y GNU General Public License for more details. 
#Y 
#Y You should have received a copy of the GNU General Public License 
#Y along with this program; if not, write to the Free Software 
#Y Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
##
#############################################################################
##
##  This file implements a representation for HapResolutions of small groups.
##  
##  The additional feature of this representation is the multiplication
##  via a multiplication table.
##  Also, the list of group elements R!.elts is a set. So we can do binary
##  search occasionally.
##  
##  Elements of the modules in these resolutions are still pairs of integers.
##
##


#############################################################################
##
#O PositionInGroupOfResolutionNC(<resolution>,<g>)
#O PositionInGroupOfResolution(<resolution>,<g>)
## 
##  find the position in <resolution>'s partial list of group elements
##  <resolution!.elts>. If <g> is not contained in <resolution!.elts>, it is
##  added and the length of <resolution!.elts> is returned.
##
##  The SmallGroupRep is consistent. So we just catch.
##
InstallMethod(PositionInGroupOfResolutionNC, "For HapResolutions of small groups",
        [IsHapSmallGroupResolutionRep,IsObject],
        function(resolution,g)
    local   pos;
    return PositionSet(resolution!.elts,g);
end);

InstallMethod(PositionInGroupOfResolution, "For HapResolutions of small groups",
        [IsHapSmallGroupResolutionRep,IsObject],
        function(resolution,g)
    local   pos;
    if not g in GroupOfResolution(resolution)
       then
        Error("<g> is not in <resolution>'s group");
    fi;
    return PositionInGroupOfResolutionNC(resolution,g);
end);



#############################################################################
##
#O MultiplyGroupEltsNC(<resolution>,<x>,<y>)
##
##  catch the call and delegate to special method. No conversion needed.
##
InstallMethod(MultiplyGroupEltsNC,"for HapResolutions of small groups",
        [IsHapSmallGroupResolutionRep,IsPosInt,IsPosInt],
        function(resolution,x,y)    
    return resolution!.multtable[x][y];
end);





#############################################################################
#############################################################################
##
## NO "!"s allowed beyond this point
##
#############################################################################
#############################################################################




#############################################################################
## 
#O MultiplyFreeZGLetterWithGroupEltNC(<resolution>,<letter>,<g>)
##
##  given a pair <letter> of positive integers which represent a generator-
##  group element pair, this returns the letter multiplied with the group 
##  element <g>.
## 
##
InstallMethod(MultiplyFreeZGLetterWithGroupEltNC,"For HapResolutions of small groups",
        [IsHapSmallGroupResolutionRep,IsDenseList,IsPosInt],
        function(resolution,letter,g)
    local newgroupel;
    newgroupel:=MultiplyGroupEltsNC(resolution,letter[2],g);
    return [letter[1],PositionInGroupOfResolution(resolution,newgroupel)];
end);