> < ^ Date: Wed, 20 Sep 1995 17:55:00 +0200
< ^ From: Martin Wursthorn <pluto@machnix.mathematik.uni-stuttgart.de >
> ^ Subject: Operation on sets

Dear GAP Forum,

When playing around with the 'Blocks' and 'Operation' functions of GAP
I encountered the following problem:

```gap> sl22 := SpecialLinearGroup ( 2, 2 );
SL(2,2)
gap> dom := Blocks ( sl22, Elements ( sl22 ), OnLeft );
[ [ [ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, 0*Z(2) ] ],
[ [ Z(2)^0, Z(2)^0 ], [ Z(2)^0, 0*Z(2) ] ] ],
[ [ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0 ] ],
[ [ Z(2)^0, Z(2)^0 ], [ 0*Z(2), Z(2)^0 ] ] ],
[ [ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ],
[ [ Z(2)^0, 0*Z(2) ], [ Z(2)^0, Z(2)^0 ] ] ] ]
gap> g := Operation ( sl22, dom, OnSets );
Error, List Element: <list>[4] must have a value at
prm[i] := pos[PositionSorted( set, opr( D[i], gen ) )] ... in
arg[1].operations.Operation( arg[1], arg[2], arg[3] ) called from
Operation( sl22, dom, OnSets ) called from
main loop
brk>
```

It seems that 'PositionSorted' could not find the image of a block
in the block list. This becomes obvious if one tries to do this
directly:

```gap> List ( dom, x->PositionSorted ( dom, sl22.1*x ) );
[ 4, 4, 4 ]
```

I suppose the elements of the block list are sets (as one would
expect) but the images sl22.1*dom[i] are not sets, their elements are
ordered in a different way and therefore they are not found in the
list. If the 'Set' operator is supplied explicitly the above statement
works:

```gap> List ( dom, x->PositionSorted ( dom, Set ( sl22.1*x ) ) );
[ 1, 3, 2 ]

--
------------------------------------------------------------------------
Martin Wursthorn                                  Universit"at Stuttgart
Tel. (+49 711) 685 5517                           Mathematisches Inst. B
Fax. (+49 711) 685 5322                           3. Lehrstuhl
------------------------------------------------------------------------
```

> < [top]