For a field K and groups G and H, a (KG, KH)-bimodule is a vector space over K equipped with a left G-action and a right H-action.
In the Magma implementation, (KG, KH)-bimodules are regarded as being equivalent to standard right K(G x H)-modules, where
It is often more convenient to construct a bimodule directly from the equivalent K(G x H)-module.
Inputs M and N should be KG- and KH-modules of the same dimension, such that the actions of G and H commute; i.e. (v * g) * h = (v * h) * g for all g ∈G, h ∈H, and v in the common underlying K-vector space V of M and N. An error will result if this condition is not satisfied.The corresponding bimodule is returned in which g - 1 * v = v * g for all g ∈G and v ∈V.
> G:=Sym(3); > H:=CyclicGroup(2); > M:=PermutationModule(G,GF(3)); > S:=ScalarMatrix(3, GF(3)!2); > N:=GModule(H,[S]); > B:=Bimodule(M,N); > B; Bimodule B of dimension 3 over GF(3) > M.1 * G.1; M: (0 1 0) > G.1^-1 * B.1; B: (0 1 0) > GHom(B,B); KMatrixSpace of 3 by 3 matrices and dimension 2 over GF(3) > #Submodules(B); 4
Inputs G and H should be groups, and M should be a (G x H)-module. The equivalent (KG, KH)-bimodule is constructed.
> X := DirectProduct(Sym(4), Alt(5)); > I := IrreducibleModules(X, GF(3)); > M12 := I[9]; > M12; GModule M12 of dimension 12 over GF(3) > B := Bimodule(Sym(4), Alt(5), M12); > B; Bimodule B of dimension 12 over GF(3) > IsIrreducible(B); true
M should be a KG-module. The corresponding (KG, KT)-bimodule is returned in which T is the trivial group and g - 1 * v = v * g for all g ∈G and v ∈V.
M should be a KH-module. The corresponding (KT, KH)-bimodule is returned in which T is the trivial group.
Extract the equivalent right KG-module M from the (KG, KH)-bimodule B, where g - 1 * v = v * g for g ∈G, and v in the common K-vector space V of B and M.
Extract the equivalent right KH-module M from the (KG, KH)-bimodule B.
> ML := LeftOppositeModule(B); > ML; GModule ML of dimension 12 over GF(3) > G := Group(ML); > G; Symmetric group G acting on a set of cardinality 4 Order = 24 = 2^3 * 3 (1, 2, 3, 4) (1, 2) > V := VectorSpace(B); > forall{<i,j> : i in [1..2], j in [1..12] | > V!(G.i^-1*B.j) eq V!(ML.j*G.i)}; true
The last argument K should be a field, G and H should be groups, and m should be a homomorphism from a subgroup A of G to H.Let Y be the subgroup { (a, m(a)) : a ∈A} of G x H, and let M be the K(G x H)-permutation module defined by the image of the action of G x H on the right cosets of Y. The (KG, KH)-bimodule corresponding to M is returned.
> G := Sym(3); > H := CyclicGroup(6); > PG := Sylow(G,3); > PH := Sylow(H,3); > m := hom<PG -> PH | [PH.1] >; > K := GF(3); > B := PermutationBimodule(G,H,m,K); > B; Bimodule B of dimension 12 over GF(3) > GHom(B,B); KMatrixSpace of 12 by 12 matrices and dimension 8 over GF(3)
The arguments B1 and B2 are, respectively, (KG, KH)- and (KH, KJ)-bimodules for the groups G, H, J. The (KG, KJ)-bimodule B1 tensor KH B2 is returned.
This is not a sensible way to construct induced modules in practice, but we can use it as an example of the use of the tensor product of bimodules. We regard M as a (KT, KH)-bimodule, where T is the trivial group, and KH as a (KH, KG)-bimodule.
> G := Sym(5); > H := Stabiliser(G,5); > K := GF(5); > M := IrreducibleModules(H,K)[4]; > M; GModule M of dimension 3 over GF(5) > B1 := RightBimodule(M); > //make KG as right G-module > eG := [ g: g in G ]; > mats := []; > for i in [1..Ngens(G)] do > perm := Sym(#G)![Position(eG, g*G.i) : g in eG ]; > Append(~mats, PermutationMatrix(K,perm)); > end for; > RM := GModule(G,mats); > //and as left H-module > mats := []; > for i in [1..Ngens(H)] do > perm := Sym(#G)![Position(eG, H.i*g) : g in eG ]; > Append(~mats, PermutationMatrix(K,perm)^-1); > end for; > LM := GModule(H,mats); > B2 := Bimodule(LM,RM); > T := TensorProduct(B1,B2); > T; Bimodule T of dimension 15 over GF(5) > IsIsomorphic(RightModule(T), Induction(M,G)); true