</code></a> below), so this suggests how to deal with Coxeter groups generically:</p><p>The  type  <code>CoxeterGroup</code>  is  an  abstract  type;  an  actual struct which implements it must define a function</p><p><code>isleftdescent(W,w,i)</code> which tells whether the <code>i</code>-th element of <code>S</code> is in    the left descent set of <code>w</code>.</p><p>the other functions needed in an instance of a Coxeter group are</p><ul><li><code>gens(W)</code> which returns the set <code>S</code> (th