2. Элементы языка Турбо-Пролог

       Программа на Прологе состоит из множества предложений (фраз). Каждое предложение - это либо факт, либо правило. Факт - это утверждение о том, что соблюдается некоторое отношение. Он записывается как имя, за которым следует список аргументов, заключенный в скобки. Например:
likes(“Иван", "Марья").
       Правило - это факт, истинное значение которого зависит от истинности других фактов. Например:
likes("Иван",X) if likes("Петр",X).
      Аргументы предложений Пролог-программы называются термами, а саму Пролог-программу можно рассматривать как сеть отношений, существующих между термами. Каждый терм обозначает некоторый объект предметной области и записывается как последовательность литер, которые делятся на четыре категории: прописные буквы, строчные буквы, цифры и спецзнаки. Существует три типа термов: константа, переменная или структура (составной терм).

      Константами являются поименованные конкретные объекты или конкретные отношения. Существует два вида констант - атомы и числа. Атом - это либо последовательность латинских букв, цифр и знака подчеркивания, начинающаяся со строчной латинской буквы, либо произвольная группа символов, заключенная в кавычки (апострофы). Например: ivan, “Ivan", invoice_n, "иван", "n_счета", ''Иван".

       Переменная в Прологе должна иметь имя, начинающееся с прописной буквы или знака подчеркивания. Например: Name, X, Invoice_n. Переменная называется связанной если имеется объект, который она обозначает. При отсутствии такого объекта переменная называется свободной. Для обозначения переменной, на которую отсутствует ссылка в программе, используется анонимная переменная - одиночный знак подчеркивания (_).

      Структура (или составной терм) - объект, состоящий из совокупности других объектов, которые называются компонентами. Структура записывается на Турбо-Прологе с помощью указания се функтора и компонент. Компоненты заключаются в круглые скобки и разделяются запятыми. Функтор записывается перед скобками. Компоненты сами являются термами. Например, в факт likes входит структура book:
likes ( "Иван" , book ( "название", "автор" ) )
       Составные термы аналогичны записям Паскаля или структурам Си, то есть - это определяемые программистом объекты произвольной сложности. По этой же аналогии - функтор и количество компонентов составного терма показывают тип записи, а компоненты составного терма соответствуют полям записи.