# 25.86 OneCoboundaries

`OneCoboundaries( G, M )`

Let M be a normal p-elementary abelian subgroup of G. Then `OneCoboundaries` computes the vector space {cal V} = beta( B^1( <G>/<M>, <M> ) ), which is isomorphic to the group of one coboundaries B^1( G, M ) as described in One Cohomology Group. The functions returns a record C with the following components.

`oneCoboundaries`:

contains the vector space {cal V}.

`generators`:

contains representatives (g_1, ..., g_l) for the canonical generating system of <G> / <M>

`cocycleToList`:

contains a functions which takes an element v of {cal V} as argument and returns a list [ n_1, ..., n_l ], where n_i is an element of M, such that n_i = ( beta^{-1}( v ) )( g_i <M> ).

`listToCocycles`:

is the inverse of `cocycleToList`.

`OneCoboundaries( G, alpha, M )`

In that form `OneCoboundaries` computes the one coboundaries in the semidirect product of G and M where G acts on M using alpha (see SemidirectProduct).

```    gap> s4xc2 := DirectProduct( s4, CyclicGroup( AgWords, 2 ) );
Group( a1, a2, a3, a4, b )
gap> m := CompositionSubgroup( s4xc2, 3 );
Subgroup( Group( a1, a2, a3, a4, b ), [ a3, a4, b ] )
gap> oc := OneCoboundaries( s4xc2, m );
rec(
oneCoboundaries := RowSpace( GF(2),
[ [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ] ] ),
generators := [ a1, a2 ],
cocycleToList := function ( c ) ... end,
listToCocycle := function ( L ) ... end )
gap> v := Base( oc.oneCoboundaries );
[ [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ] ]
gap> oc.cocycleToList( v[1] );
[ a4, a4 ]
gap> oc.cocycleToList( v[2] );
[ IdAgWord, a3 ]
gap> oc.cocycleToList( v[1]+v[2] );
[ a4, a3*a4 ] ```

GAP 3.4.4
April 1997