class_docstr: Properties
  ==========
  
  [1] `0 \in \Omega` and `\tau(1) = \epsilon`
  [2] `\alpha^x = \beta \Leftrightarrow \beta^{x^{-1}} = \alpha`
  [3] If `\alpha^x = \beta`, then `H \tau(\alpha)x = H \tau(\beta)`
  [4] `\forall \alpha \in \Omega, 1^{\tau(\alpha)} = \alpha`
  
  References
  ==========
  
  .. [1] Holt, D., Eick, B., O'Brien, E.
         "Handbook of Computational Group Theory"
  
  .. [2] John J. Cannon; Lucien A. Dimino; George Havas; Jane M. Watson
         Mathematics of Computation, Vol. 27, No. 123. (Jul., 1973), pp. 463-490.
         "Implementation and Analysis of the Todd-Coxeter Algorithm"
class_docstr_tok: ["Properties","==========","[","1","]","`","0","\\in","\\Omega","`","and","`","\\tau","(","1",")","=","\\epsilon","`","[","2","]","`","\\alpha^x","=","\\beta","\\Leftrightarrow","\\beta^","{","x^","{","-1","}","}","=","\\alpha","`","[","3","]","If","`","\\alpha^x","=","\\beta","`",",","then","`","H","\\tau","(","\\alpha",")","x","=","H","\\tau","(","\\beta",")","`","[","4","]","`","\\forall","\\alpha","\\in","\\Omega",",","1^","{","\\tau","(","\\alpha",")","}","=","\\alpha","`","References","==========","..","[","1","]","Holt",",","D.",",","Eick",",","B.",",","O'Brien",",","E.","``","Handbook","of","Computational","Group","Theory","''","..","[","2","]","John","J.","Cannon",";","Lucien","A.","Dimino",";","George","Havas",";","Jane","M.","Watson","Mathematics","of","Computation",",","Vol",".","27",",","No",".","123",".","(","Jul.",",","1973",")",",","pp",".","463-490",".","``","Implementation","and","Analysis","of","the","Todd-Coxeter","Algorithm","''"]
docstr: A variation of ``define`` routine, described on Pg. 165 [1], used in
  the coset table-based strategy of Todd-Coxeter algorithm. It differs
  from ``define`` routine in that for each definition it also adds the
  tuple `(\alpha, x)` to the deduction stack.
  
  See Also
  ========
  
  define
docstr_tok: ["A","variation","of","``","define","``","routine",",","described","on","Pg",".","165","[","1","]",",","used","in","the","coset","table-based","strategy","of","Todd-Coxeter","algorithm",".","It","differs","from","``","define","``","routine","in","that","for","each","definition","it","also","adds","the","tuple","`","(","\\alpha",",","x",")","`","to","the","deduction","stack",".","See","Also","========","define"]
code: def define_c(self, alpha, x):
      r"""
      A variation of ``define`` routine, described on Pg. 165 [1], used in
      the coset table-based strategy of Todd-Coxeter algorithm. It differs
      from ``define`` routine in that for each definition it also adds the
      tuple `(\alpha, x)` to the deduction stack.
  
      See Also
      ========
  
      define
  
      """
      A = self.A
      table = self.table
      len_table = len(table)
      if len_table >= self.coset_table_limit:
          # abort the further generation of cosets
          raise ValueError(
              "the coset enumeration has defined more than "
              "%s cosets. Try with a greater value max number of cosets "
              % self.coset_table_limit
          )
      table.append([None] * len(A))
      # beta is the new coset generated
      beta = len_table
      self.p.append(beta)
      table[alpha][self.A_dict[x]] = beta
      table[beta][self.A_dict_inv[x]] = alpha
      # append to deduction stack
      self.deduction_stack.append((alpha, x))
  
imports: from sympy.combinatorics.free_groups import free_group
  from sympy.printing.defaults import DefaultPrinting
  from itertools import chain, product
  from bisect import bisect_left
label_desc: Use image node_id 8 for calling the CosetTable obj's underlying member method code with example usage: obj.define_c(alpha, x) without return types