# The Restriction to a Subgroup

## `Restriction(CM, H): ModCoho, Grp -> ModCoho`

Given a cohomology module for a group $G$ and a subgroup $H$ of $G$, form the restriction of the input cohomology module to $H$.

Note that, denoting this restriction by CMH, we can define the restriction maps on the first and second cohomology groups of CM by

```{.magma
>  res1 := hom<CohomologyGroup(CM, 1) -> CohomologyGroup(CMH, 1) |
>                        x:->IdentifyOneCocycle(CMH,OneCocycle(CM,x)) >;
>  res2 := hom<CohomologyGroup(CM, 2) -> CohomologyGroup(CMH, 2) |
>                        x:->IdentifyTwoCocycle(CMH,TwoCocycle(CM,x)) >;

```

## `Example: restriction (ex-a1fddf)`

In this example we define $G$ to be the group $GL(3,2)$ and $H$ to be the Sylow $2$-subgroup of $G$. We illustrate how to calculate the restriction mappings of $H^n(G, M)$ to $H^n(G, MH)$, where $MH$ is the restriction of $M$ to $H$.

```magma
> G := GL(3, 2);
> M := GModule(G);
> H := Sylow(G, 2);
> CG := CohomologyModule(G, M);
> CH := Restriction(CG, H);

```

We first consider $H^1(G, M)$.

```magma
> H1G := CohomologyGroup(CG, 1); H1G;
Full Vector space of degree 1 over GF(2)
> H1H := CohomologyGroup(CH, 1); H1H;
Full Vector space of degree 2 over GF(2)
> res1 := hom<H1G -> H1H | x:->IdentifyOneCocycle(CH,OneCocycle(CG,x)) >;
> res1(H1G.1);
(1 1)

```

We now consider $H^2(G, M)$.

```magma
> H2G := CohomologyGroup(CG, 2); H2G;
Full Vector space of degree 1 over GF(2)
> H2H := CohomologyGroup(CH, 2); H2H;
Full Vector space of degree 3 over GF(2)
> res2 := hom<H2G -> H2H | x:-> IdentifyTwoCocycle(CH,TwoCocycle(CG,x)) >;
> res2(H2G.1);
(0 0 1)

```

In the case of a zero restriction, we can find a corresponding coboundary.

```magma
> H:=sub< G | G.2, G.2^(G.1*G.2*G.1) >;
> #H;
21
> CH := Restriction(CG, H);
> CohomologyGroup(CH, 1); CohomologyGroup(CH, 2);
Full Vector space of degree 0 over GF(2)
Full Vector space of degree 0 over GF(2)
> t:=TwoCocycle(CG,[1]);
> isc, o := IsTwoCoboundary(CH, t);
> isc;
true
> forall{ <h,k> : h in H, k in H | t(<h,k>) eq
>            o(<h>)*MatrixOfElement(CH,k) + o(<k>) - o(<h*k>) };
true

```
