By definition, English words have the same pronunciation if their phonetic spellings in the dictionary are the same. The homophonic group H is generated by the letters of the alphabet, subject to the following relations: English words with the same pronunciation represent equal elements of the group. Thus be=bee, and since H is a group, we can conclude that e=1 (why?). Try to determine the group H.

Is it satisfied if I select some special words and use the relations on pronunciation to prove that every letter in the alphabet equal to 1 so that H is the trivial group?

**Answer**

The answer is yes, and some time ago I wrote a small GAP script to check this for the defining relations coming from English words having same pronunciation.

There is the paper called *“Quotients homophones des groupes libres”* (*Homophonic quotients of free groups*), written by Jean-François Mestre, René Schoof, Lawrence Washington and Don Zagier. It was published in Experiment. Math. 2 (1993), **no. 3**, 153–155. The authors take the free group on 26 letters a, b, c, …, z and consider its two quotients (denote them G and H) by the relations of the form A=B where A and B are words having the same pronunciation in English and French languages respectively for G and H. The authors prove that both G and H are trivial.

The paper is written in two columns. The left column is written in French and proves the main theorem for the group defined by the relations coming from English (*buy=by*, *sign=sine*, etc.), while the right column is written in English and proves the same for the group coming from French. It even contains a reference to Lam’s book “Serre’s Conjecture” that is used to prove “the triviality of r from the well known fact *serre=sert*“.

I wrote a simple GAP script which checks that the statement of the paper is true for the group defined by the English language. It uses the same pairs of words that are used in the paper, and one could follow the proof by studying the source code below, even without being familiar with GAP.

```
F:=FreeGroup("a","b","c","d","e","f","g","h","i","j","k","l","m",
"n","o","p","q","r","s","t","u","v","w","x","y","z");
AssignGeneratorVariables(F);
pairs:=[
"bye=by", # e=1
"lead=led", # a=1
"maid=made", # mid=md => i=1
"sow=sew", # o=e=1
"buy=by", # u=1
"sow=so", # w=1
"lye=lie", # y=1
"hour=our", # h=1
"knight=night", # k=1
"damn=dam", # n=1
"psalter=salter", # p=1
"plumb=plum", # b=1
"bass=base", # s=1
"butt=but", # t=1
"tolled=told", # l=1
"barred=bard", # r=1
"dammed=damned", # m=1
"chased=chaste", # d=1
"sign=sine", # g=1
"daze=days", # z=1
"cite=sight", # c=1
"jeans=genes", # j=1
"queue=cue", # q=1
"tax=tacks", # x=1
# "ruff=rough", # f=1, we need not this relation used in the paper
"phase=faze", # f=1
"chivvy=chivy"]; # v=1
rels:=List( pairs, r -> ParseRelators(GeneratorsOfGroup(F),r)[1]);
G:=F/rels;
Size(G);
```

Just paste it into the GAP session and it will immediately confirm that the order of this group is 1. The script also demonstrates that the relation *“ruff=rough”*, used in the original paper, is in fact superfluous – GAP can determine the order of the group without using it.

**Remark:** The authors claim that their approach should be very useful to investigate the famous **P=NP** conjecture, so perhaps the next step towards it should be checking with GAP that the group coming from French language is trivial 😉

**Update:** You can now see a GAP Jupyter notebook with this calculation here, and you can reproduce it yourself on Binder following instructions here.

**Attribution***Source : Link , Question Author : Miao , Answer Author : Olexandr Konovalov*