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