diff --git a/.github/workflows/standard.yml b/.github/workflows/standard.yml index 143c6a905..1545d4996 100644 --- a/.github/workflows/standard.yml +++ b/.github/workflows/standard.yml @@ -33,6 +33,7 @@ jobs: - v4.14 - v4.13 - v4.12 + - further-pluralization steps: - uses: actions/checkout@v5 @@ -49,9 +50,16 @@ jobs: override_cache_key: ${{ runner.os }}-${{ matrix.gap-version }}-64-${{ github.ref }} override_cache_key_fallback: ${{ runner.os }}-${{ matrix.gap-version }}-64 - name: "Install GAP" + if: ${{ matrix.gap-version != 'further-pluralization' }} uses: gap-actions/setup-gap@v3 with: gap-version: ${{ matrix.gap-version }} + - name: "Install GAP" + if: ${{ matrix.gap-version == 'further-pluralization' }} + uses: gap-actions/setup-gap@v3 + with: + gap-version: ${{ matrix.gap-version }} + repository: wilfwilson/gap - name: "Install necessary GAP package clones" shell: bash run: | diff --git a/tst/standard/attributes/translat.tst b/tst/standard/attributes/translat.tst index 35e87ba18..9ee044ff8 100644 --- a/tst/standard/attributes/translat.tst +++ b/tst/standard/attributes/translat.tst @@ -69,9 +69,15 @@ gap> Size(GeneratorsOfSemigroup(H)); 9 # Monogenic semigroups +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> S := MonogenicSemigroup(6, 3); + +#@else gap> S := MonogenicSemigroup(6, 3); +#@fi gap> L := LeftTranslations(S); > @@ -126,9 +132,15 @@ gap> L := LeftTranslations(S); > gap> Size(L); 81 +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> R := RightTranslations(S); +> +#@else gap> R := RightTranslations(S); > +#@fi gap> Size(R); 81 gap> S := ReesZeroMatrixSemigroup(G, mat);; diff --git a/tst/standard/elements/bipart.tst b/tst/standard/elements/bipart.tst index 45515d572..cef2a4ec4 100644 --- a/tst/standard/elements/bipart.tst +++ b/tst/standard/elements/bipart.tst @@ -497,9 +497,15 @@ gap> BipartitionByIntRep([1, 2, 3]); Error, the degree of a bipartition must be even, found 3 # bipartition: BipartitionByIntRep 2/5 +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> BipartitionByIntRep([1, 2, 3, "a"]); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `BipartitionByIntRep' on 1 argument +#@else gap> BipartitionByIntRep([1, 2, 3, "a"]); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `BipartitionByIntRep' on 1 arguments +#@fi # bipartition: BipartitionByIntRep 3/5 gap> BipartitionByIntRep([1, 2, 3, 5]); diff --git a/tst/standard/elements/maxplusmat.tst b/tst/standard/elements/maxplusmat.tst index 68f9d68f8..55152ca41 100644 --- a/tst/standard/elements/maxplusmat.tst +++ b/tst/standard/elements/maxplusmat.tst @@ -454,9 +454,15 @@ false # maxplusmat: RadialEigenvector for a max-plus matrix with SpectralRadius = 0 gap> RadialEigenvector(Matrix(IsMaxPlusMatrix, [[0, -3], [-2, -10]])); [ 0, -2 ] +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> RadialEigenvector(Matrix(IsMaxPlusMatrix, [[3, -3], [-2, -10]])); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 2nd choice method found for `RadialEigenvector' on 1 argument +#@else gap> RadialEigenvector(Matrix(IsMaxPlusMatrix, [[3, -3], [-2, -10]])); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 2nd choice method found for `RadialEigenvector' on 1 arguments +#@fi gap> SpectralRadius(Matrix(IsMaxPlusMatrix, [[0, -3], [-2, -10]])); 0 diff --git a/tst/standard/elements/pbr.tst b/tst/standard/elements/pbr.tst index 7cad637ae..948a4f4b7 100644 --- a/tst/standard/elements/pbr.tst +++ b/tst/standard/elements/pbr.tst @@ -56,9 +56,15 @@ gap> DegreeOfPBRCollection([x]); 2 gap> DegreeOfPBRCollection([y]); 3 +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> DegreeOfPBRCollection([x, y]); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `DegreeOfPBRCollection' on 1 argument +#@else gap> DegreeOfPBRCollection([x, y]); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `DegreeOfPBRCollection' on 1 arguments +#@fi gap> coll := [x, y];; gap> IsPBRCollection(coll); false @@ -317,27 +323,45 @@ gap> Inverse(x); fail # pbr, EmptyPBR, 1 +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> EmptyPBR(0); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `EmptyPBR' on 1 argument +#@else gap> EmptyPBR(0); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `EmptyPBR' on 1 arguments +#@fi gap> EmptyPBR(1); PBR([ [ ] ], [ [ ] ]) gap> EmptyPBR(2); PBR([ [ ], [ ] ], [ [ ], [ ] ]) # pbr, IdentityPBR, 1 +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> IdentityPBR(0); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `IdentityPBR' on 1 argument +#@else gap> IdentityPBR(0); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `IdentityPBR' on 1 arguments +#@fi gap> IdentityPBR(1); PBR([ [ -1 ] ], [ [ 1 ] ]) gap> IdentityPBR(2); PBR([ [ -1 ], [ -2 ] ], [ [ 1 ], [ 2 ] ]) # pbr, UniversalPBR, 1 +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> UniversalPBR(0); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `UniversalPBR' on 1 argument +#@else gap> UniversalPBR(0); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `UniversalPBR' on 1 arguments +#@fi gap> UniversalPBR(1); PBR([ [ -1, 1 ] ], [ [ -1, 1 ] ]) gap> UniversalPBR(2); diff --git a/tst/standard/ideals/ideals.tst b/tst/standard/ideals/ideals.tst index b60679144..8e77bb6c7 100644 --- a/tst/standard/ideals/ideals.tst +++ b/tst/standard/ideals/ideals.tst @@ -246,9 +246,15 @@ gap> x := Transformation([13, 4, 1, 2, 14, 14, 7, 12, 4, 9, 2, 14, 5, 14, 13, > 18, 15, 8, 18, 9]);; gap> y := Transformation([13, 15, 7, 18, 4, 2, 8, 12, 10, 7, 8, 11, 12, 12, 17, > 6, 13, 9, 16, 13]);; +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> T := DirectProduct(Semigroup(x), Semigroup(y)); + +#@else gap> T := DirectProduct(Semigroup(x), Semigroup(y)); +#@fi gap> z := Transformation([14, 2, 14, 4, 14, 14, 7, 14, 2, 4, 4, 14, 14, 14, 14, > 14, 14, 14, 14, 4, 32, 31, 28, 28, 31, 32, 32, 31, 31, 28, 32, 28, 31, 31, 28, > 28, 32, 32, 31, 32]);; diff --git a/tst/standard/libsemigroups/froidure-pin.tst b/tst/standard/libsemigroups/froidure-pin.tst index 350134f09..84301ff84 100644 --- a/tst/standard/libsemigroups/froidure-pin.tst +++ b/tst/standard/libsemigroups/froidure-pin.tst @@ -445,9 +445,15 @@ gap> S := Semigroup(Matrix(IsMaxPlusMatrix, gap> Enumerate(S, 8194); +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> en := Enumerator(S); +> +#@else gap> en := Enumerator(S); > +#@fi gap> en[100]; Matrix(IsMaxPlusMatrix, [[388, 394, 386], [394, 400, 392], [390, 396, 388]]) gap> PositionCanonical(S, en[100]); @@ -585,9 +591,15 @@ true gap> S := Semigroup(Matrix(IsMaxPlusMatrix, > [[1, -infinity, 2], [-2, 4, -infinity], [1, 0, 3]])); +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> N := EnumeratorCanonical(S); +> +#@else gap> N := EnumeratorCanonical(S); > +#@fi gap> ForAll([1 .. 1000], x -> Position(N, N[x]) = x); true gap> ForAll([1 .. 1000], x -> N[x] in N); diff --git a/tst/standard/semigroups/grpperm.tst b/tst/standard/semigroups/grpperm.tst index 8b4151589..ba187292d 100644 --- a/tst/standard/semigroups/grpperm.tst +++ b/tst/standard/semigroups/grpperm.tst @@ -395,9 +395,15 @@ gap> Range(map); Group([ (1,3)(2,5)(4,6), (1,4,5)(2,6,3) ]) # IsomorphismPermGroup, infinite 1 / 1 +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> IsomorphismPermGroup(FreeMonoid(3)); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 2nd choice method found for `IsomorphismPermGroup' on 1 argument +#@else gap> IsomorphismPermGroup(FreeMonoid(3)); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 2nd choice method found for `IsomorphismPermGroup' on 1 arguments +#@fi # IsomorphismPermGroup, for a block bijection semigroup gap> S := Semigroup(Bipartition([[1, 2, -3, -4], [3, 4, -1, -2]]));; diff --git a/tst/standard/semigroups/semifp.tst b/tst/standard/semigroups/semifp.tst index 665af9739..300a9f112 100644 --- a/tst/standard/semigroups/semifp.tst +++ b/tst/standard/semigroups/semifp.tst @@ -69,9 +69,15 @@ gap> IsomorphismFpMonoid(FreeMonoid(2)); # Test IsomorphismFpSemigroup, infinite +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> IsomorphismFpSemigroup(FreeInverseSemigroup(2)); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 3rd choice method found for `IsomorphismFpSemigroup' on 1 argument +#@else gap> IsomorphismFpSemigroup(FreeInverseSemigroup(2)); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 3rd choice method found for `IsomorphismFpSemigroup' on 1 arguments +#@fi # BruteForceIsoCheck helper functions gap> BruteForceIsoCheck := function(iso) diff --git a/tst/standard/semigroups/semipperm.tst b/tst/standard/semigroups/semipperm.tst index d8fcb33d0..d94e05c9e 100644 --- a/tst/standard/semigroups/semipperm.tst +++ b/tst/standard/semigroups/semipperm.tst @@ -2006,9 +2006,15 @@ true # semipperm: IsomorphismPartialPermSemigroup, for a zero group, 3 gap> S := Range(InjectionZeroMagma(SL(2, 2))); +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> map := IsomorphismPartialPermSemigroup(S); + -> +#@else gap> map := IsomorphismPartialPermSemigroup(S); -> +#@fi gap> Range(map); gap> BruteForceIsoCheck(map); @@ -2138,11 +2144,19 @@ gap> DigraphOfActionOnPoints(S, 3); # SmallerDegreePartialPermRepresentation for a non-partial perm semigroup gap> S := UniformBlockBijectionMonoid(4); +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> map := SmallerDegreePartialPermRepresentation(S); +CompositionMapping( -> , + -> + ) +#@else gap> map := SmallerDegreePartialPermRepresentation(S); CompositionMapping( -> , -> ) +#@fi gap> S.1 ^ map in Range(map); true @@ -2154,11 +2168,19 @@ gap> C := SemigroupCongruence(S, > Bipartition([[1, -1], [2, -2], [3, -3], [4, -4]])]); <2-sided semigroup congruence over with 1 generating pairs> +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> map := SmallerDegreePartialPermRepresentation(Source(C)); +CompositionMapping( -> , + -> + ) +#@else gap> map := SmallerDegreePartialPermRepresentation(Source(C)); CompositionMapping( -> , -> ) +#@fi gap> List(GeneratingPairsOfSemigroupCongruence(C), x -> OnTuples(x, map)); [ [ , S := Monoid([ > Transformation([2, 3, 3, 1]), Transformation([3, 2, 3, 1]), > Transformation([3, 3, 1, 2]), Transformation([3, 4, 1, 1]), > Transformation([4, 1, 2, 2]), Transformation([4, 2, 3, 3])]);; +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> R := ReesMatrixSemigroup(S, [[IdentityTransformation]]); +> +#@else gap> R := ReesMatrixSemigroup(S, [[IdentityTransformation]]); > +#@fi gap> IsIdempotentGenerated(R); true diff --git a/tst/standard/semigroups/semitrans.tst b/tst/standard/semigroups/semitrans.tst index d49f5e133..dbd0ea236 100644 --- a/tst/standard/semigroups/semitrans.tst +++ b/tst/standard/semigroups/semitrans.tst @@ -2585,12 +2585,21 @@ gap> ComponentsOfTransformationSemigroup(S); gap> CyclesOfTransformationSemigroup(S); [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10, 11, 12 ] ] gap> S := SemigroupIdeal(S, S.1);; +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> ComponentsOfTransformationSemigroup(S); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `DigraphOfActionOnPoints' on 1 argument +gap> CyclesOfTransformationSemigroup(S); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `DigraphOfActionOnPoints' on 1 argument +#@else gap> ComponentsOfTransformationSemigroup(S); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `DigraphOfActionOnPoints' on 1 arguments gap> CyclesOfTransformationSemigroup(S); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `DigraphOfActionOnPoints' on 1 arguments +#@fi # Test IsomorphismSemigroup for a semigroup of binary relations on points gap> B := Monoid(BinaryRelationOnPoints([[2], [1, 2], [1, 3]]), diff --git a/tst/standard/tools/display.tst b/tst/standard/tools/display.tst index 9c252d0e6..a7218f3a6 100644 --- a/tst/standard/tools/display.tst +++ b/tst/standard/tools/display.tst @@ -1017,6 +1017,20 @@ gap> DotLeftCayleyDigraph(FullTransformationMonoid(2)); [label=\"c\"]\n4 [label=\"cb\"]\n1 -> 1\n1 -> 2\n1 -> 3\n2 -> 2\n2 -> 1\n2 ->\ 4\n3 -> 3\n3 -> 3\n3 -> 3\n4 -> 4\n4 -> 4\n4 -> 4\n}\n" gap> S := LeftZeroSemigroup(27);; +#@if CompareVersionNumbers(ReplacedString(GAPInfo.Version, "dev", ""), "4.16") +gap> DotLeftCayleyDigraph(S); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 2nd choice method found for `DotString' on 1 argument +gap> TikzLeftCayleyDigraph(S); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 2nd choice method found for `TikzString' on 1 argument +gap> DotRightCayleyDigraph(S); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 2nd choice method found for `DotString' on 1 argument +gap> TikzRightCayleyDigraph(S); +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 2nd choice method found for `TikzString' on 1 argument +#@else gap> DotLeftCayleyDigraph(S); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 2nd choice method found for `DotString' on 1 arguments @@ -1029,6 +1043,7 @@ Error, no 2nd choice method found for `DotString' on 1 arguments gap> TikzRightCayleyDigraph(S); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 2nd choice method found for `TikzString' on 1 arguments +#@fi # Unbind local variables, auto-generated by etc/tst-unbind-local-vars.py gap> Unbind(S);