> < ^ Date: Tue, 27 Jul 1993 07:51:57 +0200
> ^ From: Philip Osterlund <osterlu@s5.math.umn.edu >
> ^ Subject: Redefining "+, -, *, =," etc.

Dear Forum:
I would like to be able to create a domain in which I redefine addition
and multiplication. I was able to do so in version 3.1, but I'm having
difficulty in version 3.2. These are defined as functios, as shown below.

gap>  G := SymmetricGroup(5);;
gap> a := AbstractGenerator("a");;b :=AbstractGenerator("b");;
gap> a5:= Group(a,b);;a5.relators := [a^2,b^3,(a*b)^5];;
gap> D := DirectProduct(G,a5);
Group( DirectProductElement( (1,5), IdWord ), DirectProductElement(
(2,5), IdWord ), DirectProductElement( (3,5), IdWord ), DirectProductElement(
(4,5
 ), IdWord ), DirectProductElement( (), a ), DirectProductElement( (), b ) )
gap>  ops := D.identity.operations;
rec(
  = := function ( a, b ) ... end,
  < := function ( a, b ) ... end,
  * := function ( a, b ) ... end,
  / := function ( a, b ) ... end,
  mod := function ( a, b ) ... end,
  ^ := function ( a, b ) ... end,
  Comm := function ( a, b ) ... end,
  Print := function ( a ) ... end )

But I can't access these functions. The obvious guess is:

gap> ops.=;
Syntax error: record component name expected
ops.=;
^

What used to work is:

gap> ops.'=';
Syntax error: record component name expected
ops.'=';
^

Another possible guess is:

gap> ops."=";
Syntax error: record component name expected
ops."=";
^

Just to check that I'm looking at the right object:

gap> ops.Print;
function ( a ) ... end

Thanks for any suggestions.
                        -Philip Osterlund

> < [top]