function useful_loop(j):
for <tex>[A B \rightarrow \alpha eta \cdot , i] \in I_j</tex> for <tex>[B A \rightarrow \beta alpha \cdot A B \gammabeta, k] \in I_{i}</tex> <tex>I_j</tex> ∪= <tex>[B A \rightarrow \beta A alpha B \cdot \gammabeta, k]</tex> # Правило (2)
for <tex>[A B \rightarrow \alpha \cdot B A \betaeta, i] \in I_j</tex> for <tex>\gamma beta : (B A \rightarrow \gammabeta) \in P</tex> <tex>I_j</tex> ∪= <tex>[B A \rightarrow \cdot \gammabeta, j]</tex> # Правило (3)
==Корректность алгоритма==