1#############################################################################
2##
3#W resolutionAccess_LargeGroupRep.gd 			 HAPcryst package		 Marc Roeder
4##
5##
6
7##
8##
9#Y	 Copyright (C) 2006 Marc Roeder
10#Y
11#Y This program is free software; you can redistribute it and/or
12#Y modify it under the terms of the GNU General Public License
13#Y as published by the Free Software Foundation; either version 2
14#Y of the License, or (at your option) any later version.
15#Y
16#Y This program is distributed in the hope that it will be useful,
17#Y but WITHOUT ANY WARRANTY; without even the implied warranty of
18#Y MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19#Y GNU General Public License for more details.
20#Y
21#Y You should have received a copy of the GNU General Public License
22#Y along with this program; if not, write to the Free Software
23#Y Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24##
25#############################################################################
26##
27##  This file defines a representation for HapResolutions of lrge groups.
28##
29##  Elements of the modules in these resolutions are integer- group element
30##  pairs.
31##
32##
33DeclareRepresentation("IsHapLargeGroupResolutionRep",
34        IsHapResolutionRep,
35        ["dimension2",
36         "boundary2"]
37        );
38
39HapLargeGroupResolution:=NewType(HapResolutionFamily,IsHapLargeGroupResolutionRep);
40
41
42#############################################################################
43##
44#O Dimension(<resolution>)
45##
46##  overload the Hap function using !.diension2
47##
48#DeclareOperation("Dimension",[IsHapLargeGroupResolutionRep]);
49
50
51#############################################################################
52##
53#O BoundaryMap(<resolution>)
54##
55##  overload the Hap function using !.boundary2
56##
57DeclareOperation("BoundaryMap",[IsHapLargeGroupResolutionRep]);
58
59
60#############################################################################
61##
62#O MultiplyGroupEltsNC(<resolution>,<x>,<y>)
63#O MultiplyGroupEltsNC_LargeGroupRep(<resolution>,<x>,<y>)
64##
65##  catch, convert, delegate, convert
66##
67DeclareOperation("MultiplyGroupEltsNC",
68        [IsHapLargeGroupResolutionRep,IsPosInt,IsPosInt]);
69DeclareOperation("MultiplyGroupEltsNC_LargeGroupRep",
70        [IsHapLargeGroupResolutionRep,IsObject,IsObject]);
71
72
73
74#############################################################################
75##
76#O MultiplyGroupElts_LargeGroupRep(<resolution>,<x>,<y>)
77##
78##  internal method for this representation.
79##
80DeclareOperation("MultiplyGroupElts_LargeGroupRep",
81        [IsHapLargeGroupResolutionRep,IsObject,IsObject]);
82
83#############################################################################
84##
85#O MultiplyGroupElts(<resolution>,<x>,<y>)
86##
87##  for x,y in other representations
88##
89DeclareOperation("MultiplyGroupElts",
90        [IsHapLargeGroupResolutionRep,IsObject,IsObject]);
91
92
93#############################################################################
94##
95#O StrongtestValidRepresentationForLetter(resolution,term,letter)
96##
97##  returns the strongest representation in which <letter> is a valid letter
98##  for <resolution>
99##
100DeclareOperation("StrongestValidRepresentationForLetter",
101        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
102
103
104#############################################################################
105##
106#O StrongtestValidRepresentationForWord(resolution,term,word)
107##
108##  returns the strongest representation in which <word> is a valid letter
109##  for <word>
110##
111DeclareOperation("StrongestValidRepresentationForWord",
112        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
113
114
115#############################################################################
116##
117#O ConvertStandardLetterNC(<resolution>,<term>,<letter>)
118#O ConvertStandardLetter(<resolution>,<term>,<letter>)
119##
120DeclareOperation("ConvertStandardLetterNC",
121        [IsHapResolutionRep,IsInt,IsDenseList]);
122DeclareOperation("ConvertStandardLetter",
123        [IsHapResolutionRep,IsInt,IsDenseList]);
124
125#############################################################################
126##
127#O ConvertStandardWordNC(<resolution>,<term>,<word>)
128#O ConvertStandardWord(<resolution>,<term>,<word>)
129##
130DeclareOperation("ConvertStandardWordNC",
131        [IsHapResolutionRep,IsInt,IsDenseList]);
132DeclareOperation("ConvertStandardWord",
133        [IsHapResolutionRep,IsInt,IsDenseList]);
134
135
136#############################################################################
137##
138#O ConvertLetterToStandardRepNC
139#O ConvertLetterToStandardRep
140##
141DeclareOperation("ConvertLetterToStandardRepNC",
142        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
143DeclareOperation("ConvertLetterToStandardRep",
144        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
145
146#############################################################################
147##
148#O ConvertLargeGroupRepWordToStandardRepNC
149#O ConvertLargeGroupRepWordToStandardRep
150##
151DeclareOperation("ConvertWordToStandardRepNC",
152        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
153DeclareOperation("ConvertWordToStandardRep",
154        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
155
156
157
158#############################################################################
159##
160#O IsFreeZGLetter_LargeGroupRep(<resolution>,<term>,<letter>)
161##
162## check if <letter> is a letter of the <term>th module of <resolution>.
163## A letter is a word of length 1.
164##
165##
166DeclareOperation("IsFreeZGLetter_LargeGroupRep",
167        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
168
169
170
171#############################################################################
172##
173#O IsFreeZGWord_LargeGroupRep(<resolution>,<term>,<word>)
174##
175## Check if <word> is an element of the <term>th module in <resolution>
176##
177##
178DeclareOperation("IsFreeZGWord_LargeGroupRep",
179        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
180
181
182#############################################################################
183##
184#O MultiplyFreeZGLetterWithGroupEltNC_LargeGroupRep(<resolution>,<letter>,<g>)
185##
186##  given a pair <letter> of positive integers which represent a generator-
187##  group element pair, this returns the letter multiplied with the group
188##  element <g>.
189##
190##
191DeclareOperation("MultiplyFreeZGLetterWithGroupEltNC_LargeGroupRep",
192        [IsHapLargeGroupResolutionRep,IsDenseList,IsObject]);
193
194
195#############################################################################
196##
197#O MultiplyFreeZGLetterWithGroupElt_LargeGroupRep(<resolution>,<letter>,<g>)
198#O MultiplyFreeZGLetterWithGroupElt(<resolution>,<letter>,<g>)
199##
200##  Check input for sanity and delegate to NC version
201##
202DeclareOperation("MultiplyFreeZGLetterWithGroupElt_LargeGroupRep",
203        [IsHapLargeGroupResolutionRep,IsDenseList,IsObject]);
204DeclareOperation("MultiplyFreeZGLetterWithGroupElt",
205        [IsHapLargeGroupResolutionRep,IsDenseList,IsObject]);
206
207
208
209#############################################################################
210##
211#O MultiplyFreeZGWordWithGroupEltNC_LargeGroupRep(<resolution>,<word>,<g>)
212##
213##  multiplies the word <word> with the group element <g>.
214##  No checks are performed.
215##
216DeclareOperation("MultiplyFreeZGWordWithGroupEltNC_LargeGroupRep",
217        [IsHapLargeGroupResolutionRep,IsDenseList,IsObject]);
218DeclareOperation("MultiplyFreeZGWordWithGroupEltNC",
219        [IsHapLargeGroupResolutionRep,IsDenseList,IsObject]);
220
221
222#############################################################################
223##
224#O MultiplyFreeZGWordWithGroupElt_LargeGroupRep(<resolution>,<word>,<g>)
225##
226##  Check input and delegate to NC version.
227##
228DeclareOperation("MultiplyFreeZGWordWithGroupElt_LargeGroupRep",
229        [IsHapLargeGroupResolutionRep,IsDenseList,IsObject]);
230DeclareOperation("MultiplyFreeZGWordWithGroupElt",
231        [IsHapLargeGroupResolutionRep,IsDenseList,IsObject]);
232
233
234#############################################################################
235##
236#O BoundaryOfFreeZGLetterNC(<resolution>,<term>,<letter>)
237#O BoundaryOfFreeZGLetterNC_LargeGroupRep(<resolution>,<term>,<letter>)
238##
239##  calculates the boundary of a letter in the <term>th module.
240##
241## catch, convert, delegate, convert
242##
243DeclareOperation("BoundaryOfFreeZGLetterNC",
244        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
245DeclareOperation("BoundaryOfFreeZGLetterNC_LargeGroupRep",
246        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
247
248
249
250#############################################################################
251##
252#O BoundaryOfFreeZGLetter_LargeGroupRep(<resolution>,<term>,<letter>)
253##
254##  checks input and delegates to NC version
255##
256DeclareOperation("BoundaryOfFreeZGLetter_LargeGroupRep",
257        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
258
259DeclareOperation("BoundaryOfFreeZGLetter",
260        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
261
262
263#############################################################################
264##
265#O BoundaryOfFreeZGWordNC_LargeGroupRep(<resolution>,<term>,<word>)
266##
267##  calculate the boundary of the element <word> of the <term>th module of the
268##  resolution <resolution>.
269##  No checks done.
270##
271DeclareOperation("BoundaryOfFreeZGWordNC_LargeGroupRep",
272        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
273
274
275
276#############################################################################
277##
278#O BoundaryOfFreeZGWord_LargeGroupRep(<resolution>,<term>,<word>)
279#O BoundaryOfFreeZGWord(<resolution>,<term>,<word>)
280##
281##  Check input and delegate to NC version.
282##
283DeclareOperation("BoundaryOfFreeZGWord_LargeGroupRep",
284        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
285DeclareOperation("BoundaryOfFreeZGWord",
286        [IsHapLargeGroupResolutionRep,IsInt,IsDenseList]);
287
288
289
290
291