From 0c4cb74dbf3924284a159ce997195da5ed548ee4 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 22 Apr 2026 05:59:24 -0700 Subject: [PATCH 01/34] Reordering declaration and implementation of GeneralizedConjugacyClasses and GeneralizedConjugacyClassesRepresentatives to match the conceptual order they should be computed in. --- gap/attributes/cartan.gd | 2 +- gap/attributes/cartan.gi | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index 7bce38369..74979bff8 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -14,8 +14,8 @@ DeclareAttribute("Representative", IsGeneralizedConjugacyClass); DeclareAttribute("ParentAttr", IsGeneralizedConjugacyClass); DeclareOperation("GeneralizedConjugacyClass", [IsSemigroup, IsMultiplicativeElement]); -DeclareAttribute("GeneralizedConjugacyClassesRepresentatives", IsSemigroup); DeclareAttribute("GeneralizedConjugacyClasses", IsSemigroup); +DeclareAttribute("GeneralizedConjugacyClassesRepresentatives", IsSemigroup); DeclareCategory("IsMonoidCharacterTable", IsObject); DeclareAttribute("ParentAttr", IsMonoidCharacterTable); DeclareAttribute("MonoidCharacterTable", IsSemigroup); diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index ed932176c..6e7d9e817 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -43,6 +43,13 @@ InstallMethod(DisplayString, "for a generalized conjugacy class", [IsGeneralizedConjugacyClass], ViewString); +InstallMethod(GeneralizedConjugacyClasses, "for a semigroup", +[IsSemigroup], +function(S) + return List(GeneralizedConjugacyClassesRepresentatives(S), + x -> GeneralizedConjugacyClass(S, x)); +end); + InstallMethod(GeneralizedConjugacyClassesRepresentatives, "for a semigroup", [IsSemigroup], function(S) @@ -64,13 +71,6 @@ function(S) return out; end); -InstallMethod(GeneralizedConjugacyClasses, "for a semigroup", -[IsSemigroup], -function(S) - return List(GeneralizedConjugacyClassesRepresentatives(S), - x -> GeneralizedConjugacyClass(S, x)); -end); - BindGlobal("MonoidCharacterTableType", NewType(NewFamily("MonoidCharacterTableFamily"), IsMonoidCharacterTable and From 46251c790a5b0db09c5eeea709c75a94b526ca39 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 22 Apr 2026 06:43:45 -0700 Subject: [PATCH 02/34] Conjugacy class can now remember the local group they are inside --- gap/attributes/cartan.gd | 3 +++ gap/attributes/cartan.gi | 25 +++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index 74979bff8..0c0f7dee0 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -12,8 +12,11 @@ DeclareCategory("IsGeneralizedConjugacyClass", IsObject); DeclareAttribute("Representative", IsGeneralizedConjugacyClass); DeclareAttribute("ParentAttr", IsGeneralizedConjugacyClass); +DeclareAttribute("MapToGroupHClass", IsGeneralizedConjugacyClass); DeclareOperation("GeneralizedConjugacyClass", [IsSemigroup, IsMultiplicativeElement]); +DeclareOperation("GeneralizedConjugacyClass", + [IsSemigroup, IsMultiplicativeElement, IsGeneralMapping]); DeclareAttribute("GeneralizedConjugacyClasses", IsSemigroup); DeclareAttribute("GeneralizedConjugacyClassesRepresentatives", IsSemigroup); DeclareCategory("IsMonoidCharacterTable", IsObject); diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 6e7d9e817..532b6a76c 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -30,6 +30,18 @@ function(S, s) return result; end); +InstallMethod(GeneralizedConjugacyClass, + "for a semigroup and a multiplicative element", +[IsSemigroup, IsMultiplicativeElement, IsGeneralMapping], +function(S, s, map) + local result; + result := Objectify(GeneralizedConjugacyClassType, rec()); + SetRepresentative(result, s); + SetParentAttr(result, S); + SetMapToGroupHClass(result, map); + return result; +end); + InstallMethod(ViewString, "for a generalized conjugacy class", [IsGeneralizedConjugacyClass], function(generalizedconjugacyclass) @@ -45,13 +57,6 @@ ViewString); InstallMethod(GeneralizedConjugacyClasses, "for a semigroup", [IsSemigroup], -function(S) - return List(GeneralizedConjugacyClassesRepresentatives(S), - x -> GeneralizedConjugacyClass(S, x)); -end); - -InstallMethod(GeneralizedConjugacyClassesRepresentatives, "for a semigroup", -[IsSemigroup], function(S) local D, out, C, map, invmap; @@ -64,13 +69,17 @@ function(S) # Ugly fix: ensures that the conjugacy classes are computed # in the same order each time. invmap := InverseGeneralMapping(map); - C := List(C, x -> x ^ invmap); + C := List(C, x -> GeneralizedConjugacyClass(S, x ^ invmap, map)); Append(out, C); od; return out; end); +InstallMethod(GeneralizedConjugacyClassesRepresentatives, "for a semigroup", +[IsSemigroup], +S -> List(GeneralizedConjugacyClasses(S), Representative)); + BindGlobal("MonoidCharacterTableType", NewType(NewFamily("MonoidCharacterTableFamily"), IsMonoidCharacterTable and From 0758336759ca28ac8c90c065abec34aac2d7ee95 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 22 Apr 2026 16:03:38 -0700 Subject: [PATCH 03/34] Implemented AsList for conjugacy classes --- gap/attributes/cartan.gd | 1 + 1 file changed, 1 insertion(+) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index 0c0f7dee0..69d1ff444 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -13,6 +13,7 @@ DeclareCategory("IsGeneralizedConjugacyClass", IsObject); DeclareAttribute("Representative", IsGeneralizedConjugacyClass); DeclareAttribute("ParentAttr", IsGeneralizedConjugacyClass); DeclareAttribute("MapToGroupHClass", IsGeneralizedConjugacyClass); +DeclareAttribute("AsList", IsGeneralizedConjugacyClass); DeclareOperation("GeneralizedConjugacyClass", [IsSemigroup, IsMultiplicativeElement]); DeclareOperation("GeneralizedConjugacyClass", From 99f18db16b914e4cbe8a92bc5f51d756a823e757 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 22 Apr 2026 16:04:20 -0700 Subject: [PATCH 04/34] I guess the last commit should say declared AsList. This commit implements AsList --- gap/attributes/cartan.gi | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 532b6a76c..1580e11b7 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -51,6 +51,19 @@ function(generalizedconjugacyclass) Representative(generalizedconjugacyclass)); end); +InstallMethod(\=, "for generalized conjugacy classes", +[IsGeneralizedConjugacyClass, IsGeneralizedConjugacyClass], +function(gcc1, gcc2) + if ParentAttr(gcc1) <> ParentAttr(gcc2) then + Error( + "Cannot compare generalized conjugacy classes of different semigroups."); + fi; + if Representative(gcc1) = Representative(gcc2) then + return true; + fi; + return Representative(gcc1) in AsList(gcc2); +end); + InstallMethod(DisplayString, "for a generalized conjugacy class", [IsGeneralizedConjugacyClass], ViewString); @@ -80,6 +93,58 @@ InstallMethod(GeneralizedConjugacyClassesRepresentatives, "for a semigroup", [IsSemigroup], S -> List(GeneralizedConjugacyClasses(S), Representative)); +InstallMethod(AsList, "for a generalized conjugacy class", +[IsGeneralizedConjugacyClass], +function(gcc) + local S, rclasses, allgcc, repgcc, holderoflists, s, w, sw, temprclass, + Rsw, tempgcc, e, Le, RtoLse, LtoHes, i; + + S := ParentAttr(gcc); + rclasses := RClasses(S); + allgcc := GeneralizedConjugacyClasses(S); + repgcc := GeneralizedConjugacyClassesRepresentatives(S); + + if not HasAsList(allgcc[1]) then + holderoflists := List(allgcc, x -> []); + for s in S do + w := SmallestIdempotentPower(s); + sw := s ^ w; + for temprclass in rclasses do + if sw in temprclass then + Rsw := temprclass; + break; + fi; + od; + for tempgcc in allgcc do + if not sw in DClassOfHClass(Source(MapToGroupHClass(tempgcc))) then + continue; + fi; + e := MultiplicativeNeutralElement(Source(MapToGroupHClass(tempgcc))); + Le := LClassOfHClass(Source(MapToGroupHClass(tempgcc))); + RtoLse := Intersection(Rsw, Le)[1]; + LtoHes := LeftGreensMultiplier(S, RtoLse, e); + if IsConjugate(Image(MapToGroupHClass(tempgcc)), + MapToGroupHClass(tempgcc)(LtoHes * sw * s * RtoLse), + MapToGroupHClass(tempgcc)(Representative(tempgcc))) then + Add(holderoflists[Position(repgcc, Representative(tempgcc))], s); + break; + fi; + od; + od; + for i in [1 .. Length(allgcc)] do + SetAsList(allgcc[i], holderoflists[i]); + od; + fi; + + for tempgcc in allgcc do + if Representative(gcc) in AsList(tempgcc) then + return AsList(tempgcc); + fi; + od; + + return fail; +end); + BindGlobal("MonoidCharacterTableType", NewType(NewFamily("MonoidCharacterTableFamily"), IsMonoidCharacterTable and From e26031b08c8f12c119e446f1571ca598e34d540e Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Mon, 4 May 2026 08:16:53 -0700 Subject: [PATCH 05/34] Getting ready to add GeneralizedConjugacyClass AsList example --- doc/cartan.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/doc/cartan.xml b/doc/cartan.xml index 013962c25..858a925ba 100644 --- a/doc/cartan.xml +++ b/doc/cartan.xml @@ -31,14 +31,6 @@ semigroup S. In a group generalized conjugacy classes coincide with conjugacy classes.

- Note that each generalized conjugacy class as currently implemented - does not store a list of elements in the conjugacy class, only the representative - with no way to compute all the elements in the conjugacy class. - This means that - as currently - implemented is only as effective as - . - S := FullTransformationMonoid(6);; gap> GeneralizedConjugacyClassesRepresentatives(S); From fcb18c6ca2fe0671b4d2e5cfec5ed644919fd504 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Mon, 4 May 2026 08:23:30 -0700 Subject: [PATCH 06/34] Added a test for AsList --- tst/standard/attributes/cartan.tst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index b577a6712..72b495c02 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -39,6 +39,16 @@ gap> GeneralizedConjugacyClass(M, m); formation( [ 2, 1 ] ), Transformation( [ 1, 2, 1 ] ) ] ) for representative Tr\ ansformation( [ 3, 2, 2 ] )> +# AsList GeneralizedConjugacyClass test +gap> M := FullTransformationMonoid(3);; +gap> m := Transformation([3, 2, 2]);; +gap> AsList(GeneralizedConjugacyClass(M, m)); +[ Transformation( [ 1, 1, 1 ] ), Transformation( [ 1, 1, 2 ] ), + Transformation( [ 1, 3, 1 ] ), Transformation( [ 2, 2, 1 ] ), + Transformation( [ 2, 2, 2 ] ), Transformation( [ 2, 3, 3 ] ), + Transformation( [ 3, 1, 3 ] ), Transformation( [ 3, 2, 2 ] ), + Transformation( [ 3, 3, 3 ] ) ] + # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(S);; From feed6eb4b4d1046751fbe79e5b31712c19fedeff Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Mon, 4 May 2026 16:48:00 -0700 Subject: [PATCH 07/34] Change IsGeneralizedConjugacyClass category from IsObject to IsCollection --- gap/attributes/cartan.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index 69d1ff444..9f7fa185f 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -9,7 +9,7 @@ ############################################################################# ## -DeclareCategory("IsGeneralizedConjugacyClass", IsObject); +DeclareCategory("IsGeneralizedConjugacyClass", IsCollection); DeclareAttribute("Representative", IsGeneralizedConjugacyClass); DeclareAttribute("ParentAttr", IsGeneralizedConjugacyClass); DeclareAttribute("MapToGroupHClass", IsGeneralizedConjugacyClass); From 2a70032cfe78de757a30dbd66729a72e974c04ab Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Mon, 4 May 2026 16:48:19 -0700 Subject: [PATCH 08/34] Add Enumerator method for generalized conjugacy class Changes made with help from Max --- gap/attributes/cartan.gi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 1580e11b7..2c174c025 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -145,6 +145,10 @@ function(gcc) return fail; end); +InstallMethod(Enumerator, "for a generalized conjugacy class", +[IsGeneralizedConjugacyClass], +gcc -> Enumerator(AsList(gcc))); + BindGlobal("MonoidCharacterTableType", NewType(NewFamily("MonoidCharacterTableFamily"), IsMonoidCharacterTable and From f96dfe5feb0438ad1bd10f3484ca310f923add6a Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Tue, 5 May 2026 00:32:28 -0700 Subject: [PATCH 09/34] Do not need to declare another AsList attribute on a category which is already a collection --- gap/attributes/cartan.gd | 1 - 1 file changed, 1 deletion(-) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index 9f7fa185f..ada27321a 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -13,7 +13,6 @@ DeclareCategory("IsGeneralizedConjugacyClass", IsCollection); DeclareAttribute("Representative", IsGeneralizedConjugacyClass); DeclareAttribute("ParentAttr", IsGeneralizedConjugacyClass); DeclareAttribute("MapToGroupHClass", IsGeneralizedConjugacyClass); -DeclareAttribute("AsList", IsGeneralizedConjugacyClass); DeclareOperation("GeneralizedConjugacyClass", [IsSemigroup, IsMultiplicativeElement]); DeclareOperation("GeneralizedConjugacyClass", From ef1d773e79561592630e999e8eeafa05b4da30cf Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Tue, 5 May 2026 00:32:38 -0700 Subject: [PATCH 10/34] Updated tests --- tst/standard/attributes/cartan.tst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 72b495c02..55cf0daec 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -49,6 +49,12 @@ gap> AsList(GeneralizedConjugacyClass(M, m)); Transformation( [ 3, 1, 3 ] ), Transformation( [ 3, 2, 2 ] ), Transformation( [ 3, 3, 3 ] ) ] +# AsList GeneralizedConjugacyClass test +gap> M := FullTransformationMonoid(3);; +gap> m := Transformation([2, 2, 1]);; +gap> Size(GeneralizedConjugacyClass(M, m)); +9 + # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(S);; From dc35fb87c3d8497e7ab56f3df64eeaadf3309002 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Tue, 5 May 2026 07:50:11 -0700 Subject: [PATCH 11/34] Fix comparison logic for generalized conjugacy classes to return false for different semigroups --- gap/attributes/cartan.gi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 2c174c025..e86c9b7a1 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -55,8 +55,7 @@ InstallMethod(\=, "for generalized conjugacy classes", [IsGeneralizedConjugacyClass, IsGeneralizedConjugacyClass], function(gcc1, gcc2) if ParentAttr(gcc1) <> ParentAttr(gcc2) then - Error( - "Cannot compare generalized conjugacy classes of different semigroups."); + return false fi; if Representative(gcc1) = Representative(gcc2) then return true; From b160697242b45d7c262b00959f7dda607775d519 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Tue, 5 May 2026 07:50:27 -0700 Subject: [PATCH 12/34] Adding tests for code --- tst/standard/attributes/cartan.tst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 55cf0daec..c9b276e64 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -55,6 +55,29 @@ gap> m := Transformation([2, 2, 1]);; gap> Size(GeneralizedConjugacyClass(M, m)); 9 +# \in GeneralizedConjugacyClass test +gap> M := FullTransformationMonoid(3);; +gap> m := Transformation([2, 2, 1]);; +gap> ccm := GeneralizedConjugacyClass(M, m);; +gap> m in ccm[1]; +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `[]' on 2 arguments +gap> m in ccm[2]; +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `[]' on 2 arguments +gap> m in ccm[3]; +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `[]' on 2 arguments +gap> m in ccm[4]; +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `[]' on 2 arguments +gap> m in ccm[5]; +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `[]' on 2 arguments +gap> m in ccm[6]; +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `[]' on 2 arguments + # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(S);; From 1ee7e2205ceb324eacaf864cba107229498a2c81 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Tue, 5 May 2026 09:03:32 -0700 Subject: [PATCH 13/34] Missed a semicolon added an in function but it is never called --- gap/attributes/cartan.gi | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index e86c9b7a1..83afaeb4d 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -55,7 +55,7 @@ InstallMethod(\=, "for generalized conjugacy classes", [IsGeneralizedConjugacyClass, IsGeneralizedConjugacyClass], function(gcc1, gcc2) if ParentAttr(gcc1) <> ParentAttr(gcc2) then - return false + return false; fi; if Representative(gcc1) = Representative(gcc2) then return true; @@ -148,6 +148,13 @@ InstallMethod(Enumerator, "for a generalized conjugacy class", [IsGeneralizedConjugacyClass], gcc -> Enumerator(AsList(gcc))); +InstallMethod(\in, "for a object and a generalized conjugacy class", +[IsObject, IsGeneralizedConjugacyClass], +function(obj, gcc) + Error("something"); + return obj in AsList(gcc); +end); + BindGlobal("MonoidCharacterTableType", NewType(NewFamily("MonoidCharacterTableFamily"), IsMonoidCharacterTable and From 66edf6beb84d8bc44f62ced7399b91767b532537 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Tue, 5 May 2026 09:03:39 -0700 Subject: [PATCH 14/34] Tests --- tst/standard/attributes/cartan.tst | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index c9b276e64..1fe6488e1 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -58,25 +58,21 @@ gap> Size(GeneralizedConjugacyClass(M, m)); # \in GeneralizedConjugacyClass test gap> M := FullTransformationMonoid(3);; gap> m := Transformation([2, 2, 1]);; -gap> ccm := GeneralizedConjugacyClass(M, m);; +gap> ccm := GeneralizedConjugacyClasses(M);; +gap> Size(ccm); +6 gap> m in ccm[1]; -Error, no method found! For debugging hints type ?Recovery from NoMethodFound -Error, no 1st choice method found for `[]' on 2 arguments +false gap> m in ccm[2]; -Error, no method found! For debugging hints type ?Recovery from NoMethodFound -Error, no 1st choice method found for `[]' on 2 arguments +false gap> m in ccm[3]; -Error, no method found! For debugging hints type ?Recovery from NoMethodFound -Error, no 1st choice method found for `[]' on 2 arguments +false gap> m in ccm[4]; -Error, no method found! For debugging hints type ?Recovery from NoMethodFound -Error, no 1st choice method found for `[]' on 2 arguments +false gap> m in ccm[5]; -Error, no method found! For debugging hints type ?Recovery from NoMethodFound -Error, no 1st choice method found for `[]' on 2 arguments +false gap> m in ccm[6]; -Error, no method found! For debugging hints type ?Recovery from NoMethodFound -Error, no 1st choice method found for `[]' on 2 arguments +false # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; From 29bbf8cd841aaadb47f115a6b599f95ec552b559 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 09:39:09 +0100 Subject: [PATCH 15/34] Update tests for generalized conjugacy classes and clarify method status --- gap/attributes/cartan.gi | 2 ++ tst/standard/attributes/cartan.tst | 14 +++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 83afaeb4d..0983d8cc4 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -148,6 +148,8 @@ InstallMethod(Enumerator, "for a generalized conjugacy class", [IsGeneralizedConjugacyClass], gcc -> Enumerator(AsList(gcc))); +# This method is not run +# The test has been updated to show that this method would work if it were run InstallMethod(\in, "for a object and a generalized conjugacy class", [IsObject, IsGeneralizedConjugacyClass], function(obj, gcc) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 1fe6488e1..a6c3f359b 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -61,18 +61,18 @@ gap> m := Transformation([2, 2, 1]);; gap> ccm := GeneralizedConjugacyClasses(M);; gap> Size(ccm); 6 -gap> m in ccm[1]; +gap> m in List(ccm[1]); false -gap> m in ccm[2]; +gap> m in List(ccm[2]); false -gap> m in ccm[3]; +gap> m in List(ccm[3]); false -gap> m in ccm[4]; +gap> m in List(ccm[4]); false -gap> m in ccm[5]; -false -gap> m in ccm[6]; +gap> m in List(ccm[5]); false +gap> m in List(ccm[6]); +true # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; From c18c639dbef53a64892b4ffdd7f1d5666a2b694f Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 16:01:32 +0100 Subject: [PATCH 16/34] Tried to add action on conjugacy classes Still in progress --- gap/attributes/cartan.gi | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 0983d8cc4..9c03b3ffc 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -441,6 +441,41 @@ function(char) return str; end); +InstallMethod(ValuesOfMonoidClassFunction, "for a monoid character", +[IsMonoidCharacter], +function(char) + local ct; + if HasValuesOfCompositionFactorsFunction(char) then + ct := List(Irr(ParentAttr(char)), ValuesOfClassFunction); + return ValuesOfCompositionFactorsFunction(char) * ct; + fi; + + Error("No method to generate ValuesOfMonoidClassFunction in this case"); +end); + +# obj in AsList should be replaced with `in` when the `in` function is made +# InstallMethod(\^, "for a monoid element and a monoid character", +# [IsObject, IsMonoidCharacter], +# function(obj, char) +# local ct, M, values, gcc, i; + +# ct := ParentAttr(char); +# M := ParentAttr(ct); +# if not obj in M then +# Error("The object is not in the semigroup."); +# fi; +# values := ValuesOfMonoidClassFunction(char); +# gcc := GeneralizedConjugacyClasses(M); + +# for i in [1 .. Size(gcc)] do +# if obj in gcc[i] then +# return values[i]; +# fi; +# od; + +# Error("The object is not in the semigroup."); +# end); + InstallMethod(DClassBicharacter, "for a D-class", [IsGreensDClass], function(D) From 5360472c258ddf89153c57ceb424e1989c916d06 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 16:51:20 +0100 Subject: [PATCH 17/34] Added a paremeterized type to generalized conjugacy classes --- gap/attributes/cartan.gi | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 9c03b3ffc..4c5314cc8 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -14,17 +14,20 @@ # This object is to be a placeholder to eventually hold all the elements # which are in the same generalized conjugacy class. This will then allow # the monoid characters to work like characters in the case of groups. -BindGlobal("GeneralizedConjugacyClassType", -NewType(NewFamily("GeneralizedConjugacyClassFamily"), - IsGeneralizedConjugacyClass and - IsAttributeStoringRep)); - InstallMethod(GeneralizedConjugacyClass, "for a semigroup and a multiplicative element", [IsSemigroup, IsMultiplicativeElement], function(S, s) - local result; - result := Objectify(GeneralizedConjugacyClassType, rec()); + local result, fam; + + fam := FamilyObj(S); + + if not IsBound(fam!.defaultGenerlaizedClassType) then + fam!.defaultGenerlaizedClassType := NewType(fam, + IsGeneralizedConjugacyClass and IsAttributeStoringRep); + fi; + + result := Objectify(fam!.defaultGenerlaizedClassType, rec()); SetRepresentative(result, s); SetParentAttr(result, S); return result; @@ -34,8 +37,16 @@ InstallMethod(GeneralizedConjugacyClass, "for a semigroup and a multiplicative element", [IsSemigroup, IsMultiplicativeElement, IsGeneralMapping], function(S, s, map) - local result; - result := Objectify(GeneralizedConjugacyClassType, rec()); + local result, fam; + + fam := FamilyObj(S); + + if not IsBound(fam!.defaultGenerlaizedClassType) then + fam!.defaultGenerlaizedClassType := NewType(fam, + IsGeneralizedConjugacyClass and IsAttributeStoringRep); + fi; + + result := Objectify(fam!.defaultGenerlaizedClassType, rec()); SetRepresentative(result, s); SetParentAttr(result, S); SetMapToGroupHClass(result, map); @@ -152,10 +163,7 @@ gcc -> Enumerator(AsList(gcc))); # The test has been updated to show that this method would work if it were run InstallMethod(\in, "for a object and a generalized conjugacy class", [IsObject, IsGeneralizedConjugacyClass], -function(obj, gcc) - Error("something"); - return obj in AsList(gcc); -end); +{obj, gcc} -> obj in AsList(gcc)); BindGlobal("MonoidCharacterTableType", NewType(NewFamily("MonoidCharacterTableFamily"), From 9d0f08a7a6992dbc81a972dfbbff94d57b213ef9 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 16:51:36 +0100 Subject: [PATCH 18/34] Reran test and the in function works --- tst/standard/attributes/cartan.tst | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index a6c3f359b..d1a0c895c 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -56,22 +56,23 @@ gap> Size(GeneralizedConjugacyClass(M, m)); 9 # \in GeneralizedConjugacyClass test +# tests for List gap> M := FullTransformationMonoid(3);; gap> m := Transformation([2, 2, 1]);; gap> ccm := GeneralizedConjugacyClasses(M);; gap> Size(ccm); 6 -gap> m in List(ccm[1]); +gap> m in ccm[1]; false -gap> m in List(ccm[2]); +gap> m in ccm[2]; false -gap> m in List(ccm[3]); +gap> m in ccm[3]; false -gap> m in List(ccm[4]); +gap> m in ccm[4]; false -gap> m in List(ccm[5]); +gap> m in ccm[5]; false -gap> m in List(ccm[6]); +gap> m in ccm[6]; true # Simple check of a monoid character table - 1 From 3c0d9b1d472ce10ffe81940db8e03bab6e2f4d5f Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 17:09:25 +0100 Subject: [PATCH 19/34] Test to fail and attempt to make function application work --- gap/attributes/cartan.gi | 2 +- tst/standard/attributes/cartan.tst | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 4c5314cc8..35567a5f1 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -461,7 +461,7 @@ function(char) Error("No method to generate ValuesOfMonoidClassFunction in this case"); end); -# obj in AsList should be replaced with `in` when the `in` function is made +# # obj in AsList should be replaced with `in` when the `in` function is made # InstallMethod(\^, "for a monoid element and a monoid character", # [IsObject, IsMonoidCharacter], # function(obj, char) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index d1a0c895c..4bd1aead9 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -56,7 +56,6 @@ gap> Size(GeneralizedConjugacyClass(M, m)); 9 # \in GeneralizedConjugacyClass test -# tests for List gap> M := FullTransformationMonoid(3);; gap> m := Transformation([2, 2, 1]);; gap> ccm := GeneralizedConjugacyClasses(M);; @@ -89,10 +88,19 @@ gap> known := [[1, -1, 1, 0, 0, 0], gap> TransformingPermutations(mat, known) <> fail; true -# Check display string of MonoidCharacterTable - 1 -# Explicitly enable acting methods because the order of the D-classes -# is not canonical and a permutation on the D-classes may be lead to -# a different display string. +# Check application of monoid character to an element - 1 +gap> M := FullTransformationMonoid(3);; +gap> ct := MonoidCharacterTable(M);; +gap> irr := Irr(ct)[1];; +gap> m := Transformation([2, 2, 1]);; +gap> m^irr; +Error, no method found! For debugging hints type ?Recovery from NoMethodFound +Error, no 1st choice method found for `^' on 2 arguments + +# Check display string of MonoidCharacterTable - 1 +# Explicitly enable acting methods because the order of the D-classes +# is not canonical and a permutation on the D-classes may be lead to +# a different display string. gap> S := Monoid(FullTransformationMonoid(3), rec(acting := true));; gap> ct := MonoidCharacterTable(S);; gap> Irr(ct);; From d28dac9a2704997575e89e01686b90ecfa06c8dc Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 22:54:03 +0100 Subject: [PATCH 20/34] Linting fix --- tst/standard/attributes/cartan.tst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 4bd1aead9..af45a0898 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -93,7 +93,7 @@ gap> M := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(M);; gap> irr := Irr(ct)[1];; gap> m := Transformation([2, 2, 1]);; -gap> m^irr; +gap> m ^ irr; Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `^' on 2 arguments From 74118fa10183041b3788e5856c9b9775ff484b50 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 23:29:24 +0100 Subject: [PATCH 21/34] The code for doing the evaluation works. Needs to change it to \^ somehow --- gap/attributes/cartan.gd | 4 ++- gap/attributes/cartan.gi | 41 ++++++++++++++---------------- tst/standard/attributes/cartan.tst | 9 ++++--- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index ada27321a..5a8c36799 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -43,4 +43,6 @@ DeclareCategory("IsMonoidCartanMatrix", IsObject); DeclareAttribute("ParentAttr", IsMonoidCartanMatrix); DeclareAttribute("MonoidCartanMatrix", IsSemigroup); -DeclareAttribute("Pims", IsMonoidCartanMatrix); \ No newline at end of file +DeclareAttribute("Pims", IsMonoidCartanMatrix); + +DeclareOperation("MyExp", [IsMultiplicativeElement, IsMonoidCharacter]); \ No newline at end of file diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 35567a5f1..0699f0e54 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -461,28 +461,25 @@ function(char) Error("No method to generate ValuesOfMonoidClassFunction in this case"); end); -# # obj in AsList should be replaced with `in` when the `in` function is made -# InstallMethod(\^, "for a monoid element and a monoid character", -# [IsObject, IsMonoidCharacter], -# function(obj, char) -# local ct, M, values, gcc, i; - -# ct := ParentAttr(char); -# M := ParentAttr(ct); -# if not obj in M then -# Error("The object is not in the semigroup."); -# fi; -# values := ValuesOfMonoidClassFunction(char); -# gcc := GeneralizedConjugacyClasses(M); - -# for i in [1 .. Size(gcc)] do -# if obj in gcc[i] then -# return values[i]; -# fi; -# od; - -# Error("The object is not in the semigroup."); -# end); +# obj in AsList should be replaced with `in` when the `in` function is made +InstallMethod(MyExp, "for a multiplicative element and a monoid character", +[IsMultiplicativeElement, IsMonoidCharacter], +function(obj, char) + local ct, M, values, gcc, i; + + ct := ParentAttr(char); + M := ParentAttr(ct); + values := ValuesOfMonoidClassFunction(char); + gcc := GeneralizedConjugacyClasses(M); + + for i in [1 .. Size(gcc)] do + if obj in gcc[i] then + return values[i]; + fi; + od; + + Error("The object is not in the semigroup."); +end); InstallMethod(DClassBicharacter, "for a D-class", [IsGreensDClass], diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index af45a0898..c2192946a 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -93,9 +93,12 @@ gap> M := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(M);; gap> irr := Irr(ct)[1];; gap> m := Transformation([2, 2, 1]);; -gap> m ^ irr; -Error, no method found! For debugging hints type ?Recovery from NoMethodFound -Error, no 1st choice method found for `^' on 2 arguments +gap> MyExp(m, irr); +0 +gap> irr := Irr(ct)[6];; +gap> m := Transformation([2, 2, 1]);; +gap> MyExp(m, irr); +1 # Check display string of MonoidCharacterTable - 1 # Explicitly enable acting methods because the order of the D-classes From 8646ae7ce86b5f03d89e12603657cf322fd3c97a Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Wed, 6 May 2026 23:40:19 +0100 Subject: [PATCH 22/34] Test need to be order agnostic of conjugacy classes and characters --- tst/standard/attributes/cartan.tst | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index c2192946a..7c28beb55 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -61,18 +61,8 @@ gap> m := Transformation([2, 2, 1]);; gap> ccm := GeneralizedConjugacyClasses(M);; gap> Size(ccm); 6 -gap> m in ccm[1]; -false -gap> m in ccm[2]; -false -gap> m in ccm[3]; -false -gap> m in ccm[4]; -false -gap> m in ccm[5]; -false -gap> m in ccm[6]; -true +gap> Number(ccm, c -> m in c); +1 # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; @@ -91,14 +81,11 @@ true # Check application of monoid character to an element - 1 gap> M := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(M);; -gap> irr := Irr(ct)[1];; -gap> m := Transformation([2, 2, 1]);; -gap> MyExp(m, irr); -0 -gap> irr := Irr(ct)[6];; gap> m := Transformation([2, 2, 1]);; -gap> MyExp(m, irr); +gap> Number(List(Irr(ct), chi -> MyExp(m, chi)), x -> x = 1); 1 +gap> Number(List(Irr(ct), chi -> MyExp(m, chi)), x -> x = 0); +5 # Check display string of MonoidCharacterTable - 1 # Explicitly enable acting methods because the order of the D-classes From f7a2deb5094b0cb39cd24c80b7e06ccd690e38dc Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 11:31:57 +0100 Subject: [PATCH 23/34] Called wrong value function --- gap/attributes/cartan.gi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 0699f0e54..0f97ced1e 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -454,7 +454,7 @@ InstallMethod(ValuesOfMonoidClassFunction, "for a monoid character", function(char) local ct; if HasValuesOfCompositionFactorsFunction(char) then - ct := List(Irr(ParentAttr(char)), ValuesOfClassFunction); + ct := List(Irr(ParentAttr(char)), ValuesOfMonoidClassFunction); return ValuesOfCompositionFactorsFunction(char) * ct; fi; From 48416c887f86f30331a793258ddf86ec57aea7c4 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 11:32:22 +0100 Subject: [PATCH 24/34] Test to check converstion from composition factors to characters --- tst/standard/attributes/cartan.tst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 7c28beb55..8d96a485d 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -64,6 +64,14 @@ gap> Size(ccm); gap> Number(ccm, c -> m in c); 1 +# Projective Character finde ValuesOfMonoidClassFunction test +gap> M := FullTransformationMonoid(3);; +gap> cm := MonoidCartanMatrix(M);; +gap> pims := Pims(cm);; +gap> List(pims, ValuesOfMonoidClassFunction); +[ [ 1, -1, 1, 0, 0, 0 ], [ 2, 0, -1, 0, 0, 0 ], [ 4, 0, 1, 1, -1, 0 ], + [ 3, -1, 0, 1, -1, 0 ], [ 3, 1, 0, 1, 1, 0 ], [ 3, 1, 0, 2, 0, 1 ] ] + # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(S);; From 8527f932bd05e46e03775dc062278d73b717aa60 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 11:33:56 +0100 Subject: [PATCH 25/34] The in function was made and the change was implemented so the comment was removed --- gap/attributes/cartan.gi | 1 - 1 file changed, 1 deletion(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 0f97ced1e..d9039ded6 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -461,7 +461,6 @@ function(char) Error("No method to generate ValuesOfMonoidClassFunction in this case"); end); -# obj in AsList should be replaced with `in` when the `in` function is made InstallMethod(MyExp, "for a multiplicative element and a monoid character", [IsMultiplicativeElement, IsMonoidCharacter], function(obj, char) From 06f68975097e011c87b3ec41eac4a4b613ca6db6 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 11:43:18 +0100 Subject: [PATCH 26/34] Test which allows for order of conjugacy classes to change and order of irreduciables to change --- tst/standard/attributes/cartan.tst | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 8d96a485d..53b8379e6 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -68,9 +68,17 @@ gap> Number(ccm, c -> m in c); gap> M := FullTransformationMonoid(3);; gap> cm := MonoidCartanMatrix(M);; gap> pims := Pims(cm);; -gap> List(pims, ValuesOfMonoidClassFunction); +gap> mat :=List(pims, ValuesOfMonoidClassFunction); [ [ 1, -1, 1, 0, 0, 0 ], [ 2, 0, -1, 0, 0, 0 ], [ 4, 0, 1, 1, -1, 0 ], [ 3, -1, 0, 1, -1, 0 ], [ 3, 1, 0, 1, 1, 0 ], [ 3, 1, 0, 2, 0, 1 ] ] +gap> known := [ [ 1, -1, 1, 0, 0, 0 ], +> [ 2, 0, -1, 0, 0, 0 ], +> [ 4, 0, 1, 1, -1, 0 ], +> [ 3, -1, 0, 1, -1, 0 ], +> [ 3, 1, 0, 1, 1, 0 ], +> [ 3, 1, 0, 2, 0, 1 ] ];; +gap> TransformingPermutations(mat, known) <> fail; +true # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; From 847cae76bee54ce9e3acb52e2b39ff44627c516d Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 11:47:49 +0100 Subject: [PATCH 27/34] linting --- tst/standard/attributes/cartan.tst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 53b8379e6..0d84a5fca 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -68,15 +68,15 @@ gap> Number(ccm, c -> m in c); gap> M := FullTransformationMonoid(3);; gap> cm := MonoidCartanMatrix(M);; gap> pims := Pims(cm);; -gap> mat :=List(pims, ValuesOfMonoidClassFunction); +gap> mat := List(pims, ValuesOfMonoidClassFunction); [ [ 1, -1, 1, 0, 0, 0 ], [ 2, 0, -1, 0, 0, 0 ], [ 4, 0, 1, 1, -1, 0 ], [ 3, -1, 0, 1, -1, 0 ], [ 3, 1, 0, 1, 1, 0 ], [ 3, 1, 0, 2, 0, 1 ] ] -gap> known := [ [ 1, -1, 1, 0, 0, 0 ], -> [ 2, 0, -1, 0, 0, 0 ], -> [ 4, 0, 1, 1, -1, 0 ], -> [ 3, -1, 0, 1, -1, 0 ], -> [ 3, 1, 0, 1, 1, 0 ], -> [ 3, 1, 0, 2, 0, 1 ] ];; +gap> known := [[1, -1, 1, 0, 0, 0], +> [2, 0, -1, 0, 0, 0], +> [4, 0, 1, 1, -1, 0], +> [3, -1, 0, 1, -1, 0], +> [3, 1, 0, 1, 1, 0], +> [3, 1, 0, 2, 0, 1]];; gap> TransformingPermutations(mat, known) <> fail; true From 81457b5fb2d383ccf3b7f1f064ace1472622feb5 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 11:54:18 +0100 Subject: [PATCH 28/34] Condition to not compute as list for the idenity element. May be a common use case since this is the dimesion of the represenation --- gap/attributes/cartan.gi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index d9039ded6..684c58520 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -471,6 +471,14 @@ function(obj, char) values := ValuesOfMonoidClassFunction(char); gcc := GeneralizedConjugacyClasses(M); + if obj = Identity(M) then + for i in [1 .. Size(gcc)] do + if Identity(M) = Representative(gcc[i]) then + return values[i]; + fi; + od; + fi; + for i in [1 .. Size(gcc)] do if obj in gcc[i] then return values[i]; From 542bf58c1c701407dc551e46732e3260570871b1 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 11:54:39 +0100 Subject: [PATCH 29/34] Test specual use case of applying the character to the idenity --- tst/standard/attributes/cartan.tst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 0d84a5fca..c1fa62808 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -103,6 +103,16 @@ gap> Number(List(Irr(ct), chi -> MyExp(m, chi)), x -> x = 1); gap> Number(List(Irr(ct), chi -> MyExp(m, chi)), x -> x = 0); 5 +# Check special use of MyExp for the identity element - 1 +gap> M := FullTransformationMonoid(3);; +gap> ct := MonoidCharacterTable(M);; +gap> m := Identity(M);; +gap> List(Irr(ct), chi -> MyExp(m, chi)); +[ 1, 2, 1, 2, 3, 1 ] +gap> ccm := GeneralizedConjugacyClasses(M);; +gap> HasAsList(ccm[1]); +false + # Check display string of MonoidCharacterTable - 1 # Explicitly enable acting methods because the order of the D-classes # is not canonical and a permutation on the D-classes may be lead to From 3a08679c833676045454968b70e0925b12d84a09 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 12:07:50 +0100 Subject: [PATCH 30/34] Exp to ^ thanks to Meike --- gap/attributes/cartan.gi | 2 +- tst/standard/attributes/cartan.tst | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 684c58520..a403f683c 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -461,7 +461,7 @@ function(char) Error("No method to generate ValuesOfMonoidClassFunction in this case"); end); -InstallMethod(MyExp, "for a multiplicative element and a monoid character", +InstallOtherMethod(\^, "for a multiplicative element and a monoid character", [IsMultiplicativeElement, IsMonoidCharacter], function(obj, char) local ct, M, values, gcc, i; diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index c1fa62808..eca4bc730 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -68,9 +68,7 @@ gap> Number(ccm, c -> m in c); gap> M := FullTransformationMonoid(3);; gap> cm := MonoidCartanMatrix(M);; gap> pims := Pims(cm);; -gap> mat := List(pims, ValuesOfMonoidClassFunction); -[ [ 1, -1, 1, 0, 0, 0 ], [ 2, 0, -1, 0, 0, 0 ], [ 4, 0, 1, 1, -1, 0 ], - [ 3, -1, 0, 1, -1, 0 ], [ 3, 1, 0, 1, 1, 0 ], [ 3, 1, 0, 2, 0, 1 ] ] +gap> mat := List(pims, ValuesOfMonoidClassFunction);; gap> known := [[1, -1, 1, 0, 0, 0], > [2, 0, -1, 0, 0, 0], > [4, 0, 1, 1, -1, 0], @@ -98,17 +96,19 @@ true gap> M := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(M);; gap> m := Transformation([2, 2, 1]);; -gap> Number(List(Irr(ct), chi -> MyExp(m, chi)), x -> x = 1); +gap> Number(List(Irr(ct), chi -> m ^ chi), x -> x = 1); 1 -gap> Number(List(Irr(ct), chi -> MyExp(m, chi)), x -> x = 0); +gap> Number(List(Irr(ct), chi -> m ^ chi), x -> x = 0); 5 # Check special use of MyExp for the identity element - 1 gap> M := FullTransformationMonoid(3);; gap> ct := MonoidCharacterTable(M);; gap> m := Identity(M);; -gap> List(Irr(ct), chi -> MyExp(m, chi)); -[ 1, 2, 1, 2, 3, 1 ] +gap> mat := List(Irr(ct), chi -> m ^ chi);; +gap> known := [1, 2, 1, 2, 3, 1];; +gap> TransformingPermutations([mat], [known]) <> fail; +true gap> ccm := GeneralizedConjugacyClasses(M);; gap> HasAsList(ccm[1]); false From 4139a584f957cc1d62c4f3a48ccbda2d050d3085 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 13:53:24 +0100 Subject: [PATCH 31/34] Here is where I am going to start changin the name of monoidartanmatrix to cartanmatrix --- gap/attributes/cartan.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index 5a8c36799..e1cd3b013 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -45,4 +45,4 @@ DeclareAttribute("MonoidCartanMatrix", IsSemigroup); DeclareAttribute("Pims", IsMonoidCartanMatrix); -DeclareOperation("MyExp", [IsMultiplicativeElement, IsMonoidCharacter]); \ No newline at end of file +DeclareOperation("MyExp", [IsMultiplicativeElement, IsMonoidCharacter]); \ No newline at end of file From 2dd4220f93ec4d8b2dcb7a9cb09be2b733b366bc Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 13:56:05 +0100 Subject: [PATCH 32/34] Refactoring --- doc/cartan.xml | 18 +++++++++--------- gap/attributes/cartan.gd | 10 +++++----- gap/attributes/cartan.gi | 26 +++++++++++++------------- tst/standard/attributes/cartan.tst | 16 ++++++++-------- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/doc/cartan.xml b/doc/cartan.xml index 858a925ba..66327612f 100644 --- a/doc/cartan.xml +++ b/doc/cartan.xml @@ -260,23 +260,23 @@ gap> Irr(ct); <#/GAPDoc> -<#GAPDoc Label="MonoidCartanMatrix"> +<#GAPDoc Label="CartanMatrix"> - + An object. Called with a finite monoid M and a field F, - returns the Cartan matrix of the monoid + returns the Cartan matrix of the monoid algebra FM which is defined as the matrix dim Hom(P,Q)/dim End(P / rad(FM)), where P and Q run over the right indecomposable projective modules of FM.

To get the Cartan matrix of a monoid to display like the example below, the projective indecomposable modules need to be computed first using - .

+ .

If M is the only argument then - returns the Cartan matrix of the monoid + returns the Cartan matrix of the monoid algebra FM, where F is a splitting field of M over the rationals.

@@ -288,7 +288,7 @@ gap> Irr(ct); S := FullTransformationMonoid(3);; -gap> cm := MonoidCartanMatrix(S);; +gap> cm := CartanMatrix(S);; gap> Pims(cm);; gap> Display(cm); X.1 X.2 X.3 X.4 X.5 X.6 @@ -307,10 +307,10 @@ P.6 . . . 1 . 1 <#GAPDoc Label="Pims"> + Label = "for a cartan matrix"/> A list of monoid characters. - returns a + returns a list of the characters of the projective indecomposable modules of the monoid of the monoid character table T. @@ -318,7 +318,7 @@ P.6 . . . 1 . 1 the presentation of the monoid display inconsistently --> M := FullBooleanMatMonoid(2);; -gap> cm := MonoidCartanMatrix(M);; +gap> cm := CartanMatrix(M);; gap> Pims(cm); [ MonoidCharacter( MonoidCharacterTable( Monoid( [ Matrix(IsBooleanMat\ , [ [ false, true ], [ true, false ] ]), Matrix(IsBooleanMat, [ [ true\ diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index e1cd3b013..218098c01 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -39,10 +39,10 @@ DeclareAttribute("RClassRadicalBicharacterOfGroupHClass", IsGroupHClass); DeclareAttribute("BlockDiagonalMatrixOfCharacterTables", IsSemigroup); DeclareAttribute("Irr", IsMonoidCharacterTable); -DeclareCategory("IsMonoidCartanMatrix", IsObject); -DeclareAttribute("ParentAttr", IsMonoidCartanMatrix); -DeclareAttribute("MonoidCartanMatrix", IsSemigroup); +DeclareCategory("IsCartanMatrix", IsObject); +DeclareAttribute("ParentAttr", IsCartanMatrix); +DeclareAttribute("CartanMatrix", IsSemigroup); -DeclareAttribute("Pims", IsMonoidCartanMatrix); +DeclareAttribute("Pims", IsCartanMatrix); -DeclareOperation("MyExp", [IsMultiplicativeElement, IsMonoidCharacter]); \ No newline at end of file +DeclareOperation("MyExp", [IsMultiplicativeElement, IsMonoidCharacter]); \ No newline at end of file diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index a403f683c..3263fcd2f 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -303,37 +303,37 @@ function(ct) return str; end); -BindGlobal("MonoidCartanMatrixType", -NewType(NewFamily("MonoidCartanMatrixFamily"), - IsMonoidCartanMatrix and +BindGlobal("CartanMatrixType", +NewType(NewFamily("CartanMatrixFamily"), + IsCartanMatrix and IsAttributeStoringRep)); -InstallMethod(MonoidCartanMatrix, "for a semigroup", +InstallMethod(CartanMatrix, "for a semigroup", [IsMonoidAsSemigroup], function(S) local result; - result := Objectify(MonoidCartanMatrixType, rec()); + result := Objectify(CartanMatrixType, rec()); SetParentAttr(result, S); return result; end); -InstallMethod(ViewString, "for a monoid cartan matrix", -[IsMonoidCartanMatrix], +InstallMethod(ViewString, "for a cartan matrix", +[IsCartanMatrix], function(cm) - return StringFormatted("MonoidCartanMatrix( {} )", + return StringFormatted("CartanMatrix( {} )", ParentAttr(cm)); end); -InstallMethod(DisplayString, "for a monoid cartan matrix", -[IsMonoidCartanMatrix], +InstallMethod(DisplayString, "for a cartan matrix", +[IsCartanMatrix], function(cm) local str, columnlabels, rowlabels, strarray, sizetable, i, j, cmmatrix, coltable, columnwidth, rowlabelwidth, currentwidth, currentpage, screensizeassume, quotientcolumnwidthsums, temp, temp2; - str := StringFormatted("MonoidCartanMatrix( {} )", + str := StringFormatted("CartanMatrix( {} )", ParentAttr(cm)); if HasPims(cm) then @@ -817,8 +817,8 @@ function(ct, values, char) return result; end); -InstallMethod(Pims, "for a monoid Cartan matrix", -[IsMonoidCartanMatrix], +InstallMethod(Pims, "for a cartan matrix", +[IsCartanMatrix], function(cm) local C, S, ct, M, out; diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index eca4bc730..8461549b0 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -66,7 +66,7 @@ gap> Number(ccm, c -> m in c); # Projective Character finde ValuesOfMonoidClassFunction test gap> M := FullTransformationMonoid(3);; -gap> cm := MonoidCartanMatrix(M);; +gap> cm := CartanMatrix(M);; gap> pims := Pims(cm);; gap> mat := List(pims, ValuesOfMonoidClassFunction);; gap> known := [[1, -1, 1, 0, 0, 0], @@ -131,15 +131,15 @@ X.5 3 1 . 1 1 . X.6 1 1 1 1 1 1 -# Creation of a lazy monoid cartan matrix - 1 +# Creation of a lazy cartan matrix - 1 gap> S := FullTransformationMonoid(3);; -gap> MonoidCartanMatrix(S); -MonoidCartanMatrix( Monoid( [ Transformation( [ 2, 3, 1 ] ), Transformation( [\ +gap> CartanMatrix(S); +CartanMatrix( Monoid( [ Transformation( [ 2, 3, 1 ] ), Transformation( [\ 2, 1 ] ), Transformation( [ 1, 2, 1 ] ) ] ) ) -# Simple check of a monoid cartan matrix - 1 +# Simple check of a cartan matrix - 1 gap> S := FullTransformationMonoid(3);; -gap> cm := MonoidCartanMatrix(S);; +gap> cm := CartanMatrix(S);; gap> pims := Pims(cm);; gap> mat := List(pims, ValuesOfCompositionFactorsFunction);; gap> known := [[1, 0, 0, 0, 0, 0], @@ -151,12 +151,12 @@ gap> known := [[1, 0, 0, 0, 0, 0], gap> TransformingPermutations(mat, known) <> fail; true -# Check display string of MonoidCartanMatrix - 1 +# Check display string of CartanMatrix - 1 # Explicitly enable acting methods because the order of the D-classes # is not canonical and a permutation on the D-classes may be lead to # a different display string. gap> S := Monoid(FullTransformationMonoid(3), rec(acting := true));; -gap> cm := MonoidCartanMatrix(S);; +gap> cm := CartanMatrix(S);; gap> Pims(cm);; gap> Display(cm); X.1 X.2 X.3 X.4 X.5 X.6 From a4f9acf553695a50405d7e3eda3f6a1799287198 Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 15:37:17 +0100 Subject: [PATCH 33/34] Removed the word monoid to vairable levels of success. Removed InstallOtherMethod by adding declare operation to \^ --- gap/attributes/cartan.gd | 19 +++++----- gap/attributes/cartan.gi | 56 +++++++++++++++++------------- tst/standard/attributes/cartan.tst | 19 +++++----- 3 files changed, 51 insertions(+), 43 deletions(-) diff --git a/gap/attributes/cartan.gd b/gap/attributes/cartan.gd index 218098c01..09a5e1e97 100644 --- a/gap/attributes/cartan.gd +++ b/gap/attributes/cartan.gd @@ -21,14 +21,17 @@ DeclareAttribute("GeneralizedConjugacyClasses", IsSemigroup); DeclareAttribute("GeneralizedConjugacyClassesRepresentatives", IsSemigroup); DeclareCategory("IsMonoidCharacterTable", IsObject); DeclareAttribute("ParentAttr", IsMonoidCharacterTable); -DeclareAttribute("MonoidCharacterTable", IsSemigroup); +DeclareAttribute("CartanMatrix", IsMonoidCharacterTable); +DeclareAttribute("OrdinaryCharacterTable", IsSemigroup); +DeclareOperation("CharacterTable", [IsSemigroup]); DeclareCategory("IsMonoidCharacter", IsObject); -DeclareOperation("MonoidCharacter", [IsMonoidCharacterTable, IsList]); -DeclareOperation("PimMonoidCharacter", +DeclareOperation("Character", [IsMonoidCharacterTable, IsList]); +DeclareOperation("Character", [IsMonoidCharacterTable, IsDenseList, IsMonoidCharacter]); +DeclareOperation("\^", [IsMultiplicativeElement, IsMonoidCharacter]); DeclareAttribute("ParentAttr", IsMonoidCharacter); -DeclareAttribute("ValuesOfMonoidClassFunction", IsMonoidCharacter); +DeclareAttribute("ValuesOfClassFunction", IsMonoidCharacter); DeclareAttribute("ProjectiveCoverOf", IsMonoidCharacter); DeclareAttribute("ValuesOfCompositionFactorsFunction", IsMonoidCharacter); DeclareAttribute("DClassBicharacter", IsGreensDClass); @@ -39,10 +42,8 @@ DeclareAttribute("RClassRadicalBicharacterOfGroupHClass", IsGroupHClass); DeclareAttribute("BlockDiagonalMatrixOfCharacterTables", IsSemigroup); DeclareAttribute("Irr", IsMonoidCharacterTable); -DeclareCategory("IsCartanMatrix", IsObject); -DeclareAttribute("ParentAttr", IsCartanMatrix); +DeclareCategory("IsMonoidCartanMatrix", IsObject); +DeclareAttribute("ParentAttr", IsMonoidCartanMatrix); DeclareAttribute("CartanMatrix", IsSemigroup); -DeclareAttribute("Pims", IsCartanMatrix); - -DeclareOperation("MyExp", [IsMultiplicativeElement, IsMonoidCharacter]); \ No newline at end of file +DeclareAttribute("Pims", IsMonoidCartanMatrix); \ No newline at end of file diff --git a/gap/attributes/cartan.gi b/gap/attributes/cartan.gi index 3263fcd2f..2d2ca6feb 100644 --- a/gap/attributes/cartan.gi +++ b/gap/attributes/cartan.gi @@ -170,7 +170,11 @@ NewType(NewFamily("MonoidCharacterTableFamily"), IsMonoidCharacterTable and IsAttributeStoringRep)); -InstallMethod(MonoidCharacterTable, "for a semigroup", +InstallMethod(CharacterTable, "for a semigroup", +[IsMonoidAsSemigroup], +OrdinaryCharacterTable); + +InstallMethod(OrdinaryCharacterTable, "for a semigroup", [IsMonoidAsSemigroup], function(S) local result; @@ -213,9 +217,9 @@ function(ct) sizetable := Length(Irr(ct)); strarray := List([1 .. sizetable], x -> List([1 .. sizetable], y -> ".")); - ctmatrix := List(Irr(ct), ValuesOfMonoidClassFunction); + ctmatrix := List(Irr(ct), ValuesOfClassFunction); rosetastone := Filtered(Unique(Concatenation(List(Irr(ct), - ValuesOfMonoidClassFunction))), + ValuesOfClassFunction))), x -> not IsInt(x)); columnlabels := List([1 .. 2], x -> List([1 .. sizetable], y -> " ")); @@ -305,29 +309,33 @@ end); BindGlobal("CartanMatrixType", NewType(NewFamily("CartanMatrixFamily"), - IsCartanMatrix and + IsMonoidCartanMatrix and IsAttributeStoringRep)); InstallMethod(CartanMatrix, "for a semigroup", [IsMonoidAsSemigroup], -function(S) +S -> CartanMatrix(CharacterTable(S))); + +InstallMethod(CartanMatrix, "for a monoid character table", +[IsMonoidCharacterTable], +function(ct) local result; result := Objectify(CartanMatrixType, rec()); - SetParentAttr(result, S); + SetParentAttr(result, ct); return result; end); InstallMethod(ViewString, "for a cartan matrix", -[IsCartanMatrix], +[IsMonoidCartanMatrix], function(cm) return StringFormatted("CartanMatrix( {} )", ParentAttr(cm)); end); InstallMethod(DisplayString, "for a cartan matrix", -[IsCartanMatrix], +[IsMonoidCartanMatrix], function(cm) local str, columnlabels, rowlabels, strarray, sizetable, i, j, cmmatrix, coltable, columnwidth, rowlabelwidth, currentwidth, currentpage, @@ -420,14 +428,14 @@ NewType(NewFamily("MonoidCharacterFamily"), IsMonoidCharacter and IsAttributeStoringRep)); -InstallMethod(MonoidCharacter, "for a monoid character table and dense list", +InstallMethod(Character, "for a monoid character table and dense list", [IsMonoidCharacterTable, IsDenseList], function(ct, values) local result; result := Objectify(MonoidCharacterType, rec()); SetParentAttr(result, ct); - SetValuesOfMonoidClassFunction(result, values); + SetValuesOfClassFunction(result, values); return result; end); @@ -436,10 +444,10 @@ InstallMethod(ViewString, "for a monoid character", [IsMonoidCharacter], function(char) local str; - if HasValuesOfMonoidClassFunction(char) then + if HasValuesOfClassFunction(char) then str := StringFormatted("MonoidCharacter( {} , {} )", ViewString(ParentAttr(char)), - ValuesOfMonoidClassFunction(char)); + ValuesOfClassFunction(char)); elif HasProjectiveCoverOf(char) then str := StringFormatted("MonoidCharacter( {} , Projective Cover Of {} )", ViewString(ParentAttr(char)), @@ -449,16 +457,16 @@ function(char) return str; end); -InstallMethod(ValuesOfMonoidClassFunction, "for a monoid character", +InstallMethod(ValuesOfClassFunction, "for a monoid character", [IsMonoidCharacter], function(char) local ct; if HasValuesOfCompositionFactorsFunction(char) then - ct := List(Irr(ParentAttr(char)), ValuesOfMonoidClassFunction); + ct := List(Irr(ParentAttr(char)), ValuesOfClassFunction); return ValuesOfCompositionFactorsFunction(char) * ct; fi; - Error("No method to generate ValuesOfMonoidClassFunction in this case"); + Error("No method to generate ValuesOfClassFunction in this case"); end); InstallOtherMethod(\^, "for a multiplicative element and a monoid character", @@ -468,7 +476,7 @@ function(obj, char) ct := ParentAttr(char); M := ParentAttr(ct); - values := ValuesOfMonoidClassFunction(char); + values := ValuesOfClassFunction(char); gcc := GeneralizedConjugacyClasses(M); if obj = Identity(M) then @@ -800,10 +808,10 @@ function(ct) Rrad := Concatenation(List(transversalHclasses, RClassRadicalBicharacterOfGroupHClass)); irrvalues := Inverse(TransposedMat(D)) * (R - Rrad); - return List(irrvalues, x -> MonoidCharacter(ct, x)); + return List(irrvalues, x -> Character(ct, x)); end); -InstallMethod(PimMonoidCharacter, +InstallMethod(Character, "for a monoid character table, dense list, and monoid character", [IsMonoidCharacterTable, IsDenseList, IsMonoidCharacter], function(ct, values, char) @@ -818,16 +826,16 @@ function(ct, values, char) end); InstallMethod(Pims, "for a cartan matrix", -[IsCartanMatrix], +[IsMonoidCartanMatrix], function(cm) local C, S, ct, M, out; - S := ParentAttr(cm); - ct := MonoidCharacterTable(S); - C := List(Irr(ct), ValuesOfMonoidClassFunction); - M := RegularRepresentationBicharacter(S); + ct := ParentAttr(cm); + S := ParentAttr(ct); + C := List(Irr(ct), ValuesOfClassFunction); + M := RegularRepresentationBicharacter(S); out := Inverse(TransposedMatMutable(C)) * M * Inverse(C); return List([1 .. Length(out)], - n -> PimMonoidCharacter(ct, out[n], Irr(ct)[n])); + n -> Character(ct, out[n], Irr(ct)[n])); end); diff --git a/tst/standard/attributes/cartan.tst b/tst/standard/attributes/cartan.tst index 8461549b0..fda23a37b 100644 --- a/tst/standard/attributes/cartan.tst +++ b/tst/standard/attributes/cartan.tst @@ -18,7 +18,7 @@ gap> SEMIGROUPS.StartTest(); # Creation of a lazy monoid character table - 1 gap> S := FullTransformationMonoid(3);; -gap> MonoidCharacterTable(S); +gap> CharacterTable(S); MonoidCharacterTable( Monoid( [ Transformation( [ 2, 3, 1 ] ), Transformation(\ [ 2, 1 ] ), Transformation( [ 1, 2, 1 ] ) ] ) ) @@ -64,11 +64,11 @@ gap> Size(ccm); gap> Number(ccm, c -> m in c); 1 -# Projective Character finde ValuesOfMonoidClassFunction test +# Projective Character finde ValuesOfClassFunction test gap> M := FullTransformationMonoid(3);; gap> cm := CartanMatrix(M);; gap> pims := Pims(cm);; -gap> mat := List(pims, ValuesOfMonoidClassFunction);; +gap> mat := List(pims, ValuesOfClassFunction);; gap> known := [[1, -1, 1, 0, 0, 0], > [2, 0, -1, 0, 0, 0], > [4, 0, 1, 1, -1, 0], @@ -80,9 +80,9 @@ true # Simple check of a monoid character table - 1 gap> S := FullTransformationMonoid(3);; -gap> ct := MonoidCharacterTable(S);; +gap> ct := CharacterTable(S);; gap> irr := Irr(ct);; -gap> mat := List(irr, ValuesOfMonoidClassFunction);; +gap> mat := List(irr, ValuesOfClassFunction);; gap> known := [[1, -1, 1, 0, 0, 0], > [2, 0, -1, 0, 0, 0], > [1, 1, 1, 0, 0, 0], @@ -94,7 +94,7 @@ true # Check application of monoid character to an element - 1 gap> M := FullTransformationMonoid(3);; -gap> ct := MonoidCharacterTable(M);; +gap> ct := CharacterTable(M);; gap> m := Transformation([2, 2, 1]);; gap> Number(List(Irr(ct), chi -> m ^ chi), x -> x = 1); 1 @@ -103,7 +103,7 @@ gap> Number(List(Irr(ct), chi -> m ^ chi), x -> x = 0); # Check special use of MyExp for the identity element - 1 gap> M := FullTransformationMonoid(3);; -gap> ct := MonoidCharacterTable(M);; +gap> ct := CharacterTable(M);; gap> m := Identity(M);; gap> mat := List(Irr(ct), chi -> m ^ chi);; gap> known := [1, 2, 1, 2, 3, 1];; @@ -118,7 +118,7 @@ false # is not canonical and a permutation on the D-classes may be lead to # a different display string. gap> S := Monoid(FullTransformationMonoid(3), rec(acting := true));; -gap> ct := MonoidCharacterTable(S);; +gap> ct := CharacterTable(S);; gap> Irr(ct);; gap> Display(ct); c.1 c.2 c.3 c.4 c.5 c.6 @@ -134,8 +134,7 @@ X.6 1 1 1 1 1 1 # Creation of a lazy cartan matrix - 1 gap> S := FullTransformationMonoid(3);; gap> CartanMatrix(S); -CartanMatrix( Monoid( [ Transformation( [ 2, 3, 1 ] ), Transformation( [\ - 2, 1 ] ), Transformation( [ 1, 2, 1 ] ) ] ) ) +CartanMatrix( ) # Simple check of a cartan matrix - 1 gap> S := FullTransformationMonoid(3);; From 7cde491d019d32e7eb43c6337c59e2140d53ee7a Mon Sep 17 00:00:00 2001 From: Joseph Daynger Ruiz Date: Thu, 7 May 2026 15:37:33 +0100 Subject: [PATCH 34/34] The documentation really needs to be updated --- doc/cartan.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/cartan.xml b/doc/cartan.xml index 66327612f..22eddc9ec 100644 --- a/doc/cartan.xml +++ b/doc/cartan.xml @@ -177,13 +177,13 @@ gap> BlockDiagonalMatrixOfCharacterTables(S); <#/GAPDoc> -<#GAPDoc Label="MonoidCharacterTable"> +<#GAPDoc Label="CharacterTable"> - + The character table object for M over F. Called with a finite monoid M and optionally a field F, - returns the character table of the + returns the character table of the monoid which is defined as the matrix Trace(X(m)), where X runs over the simple FM-modules and m runs over the generalized conjugacy class representatives of M.

@@ -193,7 +193,7 @@ gap> BlockDiagonalMatrixOfCharacterTables(S); .

If F is not given, then - returns the character table of + returns the character table of M over a characteristic zero splitting field of M.

At the moment, methods are available for the following cases: @@ -204,7 +204,7 @@ gap> BlockDiagonalMatrixOfCharacterTables(S); S := FullTransformationMonoid(3);; -gap> ct := MonoidCharacterTable(S);; +gap> ct := CharacterTable(S);; gap> Irr(ct);; gap> Display(ct); c.1 c.2 c.3 c.4 c.5 c.6 @@ -234,7 +234,7 @@ X.6 1 1 1 1 1 1 the presentation of the monoid display inconsistently --> M := FullBooleanMatMonoid(2);; -gap> ct := MonoidCharacterTable(M);; +gap> ct := CharacterTable(M);; gap> Irr(ct); [ MonoidCharacter( MonoidCharacterTable( Monoid( [ Matrix(IsBooleanMat\ , [ [ false, true ], [ true, false ] ]), Matrix(IsBooleanMat, [ [ true\