diff --git a/lib/ctblmaps.gd b/lib/ctblmaps.gd index 009c38b6b3..231fa9478e 100644 --- a/lib/ctblmaps.gd +++ b/lib/ctblmaps.gd @@ -956,7 +956,12 @@ DeclareAttributeSuppCT( "NamesOfFusionSources", ## for the argument quick; ## especially, as soon as only one possibility remains ## then this possibility is returned immediately; -## the default value is false, +## the default value is false +## (note that in situations where the group of tbl has no subgroups +## with character table subtbl, it may happen that setting +## quick to true causes +## to return solutions, +## whereas the value false yields an empty list), ## ## verify ## @@ -2492,7 +2497,7 @@ DeclareGlobalFunction( "FusionsAllowedByRestrictions" ); ## constants. ##

## The argument quick must be a Boolean; if it is true then -## only those triples are checked for which for which at least two entries +## only those triples are checked for which at least two entries ## in fusions have different images. ## ## diff --git a/lib/ctblmaps.gi b/lib/ctblmaps.gi index 431c4a3a1f..4a279dca9e 100644 --- a/lib/ctblmaps.gi +++ b/lib/ctblmaps.gi @@ -4492,11 +4492,17 @@ InstallGlobalFunction( ConsiderStructureConstants, sc:= ClassMultiplicationCoefficient( tbl, trpl[1], trpl[2], trpl[3] ); if sc < subsc then + fusions:= Filtered( fusions, + x -> x{ [ i, j, kk ] } <> trpl ); + if Length( fusions ) = 0 then + Info( InfoCharacterTable, 2, + "ConsiderStructureConstants: contradiction for ", + [ i, j, kk ] ); + return fusions; + fi; Info( InfoCharacterTable, 2, "ConsiderStructureConstants: improvement for ", [ i, j, kk ] ); - fusions:= Filtered( fusions, - x -> x{ [ i, j, kk ] } <> trpl ); parm:= Parametrized( fusions ); fi; od; diff --git a/tst/testinstall/ctblmaps.tst b/tst/testinstall/ctblmaps.tst new file mode 100644 index 0000000000..a40f5bb942 --- /dev/null +++ b/tst/testinstall/ctblmaps.tst @@ -0,0 +1,18 @@ +#@local s, t, maps +gap> START_TEST( "ctblmaps.tst" ); + +# `ConsiderStructureConstants` can unexpectedly exclude all candidates. +# (Benjamin Sambale found examples for that.) +gap> if TestPackageAvailability("ctbllib") <> fail and +> LoadPackage("ctbllib", false) <> fail then +> s:= CharacterTable( "2.A6" );; +> t:= CharacterTable( "Co3" );; +> maps:= [ [ 1, 2, 8, 4, 11, 4, 13, 18, 18, 9, 22, 9, 22 ], +> [ 1, 2, 8, 4, 11, 4, 13, 17, 17, 9, 22, 9, 22 ] ];; +> if Length( ConsiderStructureConstants( s, t, maps, true ) ) <> 0 then +> Error( "test of ConsiderStructureConstants failed" ); +> fi; +> fi; + +# +gap> STOP_TEST( "ctblmaps.tst" );