Существует ли быстрый алгоритм для определения числа Годеля терма языка без контекста?
Предположим, у нас есть простая грамматическая спецификация. Существует способ перечисления терминов этой грамматики, который гарантирует, что любой конечный член будет иметь конечную позицию,повторяя его по диагонали, Например, для следующей грамматики:
S ::= add
add ::= mul | add + mul
mul ::= term | mul * term
term ::= number | ( S )
number ::= digit | digit number
digit ::= 0 | 1 | ... | 9
Вы можете перечислить такие термины:
0
1
0+0
0*0
0+1
(0)
1+0
0*1
0+0*0
00
... etc
У меня вопрос: есть ли способ сделать обратное? То есть, чтобы взять действительный термин этой грамматики, скажем,0+0*0
и найти свою позицию по такому перечислению - в таком случае 9?