Метаязык Пролога

Неявный вопрос, содержащийся в запросе

Взаимодействие между пользователем и интерпретатором Пролога можно рассматривать как на уровне объектного языка, так и на уровне метаязыка. Если подходить с позиций объектного языка, то пользователь при вводе запроса к интерпретатору неявно задает и такой вопрос:

Соблюдается ли отношение, описанное в данном запросе?

Но на уровне метаязыка неявный вопрос будет следующим:

Является ли отношение, описанное в данном запросе, доказуемым при помощи стратегии решения задач интерпретатора в соответствии с множеством фраз, содержащихся в текущей программе?

Запрос сам по себе — это предложение объектного языка, а характеристика "быть доказуемым при помощи стратегии... б соответствии с множеством фраз, содержащихся в текущей программе" может быть свойством этого предложения. Интерпретатор откликается на запрос, выясняя, какой ответ должен быть дан на него — положительный или отрицательный. У этого ответа имеются две интерпретации. На уровне объектного языка этот ответ говорит о том, соблюдается ли описанное в запросе отношение. На уровне метаязыка ответ свидетельствует о том, доказуемо ли или нет данное отношение при помощи стратегии решения задач интерпретатора в соответствии с множеством фраз, входящих в текущую программу.

Как осуществляется ответ на вопрос

Интерпретатор обрабатывает запрос следующим образом. Если фраза программы, согласующаяся с запросом, не имеет условий, то запрос будет успешным (т. е. на него будет дан положительный ответ). Если в программе отсутствуют фразы, согласующиеся с запросом, то он потерпит неудачу (т. е. будет дан отрицательный ответ на запрос). Если же фраза, согласующаяся с запросом, снабжена некоторыми условиями, то запрос будет успешным только в том случае, когда интерпретатор сможет установить, что все условия истинны. В противном случае запрос окажется неудачным. Если в запросе содержится переменная, то интерпретатор попытается найти такие ее значения, при которых отношение, описанное в запросе, будет соблюдаться.

Предположение о замкнутости мира

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

Пусть в текущей программе имеется только лишь одна фраза, в которой утверждается, что:

Человек является выходцем из Франции, если его фамилия - Делакруа.

Бели мы напишем запрос о том, является ли мистер Шевалье выходцем из Франции, то будет получен отрицательный ответ. На уровне же метаязыка это будет означать, что утверждение о том, является или нет мистер Шевалье выходцем из Франции, недоказуемо. Если принять во внимание предположение о замкнутости мира, то фактический смысл приведенной выше фразы будет таким:

Человек является выходцем из Франции тогда и только тогда, когда его фамилия - Делакруа.

Здесь член "только тогда" относится к метаязыку. Обсуждение предположения о замкнутости мира будет продолжено в разд. 3. 2.

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие