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