'This routine is used in the relator-based strategy of Todd-Coxeter
algorithm if some `\alpha^x` is undefined. We check whether there is
space available for defining a new coset. If there is enough space
then we remedy this by adjoining a new coset `\beta` to `\Omega`
(i.e to set of live cosets) and put that equal to `\alpha^x`, then
make an assignment satisfying Property[1]. If there is not enough space
then we halt the Coset Table creation. The maximum amount of space that
can be used by Coset Table can be manipulated using the class variable
``CosetTable.coset_table_max_limit``.
See Also
define_c'

def define(self, alpha, x, max_cosets=coset_table_max_limit):

    A = self.A
    table = self.table
    len_table = len(table)
    if (len_table == self.coset_table_max_limit):
        raise ValueError(('the    coset    enumeration    has    defined    more    than    %s    cosets.    Try    with    a    greater    value    max    number    of    cosets    ' % self.coset_table_max_limit))
    table.append(([None] * len(A)))
    beta = len_table
    self.p.append(beta)
    table[alpha][self.A_dict[x]] = beta
    table[beta][self.A_dict_inv[x]] = alpha
