Шаг 26.
Основы логического программирования.
Синтаксис правил

    На этом шаге мы рассмотрим cинтаксис правил.

    Правила используются в Прологе в случае, когда какой-либо факт зависит от истинности другого факта или группы фактов. Как мы объясняли ранее в правиле Пролога есть две части: заголовок и тело. Ниже представлен обобщенный синтаксис правила в Прологе:

    HEAD:-<Subgoaд>,<Subgoal>,...,<Subgoal>.
    Заголовок:- <Подцель>,<Подцель>,...,<Подцель>.

    Тело правила состоит из одной или более подцелей. Подцели разделяются запятыми, определяя конъюнкцию, а за последней подцелью правила следует точка. Каждая подцель выполняет вызов другого предиката Пролога, который может быть истинным или ложным. После того, как программа осуществила этот вызов, Пролог проверяет истинность вызванного предиката, и если это так, то работа продолжается, но уже со следующей подцелью. Если же в процессе такой работы была достигнута точка, то все правило считается истинным; если хоть одна из подцелей ложна, то все правило ложно.

    Для успешного разрешения правила Пролог должен разрешить все его подцели и создать последовательный список переменных, должным образом связав их. Если же одна из подцелей ложна. Пролог вернется назад для поиска альтернативы предыдущей подцели, а затем вновь двинется вперед, но уже с другими значениями переменных. Этот процесс называется поиском с возвратом. Подробное изложение данного процесса и того, как Пролог ищет решения, приводится на шаге 29.

    Как упоминалось выше, к качестве разделителя заголовка и тела правила Пролог использует знак :-, который читается как "если" (if). Однако if Пролога отличается от if в других языках, например в Pascal, где условие, содержащееся в оператре if, должно быть указано перед телом оператора if, который может быть выполнен. Другими словами:

    "if HEAD is true, then BODY is true (or then do BODY)"
    (если ЗАГОЛОВОК истинен, тогда ТЕЛО истинно (или: тогда выполнить ТЕЛО)

    Данный тип оператора известен как условный оператор если/тогда (if/then). Пролог же использует другую форму логики в таких правилах. Вывод об истинности заголовка правила Пролога делается, если (после того, как) тело этого правила истинно например, так:

    "HEAD is true if BODY is true (or: if BODY can be done)"
    ЗАГОЛОВОК истинен, если ТЕЛО - истинно (или: если ТЕЛО может быть выполнено)

    Учитывая вышесказанное, правило Пролога соответствует условной форме тогда/если, (then/if).

    На следующем шаге мы рассмотрим автоматическое преобразование типов.




Предыдущий шаг Содержание Следующий шаг