|
| 1 | +diff --git a/lib/dicthf.gi b/lib/dicthf.gi |
| 2 | +index 5ee7341..e4349ac 100644 |
| 3 | +--- a/lib/dicthf.gi |
| 4 | ++++ b/lib/dicthf.gi |
| 5 | +@@ -152,16 +152,37 @@ end); |
| 6 | + ## |
| 7 | + InstallMethod(SparseIntKey,"for bounded tuples",true, |
| 8 | + [ IsList,IsList and IsCyclotomicCollection ], 0, |
| 9 | +-function(m,v) |
| 10 | +-local c; |
| 11 | +- if Length(m)<>3 or m[1]<>"BoundedTuples" then |
| 12 | ++function(m, v) |
| 13 | ++ if Length(m)<> 3 or m[1]<>"BoundedTuples" then |
| 14 | + TryNextMethod(); |
| 15 | + fi; |
| 16 | +- c:=[1,Maximum(m[2])+1]; |
| 17 | +- return function(a) |
| 18 | +- return a*c; |
| 19 | ++ # Due to the way BoundedTuples are presently implemented we expect the input |
| 20 | ++ # to the hash function to always be a list of positive immediate integers. This means |
| 21 | ++ # that using HashKeyWholeBag should be safe. |
| 22 | ++ return function(x) |
| 23 | ++ Assert(1, IsPositionsList(x)); |
| 24 | ++ if not IsPlistRep(x) then |
| 25 | ++ x := AsPlist(x); |
| 26 | ++ fi; |
| 27 | ++ return HashKeyWholeBag(x, 1); |
| 28 | + end; |
| 29 | + |
| 30 | ++ # alternative code w/o HashKeyBag |
| 31 | ++ ## build a weight vector to distinguish lists. Make entries large while staying clearly within |
| 32 | ++ ## immediate int (2^55 replacing 2^60, since we take subsequent primes). |
| 33 | ++ #step:=NextPrimeInt(QuoInt(2^55,Maximum(m[2])*m[3])); |
| 34 | ++ #weights:=[1]; |
| 35 | ++ #len:=Length(v); |
| 36 | ++ ## up to 56 full, then increasingly reduce |
| 37 | ++ #len:=Minimum(len,8*RootInt(len)); |
| 38 | ++ #while Length(weights)<len do |
| 39 | ++ # Add(weights,weights[Length(weights)]+step); |
| 40 | ++ # step:=NextPrimeInt(step); |
| 41 | ++ #od; |
| 42 | ++ #return function(a) |
| 43 | ++ # return a*weights; |
| 44 | ++ #end; |
| 45 | ++ |
| 46 | + end); |
| 47 | + |
| 48 | + BindGlobal( "SparseIntKeyVecListAndMatrix", function(d,m) |
| 49 | +diff --git a/lib/oprt.gi b/lib/oprt.gi |
| 50 | +index c1def0b..00e2953 100644 |
| 51 | +--- a/lib/oprt.gi |
| 52 | ++++ b/lib/oprt.gi |
| 53 | +@@ -3565,6 +3565,7 @@ InstallMethod(DomainForAction,"permutations on lists of integers",true, |
| 54 | + function(pnt,acts,act) |
| 55 | + local m; |
| 56 | + if not (Length(pnt)>0 and ForAll(pnt,IsPosInt) and |
| 57 | ++ ForAll(acts,IsPerm) and |
| 58 | + (act=OnSets or act=OnPoints or act=OnRight or act=\^)) then |
| 59 | + TryNextMethod(); |
| 60 | + fi; |
| 61 | +diff --git a/lib/vecmat.gi b/lib/vecmat.gi |
| 62 | +index 017c3c6..93ba828 100644 |
| 63 | +--- a/lib/vecmat.gi |
| 64 | ++++ b/lib/vecmat.gi |
| 65 | +@@ -2142,7 +2142,8 @@ InstallMethod(DomainForAction,"matrix/matrix",IsElmsCollsX, |
| 66 | + function(pnt,acts,act) |
| 67 | + local l,f; |
| 68 | + if (not ForAll(acts,IsMatrix)) or |
| 69 | +- (act<>OnPoints and act<>OnSubspacesByCanonicalBasis and act<>OnRight) then |
| 70 | ++ (act<>OnPoints and act<>OnSubspacesByCanonicalBasis and act<>OnRight and act<>OnSets and |
| 71 | ++ act<>OnTuples) then |
| 72 | + TryNextMethod(); # strange operation, might extend the domain |
| 73 | + fi; |
| 74 | + l:=NaturalActedSpace(acts,pnt); |
| 75 | +diff --git a/tst/testbugfix/2024-09-14-actdomain.tst b/tst/testbugfix/2024-09-14-actdomain.tst |
| 76 | +new file mode 100644 |
| 77 | +index 0000000..84f8b50 |
| 78 | +--- /dev/null |
| 79 | ++++ b/tst/testbugfix/2024-09-14-actdomain.tst |
| 80 | +@@ -0,0 +1,85 @@ |
| 81 | ++# Fix #5786 and error reported by Len Soicher in support list |
| 82 | ++gap> gg:=SpecialUnitaryGroup(4,2);; |
| 83 | ++gap> hl:=Z(2)*[ |
| 84 | ++> [0,0,1,0], |
| 85 | ++> [1,1,0,0], |
| 86 | ++> [0,1,0,1], |
| 87 | ++> [0,1,1,0], |
| 88 | ++> [1,1,0,1]];; |
| 89 | ++gap> o:=Orbit(gg,Set(hl),OnSets);; |
| 90 | ++gap> Length(o); |
| 91 | ++216 |
| 92 | ++gap> set:=[ 1,10,15,24,29,33,38,40,44,59, 60, 63, 69, 74, 77,79,85, 86, 90, |
| 93 | ++> 95, 99, 103, 105, 110, 122, 125, 143, 148, 149, 153, 162, 165, 174, 182, |
| 94 | ++> 185, 191, 197, 198, 202, 218, 223, 227, 228, 235, 236, 240, 243, 248, |
| 95 | ++> 254, |
| 96 | ++> 256, 259, 270, 275, 288, 291, 295, 298, 302, 305, 310, 312, 315, 325, |
| 97 | ++> 329, |
| 98 | ++> 333, 340, 341, 350, 356, 366, 369, 381, 385, 390, 397, 402, 412, 414, |
| 99 | ++> 419, |
| 100 | ++> 421, 425, 428, 433, 436, 445, 447, 451, 452, 453, 454, 461, 466, 474, |
| 101 | ++> 479, |
| 102 | ++> 481, 489, 490, 493, 497, 507, 509, 512, 513, 519, 521 ];; |
| 103 | ++gap> gp:=Group( |
| 104 | ++> ( 1,340,124,306,216,492,100, 25,108,270,220,332)( 2,138, 54,161,132,159,198, |
| 105 | ++> 336,439,269, 89,419)( 3,467,177,404,505,437,379,312,481,271,223,135) |
| 106 | ++> ( 4,510, 79,504,259,234,378,251,272,268,360,303)( 5,278,176,191,231,275,263, |
| 107 | ++> 190,230,146,265,192)( 6,486,126,523,490,448,375,237,288,400,243,329) |
| 108 | ++> ( 7,131,123,516, 48,392,350,333,418, 16,139,175)( 8,289,125,386,241, 29,376, |
| 109 | ++> 334,242,417,442,331)( 9,430, 32, 59,446,367,377,335,411,416,515,330) |
| 110 | ++> ( 10,391, 56,407,475,414,200,328,165,473, 86,119)( 11,368, 35,390,522,408,199, |
| 111 | ++> 415,440,326, 87,503)( 12,412, 55,457,399,245,201, 33,438,431, 88,317) |
| 112 | ++> ( 13,471, 40,348,452,292, 43,346,373, 77, 41,347)( 14,137,174,162, 60, 69,321, |
| 113 | ++> 487, 61,158,322,370)( 15,101,114,109,130,160,488,489,352,351,420, 17) |
| 114 | ++> ( 18,339,167,290,202,385, 99, 22, 90,323,217,129)( 19, 26, 93,304, 96,342) |
| 115 | ++> ( 20,338,166,305,215,141, 97, 24, 51,150,219,507)( 21,337, 63,186,214,424, 98, |
| 116 | ++> 23,107,382,218,349)( 27, 91,445,451,525, 67,519,239,144,203,155,353) |
| 117 | ++> ( 28,324,444,128, 70,428,496,238,286,300,283, 64)( 30,236,287,441,387,354) |
| 118 | ++> ( 31,345,366,517, 45,344,413,521, 46,248,244,121)( 34,314,394,402,222,447, 81, |
| 119 | ++> 282,262,173,246,435)( 36,482,178,364,148,495,179,363,140,102,113,111) |
| 120 | ++> ( 37,253,273,168,294,302,226,183, 72,480,154,233)( 38,483,520,393,403,465,362, |
| 121 | ++> 298,143,356,153,369)( 39,157,320,472)( 42,228,277,264)( 44,343,147,501) |
| 122 | ++> ( 47, 73,308,380,184,389,310,327,163,295,151,425)( 49,221,456, 80,474,260,405, |
| 123 | ++> 325,164,524,152,449)( 50,479,365,477,461,459,497,169,296,247,134,117) |
| 124 | ++> ( 52,361,299,285,355,188,423,464,434,453,133,118)( 53,257,509, 68,511,458,293, |
| 125 | ++> 204,384,374, 75, 82)( 57,116,112,149,514,396,470,485,493,249,421,120) |
| 126 | ++> ( 58,500,266,250,429,122)( 62,156,319,311)( 65,187,225,357,127, 71,388,235, |
| 127 | ++> 460,252,274,371)( 66,106,462,291,205,383,372, 76, 92,410,280,498) |
| 128 | ++> ( 74,401,381,476,409,281,171,104,297,307,426,182)( 78, 84,261,256,180,436,512, |
| 129 | ++> 313,181,491,224,499)( 83,466,255,508,506,395,469,422,142,103,115,110) |
| 130 | ++> ( 85,468,258,502,267,136)( 94,341)( 95,211)(105,478,195,432,518,316,197,484, |
| 131 | ++> 494,455,196,170)(145,513,359,232,227,254)(172,209,398,207,279,206) |
| 132 | ++> (185,194,309,443)(189,406,463,318,450,427,433,454,315,301,284,358) |
| 133 | ++> (193,229,276,240)(208,397)(210,213,212) |
| 134 | ++> ,( 1,379,148, 48,128,430,416)( 2, 34,338, 35,235,131,521)( 3,512,352, 47, |
| 135 | ++> 318,289,237)( 4,272,506, 49,434,486,282)( 5,524,485, 10,483,340, 55) |
| 136 | ++> ( 6,458, 36,487, 60,121, 16)( 7,313,140,336,127,435,270)( 8, 85,147,489, |
| 137 | ++> 98,201,417)( 9,469, 94,488,129,329,400)( 11,291, 26, 54,234,473,169) |
| 138 | ++> ( 12,207,339, 56,233,503,515)( 13,426,337, 40,232,295,500)( 14, 32,414, 27, |
| 139 | ++> 167,130,472)( 15, 33,188, 38,382,109,501)( 17, 31,459, 37,496,132,517) |
| 140 | ++> ( 18,263,294,446,451,134,497)( 19,198,525,241,441,244,470)( 20,100,199,490, |
| 141 | ++> 242,429,413)( 21,378,403,216,523,421, 58)( 22,124,159, 77, 63,123,292) |
| 142 | ++> ( 23,176,275,431,168, 86,293)( 24,177,492,326,104,151,290)( 25, 79,437,269, |
| 143 | ++> 163,152,144)( 28,462,150,162, 62,120,415)( 29,239, 83,311, 61,117,260) |
| 144 | ++> ( 30,452,149,370, 39,122,389)( 41,468, 73,254,277,432,371)( 42,210,319,502, |
| 145 | ++> 373,205,283)( 43,387,194,212,320,508, 99)( 44,396,349,331,399,250,420) |
| 146 | ++> ( 45,411,461,375,475,377,418)( 46,344,409,519,522,477,419)( 50,253,278,433, |
| 147 | ++> 231, 88,422)( 51,482,138,358,229,463,381)( 52, 91,467,221,230,518,484) |
| 148 | ++> ( 53,390,510,494,228,454, 92)( 57,310,460,118,259,367,363)( 59,281,227,274, |
| 149 | ++> 505,402,215)( 64,125,245, 76, 93,160,471)( 65,126,408, 75,166, 69,264) |
| 150 | ++> ( 66,302,186,116,257,424,327)( 67,187,297,479,217,425,171)( 68,303,296,345, |
| 151 | ++> 280,226,273)( 70,240,359,366,364, 97,200)( 71,265,360,394,393,133,423) |
| 152 | ++> ( 72,251,146,164,268, 87,312)( 74,252,276,406,513, 89,181)( 78,395,158,185, |
| 153 | ++> 315,287,333)( 80,136,351,156,316,286,334)( 81,511,350,184,317,288,335) |
| 154 | ++> ( 82,261,392,183,105,309,238)( 84,224,439,182,284,193,236)( 90,466,391,357, |
| 155 | ++> 443,170,465)( 95,321,509,353,203,243,197)( 96,516,498,354,300,246,401) |
| 156 | ++> (101,405,453,464,154,112,341)(102,139,450,208,388,365,111)(103,440,520,285, |
| 157 | ++> 192,266,343)(106,308,218,119,262,448,298)(107,219,368,356,442,301,209) |
| 158 | ++> (108,514,412,355,376,474,222)(110,495,137,478,361,444,380)(113,255,342,175, |
| 159 | ++> 173,247,305)(114,256,141,328,153,307,304)(115,258,385,325,172,214,306) |
| 160 | ++> (135,493,157,455,362,445,407)(142,346,189,398,323,161,499)(143,190,145,436, |
| 161 | ++> 271,165,314)(155,195,211,174,404,374,204)(178,507,332,330,248,249,179) |
| 162 | ++> (180,372,202,386,196,213,322)(191,267,491,384,438,279,225)(206,428,299,369, |
| 163 | ++> 480,220,449)(223,481,383,427,397,324,504)(347,457,447,410,348,456,476));; |
| 164 | ++gap> Length(Orbit(gp,set,OnSets)); |
| 165 | ++241920 |
| 166 | +diff --git a/tst/teststandard/hash2.tst b/tst/teststandard/hash2.tst |
| 167 | +index 6bfa4d3..d47452e 100644 |
| 168 | +--- a/tst/teststandard/hash2.tst |
| 169 | ++++ b/tst/teststandard/hash2.tst |
| 170 | +@@ -32,4 +32,8 @@ gap> Length(Orbit(h,h.1[1],OnRight)); |
| 171 | + 2079 |
| 172 | + gap> Length(Orbit(h,h.2^5,OnPoints)); |
| 173 | + 693 |
| 174 | ++gap> Length(Orbit(SymmetricGroup(14), [1 .. 7], OnSets)); |
| 175 | ++3432 |
| 176 | ++gap> Length(Orbit(SymmetricGroup(16), [1 .. 8], OnSets)); |
| 177 | ++12870 |
| 178 | + gap> STOP_TEST( "hash2.tst", 1); |
0 commit comments