I'm trying to find some finite groups with certain properites (hopefully of small order; no more than 100, I suspect), and one of the things I need to look at are all of its bilinear bicharacters: maps $G\times G \to \mathbb{C}^*$ where fixing any one coordinate yields a linear character of G. For example, if $G$ is the symmetric group $S_n$, then there are two bicharacters: the trivial one (all values are 1); and the one defined to be -1 when both inputs are odd, and 1 otherwise.

Are there any computationally efficient ways of computing all such bicharacters? I'm fairly proficient with using Mathematica, but I'm currently pretty unfamiliar with other systems, like GAP and Magma. If the others are better for this purpose, I'm fine with learning how to use them, especially if I can easily convert answers to Mathematica code (the bicharacters are just one part of a bigger picture that I'm currently handling with Mathematica). You may suppose I already know the irreducible linear characters of $G$ (my understanding is that these are easy to get with systems like GAP).

EDIT: It is probably worth pointing out that I need to know the bicharacters explicitly, and not up to isomorphism. I need to perform computations involving them and other pieces of data.

  • $\begingroup$ Any (1-dimensional) character maps $[G,G]\to1$, so a bicharacter has to map $[G,G]\times G\cup G\times [G,G]\to1$. I get the feeling that you can thus right away replace $G$ with $G/[G,G]$ and thus assume that $G$ is abelian. I'm not sure how bicharacters of direct products behave. But if $G$ is cyclic, you can view it as the additive group of the ring $\mathbb{Z}/n\mathbb{Z}$. Then if you follow up the ring product by any character of the additive group, you get a bicharacter. This is probably(?) all. $\endgroup$ Aug 28, 2013 at 18:28
  • $\begingroup$ @JyrkiLahtonen: I think it is just the tensor product then (universal property thereof, but also literally just multiply stuff). $\endgroup$ Aug 28, 2013 at 18:30

2 Answers 2


Let $b:G\times G \to A$ be a bilinear map, where $A$ is abelian. Then $b([g,h],k) = [ b(g,k), b(h,k) ] = 1$ with the first equality from bilinear ($[g,h] =g^{-1} h^{-1} gh$) and the second from the commutativity of $A$. This means that $[G,G] \times [G,G]$ is in the "kernel", that is, $b$ is constant on cosets of $[G,G] \times [G,G]$, so we might as well view $b: G/[G,G] \times G/[G,G] \to A$ as a bilinear map between abelian groups.

Hence $b \in \operatorname{Hom}( G/[G,G] \otimes G/[G,G], A )$ which can be computed fairly readily for finite $G$. For your specific $A$, we just get a group isomorphic to $ G/[G,G] \otimes G/[G,G]$.

In nice terms, let $G^*$ be the group of linear characters of $G$. Recall that $G^*$ is an abelian group with the character theoretic tensor product (more simply, just coordinatewise multiplication) as its product. The bilinear bicharacters of $G$ form a group isomorphic to $G^* \otimes_{\mathbb{Z}} G^*$.

For example with $G=S_n$, $G^* = \{ \operatorname{sgn}^i : i \in \{0,1\} \} \cong \mathbb{Z}/2\mathbb{Z}$ and $$G^* \otimes G^* = \{ \operatorname{sgn} \otimes \operatorname{sgn}, 1 \otimes 1 \} \cong \mathbb{Z}/2\mathbb{Z}$$

Let me know if you need more details on the abelian group case; I'm assuming the main insight you needed is just that you can assume $G$ is abelian.

  • 1
    $\begingroup$ $sgn\otimes sgn$ isn't a bicharacter of the symmetric group, though. If $g$ is odd and $h$ is even, then $sgn(g)\otimes sgn(h) = -1$, but that implies the character obtained from fixing $g$ (and letting $h$ vary) sends an even permutation to -1, which no linear character does. $\endgroup$ Aug 30, 2013 at 18:05
  • $\begingroup$ Looks like an isomorphism has been done incorrectly. The bicharacters are $\operatorname{Hom}(G/[G,G] \otimes G/[G,G],A)$, but $g \otimes h = 1\otimes 1$ is the identity of $G/[G,G] \otimes G/[G,G]$, so is always sent to the identity of $A$ by a bi-character. So $\operatorname{sgn} \otimes \operatorname{sgn}$ must be a bad name for that non-trivial bicharacter. $\endgroup$ Aug 30, 2013 at 19:00
  • $\begingroup$ I'm aware of quotienting by the derived subgroup, but I'm not familiar with this isomorphism of the bicharacters with $G^*\otimes_{\mathbb{Z}} G^*$. Do you have a proof of it or reference for one (indeed, any reference at all for bicharacters seems hard to come by; they're ubiquitous, but I've yet to find a reference that develops them; they're just assumed and no one bothers with what they explicitly look like). I need explicit bicharacters for my work, so the isomorphism is at best half the problem; and I'd need to know how to get GAP/mathematica to produce them explicitly. $\endgroup$ Aug 31, 2013 at 19:25
  • 2
    $\begingroup$ I thought about it a little more today. The isomorphism is easy to prove: we can assume $G$ is abelian by the derived subgroup result, and then the bicharacters as Hom(tensor,C) is the definition of tensor product. Define $A^* = \newcommand{\Hom}{\operatorname{Hom}}\Hom(A,\mathbb{C}^\times)$. The bicharacters are by definition $(G \otimes G)^*$, but for finite abelian groups $G \cong G^*$, so $(G \otimes G)^* \cong G \otimes G \cong G^* \otimes G^*$. Since $A \cong A^*$ is contravariant, and I use it twice, the result isomorphism $(G\otimes G)^* \cong G^* \otimes G^*$ should be "natural". $\endgroup$ Aug 31, 2013 at 21:19
  • $\begingroup$ (But writing the bicharacters in terms of the linear characters is still mysterious to me.) $\endgroup$ Aug 31, 2013 at 21:19

I have figured out how to obtain the bicharacters from the linear characters. The basic idea is that the (set of all) characters and the (set of all) values they take are interchangeable: just replace scalars describing the linear character with a character of the same order, and do so consistently (so it stays a group homomorphism, namely).

An example should clear up what that really means.

Consider $G=C_2\oplus C_2$, the Klein 4-group. It has four linear characters (how I'm ordering the elements should be discernible from context):

$\chi_0=(1,1,1,1),$ $\chi_1=(1,-1,-1,1),$ $\chi_2=(1,1,-1,-1),$ $\chi_3=(1,-1,1,-1)$.

The general linear character has the form $(1,a,a*b,b)$, where $a,b$ are $\pm 1$.

To get a general bicharacter: replace any 1 in the general character by $\chi_0$. Replace a -1 by any of $\chi_1,\chi_2,\chi_3$. Or, more generally, replace $a$ and $b$ by any of the 4 linear characters of $G$. An example bicharacter of $G$ here would thus be $(\chi_0, \chi_3,\chi_1,\chi_2)$.

If the linear character had an entry such as $a*b$ in it (as would happen with dihedral groups, amongst many others), then the bicharacter entry at that position would be the product of the characters we are replacing $a$ and $b$ by. And the order of the character we are putting in needs to be the same as the order of the scalar we are replacing (so we can only replace a primitive n-th root of unity by a character with order n).

I'm not exactly sure of the best way to code such a thing up in Mathematica/GAP without doing a lot of the work by hand, but presumably it can be done. Any thoughts on that would be appreciated.

EDIT: The group of bicharacters is isomorphic to $\operatorname{Hom}(G,\widehat{G})$, in a fairly obvious way. This is a more formal statement of what I wrote above, and is useful both in theory and explicit computation. At least, useful enough for my current purposes. Note that also $\operatorname{Hom}(G,\widehat{G})\cong \operatorname{Hom}(\widehat{G},\widehat{G})$, since $G/G'\cong \widehat{G}$, which is essentially what Jack was looking at.

  • $\begingroup$ @Jack Oh, yes, you're right, sorry. That should be fixed now. Been posting from a public library for this, so I'm not always double-checking what I'm typing. $\endgroup$ Sep 11, 2013 at 0:12
  • $\begingroup$ Did you succeed in finding a good algorithm, without many redudancies, for a generic abelian group? $\endgroup$
    – Jose Brox
    May 14, 2020 at 16:35
  • 1
    $\begingroup$ @JoseBrox I've not made a serious attempt at an algorithm, though implementing the group $\textrm{Hom}(G,\widehat{G})$ is not terribly difficult. The main issue in GAP is that while you can use something like Group(LinearCharacters(G),TrivialCharacter(G)) to form the character group, this has some issues because there are some non-compatible operator overlaps between the class functions and group structures. So I had to actually go about constructing the group abstractly from generators and have helper functions to convert between abstract group elements and homomorphisms. $\endgroup$ May 15, 2020 at 5:08
  • 1
    $\begingroup$ The algorithmic bottleneck there is then that those conversions get expensive when $G$ has a large (minimal) generating set. And that's where I haven't made serious attempts at improving the algorithm, as that's not usually been a problem for me in the computations I've performed. Constructing the group abstractly is quick, otherwise. $\endgroup$ May 15, 2020 at 5:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .