diff --git a/gap/byconj.gi b/gap/byconj.gi index 0d5c554..85ba65e 100644 --- a/gap/byconj.gi +++ b/gap/byconj.gi @@ -16,11 +16,23 @@ ConjugatorType@ := obj -> ConjugatorFamily(FamilyObj(obj))!.ConjType; InstallMethod(ConjugatorObj, - "for a mult element that allows left quotients (and should be assoc)", + "for a mult element that allows quotients (and should be assoc)", [IsMultiplicativeElement and IsLeftQuotientElement and IsRightQuotientElement], obj -> Objectify(ConjugatorType@(obj), Immutable(obj)) ); +# Even though IsMultiplicativeElementWithInverse implies both +# IsLeftQuotientElement and IsRightQuotientElement, GAP doesn't seem to +# calculate these implications on built-in elements. So we need to repeat the +# method for IsMultiplicativeElementWithInverse, which is true of built-ins, +# particularly permutations, which serve as a common representation of group +# elements. +InstallMethod(ConjugatorObj, + "for a mult element with inverse (and should be assoc)", + [IsMultiplicativeElementWithInverse], + obj -> Objectify(ConjugatorType@(obj), Immutable(obj)) +); + ## Printing and viewing InstallMethod(String, "for conjugator objects", [IsDefaultConjugatorObject],