Распределение регистров WAM для одинаковых структур
Абстрактная машина Уоррена Реконструкция учебника утверждает следующее для правил распределения регистров переменных:
- Регистры переменных распределяются по наименее доступному индексу.
- Регистр X1 всегда назначается самому внешнему терму.
- Один и тот же регистр выделяется для всех вхождений данной переменной.
Далее в руководстве при построении программных запросов приводится следующий пример:
p(f(X), h(Y, f(a)), Y).
X1 = p(X2, X3, X4)
X2 = f(X5)
X3 = h(X4, X6)
X4 = Y
X5 = X
X6 = f(X7)
X7 = a
Я сомневаюсь, что при рассмотрении двух вхождений предложения f оба являются структурами f/1, но с другим телом и, следовательно, должны быть созданы по-разному. Но что именно считается переменной в контексте WAM, переменной пролога или каждым термином? Как бы статья
p(f(a), f(a))
быть построенным:
X1 = p(X2, X2)
X2 = f(X3)
X3 = a
или же
X1 = p(X2, X3)
X2 = f(X4)
X3 = f(X4)
X4 = a