diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/src/sa/_sa.c | 4254 | ||||
| -rw-r--r-- | python/src/sa/rulefactory.pxi | 35 | 
2 files changed, 2241 insertions, 2048 deletions
| diff --git a/python/src/sa/_sa.c b/python/src/sa/_sa.c index 39e927b0..5f42e8ca 100644 --- a/python/src/sa/_sa.c +++ b/python/src/sa/_sa.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.17.1 on Thu Jan  3 17:20:05 2013 */ +/* Generated by Cython 0.17.1 on Fri Jan  4 19:46:16 2013 */  #define PY_SSIZE_T_CLEAN  #include "Python.h" @@ -603,7 +603,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr {  }; -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2128 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2130   *         return rules   *    *     def new_rule(self, f_sym, e_sym, links):             # <<<<<<<<<<<<<< @@ -665,7 +665,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr {  }; -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2131 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2133   *         f = Phrase(f_sym)   *         e = Phrase(e_sym)   *         a = tuple(self.alignment.link(i, j) for (i, j) in links)             # <<<<<<<<<<<<<< @@ -1010,7 +1010,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ {  }; -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2134 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2136   *         return (f, e, a)   *    *     def fmt_rule(self, f, e, a):             # <<<<<<<<<<<<<< @@ -1024,7 +1024,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_23_fmt_rule {  }; -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2135 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2137   *    *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)             # <<<<<<<<<<<<<< @@ -2647,6 +2647,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_22input(struct __pyx_ob  static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(PyObject *__pyx_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_f_j, PyObject *__pyx_v_e_i, PyObject *__pyx_v_e_j, PyObject *__pyx_v_min_bound, PyObject *__pyx_v_wc, PyObject *__pyx_v_links, PyObject *__pyx_v_nt, PyObject *__pyx_v_nt_open); /* proto */  static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_words, PyObject *__pyx_v_e_words, PyObject *__pyx_v_alignment); /* proto */  static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ +static PyObject *__pyx_lambda_funcdef_lambda8(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */  static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_i, PyObject *__pyx_v_e_i, PyObject *__pyx_v_f_span, PyObject *__pyx_v_e_span, PyObject *__pyx_v_nt, PyObject *__pyx_v_al); /* proto */  static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8new_rule_genexpr(PyObject *__pyx_self); /* proto */  static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29new_rule(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_f_sym, PyObject *__pyx_v_e_sym, PyObject *__pyx_v_links); /* proto */ @@ -57112,8 +57113,8 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                 return   *             # Unaligned word   *             if not al[f_j]:             # <<<<<<<<<<<<<< - *                 # Open non-terminal: extend - *                 if nt_open: + *                 # Adjacent to non-terminal: extend (non-terminal now open) + *                 if nt and nt[-1][2] == f_j - 1:   */    if (unlikely(!__pyx_cur_scope->__pyx_v_al)) { __Pyx_RaiseClosureNameError("al"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -57125,122 +57126,150 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1864   *             if not al[f_j]: - *                 # Open non-terminal: extend - *                 if nt_open:             # <<<<<<<<<<<<<< + *                 # Adjacent to non-terminal: extend (non-terminal now open) + *                 if nt and nt[-1][2] == f_j - 1:             # <<<<<<<<<<<<<<   *                     nt[-1][2] += 1   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)   */ -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_5) { +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_8 = __pyx_t_6; +    } else { +      __pyx_t_8 = __pyx_t_5; +    } +    if (__pyx_t_8) {        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1865 - *                 # Open non-terminal: extend - *                 if nt_open: + *                 # Adjacent to non-terminal: extend (non-terminal now open) + *                 if nt and nt[-1][2] == f_j - 1:   *                     nt[-1][2] += 1             # <<<<<<<<<<<<<<   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)   *                     nt[-1][2] -= 1   */ -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __pyx_t_1 = 2; -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      if (__Pyx_SetItemInt(__pyx_t_4, __pyx_t_1, __pyx_t_2, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      if (__Pyx_SetItemInt(__pyx_t_3, __pyx_t_1, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1866 - *                 if nt_open: + *                 if nt and nt[-1][2] == f_j - 1:   *                     nt[-1][2] += 1   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)             # <<<<<<<<<<<<<<   *                     nt[-1][2] -= 1 - *                 # No open non-terminal: extend with word + *                 # Unless non-terminal already open, always extend with word   */        if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_3 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = PyTuple_New(9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = PyTuple_New(9); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); +      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f_i);        __Pyx_GIVEREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); +      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_e_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_e_i); +      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_e_i);        __Pyx_GIVEREF(__pyx_v_e_i);        __Pyx_INCREF(__pyx_v_e_j); -      PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_e_j); +      PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_e_j);        __Pyx_GIVEREF(__pyx_v_e_j);        __Pyx_INCREF(__pyx_v_min_bound); -      PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_min_bound); +      PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_min_bound);        __Pyx_GIVEREF(__pyx_v_min_bound);        __Pyx_INCREF(__pyx_v_wc); -      PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_wc); +      PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_wc);        __Pyx_GIVEREF(__pyx_v_wc);        __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_links); +      PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_links);        __Pyx_GIVEREF(__pyx_v_links);        __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_v_nt); +      PyTuple_SET_ITEM(__pyx_t_3, 7, __pyx_v_nt);        __Pyx_GIVEREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      __pyx_t_3 = 0; +      PyTuple_SET_ITEM(__pyx_t_3, 8, __pyx_t_2); +      __Pyx_GIVEREF(__pyx_t_2);        __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_2 = 0; +      __pyx_t_2 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1867   *                     nt[-1][2] += 1   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)   *                     nt[-1][2] -= 1             # <<<<<<<<<<<<<< - *                 # No open non-terminal: extend with word - *                 else: + *                 # Unless non-terminal already open, always extend with word + *                 if not nt_open:   */ -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_1 = 2; -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = 2; +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      if (__Pyx_SetItemInt(__pyx_t_4, __pyx_t_1, __pyx_t_3, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      if (__Pyx_SetItemInt(__pyx_t_2, __pyx_t_1, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        goto __pyx_L5;      } -    /*else*/ { +    __pyx_L5:; + +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1869 + *                     nt[-1][2] -= 1 + *                 # Unless non-terminal already open, always extend with word + *                 if not nt_open:             # <<<<<<<<<<<<<< + *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False) + *                 return + */ +    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1869; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = (!__pyx_t_8); +    if (__pyx_t_5) {        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1870 - *                 # No open non-terminal: extend with word - *                 else: + *                 # Unless non-terminal already open, always extend with word + *                 if not nt_open:   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)             # <<<<<<<<<<<<<<   *                 return   *             # Aligned word   */        if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_4 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_3 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2);        __pyx_t_9 = PyTuple_New(9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_INCREF(__pyx_v_f_i);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_f_i);        __Pyx_GIVEREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); +      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2); +      __Pyx_GIVEREF(__pyx_t_2);        __Pyx_INCREF(__pyx_v_e_i);        PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_e_i);        __Pyx_GIVEREF(__pyx_v_e_i); @@ -57250,28 +57279,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        __Pyx_INCREF(__pyx_v_min_bound);        PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_v_min_bound);        __Pyx_GIVEREF(__pyx_v_min_bound); -      PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); +      PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_links);        PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_v_links);        __Pyx_GIVEREF(__pyx_v_links);        __Pyx_INCREF(__pyx_v_nt);        PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_v_nt);        __Pyx_GIVEREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_9, 8, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); +      PyTuple_SET_ITEM(__pyx_t_9, 8, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3); +      __pyx_t_2 = 0;        __pyx_t_4 = 0;        __pyx_t_3 = 0; -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      goto __pyx_L6;      } -    __pyx_L5:; +    __pyx_L6:;      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1871 - *                 else: + *                 if not nt_open:   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)   *                 return             # <<<<<<<<<<<<<<   *             # Aligned word @@ -57292,11 +57322,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *             new_e_i = min(link_i, e_i)   */    if (unlikely(!__pyx_cur_scope->__pyx_v_fe_span)) { __Pyx_RaiseClosureNameError("fe_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1873; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -  __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f_j); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1873; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1873; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f_j); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1873; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9); -  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    __pyx_v_link_i = __pyx_t_9;    __pyx_t_9 = 0; @@ -57309,11 +57339,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   */    __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f_j); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9); -  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); +  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  __pyx_v_link_j = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_v_link_j = __pyx_t_3; +  __pyx_t_3 = 0;    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1875   *             link_i = fe_span[f_j][0] @@ -57323,24 +57353,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *             # Check reverse links of newly covered words to see if they violate left   */    __Pyx_INCREF(__pyx_v_e_i); -  __pyx_t_2 = __pyx_v_e_i; +  __pyx_t_3 = __pyx_v_e_i;    __Pyx_INCREF(__pyx_v_link_i);    __pyx_t_9 = __pyx_v_link_i; -  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_9, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_9, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    if (__pyx_t_5) { -    __Pyx_INCREF(__pyx_t_2); -    __pyx_t_3 = __pyx_t_2; +    __Pyx_INCREF(__pyx_t_3); +    __pyx_t_4 = __pyx_t_3;    } else {      __Pyx_INCREF(__pyx_t_9); -    __pyx_t_3 = __pyx_t_9; +    __pyx_t_4 = __pyx_t_9;    }    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __Pyx_INCREF(__pyx_t_3); -  __pyx_v_new_e_i = __pyx_t_3;    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +  __Pyx_INCREF(__pyx_t_4); +  __pyx_v_new_e_i = __pyx_t_4; +  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1876   *             link_j = fe_span[f_j][1] @@ -57350,21 +57380,21 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *             # bound (return) or extend minimum right bound for chunk   */    __Pyx_INCREF(__pyx_v_e_j); -  __pyx_t_3 = __pyx_v_e_j; +  __pyx_t_4 = __pyx_v_e_j;    __Pyx_INCREF(__pyx_v_link_j); -  __pyx_t_2 = __pyx_v_link_j; -  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +  __pyx_t_3 = __pyx_v_link_j; +  __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    if (__pyx_t_5) { +    __Pyx_INCREF(__pyx_t_4); +    __pyx_t_9 = __pyx_t_4; +  } else {      __Pyx_INCREF(__pyx_t_3);      __pyx_t_9 = __pyx_t_3; -  } else { -    __Pyx_INCREF(__pyx_t_2); -    __pyx_t_9 = __pyx_t_2;    } -  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    __Pyx_INCREF(__pyx_t_9);    __pyx_v_new_e_j = __pyx_t_9;    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -57417,11 +57447,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }        __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_9 = PyObject_RichCompare(__pyx_t_4, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        if (__pyx_t_5) { @@ -57436,9 +57466,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(          __Pyx_XDECREF(__pyx_r);          __pyx_r = Py_None; __Pyx_INCREF(Py_None);          goto __pyx_L0; -        goto __pyx_L9; +        goto __pyx_L10;        } -      __pyx_L9:; +      __pyx_L10:;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1885   *                     if ef_span[i][0] < f_i: @@ -57449,27 +57479,27 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   */        __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        __Pyx_INCREF(__pyx_v_new_min_bound);        __pyx_t_9 = __pyx_v_new_min_bound; -      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_9, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_9, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_5) { -        __Pyx_INCREF(__pyx_t_3); -        __pyx_t_2 = __pyx_t_3; +        __Pyx_INCREF(__pyx_t_4); +        __pyx_t_3 = __pyx_t_4;        } else {          __Pyx_INCREF(__pyx_t_9); -        __pyx_t_2 = __pyx_t_9; +        __pyx_t_3 = __pyx_t_9;        }        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __Pyx_INCREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_INCREF(__pyx_t_3);        __Pyx_DECREF(__pyx_v_new_min_bound); -      __pyx_v_new_min_bound = __pyx_t_2; -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_v_new_min_bound = __pyx_t_3; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __pyx_t_12 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      } @@ -57480,12 +57510,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_2 = PyInt_FromLong(__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = PyInt_FromLong(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_XDECREF(__pyx_v_i); -    __pyx_v_i = __pyx_t_2; -    __pyx_t_2 = 0; -    goto __pyx_L6; +    __pyx_v_i = __pyx_t_3; +    __pyx_t_3 = 0; +    goto __pyx_L7;    }    /*else*/ { @@ -57499,11 +57529,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __pyx_t_12 = __Pyx_PyInt_AsInt(__pyx_v_new_e_i); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_e_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      for (__pyx_t_10 = __pyx_t_12; __pyx_t_10 < __pyx_t_11; __pyx_t_10++) { -      __pyx_t_2 = PyInt_FromLong(__pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = PyInt_FromLong(__pyx_t_10); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_XDECREF(__pyx_v_i); -      __pyx_v_i = __pyx_t_2; -      __pyx_t_2 = 0; +      __pyx_v_i = __pyx_t_3; +      __pyx_t_3 = 0;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1889   *             else: @@ -57513,15 +57543,15 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   */        if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_5) {          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1890 @@ -57534,9 +57564,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(          __Pyx_XDECREF(__pyx_r);          __pyx_r = Py_None; __Pyx_INCREF(Py_None);          goto __pyx_L0; -        goto __pyx_L12; +        goto __pyx_L13;        } -      __pyx_L12:; +      __pyx_L13:;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1891   *                     if ef_span[i][0] < f_i: @@ -57545,25 +57575,25 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                 for i from e_j < i <= new_e_j:   *                     if ef_span[i][0] < f_i:   */ -      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __Pyx_INCREF(__pyx_v_new_min_bound); -      __pyx_t_2 = __pyx_v_new_min_bound; -      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_3 = __pyx_v_new_min_bound; +      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_5) { +        __Pyx_INCREF(__pyx_t_4); +        __pyx_t_9 = __pyx_t_4; +      } else {          __Pyx_INCREF(__pyx_t_3);          __pyx_t_9 = __pyx_t_3; -      } else { -        __Pyx_INCREF(__pyx_t_2); -        __pyx_t_9 = __pyx_t_2;        } -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_INCREF(__pyx_t_9);        __Pyx_DECREF(__pyx_v_new_min_bound);        __pyx_v_new_min_bound = __pyx_t_9; @@ -57610,11 +57640,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }        __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_9 = PyObject_RichCompare(__pyx_t_4, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        if (__pyx_t_5) { @@ -57629,9 +57659,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(          __Pyx_XDECREF(__pyx_r);          __pyx_r = Py_None; __Pyx_INCREF(Py_None);          goto __pyx_L0; -        goto __pyx_L15; +        goto __pyx_L16;        } -      __pyx_L15:; +      __pyx_L16:;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1895   *                     if ef_span[i][0] < f_i: @@ -57642,27 +57672,27 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   */        __pyx_t_9 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        __Pyx_INCREF(__pyx_v_new_min_bound);        __pyx_t_9 = __pyx_v_new_min_bound; -      __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_9, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_9, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_5) { -        __Pyx_INCREF(__pyx_t_3); -        __pyx_t_2 = __pyx_t_3; +        __Pyx_INCREF(__pyx_t_4); +        __pyx_t_3 = __pyx_t_4;        } else {          __Pyx_INCREF(__pyx_t_9); -        __pyx_t_2 = __pyx_t_9; +        __pyx_t_3 = __pyx_t_9;        }        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __Pyx_INCREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_INCREF(__pyx_t_3);        __Pyx_DECREF(__pyx_v_new_min_bound); -      __pyx_v_new_min_bound = __pyx_t_2; -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_v_new_min_bound = __pyx_t_3; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __pyx_t_12 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      } @@ -57673,13 +57703,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_2 = PyInt_FromLong(__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = PyInt_FromLong(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_XDECREF(__pyx_v_i); -    __pyx_v_i = __pyx_t_2; -    __pyx_t_2 = 0; +    __pyx_v_i = __pyx_t_3; +    __pyx_t_3 = 0;    } -  __pyx_L6:; +  __pyx_L7:;    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1897   *                     new_min_bound = max(new_min_bound, ef_span[i][1]) @@ -57698,13 +57728,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                 nt[-1][2] = f_j   *                 if link_i < nt[-1][3]:   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_t_2, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_v_old_last_nt = __pyx_t_3; -    __pyx_t_3 = 0; +    __pyx_t_4 = __Pyx_PySequence_GetSlice(__pyx_t_3, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_v_old_last_nt = __pyx_t_4; +    __pyx_t_4 = 0;      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1900   *                 # Close non-terminal, checking for collisions @@ -57713,10 +57743,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                 if link_i < nt[-1][3]:   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   */ -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    if (__Pyx_SetItemInt(__pyx_t_3, 2, __pyx_v_f_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    if (__Pyx_SetItemInt(__pyx_t_4, 2, __pyx_v_f_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1901   *                 old_last_nt = nt[-1][:] @@ -57725,15 +57755,15 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   *                         nt[-1] = old_last_nt   */ -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_4 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      if (__pyx_t_5) {        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1902 @@ -57743,16 +57773,16 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                         nt[-1] = old_last_nt   *                         return   */ -      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyNumber_Subtract(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); @@ -57762,17 +57792,17 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        __Pyx_INCREF(__pyx_v_link_i);        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3); +      __pyx_t_3 = 0; +      __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_6 = (!__pyx_t_5); -      if (__pyx_t_6) { +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_8 = (!__pyx_t_5); +      if (__pyx_t_8) {          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1903   *                 if link_i < nt[-1][3]: @@ -57793,9 +57823,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(          __Pyx_XDECREF(__pyx_r);          __pyx_r = Py_None; __Pyx_INCREF(Py_None);          goto __pyx_L0; -        goto __pyx_L18; +        goto __pyx_L19;        } -      __pyx_L18:; +      __pyx_L19:;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1905   *                         nt[-1] = old_last_nt @@ -57804,31 +57834,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)   *                     nt[-1][3] = link_i   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_cover); +      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_9); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);        __Pyx_GIVEREF(__pyx_t_9);        __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1906 @@ -57841,30 +57871,30 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); -      __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4); +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1907   *                     span_inc(cover, link_i, nt[-1][3] - 1) @@ -57873,13 +57903,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                 if link_j > nt[-1][4]:   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   */ -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      if (__Pyx_SetItemInt(__pyx_t_3, 3, __pyx_v_link_i, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      goto __pyx_L17; +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      if (__Pyx_SetItemInt(__pyx_t_4, 3, __pyx_v_link_i, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      goto __pyx_L18;      } -    __pyx_L17:; +    __pyx_L18:;      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1908   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1) @@ -57888,16 +57918,16 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   *                         nt[-1] = old_last_nt   */ -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_4 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (__pyx_t_6) { +    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    if (__pyx_t_8) {        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1909   *                     nt[-1][3] = link_i @@ -57906,35 +57936,35 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                         nt[-1] = old_last_nt   *                         return   */ -      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); +      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3);        __Pyx_INCREF(__pyx_v_link_j);        PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = 0; +      __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_5 = (!__pyx_t_6); +      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_5 = (!__pyx_t_8);        if (__pyx_t_5) {          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1910 @@ -57956,9 +57986,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(          __Pyx_XDECREF(__pyx_r);          __pyx_r = Py_None; __Pyx_INCREF(Py_None);          goto __pyx_L0; -        goto __pyx_L20; +        goto __pyx_L21;        } -      __pyx_L20:; +      __pyx_L21:;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1912   *                         nt[-1] = old_last_nt @@ -57967,31 +57997,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_cover); +      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_9);        __Pyx_GIVEREF(__pyx_t_9);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j);        __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1913 @@ -57999,415 +58029,428 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *                     span_inc(cover, nt[-1][4] + 1, link_j)   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     nt[-1][4] = link_j - *                 # Make sure we cover all aligned words + *                 # Make sure we have at least one lexical alignment link   */        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); +      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1914   *                     span_inc(cover, nt[-1][4] + 1, link_j)   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j             # <<<<<<<<<<<<<< - *                 # Make sure we cover all aligned words - *                 if f_j >= new_min_bound: + *                 # Make sure we have at least one lexical alignment link + *                 if links:   */ -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      if (__Pyx_SetItemInt(__pyx_t_3, 4, __pyx_v_link_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      goto __pyx_L19; +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      if (__Pyx_SetItemInt(__pyx_t_4, 4, __pyx_v_link_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      goto __pyx_L20;      } -    __pyx_L19:; +    __pyx_L20:;      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1916   *                     nt[-1][4] = link_j - *                 # Make sure we cover all aligned words - *                 if f_j >= new_min_bound:             # <<<<<<<<<<<<<< - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): - *                         rules.add(rule) + *                 # Make sure we have at least one lexical alignment link + *                 if links:             # <<<<<<<<<<<<<< + *                     # Make sure we cover all aligned words + *                     if f_j >= new_min_bound:   */ -    __pyx_t_3 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_5) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1917 - *                 # Make sure we cover all aligned words - *                 if f_j >= new_min_bound: - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):             # <<<<<<<<<<<<<< - *                         rules.add(rule) +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1918 + *                 if links: + *                     # Make sure we cover all aligned words + *                     if f_j >= new_min_bound:             # <<<<<<<<<<<<<< + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): + *                             rules.add(rule) + */ +      __pyx_t_4 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      if (__pyx_t_5) { + +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1919 + *                     # Make sure we cover all aligned words + *                     if f_j >= new_min_bound: + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):             # <<<<<<<<<<<<<< + *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   */ -      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_9 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_4 = PyTuple_New(6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i); -      __Pyx_GIVEREF(__pyx_v_f_i); -      __Pyx_INCREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_new_e_i); -      __Pyx_GIVEREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_9); -      __Pyx_GIVEREF(__pyx_t_9); -      __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_nt); -      __Pyx_GIVEREF(__pyx_v_nt); -      __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_links); -      __Pyx_GIVEREF(__pyx_v_links); -      __pyx_t_2 = 0; -      __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -      if (PyList_CheckExact(__pyx_t_9) || PyTuple_CheckExact(__pyx_t_9)) { -        __pyx_t_4 = __pyx_t_9; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; -        __pyx_t_14 = NULL; -      } else { -        __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_4); -        __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext; -      } -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      for (;;) { -        if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_4)) { -          if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; -          #if CYTHON_COMPILING_IN_CPYTHON -          __pyx_t_9 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #else -          __pyx_t_9 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #endif -        } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_4)) { -          if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -          #if CYTHON_COMPILING_IN_CPYTHON -          __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #else -          __pyx_t_9 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #endif +        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3); +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +        __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3); +        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_9); +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +        __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_9); +        __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_2); +        __Pyx_INCREF(__pyx_v_f_i); +        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); +        __Pyx_GIVEREF(__pyx_v_f_i); +        __Pyx_INCREF(__pyx_v_new_e_i); +        PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_new_e_i); +        __Pyx_GIVEREF(__pyx_v_new_e_i); +        PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); +        __Pyx_GIVEREF(__pyx_t_3); +        PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_9); +        __Pyx_GIVEREF(__pyx_t_9); +        __Pyx_INCREF(__pyx_v_nt); +        PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_nt); +        __Pyx_GIVEREF(__pyx_v_nt); +        __Pyx_INCREF(__pyx_v_links); +        PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_links); +        __Pyx_GIVEREF(__pyx_v_links); +        __pyx_t_3 = 0; +        __pyx_t_9 = 0; +        __pyx_t_9 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_9); +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +        if (PyList_CheckExact(__pyx_t_9) || PyTuple_CheckExact(__pyx_t_9)) { +          __pyx_t_2 = __pyx_t_9; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0; +          __pyx_t_14 = NULL;          } else { -          __pyx_t_9 = __pyx_t_14(__pyx_t_4); -          if (unlikely(!__pyx_t_9)) { -            if (PyErr_Occurred()) { -              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_2); +          __pyx_t_14 = Py_TYPE(__pyx_t_2)->tp_iternext; +        } +        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +        for (;;) { +          if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_2)) { +            if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_9 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_9 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif +          } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_2)) { +            if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_9 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif +          } else { +            __pyx_t_9 = __pyx_t_14(__pyx_t_2); +            if (unlikely(!__pyx_t_9)) { +              if (PyErr_Occurred()) { +                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); +                else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              } +              break;              } -            break; +            __Pyx_GOTREF(__pyx_t_9);            } -          __Pyx_GOTREF(__pyx_t_9); -        } -        __Pyx_XDECREF(__pyx_v_rule); -        __pyx_v_rule = __pyx_t_9; -        __pyx_t_9 = 0; +          __Pyx_XDECREF(__pyx_v_rule); +          __pyx_v_rule = __pyx_t_9; +          __pyx_t_9 = 0; -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1918 - *                 if f_j >= new_min_bound: - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): - *                         rules.add(rule)             # <<<<<<<<<<<<<< +          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1920 + *                     if f_j >= new_min_bound: + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): + *                             rules.add(rule)             # <<<<<<<<<<<<<<   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt   */ -        if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_9 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_9); -        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_3); -        __Pyx_INCREF(__pyx_v_rule); -        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rule); -        __Pyx_GIVEREF(__pyx_v_rule); -        __pyx_t_2 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +          if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +          __pyx_t_9 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_9); +          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_4); +          __Pyx_INCREF(__pyx_v_rule); +          PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_rule); +          __Pyx_GIVEREF(__pyx_v_rule); +          __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_3); +          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +        }          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +        goto __pyx_L23;        } -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      goto __pyx_L21; +      __pyx_L23:; +      goto __pyx_L22;      } -    __pyx_L21:; +    __pyx_L22:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1919 - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): - *                         rules.add(rule) +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1921 + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): + *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)             # <<<<<<<<<<<<<<   *                 nt[-1] = old_last_nt   *                 if link_i < nt[-1][3]:   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_3 = PyTuple_New(9); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_4 = PyTuple_New(9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4);      __Pyx_INCREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f_i); +    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i);      __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); -    __Pyx_GIVEREF(__pyx_t_4); +    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); +    __Pyx_GIVEREF(__pyx_t_2);      __Pyx_INCREF(__pyx_v_new_e_i); -    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_new_e_i); +    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_new_e_i);      __Pyx_GIVEREF(__pyx_v_new_e_i);      __Pyx_INCREF(__pyx_v_new_e_j); -    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_new_e_j); +    PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_new_e_j);      __Pyx_GIVEREF(__pyx_v_new_e_j);      __Pyx_INCREF(__pyx_v_new_min_bound); -    PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_new_min_bound); +    PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_new_min_bound);      __Pyx_GIVEREF(__pyx_v_new_min_bound);      __Pyx_INCREF(__pyx_v_wc); -    PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_wc); +    PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_wc);      __Pyx_GIVEREF(__pyx_v_wc);      __Pyx_INCREF(__pyx_v_links); -    PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_links); +    PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_v_links);      __Pyx_GIVEREF(__pyx_v_links);      __Pyx_INCREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_3, 7, __pyx_v_nt); +    PyTuple_SET_ITEM(__pyx_t_4, 7, __pyx_v_nt);      __Pyx_GIVEREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_3, 8, __pyx_t_2); -    __Pyx_GIVEREF(__pyx_t_2); -    __pyx_t_4 = 0; +    PyTuple_SET_ITEM(__pyx_t_4, 8, __pyx_t_3); +    __Pyx_GIVEREF(__pyx_t_3);      __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = 0; +    __pyx_t_3 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1920 - *                         rules.add(rule) +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1922 + *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt             # <<<<<<<<<<<<<<   *                 if link_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)   */ -    if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1921 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1923   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt   *                 if link_i < nt[-1][3]:             # <<<<<<<<<<<<<<   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_3 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      if (__pyx_t_5) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1922 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1924   *                 nt[-1] = old_last_nt   *                 if link_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover); +      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); -      __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4); +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1923 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1925   *                 if link_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)   */ -      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); +      __Pyx_GIVEREF(__pyx_t_2); +      __pyx_t_2 = 0; +      __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      goto __pyx_L24; +      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      goto __pyx_L26;      } -    __pyx_L24:; +    __pyx_L26:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1924 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1926   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:             # <<<<<<<<<<<<<<   *                     span_dec(cover, nt[-1][4] + 1, link_j)   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   */ -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      if (__pyx_t_5) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1925 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1927   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   *                 return   */ -      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_cover); +      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __pyx_t_3 = 0; +      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1926 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1928   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                 return   *             # No open non-terminal   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      goto __pyx_L25; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      goto __pyx_L27;      } -    __pyx_L25:; +    __pyx_L27:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1927 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1929   *                     span_dec(cover, nt[-1][4] + 1, link_j)   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   *                 return             # <<<<<<<<<<<<<< @@ -58417,11 +58460,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __Pyx_XDECREF(__pyx_r);      __pyx_r = Py_None; __Pyx_INCREF(Py_None);      goto __pyx_L0; -    goto __pyx_L16; +    goto __pyx_L17;    } -  __pyx_L16:; +  __pyx_L17:; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1930 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1932   *             # No open non-terminal   *             # Extract, extend with word   *             nt_collision = False             # <<<<<<<<<<<<<< @@ -58430,69 +58473,69 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   */    __pyx_v_nt_collision = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1931 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1933   *             # Extract, extend with word   *             nt_collision = False   *             for link in al[f_j]:             # <<<<<<<<<<<<<<   *                 if e_nt_cover[link]:   *                     nt_collision = True   */ -  __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_3); -  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) { -    __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; +  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_4); +  if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { +    __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0;      __pyx_t_14 = NULL;    } else { -    __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext; +    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_14 = Py_TYPE(__pyx_t_2)->tp_iternext;    } -  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    for (;;) { -    if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_4)) { -      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; +    if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_2)) { +      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif -    } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_4)) { -      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; +    } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_2)) { +      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else { -      __pyx_t_3 = __pyx_t_14(__pyx_t_4); -      if (unlikely(!__pyx_t_3)) { +      __pyx_t_4 = __pyx_t_14(__pyx_t_2); +      if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } -      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_GOTREF(__pyx_t_4);      }      __Pyx_XDECREF(__pyx_v_link); -    __pyx_v_link = __pyx_t_3; -    __pyx_t_3 = 0; +    __pyx_v_link = __pyx_t_4; +    __pyx_t_4 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1932 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1934   *             nt_collision = False   *             for link in al[f_j]:   *                 if e_nt_cover[link]:             # <<<<<<<<<<<<<<   *                     nt_collision = True   *             # Non-terminal collisions block word extraction and extension, but   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_e_nt_cover, __pyx_v_link); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1934; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_e_nt_cover, __pyx_v_link); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1934; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1934; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      if (__pyx_t_5) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1933 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1935   *             for link in al[f_j]:   *                 if e_nt_cover[link]:   *                     nt_collision = True             # <<<<<<<<<<<<<< @@ -58500,13 +58543,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *             # may be okay for continuing non-terminals   */        __pyx_v_nt_collision = 1; -      goto __pyx_L28; +      goto __pyx_L30;      } -    __pyx_L28:; +    __pyx_L30:;    } -  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1936 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1938   *             # Non-terminal collisions block word extraction and extension, but   *             # may be okay for continuing non-terminals   *             if not nt_collision:             # <<<<<<<<<<<<<< @@ -58516,264 +58559,277 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    __pyx_t_5 = (!__pyx_v_nt_collision);    if (__pyx_t_5) { -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1937 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1939   *             # may be okay for continuing non-terminals   *             if not nt_collision:   *                 plus_links = []             # <<<<<<<<<<<<<<   *                 for link in al[f_j]:   *                     plus_links.append((f_j, link))   */ -    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_v_plus_links = __pyx_t_4; -    __pyx_t_4 = 0; +    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __pyx_v_plus_links = __pyx_t_2; +    __pyx_t_2 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1938 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1940   *             if not nt_collision:   *                 plus_links = []   *                 for link in al[f_j]:             # <<<<<<<<<<<<<<   *                     plus_links.append((f_j, link))   *                     cover[link] += 1   */ -    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { -      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; +    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) { +      __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0;        __pyx_t_14 = NULL;      } else { -      __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; +      __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext;      } -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      for (;;) { -      if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_3)) { -        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break; +      if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_4)) { +        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif -      } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_3)) { -        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; +      } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_4)) { +        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else { -        __pyx_t_4 = __pyx_t_14(__pyx_t_3); -        if (unlikely(!__pyx_t_4)) { +        __pyx_t_2 = __pyx_t_14(__pyx_t_4); +        if (unlikely(!__pyx_t_2)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } -        __Pyx_GOTREF(__pyx_t_4); +        __Pyx_GOTREF(__pyx_t_2);        }        __Pyx_XDECREF(__pyx_v_link); -      __pyx_v_link = __pyx_t_4; -      __pyx_t_4 = 0; +      __pyx_v_link = __pyx_t_2; +      __pyx_t_2 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1939 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1941   *                 plus_links = []   *                 for link in al[f_j]:   *                     plus_links.append((f_j, link))             # <<<<<<<<<<<<<<   *                     cover[link] += 1   *                 links.append(plus_links)   */ -      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_v_f_j); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_j); +      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_j);        __Pyx_GIVEREF(__pyx_v_f_j);        __Pyx_INCREF(__pyx_v_link); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link);        __Pyx_GIVEREF(__pyx_v_link); -      __pyx_t_15 = PyList_Append(__pyx_v_plus_links, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __pyx_t_15 = PyList_Append(__pyx_v_plus_links, ((PyObject *)__pyx_t_2)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1940 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1942   *                 for link in al[f_j]:   *                     plus_links.append((f_j, link))   *                     cover[link] += 1             # <<<<<<<<<<<<<<   *                 links.append(plus_links) - *                 if f_j >= new_min_bound: + *                 if links:   */        __Pyx_INCREF(__pyx_v_link); -      __pyx_t_4 = __pyx_v_link; -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_4); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __pyx_v_link; +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_2); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_4, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      } -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1941 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1943   *                     plus_links.append((f_j, link))   *                     cover[link] += 1   *                 links.append(plus_links)             # <<<<<<<<<<<<<< - *                 if f_j >= new_min_bound: - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): + *                 if links: + *                     if f_j >= new_min_bound:   */ -    __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_links, ((PyObject *)__pyx_v_plus_links)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_links, ((PyObject *)__pyx_v_plus_links)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1942 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1944   *                     cover[link] += 1   *                 links.append(plus_links) - *                 if f_j >= new_min_bound:             # <<<<<<<<<<<<<< - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): - *                         rules.add(rule) + *                 if links:             # <<<<<<<<<<<<<< + *                     if f_j >= new_min_bound: + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   */ -    __pyx_t_3 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_5) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1943 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1945   *                 links.append(plus_links) - *                 if f_j >= new_min_bound: - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):             # <<<<<<<<<<<<<< - *                         rules.add(rule) - *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False) + *                 if links: + *                     if f_j >= new_min_bound:             # <<<<<<<<<<<<<< + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): + *                             rules.add(rule)   */ -      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_9 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); -      __Pyx_GIVEREF(__pyx_v_f_i); -      __Pyx_INCREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_new_e_i); -      __Pyx_GIVEREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_9); -      __Pyx_GIVEREF(__pyx_t_9); -      __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_nt); -      __Pyx_GIVEREF(__pyx_v_nt); -      __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_links); -      __Pyx_GIVEREF(__pyx_v_links); -      __pyx_t_4 = 0; -      __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      if (PyList_CheckExact(__pyx_t_9) || PyTuple_CheckExact(__pyx_t_9)) { -        __pyx_t_2 = __pyx_t_9; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0; -        __pyx_t_14 = NULL; -      } else { -        __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__pyx_t_5) { + +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1946 + *                 if links: + *                     if f_j >= new_min_bound: + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):             # <<<<<<<<<<<<<< + *                             rules.add(rule) + *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False) + */ +        __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4); +        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_14 = Py_TYPE(__pyx_t_2)->tp_iternext; -      } -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      for (;;) { -        if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_2)) { -          if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break; -          #if CYTHON_COMPILING_IN_CPYTHON -          __pyx_t_9 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #else -          __pyx_t_9 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #endif -        } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_2)) { -          if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -          #if CYTHON_COMPILING_IN_CPYTHON -          __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #else -          __pyx_t_9 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          #endif +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +        __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_2); +        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_9); +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +        __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_9); +        __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3); +        __Pyx_INCREF(__pyx_v_f_i); +        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f_i); +        __Pyx_GIVEREF(__pyx_v_f_i); +        __Pyx_INCREF(__pyx_v_new_e_i); +        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_new_e_i); +        __Pyx_GIVEREF(__pyx_v_new_e_i); +        PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); +        __Pyx_GIVEREF(__pyx_t_2); +        PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_9); +        __Pyx_GIVEREF(__pyx_t_9); +        __Pyx_INCREF(__pyx_v_nt); +        PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_nt); +        __Pyx_GIVEREF(__pyx_v_nt); +        __Pyx_INCREF(__pyx_v_links); +        PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_links); +        __Pyx_GIVEREF(__pyx_v_links); +        __pyx_t_2 = 0; +        __pyx_t_9 = 0; +        __pyx_t_9 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_9); +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +        if (PyList_CheckExact(__pyx_t_9) || PyTuple_CheckExact(__pyx_t_9)) { +          __pyx_t_3 = __pyx_t_9; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; +          __pyx_t_14 = NULL;          } else { -          __pyx_t_9 = __pyx_t_14(__pyx_t_2); -          if (unlikely(!__pyx_t_9)) { -            if (PyErr_Occurred()) { -              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_3); +          __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; +        } +        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +        for (;;) { +          if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_3)) { +            if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif +          } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_3)) { +            if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_9); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif +          } else { +            __pyx_t_9 = __pyx_t_14(__pyx_t_3); +            if (unlikely(!__pyx_t_9)) { +              if (PyErr_Occurred()) { +                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); +                else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              } +              break;              } -            break; +            __Pyx_GOTREF(__pyx_t_9);            } -          __Pyx_GOTREF(__pyx_t_9); -        } -        __Pyx_XDECREF(__pyx_v_rule); -        __pyx_v_rule = __pyx_t_9; -        __pyx_t_9 = 0; +          __Pyx_XDECREF(__pyx_v_rule); +          __pyx_v_rule = __pyx_t_9; +          __pyx_t_9 = 0; -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1944 - *                 if f_j >= new_min_bound: - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): - *                         rules.add(rule)             # <<<<<<<<<<<<<< +          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1947 + *                     if f_j >= new_min_bound: + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): + *                             rules.add(rule)             # <<<<<<<<<<<<<<   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                 links.pop()   */ -        if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_9 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_9); -        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_3); -        __Pyx_INCREF(__pyx_v_rule); -        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rule); -        __Pyx_GIVEREF(__pyx_v_rule); -        __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_4); -        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +          if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +          __pyx_t_9 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_9); +          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_4); +          __Pyx_INCREF(__pyx_v_rule); +          PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_rule); +          __Pyx_GIVEREF(__pyx_v_rule); +          __pyx_t_2 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_2); +          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +        } +        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +        goto __pyx_L35;        } -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      goto __pyx_L32; +      __pyx_L35:; +      goto __pyx_L34;      } -    __pyx_L32:; +    __pyx_L34:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1945 - *                     for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): - *                         rules.add(rule) +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1948 + *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): + *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)             # <<<<<<<<<<<<<<   *                 links.pop()   *                 for link in al[f_j]:   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_3 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_2 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_9 = PyTuple_New(9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyTuple_New(9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9);      __Pyx_INCREF(__pyx_v_f_i);      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_f_i);      __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2); -    __Pyx_GIVEREF(__pyx_t_2); +    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3); +    __Pyx_GIVEREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_new_e_i);      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_new_e_i);      __Pyx_GIVEREF(__pyx_v_new_e_i); @@ -58783,84 +58839,84 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __Pyx_INCREF(__pyx_v_new_min_bound);      PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_v_new_min_bound);      __Pyx_GIVEREF(__pyx_v_new_min_bound); -    PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_4); -    __Pyx_GIVEREF(__pyx_t_4); +    PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_2); +    __Pyx_GIVEREF(__pyx_t_2);      __Pyx_INCREF(__pyx_v_links);      PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_v_links);      __Pyx_GIVEREF(__pyx_v_links);      __Pyx_INCREF(__pyx_v_nt);      PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_v_nt);      __Pyx_GIVEREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_9, 8, __pyx_t_3); -    __Pyx_GIVEREF(__pyx_t_3); +    PyTuple_SET_ITEM(__pyx_t_9, 8, __pyx_t_4); +    __Pyx_GIVEREF(__pyx_t_4); +    __pyx_t_3 = 0;      __pyx_t_2 = 0;      __pyx_t_4 = 0; -    __pyx_t_3 = 0; -    __pyx_t_3 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_4 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1946 - *                         rules.add(rule) +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1949 + *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                 links.pop()             # <<<<<<<<<<<<<<   *                 for link in al[f_j]:   *                     cover[link] -= 1   */ -    __pyx_t_3 = __Pyx_PyObject_Pop(__pyx_v_links); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_4 = __Pyx_PyObject_Pop(__pyx_v_links); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1947 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1950   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                 links.pop()   *                 for link in al[f_j]:             # <<<<<<<<<<<<<<   *                     cover[link] -= 1   *             # Try to add a word to a (closed) non-terminal, extract, extend   */ -    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) { -      __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_1 = 0; +    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { +      __pyx_t_9 = __pyx_t_4; __Pyx_INCREF(__pyx_t_9); __pyx_t_1 = 0;        __pyx_t_14 = NULL;      } else { -      __pyx_t_1 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext;      } -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      for (;;) {        if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_9)) {          if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_9)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PySequence_ITEM(__pyx_t_9, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_9)) {          if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_9)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PySequence_ITEM(__pyx_t_9, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else { -        __pyx_t_3 = __pyx_t_14(__pyx_t_9); -        if (unlikely(!__pyx_t_3)) { +        __pyx_t_4 = __pyx_t_14(__pyx_t_9); +        if (unlikely(!__pyx_t_4)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } -        __Pyx_GOTREF(__pyx_t_3); +        __Pyx_GOTREF(__pyx_t_4);        }        __Pyx_XDECREF(__pyx_v_link); -      __pyx_v_link = __pyx_t_3; -      __pyx_t_3 = 0; +      __pyx_v_link = __pyx_t_4; +      __pyx_t_4 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1948 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1951   *                 links.pop()   *                 for link in al[f_j]:   *                     cover[link] -= 1             # <<<<<<<<<<<<<< @@ -58868,143 +58924,143 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *             if nt and nt[-1][2] == f_j - 1:   */        __Pyx_INCREF(__pyx_v_link); -      __pyx_t_3 = __pyx_v_link; -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_3); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __pyx_v_link; +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_4); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_4, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      }      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    goto __pyx_L29; +    goto __pyx_L31;    } -  __pyx_L29:; +  __pyx_L31:; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1950 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1953   *                     cover[link] -= 1   *             # Try to add a word to a (closed) non-terminal, extract, extend   *             if nt and nt[-1][2] == f_j - 1:             # <<<<<<<<<<<<<<   *                 # Add to non-terminal, checking for collisions   *                 old_last_nt = nt[-1][:]   */ -  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_5) { -    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __pyx_t_9 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_8 = __pyx_t_6; +    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_6 = __pyx_t_8;    } else { -    __pyx_t_8 = __pyx_t_5; +    __pyx_t_6 = __pyx_t_5;    } -  if (__pyx_t_8) { +  if (__pyx_t_6) { -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1952 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1955   *             if nt and nt[-1][2] == f_j - 1:   *                 # Add to non-terminal, checking for collisions   *                 old_last_nt = nt[-1][:]             # <<<<<<<<<<<<<<   *                 nt[-1][2] = f_j   *                 if link_i < nt[-1][3]:   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_t_2, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_t_3, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __pyx_v_old_last_nt = __pyx_t_9;      __pyx_t_9 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1953 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1956   *                 # Add to non-terminal, checking for collisions   *                 old_last_nt = nt[-1][:]   *                 nt[-1][2] = f_j             # <<<<<<<<<<<<<<   *                 if link_i < nt[-1][3]:   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   */ -    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    if (__Pyx_SetItemInt(__pyx_t_9, 2, __pyx_v_f_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_t_9, 2, __pyx_v_f_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1954 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1957   *                 old_last_nt = nt[-1][:]   *                 nt[-1][2] = f_j   *                 if link_i < nt[-1][3]:             # <<<<<<<<<<<<<<   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   *                         nt[-1] = old_last_nt   */ -    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __pyx_t_9 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    if (__pyx_t_8) { +    if (__pyx_t_6) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1955 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1958   *                 nt[-1][2] = f_j   *                 if link_i < nt[-1][3]:   *                     if not span_check(cover, link_i, nt[-1][3] - 1):             # <<<<<<<<<<<<<<   *                         nt[-1] = old_last_nt   *                         return   */ -      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_cover); +      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3); +      __pyx_t_3 = 0; +      __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_5 = (!__pyx_t_8); +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_5 = (!__pyx_t_6);        if (__pyx_t_5) { -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1956 +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1959   *                 if link_i < nt[-1][3]:   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   *                         nt[-1] = old_last_nt             # <<<<<<<<<<<<<<   *                         return   *                     span_inc(cover, link_i, nt[-1][3] - 1)   */ -        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1957 +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1960   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   *                         nt[-1] = old_last_nt   *                         return             # <<<<<<<<<<<<<< @@ -59014,28 +59070,28 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(          __Pyx_XDECREF(__pyx_r);          __pyx_r = Py_None; __Pyx_INCREF(Py_None);          goto __pyx_L0; -        goto __pyx_L39; +        goto __pyx_L42;        } -      __pyx_L39:; +      __pyx_L42:; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1958 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1961   *                         nt[-1] = old_last_nt   *                         return   *                     span_inc(cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)   *                     nt[-1][3] = link_i   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Subtract(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyNumber_Subtract(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_cover); @@ -59043,131 +59099,131 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        __Pyx_INCREF(__pyx_v_link_i);        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); -      __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4); +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1959 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1962   *                         return   *                     span_inc(cover, link_i, nt[-1][3] - 1)   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                     nt[-1][3] = link_i   *                 if link_j > nt[-1][4]:   */ -      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_9); +      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_9);        __Pyx_GIVEREF(__pyx_t_9);        __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1960 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1963   *                     span_inc(cover, link_i, nt[-1][3] - 1)   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)   *                     nt[-1][3] = link_i             # <<<<<<<<<<<<<<   *                 if link_j > nt[-1][4]:   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   */ -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      if (__Pyx_SetItemInt(__pyx_t_9, 3, __pyx_v_link_i, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_SetItemInt(__pyx_t_9, 3, __pyx_v_link_i, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      goto __pyx_L38; +      goto __pyx_L41;      } -    __pyx_L38:; +    __pyx_L41:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1961 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1964   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)   *                     nt[-1][3] = link_i   *                 if link_j > nt[-1][4]:             # <<<<<<<<<<<<<<   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   *                         nt[-1] = old_last_nt   */ -    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __pyx_t_9 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;      if (__pyx_t_5) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1962 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1965   *                     nt[-1][3] = link_i   *                 if link_j > nt[-1][4]:   *                     if not span_check(cover, nt[-1][4] + 1, link_j):             # <<<<<<<<<<<<<<   *                         nt[-1] = old_last_nt   *                         return   */ -      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_cover); +      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = 0; +      __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_8 = (!__pyx_t_5); -      if (__pyx_t_8) { +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_6 = (!__pyx_t_5); +      if (__pyx_t_6) { -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1963 +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1966   *                 if link_j > nt[-1][4]:   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   *                         nt[-1] = old_last_nt             # <<<<<<<<<<<<<<   *                         return   *                     span_inc(cover, nt[-1][4] + 1, link_j)   */ -        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1964 +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1967   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   *                         nt[-1] = old_last_nt   *                         return             # <<<<<<<<<<<<<< @@ -59177,252 +59233,252 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(          __Pyx_XDECREF(__pyx_r);          __pyx_r = Py_None; __Pyx_INCREF(Py_None);          goto __pyx_L0; -        goto __pyx_L41; +        goto __pyx_L44;        } -      __pyx_L41:; +      __pyx_L44:; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1965 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1968   *                         nt[-1] = old_last_nt   *                         return   *                     span_inc(cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); +      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_link_j);        PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1966 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1969   *                         return   *                     span_inc(cover, nt[-1][4] + 1, link_j)   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     nt[-1][4] = link_j - *                 # Require at least one word in phrase + *                 if links:   */ -      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_9); +      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9);        __Pyx_GIVEREF(__pyx_t_9);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j);        __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1967 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1970   *                     span_inc(cover, nt[-1][4] + 1, link_j)   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j             # <<<<<<<<<<<<<< - *                 # Require at least one word in phrase   *                 if links: + *                     if f_j >= new_min_bound:   */ -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      if (__Pyx_SetItemInt(__pyx_t_9, 4, __pyx_v_link_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_SetItemInt(__pyx_t_9, 4, __pyx_v_link_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      goto __pyx_L40; +      goto __pyx_L43;      } -    __pyx_L40:; +    __pyx_L43:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1969 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1971 + *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j - *                 # Require at least one word in phrase   *                 if links:             # <<<<<<<<<<<<<<   *                     if f_j >= new_min_bound:   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   */ -    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    if (__pyx_t_8) { +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__pyx_t_6) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1970 - *                 # Require at least one word in phrase +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1972 + *                     nt[-1][4] = link_j   *                 if links:   *                     if f_j >= new_min_bound:             # <<<<<<<<<<<<<<   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   *                             rules.add(rule)   */ -      __pyx_t_9 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      if (__pyx_t_8) { +      if (__pyx_t_6) { -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1971 +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1973   *                 if links:   *                     if f_j >= new_min_bound:   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):             # <<<<<<<<<<<<<<   *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   */ -        __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9); -        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -        __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_3 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_3); -        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_3); -        __pyx_t_4 = PyTuple_New(6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_4); +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __pyx_t_4 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4); +        __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_2);          __Pyx_INCREF(__pyx_v_f_i); -        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i); +        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i);          __Pyx_GIVEREF(__pyx_v_f_i);          __Pyx_INCREF(__pyx_v_new_e_i); -        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_new_e_i); +        PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_new_e_i);          __Pyx_GIVEREF(__pyx_v_new_e_i); -        PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); -        __Pyx_GIVEREF(__pyx_t_2); -        PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_3); +        PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3);          __Pyx_GIVEREF(__pyx_t_3); +        PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_4); +        __Pyx_GIVEREF(__pyx_t_4);          __Pyx_INCREF(__pyx_v_nt); -        PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_nt); +        PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_nt);          __Pyx_GIVEREF(__pyx_v_nt);          __Pyx_INCREF(__pyx_v_links); -        PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_links); +        PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_links);          __Pyx_GIVEREF(__pyx_v_links); -        __pyx_t_2 = 0;          __pyx_t_3 = 0; -        __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_3); +        __pyx_t_4 = 0; +        __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4);          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -        if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) { -          __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +        if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { +          __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0;            __pyx_t_14 = NULL;          } else { -          __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext; +          __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_2); +          __pyx_t_14 = Py_TYPE(__pyx_t_2)->tp_iternext;          } -        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;          for (;;) { -          if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_4)) { -            if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; +          if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_2)) { +            if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;              #if CYTHON_COMPILING_IN_CPYTHON -            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #else -            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #endif -          } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_4)) { -            if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; +          } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_2)) { +            if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;              #if CYTHON_COMPILING_IN_CPYTHON -            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #else -            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #endif            } else { -            __pyx_t_3 = __pyx_t_14(__pyx_t_4); -            if (unlikely(!__pyx_t_3)) { +            __pyx_t_4 = __pyx_t_14(__pyx_t_2); +            if (unlikely(!__pyx_t_4)) {                if (PyErr_Occurred()) {                  if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                }                break;              } -            __Pyx_GOTREF(__pyx_t_3); +            __Pyx_GOTREF(__pyx_t_4);            }            __Pyx_XDECREF(__pyx_v_rule); -          __pyx_v_rule = __pyx_t_3; -          __pyx_t_3 = 0; +          __pyx_v_rule = __pyx_t_4; +          __pyx_t_4 = 0; -          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1972 +          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1974   *                     if f_j >= new_min_bound:   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   *                             rules.add(rule)             # <<<<<<<<<<<<<<   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt   */ -          if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -          __pyx_t_3 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_3); -          __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +          __pyx_t_4 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_4); +          __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_9);            __Pyx_INCREF(__pyx_v_rule);            PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_rule);            __Pyx_GIVEREF(__pyx_v_rule); -          __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_2); -          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +          __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_3); +          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;            __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;          } -        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -        goto __pyx_L43; +        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +        goto __pyx_L46;        } -      __pyx_L43:; -      goto __pyx_L42; +      __pyx_L46:; +      goto __pyx_L45;      } -    __pyx_L42:; +    __pyx_L45:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1973 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1975   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)             # <<<<<<<<<<<<<<   *                 nt[-1] = old_last_nt   *                 if new_e_i < nt[-1][3]:   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_9 = PyTuple_New(9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_9 = PyTuple_New(9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9);      __Pyx_INCREF(__pyx_v_f_i);      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_f_i);      __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4); -    __Pyx_GIVEREF(__pyx_t_4); +    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2); +    __Pyx_GIVEREF(__pyx_t_2);      __Pyx_INCREF(__pyx_v_new_e_i);      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_new_e_i);      __Pyx_GIVEREF(__pyx_v_new_e_i); @@ -59441,255 +59497,255 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __Pyx_INCREF(__pyx_v_nt);      PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_v_nt);      __Pyx_GIVEREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_9, 8, __pyx_t_2); -    __Pyx_GIVEREF(__pyx_t_2); -    __pyx_t_4 = 0; +    PyTuple_SET_ITEM(__pyx_t_9, 8, __pyx_t_3); +    __Pyx_GIVEREF(__pyx_t_3);      __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = 0; +    __pyx_t_3 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1974 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1976   *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt             # <<<<<<<<<<<<<<   *                 if new_e_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)   */ -    if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1975 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1977   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt   *                 if new_e_i < nt[-1][3]:             # <<<<<<<<<<<<<<   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_RichCompare(__pyx_v_new_e_i, __pyx_t_9, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_3 = PyObject_RichCompare(__pyx_v_new_e_i, __pyx_t_9, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    if (__pyx_t_8) { +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    if (__pyx_t_6) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1976 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1978   *                 nt[-1] = old_last_nt   *                 if new_e_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover); +      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9); +      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_9);        __Pyx_GIVEREF(__pyx_t_9);        __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1977 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1979   *                 if new_e_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)   */ -      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); +      __Pyx_GIVEREF(__pyx_t_2); +      __pyx_t_2 = 0; +      __pyx_t_2 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      goto __pyx_L46; +      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      goto __pyx_L49;      } -    __pyx_L46:; +    __pyx_L49:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1978 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1980   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:             # <<<<<<<<<<<<<<   *                     span_dec(cover, nt[-1][4] + 1, link_j)   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   */ -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    if (__pyx_t_8) { +    __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    if (__pyx_t_6) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1979 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1981   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   *             # Try to start a new non-terminal, extract, extend   */ -      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_3, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyNumber_Add(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); +      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3);        __Pyx_INCREF(__pyx_v_link_j);        PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +      __pyx_t_3 = 0; +      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1980 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1982   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *             # Try to start a new non-terminal, extract, extend   *             if (not nt or f_j - nt[-1][2] > 1) and len(nt) < self.max_nonterminals:   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_9); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_9);        __Pyx_GIVEREF(__pyx_t_9);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j);        __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      goto __pyx_L47; +      goto __pyx_L50;      } -    __pyx_L47:; -    goto __pyx_L37; +    __pyx_L50:; +    goto __pyx_L40;    } -  __pyx_L37:; +  __pyx_L40:; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1982 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1984   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   *             # Try to start a new non-terminal, extract, extend   *             if (not nt or f_j - nt[-1][2] > 1) and len(nt) < self.max_nonterminals:             # <<<<<<<<<<<<<<   *                 # Check for collisions   *                 if not span_check(cover, link_i, link_j):   */ -  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_5 = (!__pyx_t_8); +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = (!__pyx_t_6);    if (!__pyx_t_5) { -    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __pyx_t_9 = PyNumber_Subtract(__pyx_v_f_j, __pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyNumber_Subtract(__pyx_v_f_j, __pyx_t_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_RichCompare(__pyx_t_9, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_2 = PyObject_RichCompare(__pyx_t_9, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_6 = __pyx_t_8; +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_8 = __pyx_t_6;    } else { -    __pyx_t_6 = __pyx_t_5; +    __pyx_t_8 = __pyx_t_5;    } -  if (__pyx_t_6) { -    __pyx_t_1 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__pyx_t_8) { +    __pyx_t_1 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_5 = (__pyx_t_1 < __pyx_cur_scope->__pyx_v_self->max_nonterminals); -    __pyx_t_8 = __pyx_t_5; +    __pyx_t_6 = __pyx_t_5;    } else { -    __pyx_t_8 = __pyx_t_6; +    __pyx_t_6 = __pyx_t_8;    } -  if (__pyx_t_8) { +  if (__pyx_t_6) { -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1984 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1986   *             if (not nt or f_j - nt[-1][2] > 1) and len(nt) < self.max_nonterminals:   *                 # Check for collisions   *                 if not span_check(cover, link_i, link_j):             # <<<<<<<<<<<<<<   *                     return   *                 span_inc(cover, link_i, link_j)   */ -    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover);      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_cover); @@ -59700,16 +59756,16 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __Pyx_INCREF(__pyx_v_link_j);      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_6 = (!__pyx_t_8); -    if (__pyx_t_6) { +    __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_8 = (!__pyx_t_6); +    if (__pyx_t_8) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1985 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1987   *                 # Check for collisions   *                 if not span_check(cover, link_i, link_j):   *                     return             # <<<<<<<<<<<<<< @@ -59719,20 +59775,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        __Pyx_XDECREF(__pyx_r);        __pyx_r = Py_None; __Pyx_INCREF(Py_None);        goto __pyx_L0; -      goto __pyx_L49; +      goto __pyx_L52;      } -    __pyx_L49:; +    __pyx_L52:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1986 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1988   *                 if not span_check(cover, link_i, link_j):   *                     return   *                 span_inc(cover, link_i, link_j)             # <<<<<<<<<<<<<<   *                 span_inc(e_nt_cover, link_i, link_j)   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover);      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_cover); @@ -59743,23 +59799,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __Pyx_INCREF(__pyx_v_link_j);      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1987 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1989   *                     return   *                 span_inc(cover, link_i, link_j)   *                 span_inc(e_nt_cover, link_i, link_j)             # <<<<<<<<<<<<<<   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])   *                 # Require at least one word in phrase   */ -    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover);      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); @@ -59770,39 +59826,39 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __Pyx_INCREF(__pyx_v_link_j);      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1988 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1990   *                 span_inc(cover, link_i, link_j)   *                 span_inc(e_nt_cover, link_i, link_j)   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])             # <<<<<<<<<<<<<<   *                 # Require at least one word in phrase   *                 if links:   */ -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    if (__pyx_t_6) { -      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__pyx_t_8) { +      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_2 = __pyx_t_9; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_3 = __pyx_t_9;        __pyx_t_9 = 0;      } else {        __Pyx_INCREF(__pyx_int_1); -      __pyx_t_2 = __pyx_int_1; +      __pyx_t_3 = __pyx_int_1;      } -    __pyx_t_9 = PyList_New(5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyList_New(5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); -    __Pyx_GIVEREF(__pyx_t_2); +    PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); +    __Pyx_GIVEREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_f_j);      PyList_SET_ITEM(__pyx_t_9, 1, __pyx_v_f_j);      __Pyx_GIVEREF(__pyx_v_f_j); @@ -59815,262 +59871,262 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      __Pyx_INCREF(__pyx_v_link_j);      PyList_SET_ITEM(__pyx_t_9, 4, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_2 = 0; -    __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_nt, ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = 0; +    __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_nt, ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1990 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1992   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])   *                 # Require at least one word in phrase   *                 if links:             # <<<<<<<<<<<<<<   *                     if f_j >= new_min_bound:   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   */ -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    if (__pyx_t_6) { +    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__pyx_t_8) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1991 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1993   *                 # Require at least one word in phrase   *                 if links:   *                     if f_j >= new_min_bound:             # <<<<<<<<<<<<<<   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   *                             rules.add(rule)   */ -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      if (__pyx_t_6) { +      __pyx_t_3 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      if (__pyx_t_8) { -        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1992 +        /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1994   *                 if links:   *                     if f_j >= new_min_bound:   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):             # <<<<<<<<<<<<<<   *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   */ -        __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_9 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rules); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3); +        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9); -        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -        __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9); -        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_4 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_4); -        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -        __pyx_t_4 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_2); +        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +        __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_13, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_2); +        __pyx_t_4 = PyTuple_New(6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_4); -        __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_3);          __Pyx_INCREF(__pyx_v_f_i); -        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f_i); +        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i);          __Pyx_GIVEREF(__pyx_v_f_i);          __Pyx_INCREF(__pyx_v_new_e_i); -        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_new_e_i); +        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_new_e_i);          __Pyx_GIVEREF(__pyx_v_new_e_i); -        PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_9); +        PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_9);          __Pyx_GIVEREF(__pyx_t_9); -        PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_4); -        __Pyx_GIVEREF(__pyx_t_4); +        PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_2); +        __Pyx_GIVEREF(__pyx_t_2);          __Pyx_INCREF(__pyx_v_nt); -        PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_nt); +        PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_nt);          __Pyx_GIVEREF(__pyx_v_nt);          __Pyx_INCREF(__pyx_v_links); -        PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_links); +        PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_links);          __Pyx_GIVEREF(__pyx_v_links);          __pyx_t_9 = 0; -        __pyx_t_4 = 0; -        __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_4); -        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -        if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { -          __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; +        __pyx_t_2 = 0; +        __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_2); +        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +        if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) { +          __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0;            __pyx_t_14 = NULL;          } else { -          __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_3); -          __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; +          __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_4); +          __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext;          } -        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;          for (;;) { -          if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_3)) { -            if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break; +          if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_4)) { +            if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break;              #if CYTHON_COMPILING_IN_CPYTHON -            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #else -            __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #endif -          } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_3)) { -            if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; +          } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_4)) { +            if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break;              #if CYTHON_COMPILING_IN_CPYTHON -            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #else -            __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              #endif            } else { -            __pyx_t_4 = __pyx_t_14(__pyx_t_3); -            if (unlikely(!__pyx_t_4)) { +            __pyx_t_2 = __pyx_t_14(__pyx_t_4); +            if (unlikely(!__pyx_t_2)) {                if (PyErr_Occurred()) {                  if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                }                break;              } -            __Pyx_GOTREF(__pyx_t_4); +            __Pyx_GOTREF(__pyx_t_2);            }            __Pyx_XDECREF(__pyx_v_rule); -          __pyx_v_rule = __pyx_t_4; -          __pyx_t_4 = 0; +          __pyx_v_rule = __pyx_t_2; +          __pyx_t_2 = 0; -          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1993 +          /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1995   *                     if f_j >= new_min_bound:   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   *                             rules.add(rule)             # <<<<<<<<<<<<<<   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt.pop()   */ -          if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -          __pyx_t_4 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +          __pyx_t_2 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_2); +          __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_3);            __Pyx_INCREF(__pyx_v_rule); -          PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_rule); +          PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rule);            __Pyx_GIVEREF(__pyx_v_rule); -          __pyx_t_9 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_9 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_9); -          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;          } -        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        goto __pyx_L51; +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        goto __pyx_L54;        } -      __pyx_L51:; -      goto __pyx_L50; +      __pyx_L54:; +      goto __pyx_L53;      } -    __pyx_L50:; +    __pyx_L53:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1994 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1996   *                         for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links):   *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)             # <<<<<<<<<<<<<<   *                 nt.pop()   *                 span_dec(cover, link_i, link_j)   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_3 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_9 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_9 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __pyx_t_2 = PyTuple_New(9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = PyTuple_New(9); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f_i);      __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); -    __Pyx_GIVEREF(__pyx_t_3); +    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); +    __Pyx_GIVEREF(__pyx_t_4);      __Pyx_INCREF(__pyx_v_new_e_i); -    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_new_e_i); +    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_new_e_i);      __Pyx_GIVEREF(__pyx_v_new_e_i);      __Pyx_INCREF(__pyx_v_new_e_j); -    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_new_e_j); +    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_new_e_j);      __Pyx_GIVEREF(__pyx_v_new_e_j);      __Pyx_INCREF(__pyx_v_new_min_bound); -    PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_new_min_bound); +    PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_new_min_bound);      __Pyx_GIVEREF(__pyx_v_new_min_bound);      __Pyx_INCREF(__pyx_v_wc); -    PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_wc); +    PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_wc);      __Pyx_GIVEREF(__pyx_v_wc);      __Pyx_INCREF(__pyx_v_links); -    PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_links); +    PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_links);      __Pyx_GIVEREF(__pyx_v_links);      __Pyx_INCREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_v_nt); +    PyTuple_SET_ITEM(__pyx_t_3, 7, __pyx_v_nt);      __Pyx_GIVEREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_t_9); +    PyTuple_SET_ITEM(__pyx_t_3, 8, __pyx_t_9);      __Pyx_GIVEREF(__pyx_t_9); -    __pyx_t_3 = 0; +    __pyx_t_4 = 0;      __pyx_t_9 = 0; -    __pyx_t_9 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1995 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1997   *                             rules.add(rule)   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt.pop()             # <<<<<<<<<<<<<<   *                 span_dec(cover, link_i, link_j)   *                 span_dec(e_nt_cover, link_i, link_j)   */ -    __pyx_t_9 = __Pyx_PyObject_Pop(__pyx_v_nt); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_Pop(__pyx_v_nt); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9);      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1996 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1998   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt.pop()   *                 span_dec(cover, link_i, link_j)             # <<<<<<<<<<<<<<   *                 span_dec(e_nt_cover, link_i, link_j)   *    */ -    __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_cover); +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_cover);      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover);      __Pyx_INCREF(__pyx_v_link_i); -    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i); +    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j); +    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_3 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_4 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1997 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":1999   *                 nt.pop()   *                 span_dec(cover, link_i, link_j)   *                 span_dec(e_nt_cover, link_i, link_j)             # <<<<<<<<<<<<<<   *    *         # Try to extract phrases from every f index   */ -    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_e_nt_cover);      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover);      __Pyx_INCREF(__pyx_v_link_i); -    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i); +    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j); +    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -    goto __pyx_L48; +    goto __pyx_L51;    } -  __pyx_L48:; +  __pyx_L51:;    __pyx_r = Py_None; __Pyx_INCREF(Py_None);    goto __pyx_L0; @@ -60732,7 +60788,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    __pyx_cur_scope->__pyx_v_extract = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2000 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2002   *    *         # Try to extract phrases from every f index   *         f_i = 0             # <<<<<<<<<<<<<< @@ -60742,7 +60798,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    __Pyx_INCREF(__pyx_int_0);    __pyx_v_f_i = __pyx_int_0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2001 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2003   *         # Try to extract phrases from every f index   *         f_i = 0   *         while f_i < f_len:             # <<<<<<<<<<<<<< @@ -60750,39 +60806,39 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   *             if not al[f_i]:   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_f_i, __pyx_cur_scope->__pyx_v_f_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_f_i, __pyx_cur_scope->__pyx_v_f_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_9) break; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2003 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2005   *         while f_i < f_len:   *             # Skip if phrases won't be tight on left side   *             if not al[f_i]:             # <<<<<<<<<<<<<<   *                 f_i += 1   *                 continue   */ -    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __pyx_t_10 = (!__pyx_t_9);      if (__pyx_t_10) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2004 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2006   *             # Skip if phrases won't be tight on left side   *             if not al[f_i]:   *                 f_i += 1             # <<<<<<<<<<<<<<   *                 continue   *             extract(f_i, f_i, f_len + 1, -1, f_i, 1, [], [], False)   */ -      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_f_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_f_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_v_f_i);        __pyx_v_f_i = __pyx_t_1;        __pyx_t_1 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2005 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2007   *             if not al[f_i]:   *                 f_i += 1   *                 continue             # <<<<<<<<<<<<<< @@ -60794,22 +60850,22 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      }      __pyx_L15:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2006 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2008   *                 f_i += 1   *                 continue   *             extract(f_i, f_i, f_len + 1, -1, f_i, 1, [], [], False)             # <<<<<<<<<<<<<<   *             f_i += 1   *    */ -    __pyx_t_1 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_7 = PyTuple_New(9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyTuple_New(9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_INCREF(__pyx_v_f_i);      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_f_i); @@ -60838,19 +60894,19 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_6 = 0;      __pyx_t_3 = 0;      __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2007 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2009   *                 continue   *             extract(f_i, f_i, f_len + 1, -1, f_i, 1, [], [], False)   *             f_i += 1             # <<<<<<<<<<<<<<   *    *         for rule in sorted(rules):   */ -    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_f_i, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_f_i, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_v_f_i);      __pyx_v_f_i = __pyx_t_4; @@ -60858,26 +60914,26 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_L13_continue:;    } -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2009 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2011   *             f_i += 1   *    *         for rule in sorted(rules):             # <<<<<<<<<<<<<<   *             logger.info(self.fmt_rule(*rule))   *    */ -  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rules);    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_rules);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rules); -  __pyx_t_7 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_7 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7);    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;    if (PyList_CheckExact(__pyx_t_7) || PyTuple_CheckExact(__pyx_t_7)) {      __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;    } @@ -60886,23 +60942,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_7 = __pyx_t_5(__pyx_t_4);        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -60912,32 +60968,32 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_rule = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2010 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2012   *    *         for rule in sorted(rules):   *             logger.info(self.fmt_rule(*rule))             # <<<<<<<<<<<<<<   *    *         # Update phrase counts   */ -    __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__fmt_rule); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__fmt_rule); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_6 = PySequence_Tuple(__pyx_v_rule); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PySequence_Tuple(__pyx_v_rule); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_6)); -    __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);      __Pyx_GIVEREF(__pyx_t_1);      __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; @@ -60945,31 +61001,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    }    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2013 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2015   *    *         # Update phrase counts   *         f_set = set()             # <<<<<<<<<<<<<<   *         e_set = set()   *         for (f_ph, e_ph, al) in rules:   */ -  __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_4));    __pyx_v_f_set = __pyx_t_4;    __pyx_t_4 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2014 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2016   *         # Update phrase counts   *         f_set = set()   *         e_set = set()             # <<<<<<<<<<<<<<   *         for (f_ph, e_ph, al) in rules:   *             f_set.add(f_ph)   */ -  __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_4));    __pyx_v_e_set = __pyx_t_4;    __pyx_t_4 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2015 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2017   *         f_set = set()   *         e_set = set()   *         for (f_ph, e_ph, al) in rules:             # <<<<<<<<<<<<<< @@ -60980,7 +61036,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_4 = __pyx_cur_scope->__pyx_v_rules; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_rules); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_rules); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;    } @@ -60988,23 +61044,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_1 = __pyx_t_5(__pyx_t_4);        if (unlikely(!__pyx_t_1)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61020,7 +61076,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        if (unlikely(size != 3)) {          if (size > 3) __Pyx_RaiseTooManyValuesError(3);          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); -        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }        #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { @@ -61036,15 +61092,15 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __Pyx_INCREF(__pyx_t_3);        __Pyx_INCREF(__pyx_t_7);        #else -      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      } else      {        Py_ssize_t index = -1; -      __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        __pyx_t_8 = Py_TYPE(__pyx_t_11)->tp_iternext; @@ -61054,7 +61110,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __Pyx_GOTREF(__pyx_t_3);        index = 2; __pyx_t_7 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L20_unpacking_failed;        __Pyx_GOTREF(__pyx_t_7); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;        goto __pyx_L21_unpacking_done; @@ -61062,7 +61118,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;        __pyx_t_8 = NULL;        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L21_unpacking_done:;      }      __Pyx_XDECREF(__pyx_v_f_ph); @@ -61077,72 +61133,72 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_cur_scope->__pyx_v_al = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2016 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2018   *         e_set = set()   *         for (f_ph, e_ph, al) in rules:   *             f_set.add(f_ph)             # <<<<<<<<<<<<<<   *             e_set.add(e_ph)   *             self.phrases_fe[f_ph][e_ph] += 1   */ -    __pyx_t_12 = PySet_Add(__pyx_v_f_set, __pyx_v_f_ph); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = PySet_Add(__pyx_v_f_set, __pyx_v_f_ph); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2017 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2019   *         for (f_ph, e_ph, al) in rules:   *             f_set.add(f_ph)   *             e_set.add(e_ph)             # <<<<<<<<<<<<<<   *             self.phrases_fe[f_ph][e_ph] += 1   *             if not self.phrases_al[f_ph][e_ph]:   */ -    __pyx_t_12 = PySet_Add(__pyx_v_e_set, __pyx_v_e_ph); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = PySet_Add(__pyx_v_e_set, __pyx_v_e_ph); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2018 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2020   *             f_set.add(f_ph)   *             e_set.add(e_ph)   *             self.phrases_fe[f_ph][e_ph] += 1             # <<<<<<<<<<<<<<   *             if not self.phrases_al[f_ph][e_ph]:   *                 self.phrases_al[f_ph][e_ph] = al   */ -    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_v_f_ph); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_v_f_ph); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_INCREF(__pyx_v_e_ph);      __pyx_t_7 = __pyx_v_e_ph; -    __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (PyObject_SetItem(__pyx_t_1, __pyx_t_7, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_t_1, __pyx_t_7, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2019 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2021   *             e_set.add(e_ph)   *             self.phrases_fe[f_ph][e_ph] += 1   *             if not self.phrases_al[f_ph][e_ph]:             # <<<<<<<<<<<<<<   *                 self.phrases_al[f_ph][e_ph] = al   *         for f_ph in f_set:   */ -    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_7 = PyObject_GetItem(__pyx_t_1, __pyx_v_e_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_GetItem(__pyx_t_1, __pyx_v_e_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      __pyx_t_9 = (!__pyx_t_10);      if (__pyx_t_9) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2020 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2022   *             self.phrases_fe[f_ph][e_ph] += 1   *             if not self.phrases_al[f_ph][e_ph]:   *                 self.phrases_al[f_ph][e_ph] = al             # <<<<<<<<<<<<<<   *         for f_ph in f_set:   *             self.phrases_f[f_ph] += 1   */ -      __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); -      if (PyObject_SetItem(__pyx_t_7, __pyx_v_e_ph, __pyx_cur_scope->__pyx_v_al) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (PyObject_SetItem(__pyx_t_7, __pyx_v_e_ph, __pyx_cur_scope->__pyx_v_al) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        goto __pyx_L22;      } @@ -61150,14 +61206,14 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    }    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2021 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2023   *             if not self.phrases_al[f_ph][e_ph]:   *                 self.phrases_al[f_ph][e_ph] = al   *         for f_ph in f_set:             # <<<<<<<<<<<<<<   *             self.phrases_f[f_ph] += 1   *         for e_ph in e_set:   */ -  __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_f_set)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_f_set)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;    for (;;) { @@ -61166,7 +61222,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61176,7 +61232,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_f_ph = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2022 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2024   *                 self.phrases_al[f_ph][e_ph] = al   *         for f_ph in f_set:   *             self.phrases_f[f_ph] += 1             # <<<<<<<<<<<<<< @@ -61187,26 +61243,26 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->phrases_f;      __Pyx_INCREF(__pyx_v_f_ph);      __pyx_t_1 = __pyx_v_f_ph; -    __pyx_t_6 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    }    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2023 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2025   *         for f_ph in f_set:   *             self.phrases_f[f_ph] += 1   *         for e_ph in e_set:             # <<<<<<<<<<<<<<   *             self.phrases_e[e_ph] += 1   *    */ -  __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_e_set)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_e_set)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;    for (;;) { @@ -61215,7 +61271,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61225,7 +61281,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_e_ph = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2024 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2026   *             self.phrases_f[f_ph] += 1   *         for e_ph in e_set:   *             self.phrases_e[e_ph] += 1             # <<<<<<<<<<<<<< @@ -61236,19 +61292,19 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->phrases_e;      __Pyx_INCREF(__pyx_v_e_ph);      __pyx_t_1 = __pyx_v_e_ph; -    __pyx_t_3 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    }    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2027 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2029   *    *         # Update Bilexical counts   *         for e_w in e_words:             # <<<<<<<<<<<<<< @@ -61259,7 +61315,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_4 = __pyx_cur_scope->__pyx_v_e_words; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;    } @@ -61267,23 +61323,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_7 = __pyx_t_5(__pyx_t_4);        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61293,7 +61349,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_e_w = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2028 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2030   *         # Update Bilexical counts   *         for e_w in e_words:   *             self.bilex_e[e_w] += 1             # <<<<<<<<<<<<<< @@ -61304,19 +61360,19 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->bilex_e;      __Pyx_INCREF(__pyx_v_e_w);      __pyx_t_1 = __pyx_v_e_w; -    __pyx_t_6 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    }    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2029 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2031   *         for e_w in e_words:   *             self.bilex_e[e_w] += 1   *         for f_w in f_words:             # <<<<<<<<<<<<<< @@ -61327,7 +61383,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_4 = __pyx_cur_scope->__pyx_v_f_words; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_f_words); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_f_words); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;    } @@ -61335,23 +61391,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_7 = __pyx_t_5(__pyx_t_4);        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61361,7 +61417,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_f_w = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2030 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2032   *             self.bilex_e[e_w] += 1   *         for f_w in f_words:   *             self.bilex_f[f_w] += 1             # <<<<<<<<<<<<<< @@ -61372,17 +61428,17 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->bilex_f;      __Pyx_INCREF(__pyx_v_f_w);      __pyx_t_1 = __pyx_v_f_w; -    __pyx_t_3 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_t_7, __pyx_t_1, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2031 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2033   *         for f_w in f_words:   *             self.bilex_f[f_w] += 1   *             for e_w in e_words:             # <<<<<<<<<<<<<< @@ -61393,7 +61449,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __pyx_t_7 = __pyx_cur_scope->__pyx_v_e_words; __Pyx_INCREF(__pyx_t_7); __pyx_t_13 = 0;        __pyx_t_14 = NULL;      } else { -      __pyx_t_13 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_13 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __pyx_t_14 = Py_TYPE(__pyx_t_7)->tp_iternext;      } @@ -61401,23 +61457,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        if (!__pyx_t_14 && PyList_CheckExact(__pyx_t_7)) {          if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_7)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else if (!__pyx_t_14 && PyTuple_CheckExact(__pyx_t_7)) {          if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_7)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else {          __pyx_t_1 = __pyx_t_14(__pyx_t_7);          if (unlikely(!__pyx_t_1)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -61427,23 +61483,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __pyx_v_e_w = __pyx_t_1;        __pyx_t_1 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2032 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2034   *             self.bilex_f[f_w] += 1   *             for e_w in e_words:   *                 self.bilex_fe[f_w][e_w] += 1             # <<<<<<<<<<<<<<   *    *    */ -      __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->bilex_fe, __pyx_v_f_w); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->bilex_fe, __pyx_v_f_w); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __Pyx_INCREF(__pyx_v_e_w);        __pyx_t_6 = __pyx_v_e_w; -      __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_6); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_6); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      if (PyObject_SetItem(__pyx_t_1, __pyx_t_6, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (PyObject_SetItem(__pyx_t_1, __pyx_t_6, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -61519,31 +61575,31 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rules(PyObject *          case  1:          if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2:          if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_span)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3:          if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_span)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  4:          if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  5:          if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__al)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "form_rules") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "form_rules") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {        goto __pyx_L5_argtuple_error; @@ -61564,7 +61620,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rules(PyObject *    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("form_rules", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rules", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -61604,11 +61660,11 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_10form_rules_lambda7(Py          case  1:          if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda7") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda7") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {        goto __pyx_L5_argtuple_error; @@ -61621,7 +61677,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_10form_rules_lambda7(Py    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rules.lambda7", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -61632,7 +61688,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_10form_rules_lambda7(Py    return __pyx_r;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2042 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2043   *         rules = []   *    *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))             # <<<<<<<<<<<<<< @@ -61651,11 +61707,11 @@ static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda7", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1); @@ -61663,7 +61719,7 @@ static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self    __Pyx_GIVEREF(__pyx_t_2);    __pyx_t_1 = 0;    __pyx_t_2 = 0; -  __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    __pyx_r = __pyx_t_2; @@ -61684,7 +61740,116 @@ static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self    return __pyx_r;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2036 +/* Python wrapper */ +static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_10form_rules_1lambda8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_10form_rules_1lambda8 = {__Pyx_NAMESTR("lambda8"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_10form_rules_1lambda8, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; +static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_10form_rules_1lambda8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +  PyObject *__pyx_v_x = 0; +  PyObject *__pyx_v_y = 0; +  PyObject *__pyx_r = 0; +  __Pyx_RefNannyDeclarations +  __Pyx_RefNannySetupContext("lambda8 (wrapper)", 0); +  { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0}; +    PyObject* values[2] = {0,0}; +    if (unlikely(__pyx_kwds)) { +      Py_ssize_t kw_args; +      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +      switch (pos_args) { +        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +        case  0: break; +        default: goto __pyx_L5_argtuple_error; +      } +      kw_args = PyDict_Size(__pyx_kwds); +      switch (pos_args) { +        case  0: +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x)) != 0)) kw_args--; +        else goto __pyx_L5_argtuple_error; +        case  1: +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--; +        else { +          __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        } +      } +      if (unlikely(kw_args > 0)) { +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda8") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +      } +    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { +      goto __pyx_L5_argtuple_error; +    } else { +      values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +      values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +    } +    __pyx_v_x = values[0]; +    __pyx_v_y = values[1]; +  } +  goto __pyx_L4_argument_unpacking_done; +  __pyx_L5_argtuple_error:; +  __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __pyx_L3_error:; +  __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rules.lambda8", __pyx_clineno, __pyx_lineno, __pyx_filename); +  __Pyx_RefNannyFinishContext(); +  return NULL; +  __pyx_L4_argument_unpacking_done:; +  __pyx_r = __pyx_lambda_funcdef_lambda8(__pyx_self, __pyx_v_x, __pyx_v_y); +  __Pyx_RefNannyFinishContext(); +  return __pyx_r; +} + +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2069 + *         # Adjusting alignment links takes some doing + *         links = [list(link) for sub in al for link in sub] + *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))             # <<<<<<<<<<<<<< + *         links_len = len(links) + *         nt_len = len(nt) + */ + +static PyObject *__pyx_lambda_funcdef_lambda8(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { +  PyObject *__pyx_r = NULL; +  __Pyx_RefNannyDeclarations +  PyObject *__pyx_t_1 = NULL; +  PyObject *__pyx_t_2 = NULL; +  PyObject *__pyx_t_3 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0; +  __Pyx_RefNannySetupContext("lambda8", 0); +  __Pyx_XDECREF(__pyx_r); +  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_2); +  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); +  __Pyx_GIVEREF(__pyx_t_1); +  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); +  __Pyx_GIVEREF(__pyx_t_2); +  __pyx_t_1 = 0; +  __pyx_t_2 = 0; +  __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_2); +  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +  __pyx_r = __pyx_t_2; +  __pyx_t_2 = 0; +  goto __pyx_L0; + +  __pyx_r = Py_None; __Pyx_INCREF(Py_None); +  goto __pyx_L0; +  __pyx_L1_error:; +  __Pyx_XDECREF(__pyx_t_1); +  __Pyx_XDECREF(__pyx_t_2); +  __Pyx_XDECREF(__pyx_t_3); +  __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rules.lambda8", __pyx_clineno, __pyx_lineno, __pyx_filename); +  __pyx_r = NULL; +  __pyx_L0:; +  __Pyx_XGIVEREF(__pyx_r); +  __Pyx_RefNannyFinishContext(); +  return __pyx_r; +} + +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2038   *    *     # Create a rule from source, target, non-terminals, and alignments   *     def form_rules(self, f_i, e_i, f_span, e_span, nt, al):             # <<<<<<<<<<<<<< @@ -61702,6 +61867,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    PyObject *__pyx_v_i = NULL;    PyObject *__pyx_v_e_sym = NULL;    PyObject *__pyx_v_links = NULL; +  PyObject *__pyx_v_links_inv = NULL;    PyObject *__pyx_v_links_len = NULL;    PyObject *__pyx_v_nt_i = NULL;    PyObject *__pyx_v_sub = NULL; @@ -61727,64 +61893,64 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("form_rules", 0); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2040 - *         # This could be more efficient but is unlikely to be the bottleneck +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2041   *  + *         # This could be more efficient but is unlikely to be the bottleneck   *         rules = []             # <<<<<<<<<<<<<<   *    *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))   */ -  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_v_rules = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2042 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2043   *         rules = []   *    *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))             # <<<<<<<<<<<<<<   *    *         f_sym = list(f_span[:])   */ -  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(__pyx_v_nt);    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_nt);    __Pyx_GIVEREF(__pyx_v_nt); -  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_10form_rules_lambda7, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_10form_rules_lambda7, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  __pyx_t_3 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_nt_inv = __pyx_t_3;    __pyx_t_3 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2044 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2045   *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))   *    *         f_sym = list(f_span[:])             # <<<<<<<<<<<<<<   *         off = f_i   *         for next_nt in nt:   */ -  __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_f_span, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_f_span, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);    __Pyx_GIVEREF(__pyx_t_3);    __pyx_t_3 = 0; -  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_f_sym = ((PyObject*)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2045 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2046   *    *         f_sym = list(f_span[:])   *         off = f_i             # <<<<<<<<<<<<<< @@ -61794,7 +61960,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_INCREF(__pyx_v_f_i);    __pyx_v_off = __pyx_v_f_i; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2046 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2047   *         f_sym = list(f_span[:])   *         off = f_i   *         for next_nt in nt:             # <<<<<<<<<<<<<< @@ -61805,7 +61971,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      __pyx_t_3 = __pyx_v_nt; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;    } @@ -61813,23 +61979,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_2 = __pyx_t_5(__pyx_t_3);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61839,29 +62005,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      __pyx_v_next_nt = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2047 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2048   *         off = f_i   *         for next_nt in nt:   *             nt_len = (next_nt[2] - next_nt[1]) + 1             # <<<<<<<<<<<<<<   *             i = 0   *             while i < nt_len:   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_XDECREF(__pyx_v_nt_len);      __pyx_v_nt_len = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2048 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2049   *         for next_nt in nt:   *             nt_len = (next_nt[2] - next_nt[1]) + 1   *             i = 0             # <<<<<<<<<<<<<< @@ -61872,7 +62038,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      __Pyx_XDECREF(__pyx_v_i);      __pyx_v_i = __pyx_int_0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2049 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2050   *             nt_len = (next_nt[2] - next_nt[1]) + 1   *             i = 0   *             while i < nt_len:             # <<<<<<<<<<<<<< @@ -61880,83 +62046,83 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p   *                 i += 1   */      while (1) { -      __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (!__pyx_t_7) break; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2050 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2051   *             i = 0   *             while i < nt_len:   *                 f_sym.pop(next_nt[1] - off)             # <<<<<<<<<<<<<<   *                 i += 1   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))   */ -      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_f_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_f_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_6, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_6, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);        __Pyx_GIVEREF(__pyx_t_2);        __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2051 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2052   *             while i < nt_len:   *                 f_sym.pop(next_nt[1] - off)   *                 i += 1             # <<<<<<<<<<<<<<   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)   */ -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_v_i);        __pyx_v_i = __pyx_t_2;        __pyx_t_2 = 0;      } -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2052 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2053   *                 f_sym.pop(next_nt[1] - off)   *                 i += 1   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))             # <<<<<<<<<<<<<<   *             off += (nt_len - 1)   *    */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_10 = PyList_Insert(__pyx_v_f_sym, __pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = PyList_Insert(__pyx_v_f_sym, __pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2053 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2054   *                 i += 1   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)             # <<<<<<<<<<<<<<   *    *         e_sym = list(e_span[:])   */ -    __pyx_t_6 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_DECREF(__pyx_v_off); @@ -61965,27 +62131,27 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2055 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2056   *             off += (nt_len - 1)   *    *         e_sym = list(e_span[:])             # <<<<<<<<<<<<<<   *         off = e_i   *         for next_nt in nt_inv:   */ -  __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_e_span, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_e_span, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);    __Pyx_GIVEREF(__pyx_t_3);    __pyx_t_3 = 0; -  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_e_sym = ((PyObject*)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2056 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2057   *    *         e_sym = list(e_span[:])   *         off = e_i             # <<<<<<<<<<<<<< @@ -61996,7 +62162,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_DECREF(__pyx_v_off);    __pyx_v_off = __pyx_v_e_i; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2057 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2058   *         e_sym = list(e_span[:])   *         off = e_i   *         for next_nt in nt_inv:             # <<<<<<<<<<<<<< @@ -62007,7 +62173,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      __pyx_t_3 = __pyx_v_nt_inv; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt_inv); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt_inv); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;    } @@ -62015,23 +62181,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_2 = __pyx_t_5(__pyx_t_3);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -62041,29 +62207,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      __pyx_v_next_nt = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2058 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2059   *         off = e_i   *         for next_nt in nt_inv:   *             nt_len = (next_nt[4] - next_nt[3]) + 1             # <<<<<<<<<<<<<<   *             i = 0   *             while i < nt_len:   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_XDECREF(__pyx_v_nt_len);      __pyx_v_nt_len = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2059 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2060   *         for next_nt in nt_inv:   *             nt_len = (next_nt[4] - next_nt[3]) + 1   *             i = 0             # <<<<<<<<<<<<<< @@ -62074,7 +62240,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      __Pyx_XDECREF(__pyx_v_i);      __pyx_v_i = __pyx_int_0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2060 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2061   *             nt_len = (next_nt[4] - next_nt[3]) + 1   *             i = 0   *             while i < nt_len:             # <<<<<<<<<<<<<< @@ -62082,83 +62248,83 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p   *                 i += 1   */      while (1) { -      __pyx_t_6 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2060; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2060; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        if (!__pyx_t_7) break; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2061 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2062   *             i = 0   *             while i < nt_len:   *                 e_sym.pop(next_nt[3] - off)             # <<<<<<<<<<<<<<   *                 i += 1   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))   */ -      __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_e_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_e_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);        __Pyx_GIVEREF(__pyx_t_2);        __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2062 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2063   *             while i < nt_len:   *                 e_sym.pop(next_nt[3] - off)   *                 i += 1             # <<<<<<<<<<<<<<   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)   */ -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_v_i);        __pyx_v_i = __pyx_t_2;        __pyx_t_2 = 0;      } -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2063 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2064   *                 e_sym.pop(next_nt[3] - off)   *                 i += 1   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))             # <<<<<<<<<<<<<<   *             off += (nt_len - 1)   *    */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_10 = PyList_Insert(__pyx_v_e_sym, __pyx_t_8, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = PyList_Insert(__pyx_v_e_sym, __pyx_t_8, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2064 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2065   *                 i += 1   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)             # <<<<<<<<<<<<<<   *    *         # Adjusting alignment links takes some doing   */ -    __pyx_t_1 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_v_off); @@ -62167,20 +62333,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2067 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2068   *    *         # Adjusting alignment links takes some doing   *         links = [list(link) for sub in al for link in sub]             # <<<<<<<<<<<<<< + *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))   *         links_len = len(links) - *         nt_len = len(nt)   */ -  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    if (PyList_CheckExact(__pyx_v_al) || PyTuple_CheckExact(__pyx_v_al)) {      __pyx_t_2 = __pyx_v_al; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_al); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_al); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;    } @@ -62188,23 +62354,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_1 = __pyx_t_5(__pyx_t_2);        if (unlikely(!__pyx_t_1)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -62217,7 +62383,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p        __pyx_t_1 = __pyx_v_sub; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;        __pyx_t_11 = NULL;      } else { -      __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sub); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sub); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext;      } @@ -62225,23 +62391,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p        if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_1)) {          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_1)) {          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else {          __pyx_t_6 = __pyx_t_11(__pyx_t_1);          if (unlikely(!__pyx_t_6)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -62250,15 +62416,15 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p        __Pyx_XDECREF(__pyx_v_link);        __pyx_v_link = __pyx_t_6;        __pyx_t_6 = 0; -      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        __Pyx_INCREF(__pyx_v_link);        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_link);        __Pyx_GIVEREF(__pyx_v_link); -      __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -      if (unlikely(__Pyx_PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(__Pyx_PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;      }      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -62268,34 +62434,59 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __pyx_v_links = __pyx_t_3;    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2068 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2069   *         # Adjusting alignment links takes some doing   *         links = [list(link) for sub in al for link in sub] - *         links_len = len(links)             # <<<<<<<<<<<<<< + *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))             # <<<<<<<<<<<<<< + *         links_len = len(links)   *         nt_len = len(nt) - *         nt_i = 0   */ -  __pyx_t_4 = PyList_GET_SIZE(((PyObject *)__pyx_v_links)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __pyx_v_links_len = __pyx_t_3; -  __pyx_t_3 = 0; +  __Pyx_INCREF(((PyObject *)__pyx_v_links)); +  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_links)); +  __Pyx_GIVEREF(((PyObject *)__pyx_v_links)); +  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(((PyObject *)__pyx_t_2)); +  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_10form_rules_1lambda8, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1); +  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +  __pyx_t_1 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1); +  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +  __pyx_v_links_inv = __pyx_t_1; +  __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2069 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2070   *         links = [list(link) for sub in al for link in sub] + *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1])) + *         links_len = len(links)             # <<<<<<<<<<<<<< + *         nt_len = len(nt) + *         nt_i = 0 + */ +  __pyx_t_4 = PyList_GET_SIZE(((PyObject *)__pyx_v_links)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1); +  __pyx_v_links_len = __pyx_t_1; +  __pyx_t_1 = 0; + +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2071 + *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))   *         links_len = len(links)   *         nt_len = len(nt)             # <<<<<<<<<<<<<<   *         nt_i = 0   *         off = f_i   */ -  __pyx_t_4 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_3); +  __pyx_t_4 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1);    __Pyx_XDECREF(__pyx_v_nt_len); -  __pyx_v_nt_len = __pyx_t_3; -  __pyx_t_3 = 0; +  __pyx_v_nt_len = __pyx_t_1; +  __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2070 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2072   *         links_len = len(links)   *         nt_len = len(nt)   *         nt_i = 0             # <<<<<<<<<<<<<< @@ -62305,7 +62496,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_INCREF(__pyx_int_0);    __pyx_v_nt_i = __pyx_int_0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2071 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2073   *         nt_len = len(nt)   *         nt_i = 0   *         off = f_i             # <<<<<<<<<<<<<< @@ -62316,7 +62507,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_DECREF(__pyx_v_off);    __pyx_v_off = __pyx_v_f_i; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2072 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2074   *         nt_i = 0   *         off = f_i   *         i = 0             # <<<<<<<<<<<<<< @@ -62327,7 +62518,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_XDECREF(__pyx_v_i);    __pyx_v_i = __pyx_int_0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2073 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2075   *         off = f_i   *         i = 0   *         while i < links_len:             # <<<<<<<<<<<<<< @@ -62335,12 +62526,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p   *                 off += (nt[nt_i][2] - nt[nt_i][1])   */    while (1) { -    __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_7) break; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2074 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2076   *         i = 0   *         while i < links_len:   *             while nt_i < nt_len and links[i][0] > nt[nt_i][1]:             # <<<<<<<<<<<<<< @@ -62348,107 +62539,107 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p   *                 nt_i += 1   */      while (1) { -      __pyx_t_3 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_1 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (__pyx_t_7) { -        __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_links), __pyx_v_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_3); -        __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_links), __pyx_v_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __pyx_t_3 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_3); -        __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3);          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;          __pyx_t_14 = __pyx_t_13;        } else {          __pyx_t_14 = __pyx_t_7;        }        if (!__pyx_t_14) break; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2075 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2077   *         while i < links_len:   *             while nt_i < nt_len and links[i][0] > nt[nt_i][1]:   *                 off += (nt[nt_i][2] - nt[nt_i][1])             # <<<<<<<<<<<<<<   *                 nt_i += 1   *             links[i][0] -= off   */ -      __pyx_t_3 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        __Pyx_DECREF(__pyx_v_off);        __pyx_v_off = __pyx_t_2;        __pyx_t_2 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2076 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2078   *             while nt_i < nt_len and links[i][0] > nt[nt_i][1]:   *                 off += (nt[nt_i][2] - nt[nt_i][1])   *                 nt_i += 1             # <<<<<<<<<<<<<<   *             links[i][0] -= off   *             i += 1   */ -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_v_nt_i);        __pyx_v_nt_i = __pyx_t_2;        __pyx_t_2 = 0;      } -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2077 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2079   *                 off += (nt[nt_i][2] - nt[nt_i][1])   *                 nt_i += 1   *             links[i][0] -= off             # <<<<<<<<<<<<<<   *             i += 1   *         nt_i = 0   */ -    __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_links), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_links), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_4 = 0; -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (__Pyx_SetItemInt(__pyx_t_2, __pyx_t_4, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2079; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    if (__Pyx_SetItemInt(__pyx_t_2, __pyx_t_4, __pyx_t_3, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2079; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2078 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2080   *                 nt_i += 1   *             links[i][0] -= off   *             i += 1             # <<<<<<<<<<<<<<   *         nt_i = 0   *         off = e_i   */ -    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_v_i);      __pyx_v_i = __pyx_t_2;      __pyx_t_2 = 0;    } -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2079 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2081   *             links[i][0] -= off   *             i += 1   *         nt_i = 0             # <<<<<<<<<<<<<< @@ -62459,7 +62650,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_DECREF(__pyx_v_nt_i);    __pyx_v_nt_i = __pyx_int_0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2080 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2082   *             i += 1   *         nt_i = 0   *         off = e_i             # <<<<<<<<<<<<<< @@ -62470,56 +62661,56 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_DECREF(__pyx_v_off);    __pyx_v_off = __pyx_v_e_i; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2081 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2083   *         nt_i = 0   *         off = e_i   *         i = 0             # <<<<<<<<<<<<<<   *         while i < links_len: - *             while nt_i < nt_len and links[i][1] > nt_inv[nt_i][3]: + *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:   */    __Pyx_INCREF(__pyx_int_0);    __Pyx_DECREF(__pyx_v_i);    __pyx_v_i = __pyx_int_0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2082 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2084   *         off = e_i   *         i = 0   *         while i < links_len:             # <<<<<<<<<<<<<< - *             while nt_i < nt_len and links[i][1] > nt_inv[nt_i][3]: + *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])   */    while (1) { -    __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      if (!__pyx_t_14) break; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2083 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2085   *         i = 0   *         while i < links_len: - *             while nt_i < nt_len and links[i][1] > nt_inv[nt_i][3]:             # <<<<<<<<<<<<<< + *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:             # <<<<<<<<<<<<<<   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])   *                 nt_i += 1   */      while (1) { -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_14) { -        __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_links), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3);          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -        __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_3); +        __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_1);          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -        __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;          __pyx_t_13 = __pyx_t_7;        } else { @@ -62527,119 +62718,119 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p        }        if (!__pyx_t_13) break; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2084 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2086   *         while i < links_len: - *             while nt_i < nt_len and links[i][1] > nt_inv[nt_i][3]: + *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])             # <<<<<<<<<<<<<<   *                 nt_i += 1 - *             links[i][1] -= off + *             links_inv[i][1] -= off   */ -      __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_v_off); -      __pyx_v_off = __pyx_t_1; -      __pyx_t_1 = 0; +      __pyx_v_off = __pyx_t_3; +      __pyx_t_3 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2085 - *             while nt_i < nt_len and links[i][1] > nt_inv[nt_i][3]: +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2087 + *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])   *                 nt_i += 1             # <<<<<<<<<<<<<< - *             links[i][1] -= off + *             links_inv[i][1] -= off   *             i += 1   */ -      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_v_nt_i); -      __pyx_v_nt_i = __pyx_t_1; -      __pyx_t_1 = 0; +      __pyx_v_nt_i = __pyx_t_3; +      __pyx_t_3 = 0;      } -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2086 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2088   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])   *                 nt_i += 1 - *             links[i][1] -= off             # <<<<<<<<<<<<<< + *             links_inv[i][1] -= off             # <<<<<<<<<<<<<<   *             i += 1   *    */ -    __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_links), __pyx_v_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_3 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __pyx_t_4 = 1; -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    if (__Pyx_SetItemInt(__pyx_t_1, __pyx_t_4, __pyx_t_3, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    if (__Pyx_SetItemInt(__pyx_t_3, __pyx_t_4, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2087 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2089   *                 nt_i += 1 - *             links[i][1] -= off + *             links_inv[i][1] -= off   *             i += 1             # <<<<<<<<<<<<<<   *    *         # Rule   */ -    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_v_i); -    __pyx_v_i = __pyx_t_1; -    __pyx_t_1 = 0; +    __pyx_v_i = __pyx_t_3; +    __pyx_t_3 = 0;    } -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2090 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2092   *    *         # Rule   *         rules.append(self.new_rule(f_sym, e_sym, links))             # <<<<<<<<<<<<<<   *         if len(f_sym) >= self.max_length or len(nt) >= self.max_nonterminals:   *             return rules   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__new_rule); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__new_rule); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); +  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(((PyObject *)__pyx_v_f_sym)); -  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_f_sym)); +  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f_sym));    __Pyx_GIVEREF(((PyObject *)__pyx_v_f_sym));    __Pyx_INCREF(((PyObject *)__pyx_v_e_sym)); -  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_e_sym)); +  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_e_sym));    __Pyx_GIVEREF(((PyObject *)__pyx_v_e_sym));    __Pyx_INCREF(((PyObject *)__pyx_v_links)); -  PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_links)); +  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_links));    __Pyx_GIVEREF(((PyObject *)__pyx_v_links)); -  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -  __pyx_t_10 = PyList_Append(__pyx_v_rules, __pyx_t_2); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; +  __pyx_t_10 = PyList_Append(__pyx_v_rules, __pyx_t_2); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2091 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2093   *         # Rule   *         rules.append(self.new_rule(f_sym, e_sym, links))   *         if len(f_sym) >= self.max_length or len(nt) >= self.max_nonterminals:             # <<<<<<<<<<<<<<   *             return rules   *         # DEBUG: no boundary NTs   */ -  __pyx_t_4 = PyList_GET_SIZE(((PyObject *)__pyx_v_f_sym)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyList_GET_SIZE(((PyObject *)__pyx_v_f_sym)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_13 = (__pyx_t_4 >= __pyx_v_self->max_length);    if (!__pyx_t_13) { -    __pyx_t_4 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_14 = (__pyx_t_4 >= __pyx_v_self->max_nonterminals);      __pyx_t_7 = __pyx_t_14;    } else { @@ -62647,7 +62838,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    }    if (__pyx_t_7) { -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2092 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2094   *         rules.append(self.new_rule(f_sym, e_sym, links))   *         if len(f_sym) >= self.max_length or len(nt) >= self.max_nonterminals:   *             return rules             # <<<<<<<<<<<<<< @@ -62662,7 +62853,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    }    __pyx_L23:; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2094 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2096   *             return rules   *         # DEBUG: no boundary NTs   *         return rules             # <<<<<<<<<<<<<< @@ -62694,6 +62885,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rules(struct __p    __Pyx_XDECREF(__pyx_v_i);    __Pyx_XDECREF(__pyx_v_e_sym);    __Pyx_XDECREF(__pyx_v_links); +  __Pyx_XDECREF(__pyx_v_links_inv);    __Pyx_XDECREF(__pyx_v_links_len);    __Pyx_XDECREF(__pyx_v_nt_i);    __Pyx_XDECREF(__pyx_v_sub); @@ -62733,16 +62925,16 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30new_rule(PyObject *__          case  1:          if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_sym)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("new_rule", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("new_rule", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2:          if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__links)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("new_rule", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("new_rule", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "new_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "new_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -62757,7 +62949,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30new_rule(PyObject *__    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("new_rule", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("new_rule", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.new_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -62769,7 +62961,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30new_rule(PyObject *__  }  static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2131 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2133   *         f = Phrase(f_sym)   *         e = Phrase(e_sym)   *         a = tuple(self.alignment.link(i, j) for (i, j) in links)             # <<<<<<<<<<<<<< @@ -62795,7 +62987,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8new_rule_genexpr(PyObj    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);    { -    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_cur_scope);      __Pyx_RefNannyFinishContext();      return (PyObject *) gen; @@ -62837,13 +63029,13 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(      return NULL;    }    __pyx_L3_first_run:; -  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links)) { __Pyx_RaiseClosureNameError("links"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links)) { __Pyx_RaiseClosureNameError("links"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }    if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links)) {      __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_links; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;      __pyx_t_3 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -62851,23 +63043,23 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -62883,7 +63075,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(        if (unlikely(size != 2)) {          if (size > 2) __Pyx_RaiseTooManyValuesError(2);          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); -        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }        #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { @@ -62896,14 +63088,14 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(        __Pyx_INCREF(__pyx_t_5);        __Pyx_INCREF(__pyx_t_6);        #else -      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      } else      {        Py_ssize_t index = -1; -      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; @@ -62911,7 +63103,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(        __Pyx_GOTREF(__pyx_t_5);        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;        __Pyx_GOTREF(__pyx_t_6); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        goto __pyx_L7_unpacking_done; @@ -62919,7 +63111,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        __pyx_t_8 = NULL;        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L7_unpacking_done:;      }      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i); @@ -62932,10 +63124,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(      __Pyx_GIVEREF(__pyx_t_6);      __pyx_cur_scope->__pyx_v_j = __pyx_t_6;      __pyx_t_6 = 0; -    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_4 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment->__pyx_vtab)->link(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment, __pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment->__pyx_vtab)->link(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment, __pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_r = __pyx_t_4;      __pyx_t_4 = 0; @@ -62954,7 +63146,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(      __Pyx_XGOTREF(__pyx_t_1);      __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;      __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; -    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    PyErr_SetNone(PyExc_StopIteration); @@ -62974,7 +63166,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8new_rule_2generator14(    return NULL;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2128 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2130   *         return rules   *    *     def new_rule(self, f_sym, e_sym, links):             # <<<<<<<<<<<<<< @@ -63008,63 +63200,63 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29new_rule(struct __pyx    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_links);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_links); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2129 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2131   *    *     def new_rule(self, f_sym, e_sym, links):   *         f = Phrase(f_sym)             # <<<<<<<<<<<<<<   *         e = Phrase(e_sym)   *         a = tuple(self.alignment.link(i, j) for (i, j) in links)   */ -  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(__pyx_v_f_sym);    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_f_sym);    __Pyx_GIVEREF(__pyx_v_f_sym); -  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2130 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2132   *     def new_rule(self, f_sym, e_sym, links):   *         f = Phrase(f_sym)   *         e = Phrase(e_sym)             # <<<<<<<<<<<<<<   *         a = tuple(self.alignment.link(i, j) for (i, j) in links)   *         return (f, e, a)   */ -  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_INCREF(__pyx_v_e_sym);    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_e_sym);    __Pyx_GIVEREF(__pyx_v_e_sym); -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_e = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2131 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2133   *         f = Phrase(f_sym)   *         e = Phrase(e_sym)   *         a = tuple(self.alignment.link(i, j) for (i, j) in links)             # <<<<<<<<<<<<<<   *         return (f, e, a)   *    */ -  __pyx_t_1 = __pyx_pf_3_sa_23HieroCachingRuleFactory_8new_rule_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __pyx_pf_3_sa_23HieroCachingRuleFactory_8new_rule_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_a = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2132 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2134   *         e = Phrase(e_sym)   *         a = tuple(self.alignment.link(i, j) for (i, j) in links)   *         return (f, e, a)             # <<<<<<<<<<<<<< @@ -63072,7 +63264,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29new_rule(struct __pyx   *     def fmt_rule(self, f, e, a):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(((PyObject *)__pyx_v_f));    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f)); @@ -63134,16 +63326,16 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_32fmt_rule(PyObject *__          case  1:          if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2:          if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fmt_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fmt_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -63158,7 +63350,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_32fmt_rule(PyObject *__    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.fmt_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -63170,7 +63362,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_32fmt_rule(PyObject *__  }  static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2135 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2137   *    *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)             # <<<<<<<<<<<<<< @@ -63196,7 +63388,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(PyObj    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);    { -    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_cur_scope);      __Pyx_RefNannyFinishContext();      return (PyObject *) gen; @@ -63235,13 +63427,13 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15(      return NULL;    }    __pyx_L3_first_run:; -  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) { __Pyx_RaiseClosureNameError("a"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) { __Pyx_RaiseClosureNameError("a"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }    if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) {      __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_a; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;      __pyx_t_3 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -63249,23 +63441,23 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15(      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63276,24 +63468,24 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15(      __Pyx_GIVEREF(__pyx_t_4);      __pyx_cur_scope->__pyx_v_packed = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_137), __pyx_n_s__format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_137), __pyx_n_s__format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment), __pyx_n_s__unlink); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment), __pyx_n_s__unlink); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_packed);      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_packed);      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_packed); -    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -    __pyx_t_6 = PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_6));      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; @@ -63314,7 +63506,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15(      __Pyx_XGOTREF(__pyx_t_1);      __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;      __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; -    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    PyErr_SetNone(PyExc_StopIteration); @@ -63334,7 +63526,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator15(    return NULL;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2134 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2136   *         return (f, e, a)   *    *     def fmt_rule(self, f, e, a):             # <<<<<<<<<<<<<< @@ -63367,30 +63559,30 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31fmt_rule(struct __pyx    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_a);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_a); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2135 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2137   *    *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)             # <<<<<<<<<<<<<<   *         return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)   *    */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_67), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_67), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);    __Pyx_GIVEREF(__pyx_t_2);    __pyx_t_2 = 0; -  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    __pyx_v_a_str = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2136 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2138   *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)   *         return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)             # <<<<<<<<<<<<<< @@ -63398,9 +63590,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31fmt_rule(struct __pyx   *     # Debugging   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_138), __pyx_n_s__format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_138), __pyx_n_s__format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_INCREF(__pyx_v_f);    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f); @@ -63411,7 +63603,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31fmt_rule(struct __pyx    __Pyx_INCREF(__pyx_v_a_str);    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_a_str);    __Pyx_GIVEREF(__pyx_v_a_str); -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; @@ -63446,7 +63638,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_34dump_online_stats(PyO    return __pyx_r;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2139 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2141   *    *     # Debugging   *     def dump_online_stats(self):             # <<<<<<<<<<<<<< @@ -63479,75 +63671,75 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("dump_online_stats", 0); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2140 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2142   *     # Debugging   *     def dump_online_stats(self):   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_140), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_140), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2141 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2143   *     def dump_online_stats(self):   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')             # <<<<<<<<<<<<<<   *         logger.info('------------------------------')   *         logger.info('f')   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_142), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_142), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2142 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2144   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('f')   *         for w in self.bilex_f:   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_143), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_143), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2143 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2145   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   *         logger.info('f')             # <<<<<<<<<<<<<<   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_144), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_144), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2144 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2146   *         logger.info('------------------------------')   *         logger.info('f')   *         for w in self.bilex_f:             # <<<<<<<<<<<<<< @@ -63558,7 +63750,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_t_1 = __pyx_v_self->bilex_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -63566,23 +63758,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_2 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63592,44 +63784,44 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_v_w = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2145 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2147   *         logger.info('f')   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))             # <<<<<<<<<<<<<<   *         logger.info('e')   *         for w in self.bilex_e:   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_2 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -    __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_GetItem(__pyx_v_self->bilex_f, __pyx_v_w); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_GetItem(__pyx_v_self->bilex_f, __pyx_v_w); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);      __Pyx_GIVEREF(__pyx_t_2);      __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);      __Pyx_GIVEREF(__pyx_t_8);      __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; @@ -63637,24 +63829,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2146 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2148   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   *         logger.info('e')             # <<<<<<<<<<<<<<   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_146), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_146), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2147 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2149   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   *         logger.info('e')   *         for w in self.bilex_e:             # <<<<<<<<<<<<<< @@ -63665,7 +63857,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_t_1 = __pyx_v_self->bilex_e; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -63673,23 +63865,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_8 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_8)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63699,44 +63891,44 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_v_w = __pyx_t_8;      __pyx_t_8 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2148 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2150   *         logger.info('e')   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))             # <<<<<<<<<<<<<<   *         logger.info('fe')   *         for w in self.bilex_fe:   */ -    __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_8 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_8)); -    __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_8), ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_8), ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_GetItem(__pyx_v_self->bilex_e, __pyx_v_w); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_GetItem(__pyx_v_self->bilex_e, __pyx_v_w); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);      __Pyx_GIVEREF(__pyx_t_8);      __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -    __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);      __Pyx_GIVEREF(__pyx_t_7);      __pyx_t_7 = 0; -    __pyx_t_7 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; @@ -63744,24 +63936,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2149 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2151   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   *         logger.info('fe')             # <<<<<<<<<<<<<<   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_7 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_7 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_k_tuple_147), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_k_tuple_147), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2150 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2152   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   *         logger.info('fe')   *         for w in self.bilex_fe:             # <<<<<<<<<<<<<< @@ -63772,7 +63964,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_t_1 = __pyx_v_self->bilex_fe; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -63780,23 +63972,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_7 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63806,20 +63998,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_v_w = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2151 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2153   *         logger.info('fe')   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:             # <<<<<<<<<<<<<<   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')   */ -    __pyx_t_7 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      if (PyList_CheckExact(__pyx_t_7) || PyTuple_CheckExact(__pyx_t_7)) {        __pyx_t_8 = __pyx_t_7; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0;        __pyx_t_10 = NULL;      } else { -      __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext;      } @@ -63828,23 +64020,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str        if (!__pyx_t_10 && PyList_CheckExact(__pyx_t_8)) {          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else if (!__pyx_t_10 && PyTuple_CheckExact(__pyx_t_8)) {          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else {          __pyx_t_7 = __pyx_t_10(__pyx_t_8);          if (unlikely(!__pyx_t_7)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -63854,57 +64046,57 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str        __pyx_v_w2 = __pyx_t_7;        __pyx_t_7 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2152 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2154   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))             # <<<<<<<<<<<<<<   *         logger.info('F')   *         for ph in self.phrases_f:   */ -      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); -      __pyx_t_2 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_7)); -      __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_7)); -      __pyx_t_11 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -      __pyx_t_7 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_145)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -      __pyx_t_11 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11); -      __pyx_t_5 = PyObject_GetItem(__pyx_t_11, __pyx_v_w2); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyObject_GetItem(__pyx_t_11, __pyx_v_w2); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);        __Pyx_GIVEREF(__pyx_t_5);        __pyx_t_5 = 0; -      __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; -      __pyx_t_11 = PyNumber_Add(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyNumber_Add(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11);        __Pyx_GIVEREF(__pyx_t_11);        __pyx_t_11 = 0; -      __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; @@ -63914,24 +64106,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2153 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2155   *             for w2 in self.bilex_fe[w]:   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_148), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_148), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2154 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2156   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')   *         for ph in self.phrases_f:             # <<<<<<<<<<<<<< @@ -63942,7 +64134,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_t_1 = __pyx_v_self->phrases_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -63950,23 +64142,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_8 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_8)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63976,49 +64168,49 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_v_ph = __pyx_t_8;      __pyx_t_8 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2155 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2157   *         logger.info('F')   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))             # <<<<<<<<<<<<<<   *         logger.info('E')   *         for ph in self.phrases_e:   */ -    __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_11 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_INCREF(__pyx_v_ph);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_ph);      __Pyx_GIVEREF(__pyx_v_ph); -    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    __pyx_t_5 = PyObject_GetItem(__pyx_v_self->phrases_f, __pyx_v_ph); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_GetItem(__pyx_v_self->phrases_f, __pyx_v_ph); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);      __Pyx_GIVEREF(__pyx_t_5);      __pyx_t_5 = 0; -    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);      __Pyx_GIVEREF(__pyx_t_2);      __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; @@ -64026,24 +64218,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2156 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2158   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   *         logger.info('E')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_149), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_149), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2157 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2159   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   *         logger.info('E')   *         for ph in self.phrases_e:             # <<<<<<<<<<<<<< @@ -64054,7 +64246,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_t_1 = __pyx_v_self->phrases_e; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -64062,23 +64254,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_2 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -64088,49 +64280,49 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_v_ph = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2158 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2160   *         logger.info('E')   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))             # <<<<<<<<<<<<<<   *         logger.info('FE')   *         for ph in self.phrases_fe:   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_INCREF(__pyx_v_ph);      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ph);      __Pyx_GIVEREF(__pyx_v_ph); -    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_2 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -    __pyx_t_11 = PyObject_GetItem(__pyx_v_self->phrases_e, __pyx_v_ph); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyObject_GetItem(__pyx_v_self->phrases_e, __pyx_v_ph); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11); -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);      __Pyx_GIVEREF(__pyx_t_11);      __pyx_t_11 = 0; -    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);      __Pyx_GIVEREF(__pyx_t_8);      __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; @@ -64138,24 +64330,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2159 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2161   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   *         logger.info('FE')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_fe:   *             for ph2 in self.phrases_fe[ph]:   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_150), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_150), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2160 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2162   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   *         logger.info('FE')   *         for ph in self.phrases_fe:             # <<<<<<<<<<<<<< @@ -64166,7 +64358,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_t_1 = __pyx_v_self->phrases_fe; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    } @@ -64174,23 +64366,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;        #if CYTHON_COMPILING_IN_CPYTHON -      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #else -      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        #endif      } else {        __pyx_t_8 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_8)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -64200,20 +64392,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str      __pyx_v_ph = __pyx_t_8;      __pyx_t_8 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2161 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2163   *         logger.info('FE')   *         for ph in self.phrases_fe:   *             for ph2 in self.phrases_fe[ph]:             # <<<<<<<<<<<<<<   *                 logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))   *    */ -    __pyx_t_8 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) {        __pyx_t_11 = __pyx_t_8; __Pyx_INCREF(__pyx_t_11); __pyx_t_9 = 0;        __pyx_t_10 = NULL;      } else { -      __pyx_t_9 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __pyx_t_10 = Py_TYPE(__pyx_t_11)->tp_iternext;      } @@ -64222,23 +64414,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str        if (!__pyx_t_10 && PyList_CheckExact(__pyx_t_11)) {          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_11)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else if (!__pyx_t_10 && PyTuple_CheckExact(__pyx_t_11)) {          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_11)) break;          #if CYTHON_COMPILING_IN_CPYTHON -        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #else -        __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          #endif        } else {          __pyx_t_8 = __pyx_t_10(__pyx_t_11);          if (unlikely(!__pyx_t_8)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -64248,42 +64440,42 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str        __pyx_v_ph2 = __pyx_t_8;        __pyx_t_8 = 0; -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2162 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2164   *         for ph in self.phrases_fe:   *             for ph2 in self.phrases_fe[ph]:   *                 logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))             # <<<<<<<<<<<<<<   *    * # Spans are _inclusive_ on both ends [i, j]   */ -      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_5 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__fmt_rule); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__fmt_rule); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_v_ph);        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ph);        __Pyx_GIVEREF(__pyx_v_ph); -      __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_v_ph2);        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ph2);        __Pyx_GIVEREF(__pyx_v_ph2); -      __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_GetItem(__pyx_v_self->phrases_al, __pyx_v_ph); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_GetItem(__pyx_v_self->phrases_al, __pyx_v_ph); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_13 = PyObject_GetItem(__pyx_t_2, __pyx_v_ph2); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_13 = PyObject_GetItem(__pyx_t_2, __pyx_v_ph2); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_13);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7);        __Pyx_GIVEREF(__pyx_t_7); @@ -64294,36 +64486,36 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_stats(str        __pyx_t_7 = 0;        __pyx_t_12 = 0;        __pyx_t_13 = 0; -      __pyx_t_13 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_13 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_13);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Add(__pyx_t_13, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Add(__pyx_t_13, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -      __pyx_t_13 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_13 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_13); -      __pyx_t_8 = PyObject_GetItem(__pyx_t_13, __pyx_v_ph2); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyObject_GetItem(__pyx_t_13, __pyx_v_ph2); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -      __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_13);        PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8);        __Pyx_GIVEREF(__pyx_t_8);        __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0; -      __pyx_t_13 = PyNumber_Add(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_13 = PyNumber_Add(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_13);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13);        __Pyx_GIVEREF(__pyx_t_13);        __pyx_t_13 = 0; -      __pyx_t_13 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_13 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_13);        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; @@ -64387,16 +64579,16 @@ static PyObject *__pyx_pw_3_sa_13span_check(PyObject *__pyx_self, PyObject *__py          case  1:          if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2:          if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_check") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_check") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -64411,7 +64603,7 @@ static PyObject *__pyx_pw_3_sa_13span_check(PyObject *__pyx_self, PyObject *__py    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.span_check", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -64422,9 +64614,9 @@ static PyObject *__pyx_pw_3_sa_13span_check(PyObject *__pyx_self, PyObject *__py    return __pyx_r;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2166 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2167 + *    * # Spans are _inclusive_ on both ends [i, j] - * # Could be more efficient but probably not a bottleneck   * def span_check(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j: @@ -64441,8 +64633,8 @@ static PyObject *__pyx_pf_3_sa_12span_check(CYTHON_UNUSED PyObject *__pyx_self,    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("span_check", 0); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2167 - * # Could be more efficient but probably not a bottleneck +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2168 + * # Spans are _inclusive_ on both ends [i, j]   * def span_check(vec, i, j):   *     k = i             # <<<<<<<<<<<<<<   *     while k <= j: @@ -64451,7 +64643,7 @@ static PyObject *__pyx_pf_3_sa_12span_check(CYTHON_UNUSED PyObject *__pyx_self,    __Pyx_INCREF(__pyx_v_i);    __pyx_v_k = __pyx_v_i; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2168 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2169   * def span_check(vec, i, j):   *     k = i   *     while k <= j:             # <<<<<<<<<<<<<< @@ -64459,25 +64651,25 @@ static PyObject *__pyx_pf_3_sa_12span_check(CYTHON_UNUSED PyObject *__pyx_self,   *             return False   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_2) break; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2169 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2170   *     k = i   *     while k <= j:   *         if vec[k]:             # <<<<<<<<<<<<<<   *             return False   *         k += 1   */ -    __pyx_t_1 = PyObject_GetItem(__pyx_v_vec, __pyx_v_k); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_GetItem(__pyx_v_vec, __pyx_v_k); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (__pyx_t_2) { -      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2170 +      /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2171   *     while k <= j:   *         if vec[k]:   *             return False             # <<<<<<<<<<<<<< @@ -64485,7 +64677,7 @@ static PyObject *__pyx_pf_3_sa_12span_check(CYTHON_UNUSED PyObject *__pyx_self,   *     return True   */        __Pyx_XDECREF(__pyx_r); -      __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __pyx_r = __pyx_t_1;        __pyx_t_1 = 0; @@ -64494,21 +64686,21 @@ static PyObject *__pyx_pf_3_sa_12span_check(CYTHON_UNUSED PyObject *__pyx_self,      }      __pyx_L5:; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2171 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2172   *         if vec[k]:   *             return False   *         k += 1             # <<<<<<<<<<<<<<   *     return True   *    */ -    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_v_k);      __pyx_v_k = __pyx_t_1;      __pyx_t_1 = 0;    } -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2172 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2173   *             return False   *         k += 1   *     return True             # <<<<<<<<<<<<<< @@ -64516,7 +64708,7 @@ static PyObject *__pyx_pf_3_sa_12span_check(CYTHON_UNUSED PyObject *__pyx_self,   * def span_inc(vec, i, j):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_r = __pyx_t_1;    __pyx_t_1 = 0; @@ -64566,16 +64758,16 @@ static PyObject *__pyx_pw_3_sa_15span_inc(PyObject *__pyx_self, PyObject *__pyx_          case  1:          if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2:          if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_inc") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_inc") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -64590,7 +64782,7 @@ static PyObject *__pyx_pw_3_sa_15span_inc(PyObject *__pyx_self, PyObject *__pyx_    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.span_inc", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -64601,7 +64793,7 @@ static PyObject *__pyx_pw_3_sa_15span_inc(PyObject *__pyx_self, PyObject *__pyx_    return __pyx_r;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2174 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2175   *     return True   *    * def span_inc(vec, i, j):             # <<<<<<<<<<<<<< @@ -64622,7 +64814,7 @@ static PyObject *__pyx_pf_3_sa_14span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("span_inc", 0); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2175 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2176   *    * def span_inc(vec, i, j):   *     k = i             # <<<<<<<<<<<<<< @@ -64632,7 +64824,7 @@ static PyObject *__pyx_pf_3_sa_14span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py    __Pyx_INCREF(__pyx_v_i);    __pyx_v_k = __pyx_v_i; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2176 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2177   * def span_inc(vec, i, j):   *     k = i   *     while k <= j:             # <<<<<<<<<<<<<< @@ -64640,12 +64832,12 @@ static PyObject *__pyx_pf_3_sa_14span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py   *         k += 1   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_2) break; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2177 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2178   *     k = i   *     while k <= j:   *         vec[k] += 1             # <<<<<<<<<<<<<< @@ -64654,23 +64846,23 @@ static PyObject *__pyx_pf_3_sa_14span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py   */      __Pyx_INCREF(__pyx_v_k);      __pyx_t_1 = __pyx_v_k; -    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2178 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2179   *     while k <= j:   *         vec[k] += 1   *         k += 1             # <<<<<<<<<<<<<<   *    * def span_dec(vec, i, j):   */ -    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_v_k);      __pyx_v_k = __pyx_t_1; @@ -64723,16 +64915,16 @@ static PyObject *__pyx_pw_3_sa_17span_dec(PyObject *__pyx_self, PyObject *__pyx_          case  1:          if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2:          if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_dec") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_dec") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -64747,7 +64939,7 @@ static PyObject *__pyx_pw_3_sa_17span_dec(PyObject *__pyx_self, PyObject *__pyx_    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.span_dec", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -64758,7 +64950,7 @@ static PyObject *__pyx_pw_3_sa_17span_dec(PyObject *__pyx_self, PyObject *__pyx_    return __pyx_r;  } -/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2180 +/* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2181   *         k += 1   *    * def span_dec(vec, i, j):             # <<<<<<<<<<<<<< @@ -64779,7 +64971,7 @@ static PyObject *__pyx_pf_3_sa_16span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("span_dec", 0); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2181 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2182   *    * def span_dec(vec, i, j):   *     k = i             # <<<<<<<<<<<<<< @@ -64789,7 +64981,7 @@ static PyObject *__pyx_pf_3_sa_16span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py    __Pyx_INCREF(__pyx_v_i);    __pyx_v_k = __pyx_v_i; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2182 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2183   * def span_dec(vec, i, j):   *     k = i   *     while k <= j:             # <<<<<<<<<<<<<< @@ -64797,12 +64989,12 @@ static PyObject *__pyx_pf_3_sa_16span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py   *         k += 1   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_2) break; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2183 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2184   *     k = i   *     while k <= j:   *         vec[k] -= 1             # <<<<<<<<<<<<<< @@ -64810,21 +65002,21 @@ static PyObject *__pyx_pf_3_sa_16span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py   */      __Pyx_INCREF(__pyx_v_k);      __pyx_t_1 = __pyx_v_k; -    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2184 +    /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2185   *     while k <= j:   *         vec[k] -= 1   *         k += 1             # <<<<<<<<<<<<<<   */ -    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2184; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_v_k);      __pyx_v_k = __pyx_t_1; @@ -78564,126 +78756,126 @@ static int __Pyx_InitCachedConstants(void) {    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_134));    __pyx_k_codeobj_135 = (PyObject*)__Pyx_PyCode_New(9, 0, 20, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_136, __pyx_n_s__extract, 1856, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_135)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2140 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2142   *     # Debugging   *     def dump_online_stats(self):   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   */ -  __pyx_k_tuple_140 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_140)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_140 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_140)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_140);    __Pyx_INCREF(((PyObject *)__pyx_kp_s_139));    PyTuple_SET_ITEM(__pyx_k_tuple_140, 0, ((PyObject *)__pyx_kp_s_139));    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_139));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_140)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2141 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2143   *     def dump_online_stats(self):   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')             # <<<<<<<<<<<<<<   *         logger.info('------------------------------')   *         logger.info('f')   */ -  __pyx_k_tuple_142 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_142)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_142 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_142)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_142);    __Pyx_INCREF(((PyObject *)__pyx_kp_s_141));    PyTuple_SET_ITEM(__pyx_k_tuple_142, 0, ((PyObject *)__pyx_kp_s_141));    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_141));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_142)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2142 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2144   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('f')   *         for w in self.bilex_f:   */ -  __pyx_k_tuple_143 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_143)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_143 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_143)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_143);    __Pyx_INCREF(((PyObject *)__pyx_kp_s_139));    PyTuple_SET_ITEM(__pyx_k_tuple_143, 0, ((PyObject *)__pyx_kp_s_139));    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_139));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_143)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2143 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2145   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   *         logger.info('f')             # <<<<<<<<<<<<<<   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   */ -  __pyx_k_tuple_144 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_144)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_144 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_144)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_144);    __Pyx_INCREF(((PyObject *)__pyx_n_s__f));    PyTuple_SET_ITEM(__pyx_k_tuple_144, 0, ((PyObject *)__pyx_n_s__f));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_144)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2146 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2148   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   *         logger.info('e')             # <<<<<<<<<<<<<<   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   */ -  __pyx_k_tuple_146 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_146)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_146 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_146)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_146);    __Pyx_INCREF(((PyObject *)__pyx_n_s__e));    PyTuple_SET_ITEM(__pyx_k_tuple_146, 0, ((PyObject *)__pyx_n_s__e));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__e));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_146)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2149 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2151   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   *         logger.info('fe')             # <<<<<<<<<<<<<<   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:   */ -  __pyx_k_tuple_147 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_147)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_147 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_147)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_147);    __Pyx_INCREF(((PyObject *)__pyx_n_s__fe));    PyTuple_SET_ITEM(__pyx_k_tuple_147, 0, ((PyObject *)__pyx_n_s__fe));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fe));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_147)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2153 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2155   *             for w2 in self.bilex_fe[w]:   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   */ -  __pyx_k_tuple_148 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_148)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_148 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_148)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_148);    __Pyx_INCREF(((PyObject *)__pyx_n_s__F));    PyTuple_SET_ITEM(__pyx_k_tuple_148, 0, ((PyObject *)__pyx_n_s__F));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__F));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_148)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2156 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2158   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   *         logger.info('E')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   */ -  __pyx_k_tuple_149 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_149)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_149 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_149)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_149);    __Pyx_INCREF(((PyObject *)__pyx_n_s__E));    PyTuple_SET_ITEM(__pyx_k_tuple_149, 0, ((PyObject *)__pyx_n_s__E));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__E));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_149)); -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2159 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2161   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   *         logger.info('FE')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_fe:   *             for ph2 in self.phrases_fe[ph]:   */ -  __pyx_k_tuple_150 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_150)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_150 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_150)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_150);    __Pyx_INCREF(((PyObject *)__pyx_n_s__FE));    PyTuple_SET_ITEM(__pyx_k_tuple_150, 0, ((PyObject *)__pyx_n_s__FE)); @@ -78832,14 +79024,14 @@ static int __Pyx_InitCachedConstants(void) {    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_166));    __pyx_k_codeobj_167 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_166, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_159, __pyx_n_s__decode_words, 121, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_167)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2166 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2167 + *    * # Spans are _inclusive_ on both ends [i, j] - * # Could be more efficient but probably not a bottleneck   * def span_check(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_k_tuple_169 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_169)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_169 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_169)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_169);    __Pyx_INCREF(((PyObject *)__pyx_n_s__vec));    PyTuple_SET_ITEM(__pyx_k_tuple_169, 0, ((PyObject *)__pyx_n_s__vec)); @@ -78854,16 +79046,16 @@ static int __Pyx_InitCachedConstants(void) {    PyTuple_SET_ITEM(__pyx_k_tuple_169, 3, ((PyObject *)__pyx_n_s__k));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_169)); -  __pyx_k_codeobj_170 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_136, __pyx_n_s__span_check, 2166, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_170)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_codeobj_170 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_136, __pyx_n_s__span_check, 2167, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_170)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2174 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2175   *     return True   *    * def span_inc(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_k_tuple_171 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_171)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_171 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_171)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_171);    __Pyx_INCREF(((PyObject *)__pyx_n_s__vec));    PyTuple_SET_ITEM(__pyx_k_tuple_171, 0, ((PyObject *)__pyx_n_s__vec)); @@ -78878,16 +79070,16 @@ static int __Pyx_InitCachedConstants(void) {    PyTuple_SET_ITEM(__pyx_k_tuple_171, 3, ((PyObject *)__pyx_n_s__k));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_171)); -  __pyx_k_codeobj_172 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_171, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_136, __pyx_n_s__span_inc, 2174, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_172)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_codeobj_172 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_171, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_136, __pyx_n_s__span_inc, 2175, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_172)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2180 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2181   *         k += 1   *    * def span_dec(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_k_tuple_173 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_173)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_173 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_173)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_k_tuple_173);    __Pyx_INCREF(((PyObject *)__pyx_n_s__vec));    PyTuple_SET_ITEM(__pyx_k_tuple_173, 0, ((PyObject *)__pyx_n_s__vec)); @@ -78902,7 +79094,7 @@ static int __Pyx_InitCachedConstants(void) {    PyTuple_SET_ITEM(__pyx_k_tuple_173, 3, ((PyObject *)__pyx_n_s__k));    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k));    __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_173)); -  __pyx_k_codeobj_174 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_136, __pyx_n_s__span_dec, 2180, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_174)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_codeobj_174 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_136, __pyx_n_s__span_dec, 2181, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_174)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_RefNannyFinishContext();    return 0;    __pyx_L1_error:; @@ -79210,13 +79402,13 @@ PyMODINIT_FUNC PyInit__sa(void)    __pyx_ptype_3_sa___pyx_scope_struct_19_input = &__pyx_type_3_sa___pyx_scope_struct_19_input;    if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_20_add_instance) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_20_add_instance = &__pyx_type_3_sa___pyx_scope_struct_20_add_instance; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_21_new_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_21_new_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_21_new_rule = &__pyx_type_3_sa___pyx_scope_struct_21_new_rule; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_22_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_22_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_22_genexpr = &__pyx_type_3_sa___pyx_scope_struct_22_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_23_fmt_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_23_fmt_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_23_fmt_rule = &__pyx_type_3_sa___pyx_scope_struct_23_fmt_rule; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_24_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_24_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_24_genexpr = &__pyx_type_3_sa___pyx_scope_struct_24_genexpr;    if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_25___iter__) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_25___iter__ = &__pyx_type_3_sa___pyx_scope_struct_25___iter__; @@ -79614,40 +79806,40 @@ PyMODINIT_FUNC PyInit__sa(void)    __Pyx_GIVEREF(__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2166 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2167 + *    * # Spans are _inclusive_ on both ends [i, j] - * # Could be more efficient but probably not a bottleneck   * def span_check(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_13span_check, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_13span_check, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_check, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_check, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2174 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2175   *     return True   *    * def span_inc(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_15span_inc, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_15span_inc, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_inc, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_inc, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2180 +  /* "/home/m/workspace/cdec/python/src/sa/rulefactory.pxi":2181   *         k += 1   *    * def span_dec(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_17span_dec, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_17span_dec, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_dec, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_dec, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    /* "/home/m/workspace/cdec/python/src/sa/features.pxi":1 diff --git a/python/src/sa/rulefactory.pxi b/python/src/sa/rulefactory.pxi index be73f567..3fcf8879 100644 --- a/python/src/sa/rulefactory.pxi +++ b/python/src/sa/rulefactory.pxi @@ -1860,13 +1860,13 @@ cdef class HieroCachingRuleFactory:                  return              # Unaligned word              if not al[f_j]: -                # Open non-terminal: extend -                if nt_open: +                # Adjacent to non-terminal: extend (non-terminal now open) +                if nt and nt[-1][2] == f_j - 1:                      nt[-1][2] += 1                      extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)                      nt[-1][2] -= 1 -                # No open non-terminal: extend with word -                else: +                # Unless non-terminal already open, always extend with word +                if not nt_open:                      extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)                  return              # Aligned word @@ -1912,10 +1912,12 @@ cdef class HieroCachingRuleFactory:                      span_inc(cover, nt[-1][4] + 1, link_j)                      span_inc(e_nt_cover, nt[-1][4] + 1, link_j)                      nt[-1][4] = link_j -                # Make sure we cover all aligned words -                if f_j >= new_min_bound: -                    for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): -                        rules.add(rule) +                # Make sure we have at least one lexical alignment link +                if links: +                    # Make sure we cover all aligned words +                    if f_j >= new_min_bound: +                        for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): +                            rules.add(rule)                  extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)                  nt[-1] = old_last_nt                  if link_i < nt[-1][3]: @@ -1939,9 +1941,10 @@ cdef class HieroCachingRuleFactory:                      plus_links.append((f_j, link))                      cover[link] += 1                  links.append(plus_links) -                if f_j >= new_min_bound: -                    for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): -                        rules.add(rule) +                if links: +                    if f_j >= new_min_bound: +                        for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): +                            rules.add(rule)                  extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)                  links.pop()                  for link in al[f_j]: @@ -1965,7 +1968,6 @@ cdef class HieroCachingRuleFactory:                      span_inc(cover, nt[-1][4] + 1, link_j)                      span_inc(e_nt_cover, nt[-1][4] + 1, link_j)                      nt[-1][4] = link_j -                # Require at least one word in phrase                  if links:                      if f_j >= new_min_bound:                          for rule in self.form_rules(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links): @@ -2036,7 +2038,6 @@ cdef class HieroCachingRuleFactory:      def form_rules(self, f_i, e_i, f_span, e_span, nt, al):          # This could be more efficient but is unlikely to be the bottleneck -              rules = []          nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3])) @@ -2065,6 +2066,7 @@ cdef class HieroCachingRuleFactory:          # Adjusting alignment links takes some doing          links = [list(link) for sub in al for link in sub] +        links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))          links_len = len(links)          nt_len = len(nt)          nt_i = 0 @@ -2080,12 +2082,12 @@ cdef class HieroCachingRuleFactory:          off = e_i          i = 0          while i < links_len: -            while nt_i < nt_len and links[i][1] > nt_inv[nt_i][3]: +            while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:                  off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])                  nt_i += 1 -            links[i][1] -= off +            links_inv[i][1] -= off              i += 1 -             +                  # Rule          rules.append(self.new_rule(f_sym, e_sym, links))          if len(f_sym) >= self.max_length or len(nt) >= self.max_nonterminals: @@ -2162,7 +2164,6 @@ cdef class HieroCachingRuleFactory:                  logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))  # Spans are _inclusive_ on both ends [i, j] -# Could be more efficient but probably not a bottleneck  def span_check(vec, i, j):      k = i      while k <= j: | 
