|
| 1 | +# |
| 2 | +gap> START_TEST("wordrep.tst"); |
| 3 | + |
| 4 | +# |
1 | 5 | gap> f := FreeGroup(IsSyllableWordsFamily,4);; |
2 | 6 | gap> fam := FamilyObj(f.1); |
3 | 7 | <Family: "FreeGroupElementsFamily"> |
4 | 8 |
|
5 | 9 | # |
6 | | -gap> w8:=ObjByExtRep(fam,[1,1]); Is8BitsAssocWord(w8); |
7 | | -f1 |
| 10 | +gap> w8:=ObjByExtRep(fam,[1,1,2,-10,1,4]); Is8BitsAssocWord(w8); |
| 11 | +f1*f2^-10*f1^4 |
8 | 12 | true |
9 | 13 | gap> ExtRepOfObj(w8); |
10 | | -[ 1, 1 ] |
11 | | -gap> w16:=ObjByExtRep(fam,[1,2^10]); Is16BitsAssocWord(w16); |
12 | | -f1^1024 |
| 14 | +[ 1, 1, 2, -10, 1, 4 ] |
| 15 | +gap> w16:=ObjByExtRep(fam,[1,2^10,2,-10,1,4]); Is16BitsAssocWord(w16); |
| 16 | +f1^1024*f2^-10*f1^4 |
13 | 17 | true |
14 | 18 | gap> ExtRepOfObj(w16); |
15 | | -[ 1, 1024 ] |
16 | | -gap> w32:=ObjByExtRep(fam,[1,2^20]); Is32BitsAssocWord(w32); |
17 | | -f1^1048576 |
| 19 | +[ 1, 1024, 2, -10, 1, 4 ] |
| 20 | +gap> w32:=ObjByExtRep(fam,[1,2^20,2,-10,1,4]); Is32BitsAssocWord(w32); |
| 21 | +f1^1048576*f2^-10*f1^4 |
18 | 22 | true |
19 | 23 | gap> ExtRepOfObj(w32); |
20 | | -[ 1, 1048576 ] |
21 | | -gap> winf:=ObjByExtRep(fam,[1,2^40]);; IsInfBitsAssocWord(winf); |
| 24 | +[ 1, 1048576, 2, -10, 1, 4 ] |
| 25 | +gap> winf:=ObjByExtRep(fam,[1,2^40,2,-10,1,4]);; IsInfBitsAssocWord(winf); |
22 | 26 | true |
23 | 27 | gap> ExtRepOfObj(winf); |
24 | | -[ 1, 1099511627776 ] |
| 28 | +[ 1, 1099511627776, 2, -10, 1, 4 ] |
| 29 | + |
| 30 | +# |
| 31 | +# ExponentSums |
| 32 | +# |
| 33 | + |
| 34 | +# |
| 35 | +gap> ExponentSums(w8); |
| 36 | +[ 5, -10, 0, 0 ] |
| 37 | +gap> ExponentSums(w8, 3, 4); |
| 38 | +[ 0, 0 ] |
| 39 | +gap> ExponentSums(w8, 4, 1); |
| 40 | +[ ] |
| 41 | +gap> ExponentSums(w8, 0, 1); |
| 42 | +Error, <start> must be a positive integer |
| 43 | +gap> ExponentSums(w8, 1, 0); |
| 44 | +Error, <end> must be a positive integer |
| 45 | + |
| 46 | +# |
| 47 | +gap> ExponentSums(w16); |
| 48 | +[ 1028, -10, 0, 0 ] |
| 49 | +gap> ExponentSums(w16, 3, 4); |
| 50 | +[ 0, 0 ] |
| 51 | +gap> ExponentSums(w16, 4, 1); |
| 52 | +[ ] |
| 53 | +gap> ExponentSums(w16, 0, 1); |
| 54 | +Error, <start> must be a positive integer |
| 55 | +gap> ExponentSums(w16, 1, 0); |
| 56 | +Error, <end> must be a positive integer |
| 57 | + |
| 58 | +# |
| 59 | +gap> ExponentSums(w32); |
| 60 | +[ 1048580, -10, 0, 0 ] |
| 61 | +gap> ExponentSums(w32, 3, 4); |
| 62 | +[ 0, 0 ] |
| 63 | +gap> ExponentSums(w32, 4, 1); |
| 64 | +[ ] |
| 65 | +gap> ExponentSums(w32, 0, 1); |
| 66 | +Error, <start> must be a positive integer |
| 67 | +gap> ExponentSums(w32, 1, 0); |
| 68 | +Error, <end> must be a positive integer |
| 69 | + |
| 70 | +# |
| 71 | +gap> ExponentSums(winf); |
| 72 | +[ 1099511627780, -10, 0, 0 ] |
| 73 | +gap> ExponentSums(winf, 3, 4); |
| 74 | +[ 0, 0 ] |
| 75 | +gap> ExponentSums(winf, 4, 1); |
| 76 | +[ ] |
| 77 | +gap> ExponentSums(winf, 0, 1); |
| 78 | +Error, <from> must be a positive integer |
| 79 | +gap> ExponentSums(winf, 1, 0); |
| 80 | +Error, <to> must be a positive integer |
| 81 | + |
| 82 | +# |
| 83 | +# syllables |
| 84 | +# |
| 85 | + |
| 86 | +# |
| 87 | +gap> words := [w8, w16, w32, winf];; |
| 88 | +gap> ForAll(words, w -> GeneratorSyllable(w, 2) = 2); |
| 89 | +true |
| 90 | +gap> ForAll(words, w -> ExponentSyllable(w, 2) = -10); |
| 91 | +true |
| 92 | + |
| 93 | +# |
| 94 | +gap> 8Bits_ExponentSyllable(w8, 0); |
| 95 | +Error, <i> must be an integer between 1 and 3 |
| 96 | +gap> 16Bits_ExponentSyllable(w16, 0); |
| 97 | +Error, <i> must be an integer between 1 and 3 |
| 98 | +gap> 32Bits_ExponentSyllable(w32, 0); |
| 99 | +Error, <i> must be an integer between 1 and 3 |
| 100 | + |
| 101 | +# |
| 102 | +gap> 8Bits_GeneratorSyllable(w8, 0); |
| 103 | +Error, <i> must be an integer between 1 and 3 |
| 104 | +gap> 16Bits_GeneratorSyllable(w16, 0); |
| 105 | +Error, <i> must be an integer between 1 and 3 |
| 106 | +gap> 32Bits_GeneratorSyllable(w32, 0); |
| 107 | +Error, <i> must be an integer between 1 and 3 |
25 | 108 |
|
26 | 109 | # |
27 | 110 | # test powering (esp. 8Bits_Power), with various shapes |
28 | 111 | # |
29 | 112 |
|
30 | 113 | # special case: w * gi^n * w^-1 |
31 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,1, 1,-1]); w^0; w^1; w^-1; w^3; w^100; |
| 114 | +gap> u8:=ObjByExtRep(fam,[1,1, 2,1, 1,-1]); u8^0; u8^1; u8^-1; u8^3; u8^-3; u8^100; |
32 | 115 | f1*f2*f1^-1 |
33 | 116 | <identity ...> |
34 | 117 | f1*f2*f1^-1 |
35 | 118 | f1*f2^-1*f1^-1 |
36 | 119 | f1*f2^3*f1^-1 |
| 120 | +f1*f2^-3*f1^-1 |
37 | 121 | f1*f2^100*f1^-1 |
38 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,2^10, 1,-1]); w^0; w^1; w^-1; w^3; w^100; |
| 122 | +gap> u16:=ObjByExtRep(fam,[1,1, 2,2^10, 1,-1]); u16^0; u16^1; u16^-1; u16^3; u16^-3; u16^100; |
39 | 123 | f1*f2^1024*f1^-1 |
40 | 124 | <identity ...> |
41 | 125 | f1*f2^1024*f1^-1 |
42 | 126 | f1*f2^-1024*f1^-1 |
43 | 127 | f1*f2^3072*f1^-1 |
| 128 | +f1*f2^-3072*f1^-1 |
44 | 129 | f1*f2^102400*f1^-1 |
45 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,2^10, 1,-1]); w^0; w^1; w^-1; w^3; w^100; |
46 | | -f1*f2^1024*f1^-1 |
| 130 | +gap> u32:=ObjByExtRep(fam,[1,1, 2,2^20, 1,-1]); u32^0; u32^1; u32^-1; u32^3; u32^-3; u32^100;; |
| 131 | +f1*f2^1048576*f1^-1 |
47 | 132 | <identity ...> |
48 | | -f1*f2^1024*f1^-1 |
49 | | -f1*f2^-1024*f1^-1 |
50 | | -f1*f2^3072*f1^-1 |
51 | | -f1*f2^102400*f1^-1 |
52 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,2^40, 1,-1]);; w^0; w^1;; w^-1;; w^3;; w^100;; |
| 133 | +f1*f2^1048576*f1^-1 |
| 134 | +f1*f2^-1048576*f1^-1 |
| 135 | +f1*f2^3145728*f1^-1 |
| 136 | +f1*f2^-3145728*f1^-1 |
| 137 | +gap> uinf:=ObjByExtRep(fam,[1,1, 2,2^40, 1,-1]);; uinf^0; uinf^1;; uinf^-1;; uinf^3;; uinf^-3;; uinf^100;; |
53 | 138 | <identity ...> |
54 | 139 |
|
55 | 140 | # special case: w * gj^x * t * gj^y * w^-1, x != -y |
56 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1, 2,2, 1,-1]); w^0; w^1; w^-1; w^3; w^100; |
| 141 | +gap> v8:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1, 2,2, 1,-1]); v8^0; v8^1; v8^-1; v8^3; v8^-3; v8^100; |
57 | 142 | f1*f2*f3*f4^-1*f2^2*f1^-1 |
58 | 143 | <identity ...> |
59 | 144 | f1*f2*f3*f4^-1*f2^2*f1^-1 |
60 | 145 | f1*f2^-2*f4*f3^-1*f2^-1*f1^-1 |
61 | 146 | f1*(f2*f3*f4^-1*f2^2)^3*f1^-1 |
| 147 | +f1*(f2^-2*f4*f3^-1*f2^-1)^3*f1^-1 |
62 | 148 | f1*(f2*f3*f4^-1*f2^2)^100*f1^-1 |
63 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1, 2,2, 1,-1]); w^0; w^1; w^-1; w^3; w^100; |
| 149 | +gap> v16:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1, 2,2, 1,-1]); v16^0; v16^1; v16^-1; v16^3; v16^-3; v16^100;; |
64 | 150 | f1*f2*f3^1024*f4^-1*f2^2*f1^-1 |
65 | 151 | <identity ...> |
66 | 152 | f1*f2*f3^1024*f4^-1*f2^2*f1^-1 |
67 | 153 | f1*f2^-2*f4*f3^-1024*f2^-1*f1^-1 |
68 | 154 | f1*(f2*f3^1024*f4^-1*f2^2)^3*f1^-1 |
69 | | -f1*(f2*f3^1024*f4^-1*f2^2)^100*f1^-1 |
70 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1, 2,2, 1,-1]); w^0; w^1; w^-1; w^3; |
| 155 | +f1*(f2^-2*f4*f3^-1024*f2^-1)^3*f1^-1 |
| 156 | +gap> v32:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1, 2,2, 1,-1]); v32^0; v32^1; v32^-1; v32^3; v32^-3; v32^100;; |
71 | 157 | f1*f2*f3^1048576*f4^-1*f2^2*f1^-1 |
72 | 158 | <identity ...> |
73 | 159 | f1*f2*f3^1048576*f4^-1*f2^2*f1^-1 |
74 | 160 | f1*f2^-2*f4*f3^-1048576*f2^-1*f1^-1 |
75 | 161 | f1*(f2*f3^1048576*f4^-1*f2^2)^3*f1^-1 |
| 162 | +f1*(f2^-2*f4*f3^-1048576*f2^-1)^3*f1^-1 |
76 | 163 |
|
77 | 164 | # general case: w * t * w^-1 |
78 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1]); w^0; w^1; w^-1; w^3; w^100; |
| 165 | +gap> x8:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1]); x8^0; x8^1; x8^-1; x8^3; x8^-3; x8^100; |
79 | 166 | f1*f2*f3*f4^-1 |
80 | 167 | <identity ...> |
81 | 168 | f1*f2*f3*f4^-1 |
82 | 169 | f4*f3^-1*f2^-1*f1^-1 |
83 | 170 | (f1*f2*f3*f4^-1)^3 |
| 171 | +(f4*f3^-1*f2^-1*f1^-1)^3 |
84 | 172 | (f1*f2*f3*f4^-1)^100 |
85 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1]); w^0; w^1; w^-1; w^3; w^100; |
| 173 | +gap> x16:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1]); x16^0; x16^1; x16^-1; x16^3; x16^-3; x16^100; |
86 | 174 | f1*f2*f3^1024*f4^-1 |
87 | 175 | <identity ...> |
88 | 176 | f1*f2*f3^1024*f4^-1 |
89 | 177 | f4*f3^-1024*f2^-1*f1^-1 |
90 | 178 | (f1*f2*f3^1024*f4^-1)^3 |
| 179 | +(f4*f3^-1024*f2^-1*f1^-1)^3 |
91 | 180 | (f1*f2*f3^1024*f4^-1)^100 |
92 | | -gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1]); w^0; w^1; w^-1; w^3; |
| 181 | +gap> x32:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1]); x32^0; x32^1; x32^-1; x32^3; x32^-3; |
93 | 182 | f1*f2*f3^1048576*f4^-1 |
94 | 183 | <identity ...> |
95 | 184 | f1*f2*f3^1048576*f4^-1 |
96 | 185 | f4*f3^-1048576*f2^-1*f1^-1 |
97 | 186 | (f1*f2*f3^1048576*f4^-1)^3 |
| 187 | +(f4*f3^-1048576*f2^-1*f1^-1)^3 |
| 188 | + |
| 189 | +# |
| 190 | +# quotients |
| 191 | +# |
| 192 | +gap> words8 := [u8,v8,w8,x8];; ForAll(words8, Is8BitsAssocWord); |
| 193 | +true |
| 194 | +gap> words16 := [u16,v16,w16,x16];; ForAll(words16, Is16BitsAssocWord); |
| 195 | +true |
| 196 | +gap> words32 := [u32,v32,w32,x32];; ForAll(words32, Is32BitsAssocWord); |
| 197 | +true |
| 198 | + |
| 199 | +# |
| 200 | +gap> SetX(words8, words8, {a,b} -> (a/b) = 8Bits_Quotient(a,b)); |
| 201 | +[ true ] |
| 202 | +gap> SetX(words16, words16, {a,b} -> (a/b) = 16Bits_Quotient(a,b)); |
| 203 | +[ true ] |
| 204 | +gap> SetX(words32, words32, {a,b} -> (a/b) = 32Bits_Quotient(a,b)); |
| 205 | +[ true ] |
| 206 | + |
| 207 | +# |
| 208 | +gap> STOP_TEST("wordrep.tst", 1); |
0 commit comments