> < ^ From:

< ^ Subject:

Dear Forum,

Apologies for not responding earlier.

Jeffrey Hall asked:

I'm not sure I understand what "equality" means

in domains in GAP 4.

Equality means mathematical equality. In more extreme case this means that

groups compare like sets and thus are equal to the set of their elements:

gap> g:=Group((1,2,3));; gap> g=Set([(),(1,2,3),(1,3,2)]); true

> Consider the following function, which

[...]

> gap> H = h;

> true

> gap> Factors( h );

[...]

> gap> Factors( H );

> Error no method found for operation Quotient with 3 arguments

This is an error in the code for polynomials which has been corrected

in bugfix number 2 for GAP4b4, released in August.

> If h=H, and h and H are both in the same polynomial ring R, then shouldn't

> they have the same methods? In particular, why can't we factor both of them

> over GF(2) ?

In this special case, h and H indeed use the same method.

The reason that the factorization did succeed for only one is that the

algorithm uses random numbers and so happens to work for h despite the error.

In general, however equal (= mathematical equal) objects in GAP4 do not

necessarily use the same methods. This will only happen if the objects

are even equal for the computer (that is GAP knows exactly the same

things about both objects). This latter equality cannot easily be tested.

In the following example, the groups $G$ and $H$ are equal

(they have the same elements, so are mathematically equal), but GAP *knows*

more about $H$ (namely that it is a symmetric group) and thus will

use different methods for the operation `ConjugacyClasses':

gap> G:=Group((1,2,3,4),(1,2)); Group([ (1,2,3,4), (1,2) ]) gap> H:=Group((1,2,3,4),(1,2)); Group([ (1,2,3,4), (1,2) ]) gap> IsNaturalSymmetricGroup(H); true

gap> me:=ApplicableMethod(ConjugacyClasses,[G],1);;

[...]

#I Method 8: ``ConjugacyClasses: perm group'', value: 22

gap> me:=ApplicableMethod(ConjugacyClasses,[H],1);;

[...]

#I Method 6: ``ConjugacyClasses: symmetric'', value: 26

gap> ConjugacyClasses(G); [ "ConjugacyClass( "Group([ (1,2,3,4), (1,2) ])", "()" )", "ConjugacyClass( "Group([ (1,2,3,4), (1,2) ])", "(3,4)" )", "ConjugacyClass( "Group([ (1,2,3,4), (1,2) ])", "(2,3,4)" )", "ConjugacyClass( "Group([ (1,2,3,4), (1,2) ])", "(1,2)(3,4)" )", "ConjugacyClass( "Group([ (1,2,3,4), (1,2) ])", "(1,2,3,4)" )" ] gap> ConjugacyClasses(H); [ "ConjugacyClass( "Sym( [ 1 .. 4 ] )", "()" )", "ConjugacyClass( "Sym( [ 1 .. 4 ] )", "(1,2)" )", "ConjugacyClass( "Sym( [ 1 .. 4 ] )", "(1,2)(3,4)" )", "ConjugacyClass( "Sym( [ 1 .. 4 ] )", "(1,2,3)" )", "ConjugacyClass( "Sym( [ 1 .. 4 ] )", "(1,2,3,4)" )" ]

I hope this helps,

Alexander Hulpke

> < [top]