Аргументы обеих формул в этом правиле совпадают и являются переменными
(которые принято записывать с заглавных букв). Первый шаг, выполняемый Прологом, это
передача значений для X и Y из цели:
Х = круг, Y = Z.
В нашем случае X получает конкретное значение "круг", в то время как запись Y = Z
просто устанавливает факт равенства двух переменных. Как только переменная Y
получает значение, Z будет присвоено то же значение. Теперь правило (1)
трансформировалось в правило следующего вида:
(1’) площадь (круг, Y):- фигура (круг,Y).
Пролог обязан запомнить вид этого правила, которое равносильно следующей
записи:
если (фигура(круг, Y)), то (площадь(круг, Y)).
Теперь Пролог формирует новую цель:
фигура (круг, Y).
Для этой новой цели он ищет подходящее правило. В нашей программе таких
правил 4 (правила (2) - (5)). Эти правила имеют усеченный вид: в структуре "если (...) то
(...)", как видим, в них отсутствует часть "если (...)". С точки зрения логики это означает, что
независимо от исходных условий, записываемых в части "если (...)", эти правила ут-
верждают истинность частей "то (...)". Следовательно, доказывать такие правила не надо.
Итак, для цели "фигура (круг, Y)" выбирается правило
фигура (квадрат, "сторона * сторона'').
Как и на первом шаге, выполняется попытка передачи значений переменным. Иначе
говоря, получается следующее:
круг = квадрат; Y = " сторона * сторона ".
Учитывая, что "круг" и "квадрат" не переменные (первый символ "к" - не заглавный).
Пролог вместо присваивания сравнивает их. Результат сравнения - "ложь".
Следовательно, правило (2) использовать нельзя. Однако, есть еще правила с заголовком
"фигура". Поэтому Пролог выбирает следующее по порядку:
(3) фигура (круг, " /2*радиус*радиус").
Текущая цель такова: