> < ^ Date: Tue, 21 Apr 1992 11:49:58 +0200
> ^ From: Martin Schoenert <martin.schoenert@math.rwth-aachen.de >
> < ^ Subject: Re: Confused about Image

David Sibley writes in his mail of 20-Apr-92

Probably I just don't understand this. But "Image" doesn't seem to be
working as the manual says it should.

No, it is not that you don't understand the manual. You have found a
genuine bug.

David Sibley continues

I constructed GL(2,3) as a matrix group and got the permutation
representation f (operation homomorphism) of it acting on vectors
(including the zero vector -- on RowSpace(2,GF(3))). Then I tried
applying the homomorphism to a pre-defined matrix:

gap> m1;
[ [ Z(3)^0, Z(3)^0 ], [ 0*Z(3), Z(3)^0 ] ]
gap> Image(f,m1);
Error, <E> must be a domain or a set in
DomainOps.IsSubset( G, H ) called from
D.operations.IsSubset( D, E ) called from
IsSubset( arg[1].source, arg[2] ) called from
Image( f, m1 ) called from
main loop
brk> quit;

The problem is that 'Image' sees a list as second argument and assumes
that this means that it was called in the 'Image( <map>, <list> )' form.
To be certain that this is really the case it tests if <list> is a subset
of '<map>.source' with the call 'IsSubset( <map>.source, <list> )'. Now
this test should really be 'IsSubset( <map>.source, Set( <list> ) )'.
Then it would return 'false' (instead of failing with the error message),
and 'Image' would know that it was called in the 'Image( <map>, <elm> )'
form. I will send out a patch for this problem later this week.

David Sibley continues

gap> m1^f;
(4,5,6)(7,9,8)

As you can see, the "^" form worked, but "Image" itself did not. And
why is it worrying about subsets when I'm trying to use the element
version of "Image"?

Yes, the '^' works, and I suggest that you use it for the moment.

David Sibley continues

When I tried the set version I got the same error message:

gap> Image(f,[m1]);
Error, <E> must be a domain or a set in
DomainOps.IsSubset( G, H ) called from
D.operations.IsSubset( D, E ) called from
IsSubset( arg[1].source, arg[2] ) called from
Images( map, elm ) called from
fun( i ) called from
..
brk> quit;
gap>

So the set version of "Image" doesn't work here either. This is
especially mystifying, as the error message says [m1] is not a subset
of f.source. At least I think that's what it means. But it IS a subset
of f.source.

This is the same error, because in this form 'Image' calls itself
(actually 'Images') for each element of the list.

David Sibley continues

What am I doing wrong?

David Sibley
sibley@math.psu.edu

You are not doing anything wrong.

Martin.

--
Martin Sch"onert, Martin.Schoenert@Math.RWTH-Aachen.DE, +49 241 804551
Lehrstuhl D f"ur Mathematik, Templergraben 64, RWTH, D 51 Aachen, Germany


> < [top]