<?xml version="1.0" encoding="windows-1251"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
 <description>
  <title-info>
   <genre>comp_programming</genre>
   <author>
    <first-name>У</first-name>
    <last-name>Клоксин</last-name>
   </author>
   <author>
    <first-name>К</first-name>
    <last-name>Меллиш</last-name>
   </author>
   <book-title>ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ</book-title>
   <annotation>
    <p>Книга английских специалистов, содержащая описание основ логического программирования и особенностей языка Пролог – базового языка ЭВМ пятого поколения. Области применения этого языка связаны с разработкой экспертных систем, интеллектуальных баз данных, обработкой естественного языка, разработкой компиляторов ЭВМ. Книга полезна для первого ознакомления с языком Пролог.</p>
   </annotation>
   <date></date>
   <lang>ru</lang>
   <src-lang>en</src-lang>
  </title-info>
  <document-info>
   <author>
    <first-name></first-name>
    <last-name></last-name>
   </author>
   <program-used>Fiction Book Designer, FB Editor v2.0</program-used>
   <date value="2009-02-19">19.02.2009</date>
   <id>FBD-1D6B02-364C-884B-389A-B5EC-9875-901B4A</id>
   <version>1.0</version>
  </document-info>
 </description>
 <body>
  <title>
   <p>У.Клоксин, К.Меллиш </p>
   <p>ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ</p>
   <p>Для программистов и пользователей ЭВМ.</p>
  </title>
  <section>
   <title>
    <p>ПРЕДИСЛОВИЕ РЕДАКТОРОВ ПЕРЕВОДА</p>
   </title>
   <p>Язык программирования Пролог появился в 1970 г. одновременно с такими сейчас широко распространенными языками, как Паскаль и Си. Его ориентация – «нетрадиционные» применения вычислительной техники: понимание естественного языка, базы знаний, экспертные системы и другие задачи, которые принято относить к проблематике искусственного интеллекта. Сила этого языка – в принципиально отличном от традиционных языков программирования подходе к описанию способа решения задачи: программа на Прологе описывает не процедуру решения задачи, а логическую модель предметной области – некоторые факты относительно свойств предметной области и отношений между этими свойствами, а также правила вывода новых свойств и отношений из уже заданных. Таким образом, Пролог – описательный язык. Как отмечено в авторском предисловии, такой логический подход к программированию создает и некоторые проблемы в распространении языка: основные понятия языка опытными программистами понимаются без труда, однако практическое претворение этого понимания в полезные программы вызывает затруднения.</p>
   <p>Несмотря на очевидные и яркие достоинства, Пролог, в отличие от своих «сверстников» (Паскаля и Си), продолжительное время развивался, применялся и обсуждался в сравнительно узком кругу исследователей, работающих в области искусственного интеллекта. И лишь в последние годы Пролог попал в поле зрения широких кругов специалистов по информатике. Резкий рост его популярности объясняется, по-видимому, выходом теории искусственного интеллекта в область практического, «коммерческого» программирования.</p>
   <p>В настоящее время растет круг практических систем, использующих достижения искусственного интеллекта на современных ЭВМ, появились престижные национальные проекты создания ЭВМ новых поколений, в которых интеллектуальный интерфейс с конечным пользователем (непрофессионалом в информатике) является центральным элементом. В японском проекте создания ЭВМ пятого поколения Пролог прямо называется базовым языком программирования. По-видимому, Пролог реально претендует на роль одного из основных инструментальных языков для «нетрадиционных» применений вычислительной техники, поэтому своевременное знакомство с ним отечественных специалистов, работающих в данной области, будет несомненно полезным.</p>
   <p>В социалистических странах активное участие в разработках, связанных с Прологом, принимают ученые ВНР. В Институте по координации вычислительной техники (г. Будапешт) создана версия Пролога – МПролог, получившая международное признание. Не исключено, что МПролог будет широко доступен и пользователям нашей страны. Этим объясняется включение в русское издание специального приложения (F) посвященного МПрологу.</p>
   <p>При переводе книги встретились значительные терминологические проблемы, поскольку установившаяся русская терминология в данной области практически отсутствует, а станет ли таковой англоязычный жаргон специалистов – покажет время. Для удобства читателей в предметном указателе приведены английские эквиваленты терминов, употребляемых в переводе.</p>
   <p>Предисловие, главы 1,3-6, 9, 10 и Приложение В перевел М. М. Комаров, главы 7, 8, 11, Приложения А,С, D, E, F- А. В. Горбунов, главу 2 – Ю. М. Лазутин.</p>
  </section>
  <section>
   <title>
    <p>ПРЕДИСЛОВИЕ КО ВТОРОМУ ИЗДАНИЮ</p>
   </title>
   <p>После выхода в 1981 г. первого издания книги «Программирование на языке Пролог» этот язык вызвал неожиданно большой интерес у специалистов по информатике, и в настоящее время он рассматривается как возможная основа для принципиально нового поколения языков и систем программирования.</p>
   <p>Мы надеемся, что данная книга частично удовлетворила возрастающую потребность в простом и в то же время исчерпывающем введении в язык практического программирования, каким является Пролог. При подготовке второго издания книги мы воспользовались случаем, чтобы улучшить изложение материала и исправить различные незначительные ошибки. Мы благодарны многим читателям, высказавшим предложения по исправлению и улучшению книги.</p>
   <p>У. <emphasis>Клоксин К</emphasis>. <emphasis>Меллиш</emphasis></p>
   <p><emphasis>Кембридж, Англия, август </emphasis>1984</p>
  </section>
  <section>
   <title>
    <p>ПРЕДИСЛОВИЕ К ПЕРВОМУ ИЗДАНИЮ</p>
   </title>
   <p>Язык программирования Пролог быстро завоевывает популярность во всем мире. С момента его создания, приблизительно в 1970 г., большое число программистов выбрали Пролог <emphasis>для </emphasis>использования при решении задач в различных областях символьных вычислений, включающих:</p>
   <p>• реляционные базы данных,</p>
   <p>• математическую логику,</p>
   <p>• решение абстрактных задач,</p>
   <p>• понимание естественного языка,</p>
   <p>• автоматизацию проектирования,</p>
   <p>• символьное решение уравнений,</p>
   <p>• анализ биохимических структур,</p>
   <p>• различные области искусственного интеллекта.</p>
   <p>До настоящего времени не было книг, ставивших своей целью обучить Прологу как языку практического программирования. Видимо, Пролог оказался настолько привлекательным для многих людей, что они стали его изучать, используя неизбежно краткие справочные руководства, небольшое число опубликованных статей и передаваемый устно среди пользователей языка «фольклор». Однако с внедрением Пролога в учебные программы для студентов и аспирантов многим из наших коллег понадобилось учебное руководство по Прологу. Мы надеемся, что наша небольшая книга до некоторой степени удовлетворит эту потребность.</p>
   <p>Многие новички обнаруживали, что задача написания программы на Прологе не похожа на спецификацию алгоритма при программировании на традиционном языке программирования. Программист, использующий Пролог, больше интересуется тем, какие формальные отношения и объекты имеют место в решаемой задаче и какие отношения справедливы для разыскиваемого решения. Таким образом, Пролог можно рассматривать как язык <emphasis>описаний, </emphasis>а не как язык <emphasis>предписаний. </emphasis>Используемый в Прологе подход состоит главным образом в описании известных фактов и отношений, касающихся решаемой задачи, а не в предписании последовательности шагов, выполняя которые ЭВМ решит задачу. При реализации программы на Прологе фактическая последовательность вычислений, выполняемая ЭВМ, определяется частично логической декларативной семантикой Пролога, частично новыми фактами, которые Пролог может «вывести» из заданных ему фактов, и лишь отчасти управляющей информацией, явно заданной программистом.</p>
   <p>Пролог является <emphasis>практической </emphasis>и <emphasis>эффективной </emphasis>реализацией многих принципов, относящихся к «интеллектуальному» выполнению программы, таких, как недетерминизм, параллельность, вызов процедур по образцу. Пролог имеет единообразную структуру данных, называемую <emphasis>термом, </emphasis>на основе которой конструируются все данные и в том числе программы на Прологе. Программа на Прологе состоит из множества утверждений, каждое из которых является либо фактом о заданной информации, либо правилом, указывающим, как решение связано с заданными фактами или каким образом его можно из них вывести. Таким образом, Пролог можно считать первым шагом на пути к конечной цели – <emphasis>программированию на языке логики. </emphasis>В этой книге мы не будем подробно рассматривать ни более широкие следствия, вытекающие из идеи логического программирования, ни вопрос о том, почему Пролог нельзя рассматривать как окончательный язык логического программирования. Вместо этого мы покажем, как, используя существующие сегодня системы программирования на Прологе, можно создавать <emphasis>полезные </emphasis>программы.</p>
   <p>Эта книга может служить нескольким целям. Мы не собираемся учить искусству программирования как таковому. Нам кажется, что нельзя научиться программированию, просто читая книги или слушая лекции. Вы должны <emphasis>программировать, </emphasis>чтобы научиться делать это. Мы надеемся, что начинающие программисты, не имеющие математической подготовки, смогут освоить Пролог по этой книге, хотя в этом случае мы советовали бы, чтобы начинающий программист осваивал язык под руководством программиста, знающего Пролог, в рамках вводного курса по программированию как таковому. Предполагается, что начинающий программист может получить доступ к ЭВМ, на которой имеется Пролог-система, и что он прошел необходимый инструктаж по работе с терминалом. Опытному программисту не потребуется дополнительная помощь, но он также не должен впадать в уныние от наших усилий ограничить математические излишества. Мы использовали предварительный вариант этой книги при обучении выпускников университета, имевших математическую подготовку на уровне школьной программы и специализировавшихся в университете по философии и психологии.</p>
   <p>Наш опыт показывает, что начинающим программы на Прологе представляются более понятными, чем соответствующие программы на традиционных языках программирования. Однако те же самые люди не склонны ценить те ограничения, которые накладывают традиционные языки на использование вычислительных ресурсов. С другой стороны, программист, имеющий опыт работы на традиционных языках программирования, лучше подготовлен к восприятию таких абстрактных понятий, как переменные и управление последовательностью действий. Но, несмотря на прежний опыт, приспособление к стилю программирования на Прологе может вызвать у него затруднения, и может потребоваться много убедительных примеров, прежде чем он начнет относиться к Прологу как к полезному средству программирования. Конечно, мы знаем много высококвалифицированных программистов, воспринявших Пролог с большим энтузиазмом. Тем не менее, цель этой книги не в том, чтобы «обратить в иную веру», а в том, чтобы научить программировать на Прологе.</p>
   <p>Как и большинство других языков программирования, Пролог существует в множестве различных реализаций, каждая со своими семантическими и синтаксическими особенностями. Для описания в этой книге выбран «базовый» Пролог и все приводимые примеры написаны для стандартной версии, которая соответствует реализациям, разработанным главным образом в Эдинбурге для нескольких различных вычислительных систем: DEC-10 с операционной системой TOPS-10, DEC VAX и PDP-11 с операционной системой Unix, DEC LSI-11 с операционной системой RT-11 и ICL2980 с операционной системой ЕМА. Реализации для ЭВМ фирмы DEC являются, вероятно, наиболее распространенными. Все примеры, приведенные в этой книге, подходят для всех указанных реализаций. В приложениях приведены описания некоторых из существующих реализаций Пролога с указанием их отличий от стандарта. Читатель сможет убедиться, что большинство отличий имеет чисто «косметическую» природу.</p>
   <p>Книга построена таким образом, что читать ее надо последовательно. Тем не менее, будет полезно прочитать гл. 8 в тот момент, когда читатель начнет писать программы на Прологе, состоящие более чем из десяти утверждений. Кроме того, разумно прочитать соответствующее приложение, содержащее описание используемой реализации Пролога. В приложениях говорится, как вводить утверждения, какие средства отладки имеются в системе, и рассматриваются другие практические вопросы. Не будет особого вреда, если вы лишь просмотрите книгу, но старайтесь при этом не пропускать главы.</p>
   <p>Каждая глава книги делится на несколько разделов, и мы советуем читателю выполнять упражнения, приводимые в конце многих разделов. Решения к некоторым из этих упражнений даны в конце книги. Глава 1 представляет собой введение, цель которого – дать читателю почувствовать характер программирования на Прологе. Здесь вводятся основные идеи языка Пролог и читателю рекомендуется тщательно изучить их. В гл. 2 содержится более полное обсуждение идей и понятий, введенных в гл. 1. В гл. 3 рассматриваются структуры данных и приводятся в качестве примеров несколько небольших программ. В гл. 4 более подробно обсуждается механизм возврата, вводится символ «отсечения», используемый для управления механизмом возврата. В <emphasis>гл. </emphasis>5 вводятся имеющиеся в языке средства ввода-вывода. В гл. 6 описывается каждый встроенный предикат базовой версии языка Пролог. Глава 7 представляет собой «попурри» из примеров программ, взятых из многих источников и снабженных комментариями, поясняющими их работу. В гл. 8 даются некоторые советы по отладке программ на Прологе. В гл. 9 вводится синтаксис грамматических правил и изучаются предположения, лежащие в основе программ для анализа естественного языка с использованием грамматических правил. В гл. 10 описывается связь Пролога с идеями математического доказательства теорем и логического программирования, лежащими в основе языка. В гл. 11 представлен ряд проектов, на которых заинтересованные читатели могут поупражняться в развитии навыков программирования на Прологе.</p>
   <p>Мы выражаем благодарность нашим учителям, сформировавшим наши взгляды на программирование: Роду Борстоллу, Питеру Скотту Лэнгстону и Робину Попплстоуну. Мы благодарны друзьям, участвовавшим вместе с нами в совершенствовании Пролога как практического и полезного средства программирования и поддерживавших нас в процессе подготовки этой книги: Алану Банди, Лоренсу Байрду, Роберту Ковальски, Фернандо Перейра и Дейвиду Уоррену. В частности, Лоуренс Байрд поддерживал работу по созданию книги с самого ее начала, предлагая программы, упражнения, некоторые проекты, приведенные в гл. 11, и много идей по организации книги. Мы также благодарны нашим друзьям, внесшим свой вклад в создание книги полезными замечаниями и советами по улучшению предварительного ее варианта: Джону Каннингаму, Ричарду О'Кифу, Элен Пейн, Фернандо Перейра, Гордону Плоткину, Роберту Реи, Питеру Россу, Максвеллу Шортеру, Арону Сломену и Дейвиду Уоррену. В этом отношении У. Клоксин особенно благодарен своим аспирантам из School of Epistemics и Department of Artificial Intelligence, которые помимо их воли стали объектом многочисленных экспериментов в области обучения программированию. При выборе примеров мы свободно пользовались распространенным программистским фольклором и в связи с этим приносим наши извинения всем, кто чувствует себя обойденным вниманием.</p>
   <p>Эта книга была подготовлена в период работы авторов на факультете искусственного интеллекта Эдинбургского университета. Мы благодарны Джиму Хоу, возглавлявшему факультет, за создание благоприятных условий при работе над книгой.</p>
   <p>У. <emphasis>Клоксин К. Меллиш</emphasis></p>
   <p><emphasis>Эдинбург, Шотландия, июнь </emphasis>1981</p>
  </section>
  <section>
   <title>
    <p>ГЛАВА 1 ВВЕДЕНИЕ</p>
   </title>
   <section>
    <p>Пролог – язык программирования, используемый для решения задач, сводимых к объектам и отношениям между объектами. В этой главе мы продемонстрируем основные элементы языка на примерах реальных программ, не вдаваясь особенно в детали, формальные правила и исключения. Исходя из этого, мы не старались, чтобы изложение было полным или достаточно точным. Мы хотим как можно быстрее подвести вас к тому моменту, когда вы сможете самостоятельно писать полезные программы, и чтобы добиться этого, мы должны сконцентрировать внимание на основных понятиях: фактах, запросах, переменных, конъюнкциях и правилах. Другие особенности языка Пролог, такие как списки и рекурсия, будут рассмотрены в последующих главах.</p>
    <p>Пролог применяется в тех случаях, когда необходимо использовать ЭВМ для решения задачи, которая может быть выражена в терминах объектов и отношений между ними. Например, когда мы говорим: «Джон имеет книгу», мы объявляем, что между одним объектом «Джон» и другим объектом «книга» имеет место отношение обладания. Более того, это отношение имеет определенный порядок: Джон имеет книгу, но книга не имеет Джона! Когда мы задаем вопрос: «Имеет ли Джон книгу?», то нас интересует правильность именно отношения.</p>
    <p>При констатации некоторых отношений не всегда упоминаются все объекты, включаемые в них. Например, когда мы говорим: «Драгоценные камни являются ценными», мы имеем в виду, что существует отношение, называемое «являться ценным», которое включает драгоценные камни. Для нас не имеет значения, кто считает, что драгоценные камни являются ценными, и почему он так считает. Это все зависит от того, что вы хотите сказать. При использовании Пролога, когда программируются отношения, подобные приведенным, уровень требуемой детализации также зависит от того, что вы хотите заставить делать ЭВМ<strong>.</strong></p>
    <p>Существует еще один вопрос идейного плана, который следует упомянуть<strong>, </strong>прежде чем приступать к программированию. Мы все знакомы с использованием правил для описания отношений между объектами. Например, правило «Два человека являются сестрами, если они оба женского пола и имеют одних и тех же родителей» объясняет нам, что значит быть сестрами. Оно также указывает, как определить, являются ли два человека сестрами: необходимо просто проверить, относятся ли они оба к женскому полу и имеют ли одних и тех же родителей. Важно отметить, что хотя правила обычно бывают упрощенными, тем не менее они приемлемы в качестве определений. В конце концов, не следует ожидать, что определение говорит нам все об определяемом объекте. Например, большинство людей согласится с тем, что в реальной жизни «быть сестрами» значит больше, чем это следует из приведенного правила. Однако, решая конкретную задачу, необходимо сосредоточить внимание именно на таких правилах, которые помогут ее решить. Таким образом, следует обратиться к схематичному и упрощенному определению, если его достаточно для достижения поставленной цели.</p>
    <p>Программирование на языке Пролог состоит из следующих этапов:</p>
    <p>• объявления некоторых <emphasis>фактов </emphasis>об объектах и отношениях между ними,</p>
    <p>• определения некоторых <emphasis>правил </emphasis>об объектах и отношениях между ними и</p>
    <p>• формулировки <emphasis>вопросов </emphasis>об объектах и отношениях между ними.</p>
    <p>Например, предположим, что мы записали на Прологе наше правило о сестрах. Мы могли бы сделать запрос о том, являются ли Мэри и Джейн сестрами. Пролог просмотрел бы все, что ему известно о Мэри и Джейн, и выдал бы ответ да или нет в зависимости от того, что ему известно. Таким образом, можно рассматривать Пролог как некоторое хранилище фактов и правил, используемых для поиска ответов на вопросы. Программирование на Прологе заключается в том, чтобы описать все эти факты и правила. Пролог-система позволяет использовать ЭВМ как хранилище фактов и правил и предоставляет механизм, позволяющий делать выводы, переходя от одних фактов к другим.</p>
    <p>Пролог является диалоговым языком. Это следует понимать так, что пользователь и ЭВМ осуществляют некоторое подобие диалога. Предположим, что вам предложили поработать за терминалом ЭВМ и воспользоваться Прологом. Ваш терминал состоит из <emphasis>клавиатуры </emphasis>и <emphasis>дисплея. </emphasis>Вы используете <emphasis>клавиатуру </emphasis>для ввода информации в ЭВМ, а ЭВМ использует <emphasis>дисплей </emphasis>(может быть, экран либо бумажную ленту) для вывода полученных результатов. Пролог будет ждать, пока вы введете факты и правила, относящиеся к задаче, которую вы хотите решить. Затем, если вы сможете задать вопросы и если вы делаете это правильно, Пролог будет искать соответствующие ответы и выводить их на дисплей.</p>
    <p>Теперь мы последовательно введем каждое из основных понятий языка Пролог. Не беспокойтесь о том, что вы не получите сразу полного представления о всех особенностях языка Пролог. В последующих главах будет дано их исчерпывающее описание и будет приведено и разобрано много примеров решения задач на языке Пролог.</p>
   </section>
   <section>
    <title>
     <p><strong>1.1. Факты</strong></p>
    </title>
    <p>Начнем обсуждение с <emphasis>фактов </emphasis>об объектах. Предположим, мы хотим сообщить Прологу<a l:href="#n_1" type="note">[1]</a>факт: «Джону нравится Мэри». Этот факт включает в себя два объекта, обозначенных именами «Мэри» и «Джон», и отношение, обозначенное словом «нравится». В языке Пролог используется стандартная форма записи фактов:</p>
    <empty-line/>
    <p>нравится (джон, мэри).</p>
    <empty-line/>
    <p>Важно соблюдать следующие правила:</p>
    <p>• Имена всех отношений и объектов должны начинаться со строчной буквы. Например, <strong>нравится, джон, мэри.</strong></p>
    <p>• Сначала записывается имя отношения. Затем через запятую записываются имена объектов, а весь список имен объектов заключается в круглые скобки.</p>
    <p>• Каждый факт должен заканчиваться точкой.</p>
    <p>Определяя с помощью фактов отношения между объектами, необходимо учитывать, в каком порядке перечисляются имена объектов внутри круглых скобок. Этот порядок может быть произвольным, но, выбрав один раз какой-то определенный порядок, мы должны везде следовать ему и далее. Например, в приведенном выше факте мы поставили на первое место в списке объектов «того, кому нравится», а объект «который нравится» стоит во второй позиции. Таким образом, факт <strong>нравится(джон,мэри)</strong> не одно и тоже, что <strong>нравится(мэри,джон)</strong>. В соответствии с принятой нами (хотя и произвольным образом) договоренностью первый факт говорит о том, что Джону нравится Мэри, в то время как второй факт говорит, что Мэри нравится Джон. Если мы хотим сказать, что Мэри нравится Джон, то мы должны сформулировать это утверждение явно, в виде факта</p>
    <empty-line/>
    <p>нравится(мэри,джон).</p>
    <empty-line/>
    <p>Взгляните на следующие примеры фактов, приведенные вместе с возможной их интерпретацией на естественном языке:</p>
    <p><strong>ценный(золото).</strong> <emphasis>Золото является ценным,</emphasis></p>
    <p><strong>женщина(джейн).</strong> <emphasis>Джейн — женщина.</emphasis></p>
    <p><strong>владеет(джон,золото).</strong> <emphasis>Джон владеет золотом.</emphasis></p>
    <p><strong>отец(джон,мэри).</strong> <emphasis>Джон является отцом Мэри.</emphasis></p>
    <p><strong>дает(джон,книга,мэри).</strong> <emphasis>Джон дает Мэри книгу.</emphasis></p>
    <p>Всякий раз когда используется некоторое имя, оно указывает на определенный индивидуальный объект. В силу жизненного опыта нам совершенно ясно, что имена <strong>джон</strong> и <strong>джейн</strong> относятся к индивидуальным объектам. Но в некоторых других фактах мы использовали имена <strong>золото</strong> и <strong>ценный</strong>, и совсем не очевидно, что они значат. Логики называют имена такого сорта «словами, не имеющими определенного значения вне контекста». Используя такие имена, мы должны решить, как <emphasis>интерпретировать </emphasis>эти имена. Например, имя золото могло бы относиться к некоторому объекту. В этом случае мысленный образ объекта имеет вид конкретного куска золота, который мы обозначаем именем <strong>золото</strong>. И когда мы записываем на Прологе <strong>ценный(золото)</strong>, мы должны понимать это в том смысле, что этот конкретный кусок золота, для обозначения которого мы использовали имя <strong>золото</strong>, является ценным. С другой стороны, мы могли бы интерпретировать имя <strong>золото</strong> как <emphasis>слово, обозначающее химический элемент золото с атомным весом 79, </emphasis>и, когда мы записываем <strong>ценный(золото)</strong>, мы должны понимать это так, что химический элемент золото является ценным. Таким образом, имеется несколько способов интерпретировать имя и именно автор программы определяет конкретную интерпретацию. До тех пор пока последовательно используется одна и та же интерпретация имен, никаких проблем не возникает. Выявлять отличия между различными интерпретациями необходимо с самого начала, с тем чтобы быть совершенно уверенным в том, что обозначают,имена.</p>
    <p>Теперь пришла пора сказать несколько слов о терминологии. Имена объектов, список которых в каждом факте заключен в круглые скобки, называются аргументами. Заметим, что в программировании значение слова «аргумент» не имеет ничего общего с его общеупотребительным значением, используемым в контексте слов «диспут», «дебаты», «дискуссия», «спор» и т. п. Имя отношения, которое записывается непосредственно перед круглыми скобками, называется <emphasis>предикат.<a l:href="#n_2" type="note">[2]</a> </emphasis>Таким образом, <strong>ценный</strong> – это предикат, имеющий один аргумент, а <strong>нравится</strong> – предикат с двумя аргументами.</p>
    <p>Имена объектов и отношений являются полностью произвольными. Например, вместо терма <strong>нравится(джон,мэри)</strong> мы могли бы с таким же успехом представить это как <strong>a(b,c)</strong>, помня при этом, что а значит <emphasis>нравится, </emphasis><strong>b</strong> означает <emphasis>Джон, </emphasis>а <strong>с</strong> – <emphasis>Мэри. </emphasis>Однако обычно мы выбираем имена таким образом, чтобы они сами напоминали нам, что они значат. Следовательно, мы заранее должны решить, что значат наши имена и каким должен быть порядок аргументов. С этого момента необходимо последовательно придерживаться принятых соглашений.</p>
    <p>Отношения могут иметь произвольное число аргументов. Если мы хотим определить предикат <strong>играть</strong>, в котором упоминаются два игрока и игра, в которую они играют между собой, то необходимы три аргумента. Здесь приведены два примера, показывающие, как это можно сделать:</p>
    <empty-line/>
    <p>играть(джон,мэри,футбол). </p>
    <p>играть(джейн, джим,бадминтон).</p>
    <empty-line/>
    <p>Как мы увидим далее, такой способ обеспечивает возможность представления сложных взаимодействий между отношениями.</p>
    <p>В Прологе можно объявить факты, которые не являются истинными в реальном мире. Например, можно было бы написать <strong>король(джон, франция)</strong>, чтобы объявить, что <emphasis>Джон является королем Франции. </emphasis>В реальном мире этот факт со всей очевидностью является ложным, в частности, потому, что монархия во Франции уничтожена приблизительно в 1792 г. Но Пролог не знает этого и не заботится об этом. Факты в Прологе просто позволяют выражать произвольные отношения между объектами.</p>
    <p>Совокупность фактов в Прологе называется <emphasis>базой данных. </emphasis>Мы будем пользоваться термином <emphasis>база данных </emphasis>всякий раз при объединении вместе некоторых фактов (а в дальнейшем и правил) для совместного их использования при решении некоторой конкретной задачи.</p>
   </section>
   <section>
    <title>
     <p>1.2. Вопросы</p>
    </title>
    <p>Имея некоторую совокупность фактов, мы можем обращаться к Прологу с вопросами о них. В Прологе вопрос записывается почти так же, как и факт, за исключением того, что перед ним ставится специальный символ. Специальный символ состоит из вопросительного знака и следующего за ним тире. Рассмотрим вопрос:</p>
    <p>?- имеет(мэри, книга).</p>
    <p>Если мы интерпретируем <strong>мэри </strong>как <emphasis>человека по имени Мэри, </emphasis>а <strong>книга </strong>- это какая-то конкретная книга, то смысл вопроса в следующем: <emphasis>«Имеет ли Мэри (данную конкретную) книгу?» </emphasis>или <emphasis>«Имеет ли место факт, что Мэри имеет данную книгу?». </emphasis>Мы не спрашиваем, имеет ли она все книги или книги вообще.</p>
    <p>Обращение к Прологу с вопросом инициирует процедуру поиска в базе данных, ранее введенной в систему. Пролог ищет факты, <emphasis>сопоставимые </emphasis>с фактом о вопросе. Два факта <emphasis>сопоставимы </emphasis>(или соответствуют один другому), если их предикаты одинаковы (побуквенное совпадение) и их соответствующие аргументы попарно совпадают. Если Пролог находит факт, сопоставимый с вопросом, то он отвечает <strong>да</strong><sup><a l:href="#n_3" type="note">[3]</a></sup>. Если в базе данных такого факта не существует, то Пролог отвечает <strong>нет</strong>. Ответ, выдаваемый Прологом, выводится на дисплей терминала непосредственно под запросом. Пусть имеется следующая база данных:</p>
    <empty-line/>
    <p>нравится(джо,рыба). </p>
    <p>нравится(джо,мэри). </p>
    <p>нравится(мэри,книга).</p>
    <p>нравится(джо,книга).</p>
    <empty-line/>
    <p>Если все эти факты введены в Пролог-систему, то можно было бы делать следующие вопросы, ответы на которые Пролог написал бы непосредственно под текстом вопроса:</p>
    <p>?- нравится(джо,деньги).</p>
    <p>нет</p>
    <p>?- нравится(мэри,джо).</p>
    <p>нет</p>
    <p>?- нравится(мэри,книга).</p>
    <p>да</p>
    <p>?- король(джон,франция).</p>
    <p>нет</p>
    <empty-line/>
    <p>Ответы на три первых вопроса должны быть понятны. Кроме этого, Пролог отвечает <strong>нет</strong> на вопрос о том, является ли Джон королем Франции. Система выдает такой ответ, так как среди фактов в базе данных, представленной приведенными выше четырьмя отношениями <strong>нравится</strong>, нет отношений, указывающих на королевские звания. В Прологе ответ <strong>нет</strong> используется в смысле <emphasis>ничто в базе данных не согласуется с вопросом. </emphasis>Важно помнить, что ответ нет вовсе не эквивалентен ответу <emphasis>является ложным. </emphasis>Предположим, например, что база данных содержит три факта об известных мыслителях Греции:</p>
    <empty-line/>
    <p>человек(сократ).</p>
    <p>человек(аристотель).</p>
    <p>афинянин(сократ).</p>
    <empty-line/>
    <p>Можно было бы сделать несколько вопросов:</p>
    <empty-line/>
    <p>?- афинянин(сократ).</p>
    <p>да</p>
    <p>?- афинянин(аристотель).</p>
    <p>нет</p>
    <p>?- грек(сократ).</p>
    <p>нет</p>
    <empty-line/>
    <p>Хотя тот факт, что Аристотель жил когда-то в Афинах, может быть исторически верным, мы просто не можем <emphasis>доказать </emphasis>его на основе фактов, представленных в базе данных. Более того, хотя в базе данных содержится факт о том, что Сократ жил в Афинах, это не <emphasis>доказывает </emphasis>того, что он был греком, если только в базе данных нет дополнительной информации. Таким образом, когда Пролог на вопрос отвечает <strong>нет</strong>, это значит <emphasis>не доказуемо, не согласуется с базой данных.</emphasis></p>
    <p>В приведенном ранее примере Джону и Мэри нравится один и тот же объект. Мы знаем, что им нравится один и тот же объект, так как одно и то же имя <strong>книга</strong> появляется в обоих фактах.</p>
    <p>Обсуждавшиеся до сих пор факты и вопросы не представляют большого интереса. Все что мы можем сделать – это получить обратно ту же самую информацию, которую мы ввели в систему. Более полезны были бы вопросы вида: <emphasis>«Какие объекты нравятся Мэри?». </emphasis>Именно для реализации такой возможности предназначены <emphasis>переменные.</emphasis></p>
   </section>
   <section>
    <title>
     <p>1.3. Переменные</p>
    </title>
    <p>Если вы хотите узнать, что нравится Джону, то было бы утомительно спрашивать <emphasis>«Нравятся ли Джону книги?», «Нравится ли Джону Мэри?» </emphasis>и так далее, получая каждый раз ответ <strong>да</strong> или <strong>нет</strong>. Более разумно обратиться к Пролог-системе с просьбой назвать что-нибудь, что нравится Джону. Такой вопрос можно сформулировать следующим образом«<emphasis>«Нравится ли Джону X?». </emphasis>Задавая вопрос, мы не знаем, для обозначения какого объекта использована литера <strong>X</strong>. Нам хотелось бы, чтобы Пролог перечислил все имеющиеся возможности <emphasis>для обозначения какого объекта использована литера </emphasis><strong>X</strong>. В Прологе можно не только присваивать имена конкретным объектам, но и использовать имена, подобные <strong>X</strong>, для обозначения объектов, которые должны быть определены Пролог-системой. Имена такого типа называются <emphasis>переменными. </emphasis>Переменная в Прологе может иметь либо не иметь конкретное значение. Переменная конкретизирована, если имеется объект, который обозначает эта переменная. Переменная не конкретизирована, если еще не известно, что именно она обозначает. В Прологе используется соглашение, позволяющее отличать переменные от имен конкретных объектов – <emphasis>каждое имя, начинающееся с прописной буквы, рассматривается как переменная.</emphasis></p>
    <p>При поиске ответа на вопрос Пролог организует просмотр всех фактов в базе данных, чтобы обнаружить объект, который эта переменная могла бы обозначать. Так, когда мы спрашиваем <emphasis>«Нравится ли Джону X?», </emphasis>Пролог просматривает все известные ему факты для обнаружения тех вещей, которые нравятся Джону.</p>
    <p>Такая переменная, как <strong>X</strong>, сама по себе не является именем какого-то конкретного объекта, но она может быть использована для обозначения объектов, которым мы не можем дать имя. Например, мы не можем <emphasis>чему-то, что нравится Джону, </emphasis>дать имя как объекту, поэтому для выражения подобных вопросов вместо вопросов вида</p>
    <empty-line/>
    <p>?- нравится(джон, <emphasis>Что-то, что любит Джон).</emphasis></p>
    <empty-line/>
    <p>Пролог позволяет использовать переменные и задавать вопросы в виде</p>
    <empty-line/>
    <p>?- нравится(джон,Х).</p>
    <empty-line/>
    <p>При желании можно давать переменным более длинные имена. Следующий вопрос вполне приемлем в Прологе:</p>
    <p>?- нравится(джон, Что-точтонравитсяджону).</p>
    <p>Почему? Потому что переменной может быть любое имя, начинающееся с прописной буквы. Рассмотрим следующую базу данных и запрос к Прологу:</p>
    <empty-line/>
    <p>нравится (джон,цветы). </p>
    <p>нравится (джон,мэри). </p>
    <p>нравится(поль,мэри).</p>
    <empty-line/>
    <p>?- нравится(джон,Х).</p>
    <empty-line/>
    <p>В вопросе спрашивается: <emphasis>Существует ли что-нибудь, что нравится Джону? </emphasis>В ответ Пролог напечатает:</p>
    <empty-line/>
    <p>Х=цветы</p>
    <empty-line/>
    <p>а затем будет ждать дальнейших приказов; это мы вкратце обсудим далее. Как это произойдет? При поступлении такого вопроса в Пролог-систему переменная, входящая в вопрос, изначально является неконкретизированной. Пролог просматривает базу данных в поисках факта, <emphasis>сопоставимого </emphasis>с вопросом. Если неконкретизированная переменная появляется в качестве аргумента, то Пролог считает, что такой аргумент сопоставим с <emphasis>любым </emphasis>другим аргументом, находящимся в той же самой позиции факта. В нашем примере Пролог ищет любой факт с предикатом <strong>нравится</strong> и первым аргументом <strong>джон</strong>. <emphasis>Второй </emphasis>аргумент в этом случае может быть каким угодно, так как в вопросе вторым аргументом является неконкретизированная переменная. При обнаружении такого факта переменная <strong>X</strong> становится конкретизированной, обозначая объект, являющийся вторым аргументом найденного факта, каким бы этот аргумент ни был. Пролог просматривает факты базы данных в том порядке, в каком они вводились (на печатной странице это соответствует просмотру сверху вниз), поэтому факт <strong>нравится(джон, цветы)</strong> найден первым. С этого момента переменная <strong>X</strong> обозначает объект <strong>цветы</strong> или, говоря другими словами, переменная <strong>X</strong> конкретизируется значением <strong>цветы</strong>. Пролог с помощью специального <emphasis>маркера </emphasis>отмечает место в базе данных, в котором произошло сопоставление. Обсудим кратко причины, по которым оказалось необходимым использование такого маркера.</p>
    <p>Обнаружив факт, соответствующий вопросу, Пролог печатает имена объектов, которые теперь обозначают переменные. В нашем примере есть только одна переменная <strong>X</strong>, которой соответствует объект <strong>цветы</strong>. Затем Пролог ждет дальнейших указаний, как об этом говорилось выше. Если в этой ситуации нажать на терминале клавишу <strikethrough>RETURN</strikethrough>, указывая тем самым, что вы удовлетворены полученным ответом, то Пролог прекратит дальнейший поиск в базе данных. Если вместо этого нажать клавишу <strikethrough>;</strikethrough> (и вслед за ней клавишу <strikethrough>RETURN</strikethrough>), то Пролог продолжит поиск в базе данных, <emphasis>начиная с места, отмеченного маркером. </emphasis>В такой ситуации, когда Пролог начинает поиск не с начала базы данных, а с места, отмеченного маркером, мы говорим, что Пролог пытается заново согласовать вопрос.</p>
    <p>Предположим, что в ответ на первое найденное Прологом соответствие (<strong>Х=цветы</strong>) мы предлагаем системе продолжить поиск (введя <strikethrough>;</strikethrough>). Это значит, что мы хотим согласовать вопрос иначе; мы хотим найти другой объект, который могла бы обозначать переменная <strong>X</strong>. Это также значит, что Пролог должен «забыть» о том, что переменная <strong>X</strong> обозначает <strong>цветы</strong>, и снова продолжить поиск с неконкретизированной переменной <strong>X</strong>. Так как мы ищем альтернативное решение, то поиск продолжается с места, отмеченного маркером. Следующий найденный системой факт, соответствующий вопросу, есть <strong>нравится(джон,мэри). </strong>Переменная <strong>X</strong> вновь становится конкретизированной, обозначая <strong>мэри, </strong>а Пролог отмечает маркером факт <strong>нравится(джон,мэри). </strong>Пролог напечатает <strong>Х=мэри </strong>и будет ожидать дальнейших команд. Если мы вновь введем точку с запятой, то Пролог продолжит поиск. В нашем примере нет больше ничего, что нравится Джону. Поэтому Пролог завершит поиск и предоставит нам возможность сделать новые запросы или ввести новые факты.</p>
    <p>Что произойдет, если, имея те же факты, что и ранее, мы зададим вопрос:</p>
    <empty-line/>
    <p>?- нравится(Х,мэри).</p>
    <empty-line/>
    <p>В этом вопросе спрашивается: <emphasis>«Существует ли объект, которому нравится Мэри?». </emphasis>Теперь вы сами можете понять, что в примере объектами, которые нравятся Мэри, являются <strong>джон </strong>и <strong>поль</strong>. Опять, если бы мы хотели увидеть все варианты, мы должны были бы вводить; после каждого ответа, выдаваемого Прологом:</p>
    <p>?- <strong>нравится(Х, мэри). </strong><emphasis>наш вопрос</emphasis></p>
    <p><strong>Х=джон;</strong> <emphasis>первый ответ. Мы вводим </emphasis><strikethrough>;</strikethrough></p>
    <p><strong>Х=поль;</strong> <emphasis>второй ответ. Вновь вводим </emphasis><strikethrough>;</strikethrough>.</p>
    <p><strong>нет</strong> <emphasis>больше ответов нет.</emphasis></p>
   </section>
   <section>
    <title>
     <p><strong>1.4. Конъюнкции</strong></p>
    </title>
    <p>Предположим, что мы хотим получать ответы на вопросы о более сложных отношениях, таких как: <emphasis>«Нравятся ли Джон и Мэри друг другу?». </emphasis>Один из способов сделать это – узнать сначала, нравится ли Джону Мэри, и если Пролог ответит да, то спросить, нравится ли Мэри Джон. Таким образом, эта задача состоит из двух «целевых утверждений» (или целей), которые Пролог должен согласовать. Ввиду того что подобная комбинация часто используется при программировании на Прологе, для нее имеется специальное обозначение. Предположим, мы имеем следующую базу данных:</p>
    <empty-line/>
    <p>нравится(мэри,пища). </p>
    <p>нравится(мэри,вино). </p>
    <p>нравится(джон,вино). </p>
    <p>нравится(джон,мэри).</p>
    <empty-line/>
    <p>Мы хотим узнать, нравятся ли Джон и Мэри друг другу. Для этого мы спрашиваем: <emphasis>«Нравится ли Джон Мэри </emphasis>и <emphasis>нравится ли Мэри Джон?». </emphasis>Связка <emphasis>и </emphasis>выражает тот факт, что нас интересует конъюнкция двух указанных целей – мы хотим последовательно согласовать с базой данных обе цели. Мы выражаем это в вопросе, записывая обе цели через запятую:</p>
    <empty-line/>
    <p>?- нравится(джон,мэри),нравится(мэри,джон).</p>
    <empty-line/>
    <p>Запятая читается как «и» и используется для разделения произвольного числа различных целей, которые должны быть согласованы с базой данных для того, чтобы ответить положительно на вопрос. Если задана последовательность целей (разделенных запятыми), то Пролог пытается согласовать каждую цель по очереди, просматривая базу данных в поисках сопоставимых фактов. Чтобы согласовать с базой данных последовательность целей, необходимо согласовать все отдельные цели. Что должен напечатать Пролог в ответ на приведенный выше вопрос? Ответ будет <strong>нет</strong>. Действительно, так как имеет место факт, что Джону нравится Мэри, то первая цель согласуется с базой данных. Однако вторая цель не согласуется с базой данных, так как в ней отсутствует факт <strong>нравится(мэри,джон)</strong>. Учитывая, что мы хотели знать, нравятся ли они <emphasis>оба </emphasis>друг другу, окончательным ответом на вопрос является <strong>нет</strong>.</p>
    <p>Сочетая возможности конъюнкции и использования переменных, можно строить достаточно содержательные вопросы. Теперь, когда мы знаем, что нельзя выяснить, нравятся ли Джон и Мэри друг другу, мы спрашиваем: <emphasis>«Существует ли что-нибудь такое, что нравится обоим </emphasis>- <emphasis>Джону и Мэри?». </emphasis>Этот вопрос также содержит две цели:</p>
    <p>• Существует ли такой объект <strong>X</strong>, который нравится Мэри. </p>
    <p>• Нравится ли Джону найденное значение <strong>X</strong>.</p>
    <p>В Прологе два указанных целевых утверждения следует объединить, используя конъюнкцию, как показано ниже:</p>
    <empty-line/>
    <p>?- нравится(мэри,Х), нравится(джон,X).</p>
    <empty-line/>
    <p>Пролог отвечает на вопрос, пытаясь подобрать соответствие для первой цели. Если в базе данных есть факт, соответствующий целевому высказыванию, то Пролог отметит найденное место и попытается согласовать вторую цель. Если и она достигнута, то Пролог также отмечает в базе данных соответствующее ей место, и таким образом находится решение, удовлетворяющее обеим целям.</p>
    <p>Важно помнить, что каждая цель имеет свой собственный маркер для указания места в базе данных, <emphasis>где </emphasis>найдены соответствующие им факты. Если, однако, вторая цель не согласуется с базой данных, то Пролог попытается найти новое соответствие для предыдущей цели (в данном случае для первой цели). Помните, что Пролог полностью просматривает базу данных для каждой из целей. Если случится так, что некоторый факт в базе данных можно сопоставить с заданной целью, то Пролог отметит это место в базе данных на случай, если впоследствии он будет вынужден снова искать для этой цели другое соответствие. И когда возникнет необходимость найти для цели другое соответствие, Пролог начнет поиск не с начала базы данных, а с места, отмеченного маркером, соответствующим этой цели. Наш предыдущий вопрос: <emphasis>«Существует ли что-нибудь, что нравится и Мэри и Джону?» </emphasis>иллюстрирует пример такого поиска с возвратом («бектрекинга»). Пролог выполняет следующую последовательность действий:</p>
    <p>1. База данных просматривается в попытке согласовать первую цель. Так как второй аргумент <strong>(X)</strong> неконкретизирован, то ему может соответствовать все что угодно. Первый факт, сопоставимый с целью, в приведенной выше базе данных есть <strong>нравится(мэри, пища). </strong>С этого момента <emphasis>каждому </emphasis>появлению переменной <strong>X</strong> в вопросе соответствует значение <strong>пища. </strong>Пролог отмечает в базе данных то место, где был обнаружен соответствующий факт, так что при необходимости найти другой способ согласования цели с фактами он может вернуться в эту точку и продолжить поиск. Более того, следует помнить, что переменная <strong>X</strong> была конкретизирована в этой точке и Пролог может «забыть» найденное для <strong>X</strong> значение в случае необходимости найти новое соответствие в фактах для рассматриваемой цели.</p>
    <p>2. Теперь в базе данных ищется факт <strong>нравится(джон,пища), </strong>так как следующая цель – это <strong>нравится (джон,X)</strong>, а переменная <strong>X</strong> теперь имеет значение <strong>пища. </strong>Как можно видеть, база данных такого факта не содержит, так что эта цель с базой данных не согласуется. В этой ситуации мы должны попытаться найти новое соответствие в фактах для предыдущей цели. Поэтому Пролог предпринимает попытку найти новое соответствие для <strong>нравится(мэри,X)</strong>, при этом поиск в базе данных начинается с отмеченного маркером места. Но сначала необходимо «расконкретизировать» переменную <strong>X</strong> так, чтобы <strong>X</strong> опять могла быть сопоставлена с любым объектом.</p>
    <p>3. Отмеченным маркером местом является факт <strong>нравится(мэри, пища). </strong>Поэтому Пролог начинает поиск со следующего непосредственно за ним факта. Так как мы еще не достигли конца базы данных, то мы не исчерпали всех объектов, которые нравятся Мэри. Следующим сопоставимым фактом является <strong>нравится(мэри, вино). </strong>Теперь переменная <strong>X</strong> принимает значение <strong>вино, </strong>и Пролог отмечает это место на случай, если потребуется найти новое соответствие для того, что нравится Мэри.</p>
    <p>4. Как и ранее, Пролог пытается теперь согласовать с фактами вторую цель в вопросе, осуществляя поиск в базе данных факта <strong>нравится(джон,вино). </strong>Пролог не пытается при этом использовать механизм поиска нового соответствия для этой цели. Это новая цель, которую он выбирает, продвигаясь, как и раньше, слева направо по списку целей в исходном вопросе, поэтому он должен начать поиск с начала базы данных. Когда после недолгого поиска будет найден сопоставимый факт, Пролог выдает надлежащее сообщение. Как только вторая цель согласована, Пролог отмечает соответствующий ей факт в базе данных на случай, если вдруг потребуется найти для нее новое соответствие. Для каждой цели, которую Пролог пытается согласовать, в базе данных имеется свой маркер, указывающий факт, поставленный в соответствие этой цели. </p>
    <p>5. Теперь обе цели согласованы. Переменная <strong>X</strong> обозначает имя <strong>вино. </strong>Маркер первого целевого утверждения отмечает в базе данных факт <strong>нравится(мэри,вино), </strong>а маркер второго целевого утверждения отмечает факт <strong>нравится(джон,вино).</strong></p>
    <p>Как и в случае других запросов, как только Пролог находит ответ, он прекращает поиск и ожидает дальнейших указаний.</p>
    <p>Если ввести <strikethrough>;</strikethrough>, то Пролог продолжит поиск объектов, которые нравятся одновременно Джону и Мэри. Теперь мы знаем, что все последующие попытки поиска новых ответов на вопрос с двумя целями начинаются с мест, отмеченных маркерами, которые оставили эти цели на предыдущем этапе.</p>
    <p>Подводя итог, можно представить конъюнкцию целей в вопросе как список целей, упорядоченных слева направо и разделенных запятыми. Каждая цель может иметь соседа слева и соседа справа. Ясно, что цели, занимающие в списке крайнее левое и крайнее правое положения, не будут иметь соседей соответственно слева и справа. Обрабатывая конъюнкцию целей, Пролог пытается по очереди согласовать с базой данных каждую цель, просматривая вопрос слева направо. Если обнаруживается факт, сопоставимый с целью, то Пролог оставляет в этом месте базы данных маркер, связанный <strong>с </strong>целью. Это можно наглядно представить с помощью стрелки, ведущей от цели к некоторому месту в базе данных, где находится соответствующий факт. Кроме того, некоторые ранее неконкретизированные переменные могут при этом быть конкретизированы, как это имело место выше на шаге 1. Если некоторая переменная конкретизируется, то конкретизируются и все вхождения этой переменной в вопрос. Далее Пролог пытается удовлетворить правого соседа этой цели, начиная поиск с вершины базы данных (наполнение базы данных в Прологе осуществляется сверху вниз, так что вершина – это факт, внесенный в базу данных первым). Как и любая другая цель, для которой найдено соответствие, она оставляет после себя в базе данных маркер (проводит еще одну стрелку от этой новой цели к соответствующему ей факту), на случай если впоследствии возникнет необходимость найти для цели другое соответствие. Каждый раз, когда целевое утверждение не выполняется (нельзя найти сопоставимого факта), Пролог возвращается и пытается найти новое соответствие для соседа <emphasis>слева </emphasis>данной цели, начиная поиск с места, отмеченного соответствующим ему маркером. Кроме того, Пролог должен сначала расконкретизировать все переменные, которые были конкретизированы при достижении этой цели. Другими словами, когда Пролог ищет новое соответствие для цели, он должен «уничтожить» старое значение этих переменных. Если для цели, к рассмотрению которой был возврат справа, нельзя найти новое соответствие, то Пролог перейдет еще левее, постепенно приближаясь к левой границе конъюнкции. Если не удается найти новое соответствие для крайней слева цели, которая уже не имеет соседа слева, то в этом случае считается несогласуемой с базой данных вся конъюнкция целей в вопросе к Прологу. Такое поведение, когда Пролог неоднократно пытается согласовать (и вновь согласовать) цели, входящие в вопрос-конъюнкцию, называется поиском с возвратом (бектрекингом). В следующей главе дается краткое описание механизма возврата, а в гл. 4 проводится более полное и детальное рассмотрение этого процесса.</p>
    <p>Разбирая примеры, полезно записывать под каждой переменной, входящей в целевое утверждение, значение (имя объекта), которое было присвоено этой переменной при установлении согласованности цели с базой данных. Следует также изображать стрелки, идущие от цели к соответствующему ей маркеру в базе данных. На рис. 1.1 приведен пример такой иллюстрации на бумаге работы Пролога, состоящий из четырех «мгновенных снимков» процесса поиска в приведенном выше примере. На каждом снимке показаны полная база данных и вопрос, а также пронумерованная последовательность комментариев. На рисунке цели, для которых найдены соответствия, заключены в прямоугольник.</p>
    <p>На протяжении всей книги мы постараемся показать, где в рассматриваемых примерах имеет место возврат и какую роль он играет в решении задачи. Значение механизма возврата при поиске настолько велико, что ему полностью посвящена гл. 4.</p>
    <p><strong>Упражнение 1.1.</strong> Продолжить разбор рассмотренного выше примера с помощью карандаша и бумаги, предположив, что вы ввели точку с запятой;, инициируя возврат для того, чтобы определить, существует ли еще что-нибудь, что нравится одновременно Джону и Мэри.</p>
    <image l:href="#pic_1.jpg"/>
    <p><strong>Рис. 1.1.</strong></p>
   </section>
   <section>
    <title>
     <p><strong>1.5. Правила</strong></p>
    </title>
    <p>Предположим, мы хотим сформулировать утверждение, что Джону нравятся все люди. Один из способов сделать это заключается в записи для каждого человека, упоминаемого в базе данных, отдельного факта:</p>
    <empty-line/>
    <p>нравится(джон,альфред). </p>
    <p>нравится(джон,бертран). </p>
    <p>нравится(джон,чарлз). </p>
    <p>нравится(джон,дейвид).</p>
    <p>* * *</p>
    <empty-line/>
    <p>Это было бы очень утомительным, особенно если в нашей программе на Прологе упоминается несколько сот человек. Другой способ выразить факт, что Джону нравятся все люди, - это сказать <emphasis>Джону нравится любой объект при условии, что этот объект является человеком. </emphasis>Здесь этот факт представлен в форме <emphasis>правила </emphasis>для определения того, что нравится Джону, а не прямого перечисления всех людей, которые ему нравятся. В ситуации, когда Джону мог бы нравиться любой человек, представление утверждения в виде правила является значительно более компактным, чем список фактов.</p>
    <p>В Прологе правила используются в том случае, когда необходимо сказать, что некоторый факт <emphasis>зависит </emphasis>от группы других фактов. В естественном языке для выражения правила мы можем использовать слово <emphasis>если. </emphasis>Например:</p>
    <p>• <emphasis>Я пользуюсь зонтом, если идет дождь.</emphasis></p>
    <p>• <emphasis>Джон покупает вино, если оно дешевле, чем пиво.</emphasis></p>
    <p>Правила используются также для выражения определений, например:</p>
    <p><emphasis><strong>X</strong> является птицей, если:</emphasis></p>
    <p><emphasis> <strong>X</strong> является живым существом и <strong>X</strong> имеет перья.</emphasis></p>
    <p>или</p>
    <p><emphasis><strong>X</strong> является сестрой <strong>Y</strong>, если:</emphasis></p>
    <p><emphasis> <strong>X</strong> является женщино и <strong>X</strong> и <strong>Y</strong> имеют одних и тех же родителей.</emphasis></p>
    <p>В последних примерах мы использовали переменные <strong>X</strong> и <strong>Y</strong>. Важно помнить, что каждое вхождение переменной в правило обозначает один и тот же объект. Иначе мы разрушили бы саму суть определения. Например, используя приведенное выше определение птицы, мы не смогли бы показать, что Фред является птицей на основании того, что Фидо – это живое существо, а Мэри имеет перья. Этот принцип согласованной интерпретации переменных справедлив также и для правил в Прологе.</p>
    <p>Правило – это некоторое <emphasis>общее утверждение об объектах и об отношениях между ними. </emphasis>Например, мы можем сказать, что Фред является птицей, если Фред является живым существом и Фред имеет перья, мы можем также сказать, что Бертрам является птицей, если Бертрам является живым существом и Бертрам имеет перья. Таким образом, мы допускаем, что при каждом новом <emphasis>использовании </emphasis>правила переменная обозначает новый, отличный от прежнего объект. Конечно, в рамках конкретного использования правила переменные интерпретируются согласованно, как на это указывалось выше.</p>
    <p>Рассмотрим несколько примеров, начав с правила, содержащего одну переменную и конъюнкцию:</p>
    <p><emphasis>Джону нравится любой, кому нравится вино, </emphasis>или,</p>
    <p>другими словами,</p>
    <p><emphasis>Джону нравится что-то, если чему-то нравится вино,</emphasis></p>
    <p>или, используя переменные,</p>
    <p><emphasis>Джону нравится <strong>X</strong>, если <strong>X</strong> нравится вино.</emphasis></p>
    <p>В Прологе правило состоит из <emphasis>заголовка </emphasis>и <emphasis>тела </emphasis>правила. Заголовок и тело соединяются с помощью символа :-, который состоит из двоеточия <strikethrough>:</strikethrough> и тире <strikethrough>-</strikethrough>. Символ ':-' читается <emphasis>если.</emphasis></p>
    <p>Предыдущий пример записывается на Прологе следующим образом:</p>
    <empty-line/>
    <p>нравится(джон,X):- нравится(Х,вино).</p>
    <empty-line/>
    <p>Отметим, что правила также заканчиваются точкой. Заголовком этого правила является нравится(джон,Х). Заголовок правила описывает факт, для определения которого предназначено это правило. Тело правила, в данном случае нравится(Х,вино), описывает конъюнкцию целей, которые должны быть последовательно согласованы с базой данных, для того чтобы заголовок правила был истинным. Например, мы можем сделать Джона более разборчивым в выборе тех, кто ему нравится, просто добавив к телу правила еще несколько целевых утверждений, разделив их запятыми:</p>
    <empty-line/>
    <p>нравится(джон,X):- нравится(Х,вино), нравится(X,пища).</p>
    <empty-line/>
    <p>или, другими словами, <emphasis>Джону нравится любой, кому нравятся вино и пища. </emphasis>Или, предположим, что Джону нравится любая женщина, которой нравится вино:</p>
    <empty-line/>
    <p>нравится(джон,Х):- женщина(Х), нравится(Х,вино).</p>
    <empty-line/>
    <p>Всякий раз, когда мы имеем дело с правилом в Прологе, необходимо отмечать все вхождения переменных. В последнем примере переменная <strong>X</strong> использована три раза. Всякий раз, как переменная X конкретизируется некоторым объектом (ей присваивается значение), все вхождения <strong>X</strong> в пределах <emphasis>области действия этой переменной </emphasis>становятся конкретизированными. При каждом употреблении правила <emphasis>область действия </emphasis>переменной <strong>X</strong> – это все правило, начиная с заголовка и до точки '.' в конце этого правила. Так, если в приведенном выше правиле переменная X оказалась конкретизированной, принимая значение <strong>мэри, </strong>то Пролог попытается согласовать с базой данных целевые утверждения <strong>женщина(мэри) </strong>и <strong>нравится(мэри,вино).</strong></p>
    <p>Теперь, чтобы продемонстрировать правило, использующее более одной переменной, рассмотрим базу данных, содержащую факты о семействе королевы Виктории. Мы будем использовать предикат <strong>родители, </strong>имеющий три аргумента. <strong>родители(Х, Y, Z) </strong>означает: <emphasis>Родителями </emphasis><strong>X</strong> <emphasis>являются </emphasis><strong>Y</strong> <emphasis>и </emphasis><strong>Z</strong>. Переменная <strong>Y</strong> обозначает мать, а переменная <strong>Z</strong> обозначает отца. Кроме того, мы будем использовать предикаты <strong>женщина </strong>и <strong>мужчина </strong>в их очевидном значении. Некоторая часть этой базы данных могла бы выглядеть следующим образом:</p>
    <empty-line/>
    <p>мужчина(альберт). </p>
    <p>мужчина(эдуард). </p>
    <p>женщина(алиса). </p>
    <p>женщина(виктория).</p>
    <p>родители(эдуард,виктория,альберт). </p>
    <p>родители(алиса,виктория,альберт).</p>
    <empty-line/>
    <p>Здесь мы воспользуемся описанным ранее правилом <emphasis>является_сестрой. </emphasis>Правило определяет предикат <strong>является_сестрой</strong>, имеющий два аргумента, таким образом, что <strong>является_сестрой(X, Y) </strong>истинно, если <strong>X</strong> является сестрой <strong>Y</strong>. Обратим внимание на использование в имени предиката символа подчеркивания '_'. Хотя до сих пор не было дано полных правил конструирования имен, отметим, что допускается использование подчеркивания в именах, а более подробно об этом будет сказано в следующей главе. Тогда <strong>X</strong> является сестрой <strong>Y</strong>, если:</p>
    <p>• <strong>X</strong> является женщиной,</p>
    <p>• <strong>X</strong> имеет мать <strong>М</strong> и отца <strong>F</strong> и</p>
    <p>• <strong>Y</strong> имеет тех же мать и отца, что и <strong>X</strong>.</p>
    <p>Это можно записать в виде следующего правила Пролога:</p>
    <empty-line/>
    <p>является_сестрой(X,Y):- женщина(X), родители(X,M,P), родители(Y,M,P).</p>
    <empty-line/>
    <p>Мы используем переменные <strong>M</strong> и <strong>F</strong> для обозначения <emphasis>матери </emphasis>и <emphasis>отца, </emphasis>хотя при желании мы могли бы использовать имена <strong>Мать</strong> и <strong>Отец</strong>. Отметим, что мы употребляем переменные, которые не появляются в заголовке правила. Эти переменные, <strong>M</strong> и <strong>F</strong>, обрабатываются таким же образом, как и любая другая переменная. Когда Пролог использует это правило, переменные <strong>M</strong> и <strong>F</strong> изначально будут неконкретизированными. Этим переменным будет присвоено некоторое значение в момент установления соответствия для предиката <strong>родители(X,M,F)</strong>. Однако, как только они конкретизируются, становятся конкретизированными и <emphasis>все </emphasis>вхождения переменных <strong>M</strong> и <strong>F</strong>, соответствующие текущему использованию правила. Следующий пример должен помочь объяснить, как используются эти переменные. Давайте зададим вопрос:</p>
    <empty-line/>
    <p>?- является_сестрой(алиса,эдуард).</p>
    <empty-line/>
    <p>Имея описанные выше базу данных и правила <strong>является_сестрой</strong> и получив такой вопрос, Пролог выполняет следующие действия:</p>
    <p>1. Сначала вопрос сопоставляется с единственным правилом для предиката <strong>является_сестрой</strong>, приведенным выше. При этом переменная <strong>X</strong> конкретизируется, принимая значение <strong>алиса</strong>, и переменная <strong>Y</strong> конкретизируется значением <strong>эдуард</strong>. Правило, с которым произошло сопоставление, отмечается маркером. Теперь Пролог пытается последовательно согласовать с базой данных три предиката, входящие в тело правила.</p>
    <p><emphasis>2. </emphasis>Так как на предыдущем шаге переменной <strong>X</strong> присвоено значение <strong>алиса</strong>, то первой целью является <strong>женщина(алиса)</strong>. Истинность этого предиката следует из списка фактов, так что цель достигнута. Поскольку данная цель согласована, то Пролог отмечает соответствующее ей место в базе данных (третье утверждение в <emphasis>базе данных). </emphasis>При этом не <emphasis>произошло </emphasis>никаких присвоений значений переменным. Далее Пролог пытается согласовать следующую цель.</p>
    <p>3. Теперь Пролог ищет соответствие для предиката <strong>родители(алиса,M,F)</strong>, где переменные <strong>M</strong> и <strong>F</strong> сопоставимы с любыми аргументами, так как первоначально они неконкретизированы. Факт, с которым происходит сопоставление, есть <strong>родители(алиса, виктория,альберт)</strong>, и тем самым вторая цель достигнута. Пролог отмечает маркером соответствующее место в базе данных (шестое утверждение сверху) и записывает, что <strong>M</strong> присвоено значение <strong>виктория</strong>, a <strong>F</strong> – значение <strong>альберт</strong>. (Если хотите, вы можете делать соответствующую запись над целевым утверждением в правиле.) Затем Пролог пытается найти соответствие для следующего предиката в правиле.</p>
    <p>4. Теперь Пролог ищет в базе данных факт <strong>родители(эдуард,виктория,альберт), </strong>так как из запроса нам известно, что <strong>Y</strong> – это <strong>эдуард, </strong>а из предыдущего шага мы знаем, что <strong>M</strong> и <strong>F</strong> обозначают <strong>виктория </strong>и <strong>альберт. </strong>Эта цель достигается, поскольку найден подходящий факт (пятое утверждение сверху). Так как это последняя цель в конъюнкции, то и полное целевое утверждение является согласованным с базой данных, и тем самым доказано, что факт <strong>является_сестрой(алиса, эдуард) </strong>является истинным, Пролог отвечает <strong>да.</strong></p>
    <p>Предположим, мы хотим знать, является ли Алиса чьей-либо сестрой. Соответствующий вопрос на Прологе имеет вид</p>
    <empty-line/>
    <p>?- является_сестрой(алиса,X).</p>
    <empty-line/>
    <p>В ответ на вопрос Пролог выполняет следующие действия:</p>
    <p>1. Вопрос сопоставляется с заголовком единственного правила для предиката <strong>является_сестрой. </strong>Переменная <strong>X</strong>, входящая в это правило, конкретизируется значением <strong>алиса. </strong>Так как переменная <strong>X</strong> в запросе неконкретизирована, то и переменная <strong>Y</strong> в правиле также будет неконкретизированной. Однако эти две переменные теперь становятся <emphasis>сцепленными. </emphasis>Как только одной из переменных присваивается некоторое значение, другая переменная становится конкретизированной тем же самым значением. Конечно, в данный момент они неконкретизированы.</p>
    <p>2. Первая цель – <strong>женщина(алиса), </strong>которая достигается так же, как и в предыдущем примере.</p>
    <p>3. Вторая цель – <strong>родители(алиса,М,F). </strong>Эта цель сопоставляется с <strong>родители(алиса,виктория,альберт). </strong>Переменные <strong>M</strong> и <strong>F</strong> становятся конкретизированными.</p>
    <p>4. Так как переменная <strong>Y</strong> пока неизвестна, то третьей целью будет <strong>родители(Y,виктория,альберт), </strong>и она сопоставляется с <strong>родители(эдуард, виктория,альберт). </strong>Переменная <strong>Y</strong> конкретизируется значением <strong>эдуард.</strong></p>
    <p>5. Так как все целевые утверждения согласованы с базой данных, то тем самым согласовано и правило в целом, при этом переменная <strong>X</strong> (как известно из вопроса) равна <strong>алиса</strong> и <strong>Y</strong> равна <strong>эдуард. </strong>Учитывая, что <strong>Y</strong> (в правиле) является <emphasis>сцепленной </emphasis>с<strong> X</strong> (в вопросе), то <strong>X</strong> также конкретизирована значением <strong>эдуард. </strong>Пролог печатает <strong>Х=эдуард</strong>.</p>
    <p>Как обычно, Пролог ожидает, пока вы сообщите ему, хотите ли вы найти все ответы на вопрос. Оказывается, что на данный вопрос имеется более одного ответа. Как Пролог находит оставшиеся ответы (ответ), является содержанием упражнения, приведенного в конце главы.</p>
    <p>Как мы видели до сих пор, существуют два способа предоставить Прологу информацию относительно предиката, подобного предикату <strong>нравится. </strong>Мы можем сделать это, используя как факты, так и правила. В общем случае предикат будет определен смесью фактов и правил. Эти факты и правила, определяющие предикат, называются <emphasis>утверждениями<sup><a l:href="#n_4" type="note">[4]</a></sup>. </emphasis>Мы будем использовать слово <emphasis>утверждение </emphasis>в случаях, когда мы ссылаемся либо на факт, либо на правило.</p>
    <p>В качестве следующего примера, на этот раз не имеющего отношения к монархам, рассмотрим правило: <emphasis>Человек может украсть что-либо, если этот человек вор и ему нравится вещь и эта вещь является ценной. </emphasis>На Прологе это записывается следующим образом:</p>
    <empty-line/>
    <p>может_украсть(P,T:- вор(P), нравится(P,T), ценный(T).</p>
    <empty-line/>
    <p>Предикат <strong>может_украсть, </strong>который имеет две переменные <strong>P</strong> и <strong>T</strong>, представляет отношение: <emphasis>некоторый человек </emphasis><strong>P</strong> <emphasis>может украсть вещь </emphasis><strong>T</strong>. Это правило зависит от утверждений, определяющих предикаты <strong>вор, нравится </strong>и <strong>ценный. </strong>Они могут быть представлены либо как факты, либо как правила в зависимости от того, что является более подходящим. Например, рассмотрим следующую базу данных, составленную в том числе из утверждений, обсуждавшихся ранее. Мы добавим к ним номера утверждений, заключенные между специальными скобками /*… */. Именно таким образом в Пролог-системе записывается <emphasis>комментарий. </emphasis>Комментарии игнорируются Пролог-системой, но мы можем добавить их в программу для удобства. В последующем обсуждении мы будем ссылаться на номера предложений, представленные в виде комментариев.</p>
    <p>/*1*/ вор(джон).</p>
    <p>/*2*/ нравится(мэри, пища).</p>
    <p>/*3*/ нравится(мэри,вино).</p>
    <p>/*4*/ нравится(джон,X):- нравится(X,вино).</p>
    <p>/*5*/ может_украсть(X,Y):- вор(X), нравится(X,Y).</p>
    <p>Отметим, что определение предиката <strong>нравится </strong>содержит три отдельных утверждения: два факта и правило. Для Пролога это не имеет значения. Единственное различие состоит в том, что когда осуществляется поиск в базе данных, чтобы согласовать с ней некоторую цель, то правило вызывает дальнейший поиск, чтобы согласовать его собственные предикаты-подцели. Факт не имеет подцелей, так что при сопоставлении <strong>с </strong>фактом поиск либо сразу завершается, либо сразу происходит переход к следующему утверждению. Например, давайте проследим за тем, что получится, если обратиться к Прологу с вопросом: <emphasis>Что Джон может украсть? </emphasis>Прежде всего этот вопрос транслируется на Прологе:</p>
    <p>?- может_украсть(джон,Х).</p>
    <p>Чтобы ответить на этот вопрос, Пролог осуществляет поиск следующим образом:</p>
    <p>1. Прежде всего Пролог ищет в базе данных утверждение, описывающее предикат <strong>может_украсть, </strong>и находит такое утверждение. Оно представлено в виде правила и имеет номер 5. Пролог отмечает это место в базе данных. Так как это утверждение является правилом, то, чтобы установить, согласуется ли заголовок правила с базой данных, необходимо попытаться согласовать с ней тело правила. Тогда переменной <strong>X</strong> в правиле 5 присваивается значение <strong>джон, </strong>которое берется из вопроса. Как и в предыдущих примерах, мы должны сопоставить неконкретизированные переменные (<strong>X</strong> в вопросе и <strong>Y</strong> в правиле), так что теперь они будут <emphasis>сцеплены. </emphasis>Если вы не уверены, что до конца понимаете, что это значит, то необходимо вернуться назад к примерам с предикатом я<strong>вляется_сестрой(X, Y)</strong>. Для того чтобы правило выполнилось, необходимо согласовать цели с базой данных. Таким образом, теперь проверяется на согласованность с базой данных первое утверждение <strong>вор(джон).</strong></p>
    <p>2. Эта цель достигается, так как факт <strong>вор(джон) </strong>содержится в базе данных (утверждение 1). Пролог отмечает это место в базе данных, и при этом присвоения значений переменным не происходит. Далее Пролог пытается достигнуть вторую цель, применяя утверждение 5. Так как <strong>X</strong>, как и ранее, обозначает <strong>джон, </strong>то теперь Пролог ищет <strong>нравится (джон, Y). </strong>Заметим, что к этому моменту <strong>Y</strong> остается неконкретизированной.</p>
    <p>3. Цель <strong>нравится(джон, Y) </strong>сопоставляется с заголовком правила (утверждение 4). Переменная <strong>Y</strong>, входящая в цель, <emphasis>сцепляется </emphasis>с <strong>X</strong> в заголовке правила, и обе эти переменные остаются неконкретизированными. Чтобы доказать это правило, теперь ищется <strong>нравится(Х, вино).</strong></p>
    <p>4. Эта цель достигается, так как она сопоставляется с <strong>нравится (мэри,вино) </strong>- фактом, являющимся утверждением с номером 3. Так что теперь <strong>X</strong> становится <strong>мэри.</strong></p>
    <p>5. Так как цель в утверждении 4 достигнута, то согласовано и правило в целом. Факт <strong>нравится(джон, мэри) </strong>следует из утверждения 4, так как переменная <strong>Y</strong> в утверждении 5 сцеплена с <strong>X</strong>, и ей тоже присваивается значение <strong>мэри.</strong></p>
    <p>6. Утверждение 5 теперь согласуется с базой данных при <strong>Y</strong>, имеющем значение <strong>мэри. </strong>Так как переменная <strong>Y</strong> была сцеплена со вторым аргументом исходного вопроса, то переменная <strong>X</strong> в вопросе конкретизируется, принимая значение <strong>мэри. </strong>Приведем рассуждение, обосновывающее факт <emphasis>Джон может украсть Мэри:</emphasis></p>
    <p><emphasis>Для того чтобы украсть что-либо, прежде всего Джон должен быть вором. Из утверждения 1 следует, что это имеет место. Далее, Джону должен нравиться похищаемый предмет. Из утверждения 4 мы видим, что Джону нравится любой, кому нравится вино. Из утверждения 3 мы видим, что Мэри нравится вино. Следовательно, Джону нравится Мэри. Поэтому оба условия для похищения некоторого объекта имеют место, а значит, Джон может украсть Мэри.</emphasis></p>
    <p>Заметим, что факт (утверждение 2) о том, что Мэри нравится пища, не имеет никакого отношения к данному конкретному запросу, так как он нигде не понадобился.</p>
    <p>В приведенном примере мы повторно использовали переменные <strong>X</strong> и <strong>Y</strong> в различных утверждениях. Например, в правиле <strong>может_ украсть X </strong>обозначает объект, который может что-нибудь украсть. Но в правиле <strong>нравится X </strong>обозначает объект, которому что-то нравится. Для того чтобы приведенная программа имела смысл, в Прологе должна иметься возможность указывать, что X может обозначать различные вещи в различных употреблениях утверждений. Помните, что знание <emphasis>области действия </emphasis>переменной может разрешить любые неясности. Мы могли бы использовать более мнемоничные имена, чтобы попытаться предотвратить любые неясности, но мы используем простые имена, такие как X, чтобы продемонстрировать работу принципа области действия переменной.</p>
   </section>
   <section>
    <title>
     <p><strong>1.6. Заключение и упражнения</strong></p>
    </title>
    <p>К этому моменту мы уже обсудили большинство основных черт языка Пролог. В частности, мы рассмотрели: </p>
    <p>• объявление фактов об объектах; </p>
    <p>• задание вопросов относительно известных фактов; </p>
    <p>• роль переменных и их области действия; </p>
    <p>• конъюнкцию как способ описания <emphasis>и</emphasis>-условий;</p>
    <p>• представление отношений в виде правил;</p>
    <p>• общую схему поиска с механизмом возврата.</p>
    <p>С этим небольшим набором элементарных конструкций можно уже писать полезные программы для работы с простыми базами данных. Скорее всего, наиболее правильно так и поступить, работая над упражнениями, приведенными ниже.</p>
    <p>Чтобы понять, как пользоваться этой книгой, вам следует прочитать предисловие, если вы не сделали это до сих пор. Кроме того, когда вы начнете писать программы для имеющейся в вашем распоряжении системы программирования на Прологе, вам следует обратиться к соответствующему приложению, чтобы узнать, как организуется взаимодействие с системой. Вы также найдете несколько практических советов в гл. 8.</p>
    <p>Теперь, когда вы имеете в своем распоряжении достаточно большой арсенал средств Пролога, вам следует перейти к следующей главе, в которой обсуждаются некоторые вопросы, не рассматривавшиеся в этой главе. Кроме того, мы покажем, какие средства для работы с числами имеются в Прологе. Черты языка, рассматриваемые в нескольких последующих главах, делают очевидными выразительные возможности и удобство Пролога.</p>
    <p><strong>Упражнение 1.2. </strong>При применении правила <strong>является_сестрой </strong>к обсуждавшейся ранее базе данных, содержащей информацию о семействе королевы Виктории, может быть получено несколько ответов. Объясните, как могут быть получены все ответы и каковы они.</p>
    <p><strong>Упражнение 1.3. </strong>В основу этого упражнения положено одно из упражнений из книги Kowalski R. <emphasis>Logic for Problem Solving, </emphasis>North Holland, 1979. Предположим, что кем-то уже написаны на Прологе утверждения, определяющие следующие отношения:</p>
    <empty-line/>
    <p>отец(Х,Y) /* X является отцом Y */</p>
    <p>мать(Х, Y) /* X является матерью Y */</p>
    <p>мужчина(Х) /* X – мужчина */</p>
    <p>женщина(Х) /* X - женщина */</p>
    <p>родитель(Х,Y) /* X является родителем Y */</p>
    <p>различны(Х,Y) /* X и Y различны */</p>
    <empty-line/>
    <p>Задача состоит в том, чтобы написать правила для следующих отношений:</p>
    <empty-line/>
    <p>является_матерью(Х) /* X является матерью */</p>
    <p>является_отцом(Х) /* X является отцом */</p>
    <p>является_сыном(Х) /* X является сыном */</p>
    <p>является_сестрой(Х,Y) /* X является сестрой Y */</p>
    <p>дедушка(Х, Y) /* X является дедушкой Y */</p>
    <p>общие_родители(Х,Y) /* X и Y имеют общих родителей*/</p>
    <empty-line/>
    <p>Например, мы могли бы написать правило для предиката <strong>тетя, </strong>при условии что у нас уже имеются правила для <strong>женщина, общие_родители </strong>и <strong>родитель.</strong></p>
    <empty-line/>
    <p>тетя(Х,Y):- женщина(Х), общие_родители(X, Z), родитель(Z,Y).</p>
    <empty-line/>
    <p>Это можно также записать следующим образом:</p>
    <empty-line/>
    <p>тетя(Х,Y):- является_сестрой(Х,Z), родитель(Z, Y).</p>
    <empty-line/>
    <p>при условии что мы имеем правило для отношения <strong>является_сестрой.</strong></p>
    <p><strong>Упражнение 1.4. </strong>Используя правило для отношения <strong>является_сестрой, </strong>определенное в тексте, объясните, каким образом становится возможным, что некто может быть своей собственной сестрой. Как можно было бы изменить это правило, если такое свойство нежелательно? Считайте, что предикат <strong>различны </strong>из упр. 1.3 уже определен.</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 2 БОЛЕЕ ДЕТАЛЬНОЕ ОПИСАНИЕ</p>
   </title>
   <section>
    <p>В данной главе приводится более полное описание тех элементов Пролога, которые были введены в предыдущей главе. Пролог предоставляет средства для структурирования данных, а также средства для структурирования той <emphasis>последовательности, </emphasis>в которой совершаются попытки согласовать целевые утверждения с базой данных. Для структурирования данных необходимо знание синтаксических правил, используемых для обозначения данных. Структурирование последовательности, в которой будут совершаться попытки согласовать целевые утверждения с базой данных, предполагает знание принципов работы механизма возврата.</p>
   </section>
   <section>
    <title>
     <p>2.1. Синтаксические правила</p>
    </title>
    <section>
     <p>Синтаксические правила языка описывают допустимые способы соединения слов. В соответствии с нормами английского языка предложение «I see a zebra» («я вижу зебру») является синтаксически правильным в отличие от предложения «zebra see I а» («зебра видит я»). В первой главе синтаксис Пролога явно не обсуждался, просто показывалось на примерах, как выглядят некоторые элементы Пролога. В данном разделе приводится краткое описание синтаксических правил для уже знакомых нам элементов Пролога.</p>
     <p>Пролог-программы состоят из <emphasis>термов. </emphasis>Терм – это либо <emphasis>константа, </emphasis>либо <emphasis>переменная, </emphasis>либо <emphasis>структура. </emphasis>Каждый из этих термов фигурировал в предыдущей главе, но не назывался там таким именем. Терм записывается как последовательность <emphasis>литер. </emphasis>Литеры делятся на четыре категории:</p>
     <empty-line/>
     <p>ABCDEFGHIJKLMNOPQRSTUVWXYZ</p>
     <p>abсdefghijklmnopqrstuvwxyz</p>
     <p>0123456789</p>
     <p>+-*/\^&lt;&gt;~:.?@#$&amp; </p>
     <p>Первая строка состоит из <emphasis>прописных букв. </emphasis>Вторая строка – из <emphasis>строчных букв. </emphasis>В третьей строке – <emphasis>цифры. </emphasis>В четвертой строке перечислены <emphasis>специальные литеры (спецзнаки). </emphasis>В действительности спецзнаков больше, чем показано в четвертой строке, но остальные используются только в особых случаях, обсуждаемых ниже<sup><a l:href="#n_5" type="note">[5]</a></sup>. Для термов каждого типа, таких как константа, переменная, структура, имеются свои правила образования имен термов из литер. Ниже вкратце обсуждаются каждый из типов термов.</p>
    </section>
    <section>
     <title>
      <p><emphasis>2.1.1. Константы</emphasis></p>
     </title>
     <p>Константами являются поименованные <emphasis>конкретные объекты </emphasis>или <emphasis>конкретные отношения. </emphasis>Существует два вида констант: <emphasis>атомы </emphasis>и <emphasis>целые числа. </emphasis>Примерами атомов являются имена, приводившиеся в предыдущей главе:</p>
     <p><strong>нравится мэри джон книга вино имеет драгоценности может_украсть</strong></p>
     <p>Специальные символы, используемые Прологом для обозначения вопросов '?-' и правил ':-', также являются атомами. Есть два вида атомов: составленные из букв и цифр и составленные из спецзнаков. Первые, как мы видели в предыдущей главе, должны обычно начинаться со строчной буквы. Атомы, составленные из спецзнаков, как правило, состоят <emphasis>только </emphasis>из спецзнаков. Иногда возникает необходимость иметь атом, начинающийся с прописной буквы или цифры. Если атом заключается в одиночные кавычки, то его имя может содержать <emphasis>любые </emphasis>литеры. И наконец, для простоты чтения внутрь атома можно включать специальную литеру – подчеркивание '_'. Ниже приведено несколько атомов:</p>
     <p>а </p>
     <p>свободный </p>
     <p>=</p>
     <p>'джордж-смит' </p>
     <p>--›</p>
     <p>джордж_смит</p>
     <p>ieh2304</p>
     <empty-line/>
     <p>Следующие объекты не являются атомами:</p>
     <p>2304ieh </p>
     <p>джордж-смит</p>
     <p>Пустой</p>
     <p>_ альфа</p>
     <p>Другой вид констант, целые числа, используется для представления числовых данных, что позволяет выполнять над ними арифметические операции. В предыдущей главе не обсуждались способы выполнения арифметических операций в Прологе, такие средства будут определены ниже. Целые числа состоят только из цифр и не могут содержать десятичной запятой. В этой книге будут использоваться сравнительно небольшие положительные числа, такие как</p>
     <empty-line/>
     <p>0 1 999 512 8192 14765 6224</p>
     <empty-line/>
     <p>Пролог реализован на различных ЭВМ и в зависимости от того, на какой именно ЭВМ работает программист, ему может быть разрешено или не разрешено использовать большие или отрицательные числа. Однако в данной книге приводятся только примеры, допустимые для любой из существующих версий Пролога. Можно утверждать, что всегда разрешается использовать числа из диапазона от 0 до 16 383. Возможно, что на доступной читателю ЭВМ допустимы и другие числа (превышающие 16 383 или отрицательные), однако дальнейшее изложение этого не учитывает. Может быть, это покажется удивительным, однако в задачах, в которых оказался полезным Пролог, как правило, не нужны средства для работы с очень большими, дробными или отрицательными числами. Тем не менее, поскольку Пролог является расширяемым языком, программист, обладающий соответствующими ресурсами, может без особого труда добавить к системе предикаты, определяющие такие возможности. Например, некоторые Пролог-системы предоставляют пользователям библиотечные программы, определяющие операции над рациональными числами и числами произвольной точности.</p>
    </section>
    <section>
     <title>
      <p><emphasis>2.1.2. Переменные</emphasis></p>
     </title>
     <p>Второй разновидностью термов в Прологе являются переменные. Переменные внешне похожи на атомы, за исключением того, что они начинаются с прописной буквы или знака подчеркивания '_'. Переменная служит для представления объекта, на который нельзя сослаться по имени. Здесь можно провести аналогию с использованием местоимений в естественном языке. В приведенных выше примерах фигурировали переменные с такими именами как <strong>X</strong>, <strong>Y</strong> и <strong>Z</strong>. Однако имена могут быть сколь угодно длинными, например:</p>
     <p>Ответ</p>
     <p>Ввод</p>
     <p>Большая_Выплата</p>
     <p>_3_слепые_мыши</p>
     <p>Иногда возникает необходимость в использовании переменной, имя которой не будет нигде употребляться. Например, если необходимо определить, нравится ли кому-нибудь Джон, и при этом не важно, кому именно он нравится, можно использовать <emphasis>анонимную переменную.</emphasis></p>
     <p>Анонимная переменная – это одиночный знак подчеркивания '_'. Наш пример с Джоном записывается на Прологе следующим образом:</p>
     <p>?- нравится(_,джон).</p>
     <p>Если в одно утверждение входят несколько анонимных переменных, их можно интерпретировать неоднозначно. Это характерная особенность, присущая только анонимной переменной. Она позволяет избавить программиста от необходимости придумывать разные имена переменным в тех случаях, когда эти имена в утверждении нигде больше не употребляются.</p>
    </section>
    <section>
     <title>
      <p><emphasis>2.1.3. Структуры</emphasis></p>
     </title>
     <p>Третьим видом терма, присутствующим в Пролог-программах, является структура. Структура – это единый объект, состоящий из совокупности других объектов, называемых компонентами. Компоненты группируются в структуру для удобства их использования.</p>
     <p>В реальной жизни одним из примеров структур является карточка-указатель для библиотечной книги. Карточка-указатель содержит несколько компонент: сведения об авторе, название книги, дату издания, место, где книга хранится в библиотеке, и т. д. Некоторые из компонент в свою очередь тоже можно разбить на компоненты. Например, сведения об авторе состоят из фамилии и инициалов.</p>
     <p>Структуры служат средством организации данных в программе, поскольку они позволяют рассматривать как единый объект (карточку-указатель) группу отдельных элементов данных. Способ, которым осуществляется разложение данных на компоненты, зависит от решаемой задачи, В книге будут приведены некоторые рекомендации на этот счет.</p>
     <p>Структуры полезны также в тех случаях, когда имеется общий тип и может существовать много конкретных экземпляров объектов этого типа. Например, книги. В главе 1 приводился факт</p>
     <empty-line/>
     <p>имеет(джон, книга).</p>
     <empty-line/>
     <p>обозначающий, что у Джона есть некоторая конкретная книга. Если затем будет сформулирован факт</p>
     <empty-line/>
     <p>имеет(мэри, книга).</p>
     <empty-line/>
     <p>то это означает, что у Мэри есть тот же самый объект, что и у Джона, поскольку в обоих фактах фигурирует одно и то же имя. Не существует другого способа указания факта, что объекты различны, кроме присвоения им различных имен. Можно было бы уточнить приведенные факты:</p>
     <empty-line/>
     <p>имеет(джон,грозовой_перевал). </p>
     <p>имеет(мэри,моби_дик).</p>
     <empty-line/>
     <p>явно указав, какие именно книги есть у Джона и Мэри. Однако в больших программах обилие различных констант, смысл которых из контекста не очевиден, может вызвать затруднения. Человек, читающий данную Пролог-программу, может не знать, что константа <strong>грозовой_перевал </strong>представляет собой название книги Эмили Бронте, жившей в Йоркшире (Англия) в 19-м веке. Можно было бы, скажем, предположить, что Джон назвал так своего любимого кролика. С помощью структур можно предоставить читателю необходимый контекст.</p>
     <p>Структура записывается на Прологе с помощью указания ее <emphasis>функтора </emphasis>и <emphasis>компонент. </emphasis>Компоненты заключаются в круглые скобки и разделяются запятыми. Функтор записывается перед открывающей круглой скобкой. Рассмотрим факт, заключающийся в том, что у Джона есть книга с названием «Грозовой перевал», написанная Эмили Бронте:</p>
     <empty-line/>
     <p>имеет(джон,книга(грозовой_перевал, бронте)).</p>
     <empty-line/>
     <p>Внутри факта <strong>имеет</strong> находится структура с именем <strong>книга, </strong>имеющая две компоненты: название и автор. Поскольку структура <strong>книга </strong>появляется внутри факта как один из его аргументов, она действует как объект, принимая участие в отношении. При желании можно было бы создать еще одну структуру – для идентификации автора, поскольку существовали три писательницы с фамилией Бронте:</p>
     <empty-line/>
     <p>имеет(джон,книга(грозовой_перевал, автор(эмили, бронте))).</p>
     <empty-line/>
     <p>Структуры с переменными в качестве компонент могут появляться в вопросах. Например, можно было бы спросить, есть ли у Джона какая-либо книга сестер Бронте:</p>
     <empty-line/>
     <p>?- имеет(джон,книга(Х,автор(Y, бронте))).</p>
     <empty-line/>
     <p>Если будет доказано, что это утверждение согласовано с базой данных, то значением <strong>X</strong> будет название книги, а значением <strong>Y</strong> – имя автора. В тех случаях, когда переменные в дальнейшем не используются, можно употребить анонимную переменную:</p>
     <empty-line/>
     <p>?- имеет(джон, книга(_, автор(_,бронте))).</p>
     <empty-line/>
     <p>Напомним, что анонимные переменные не «сцепляются» друг с другом.</p>
     <p>Структуру <strong>книга </strong>можно было бы еще улучшить, добавив аргумент, указывающий экземпляр книги. Например, третий аргумент, на место которого следует ставить целое число, дал бы нам возможность однозначно идентифицировать книгу:</p>
     <empty-line/>
     <p>имеет(джон, книга (улисc, автор(джеймс,джойс), 3129)).</p>
     <empty-line/>
     <p>что соответствует следующей фразе на естественном языке: <emphasis>Джон имеет 3129-й экземпляр книги Джеймса Джойса «Улисс». </emphasis>Если у читателя сложилось впечатление, что синтаксис структур совпадает с синтаксисом фактов, то нам остается только подтвердить его правоту. Предикат (используемый в фактах и правилах) является на самом деле функтором некоторой структуры. Аргументы факта или правила – это компоненты структуры. Представление самих Пролог-программ в виде структур обладает многими достоинствами. Сейчас преждевременно обсуждать эти достоинства, однако читателю все же следует помнить, что все части Пролога, даже сами Пролог-программы, состоят из констант, переменных и структур.</p>
    </section>
   </section>
   <section>
    <title>
     <p>2.2. <strong>Литеры</strong></p>
    </title>
    <p>Имена констант и переменных образованы цепочками литер. Хотя для каждого вида имени (атом, целое число, переменная) имеются специальные правила, указывающие, из каких литер оно может составляться, полезно знать, что представляет собой весь набор литер, распознаваемых Прологом. Это связано с тем, что литера сама может рассматриваться как самостоятельный элемент данных. Поскольку мы уже знакомы с целыми числами, можно теперь описать, как литеры представляются небольшими целыми числами. Над литерами чаще всего выполняются операции «ввод» и «вывод». Эти операции будут обсуждаться в <emphasis>гл. </emphasis>5.</p>
    <p>В Прологе имеются два типа литер: <emphasis>печатаемые </emphasis>литеры и <emphasis>непечатаемые </emphasis>литеры. Печатаемые литеры обладают визуальным образом, появляющимся на терминале при выводе. Непечатаемые литеры такого образа не имеют, но при выводе они вызывают выполнение некоторых действий. Этими действиями могут быть пропуск пустого места («печать» пробела), переход на новую строку, подача звукового сигнала. Ниже приведены все печатаемые литеры, которые можно использовать в Пролог-программах.</p>
    <p>ABCDEFGHIJKLMNOPQRSTUVWXYZ </p>
    <p>abedefghijklmnopqrstuvwxyz </p>
    <p>0123456789</p>
    <p>!"#$%&amp;'()=–~^|\{}[] _`@ +;*:‹›,.?/</p>
    <p>Читатель должен заметить, что данный набор более полон, чем приводившийся в начале главы. Некоторые из этих литер имеют специальное значение. Например, круглые скобки используются для выделения компонент структур. Однако, как мы увидим в последующих главах, любая литера может рассматриваться в Пролог-программе как и информационный элемент данных. Литеры могут печататься, вводиться с клавиатуры, сравниваться и принимать участие в арифметических операциях.</p>
    <p>Литеры на самом деле интерпретируются как небольшие целые числа – из диапазона от 0 до 127. Каждой литере поставлено в соответствие некоторое целое число, называемое ее ASCII-кодом. Аббревиатура ASCII расшифровывается следующим образом: American Standard Code for Information Interchange (Американский стандартный код для обмена информацией)<a l:href="#n_6" type="note">[6]</a>. Этот код широко используется на вычислительных машинах и в языках программирования во всем мире. Таблицу кодов ASCII можно найти почти в любом руководстве по работе на ЭВМ. Коды букв упорядочены в алфавитном порядке, так что выяснение порядка следования литер в алфавите сводится к сравнению их кодов с помощью операторов отношений, описываемых ниже в данной главе. Коды всех печатаемых литер больше 32.</p>
    <p>Хотя польза кода ASCII в данный момент может быть для читателя и не очевидной, мы вновь вернемся к этому вопросу в разд. 3.2. и 3.5.</p>
   </section>
   <section>
    <title>
     <p><strong>2.3. Операторы</strong></p>
    </title>
    <p>Иногда удобно записывать некоторые функторы как <emphasis>операторы. </emphasis>Это особая форма синтаксиса, облегчающая чтение соответствующих структур. Например, арифметические операции обычно записываются как операторы. В арифметическом выражении <emphasis>x+y*z </emphasis>знаки сложения и умножения являются операторами. Если же данное арифметическое выражение записать в обычном для структур виде, то оно будет выглядеть следующим образом: <strong>+(x,*(y,z))</strong>. Однако в некоторых случаях операторная форма записи удобнее потому, что мы со школьных лет привыкли использовать ее в арифметических выражениях. Кроме того, структурная форма требует заключения аргументов функтора в круглые скобки, что иногда обременительно.</p>
    <p>Важно отметить, что операторы не вызывают выполнения каких-либо арифметических операций. Так, в Прологе <strong>3+4</strong> и <strong>7</strong> означают разные объекты. Терм <strong>3+4</strong> - другой способ записи терма <strong>+(3,4)</strong>, который является структурой. Позже будет описан способ интерпретации структур как арифметических выражений и вычисления их в соответствии с правилами арифметики.</p>
    <p>Для начала необходимо знать, как читать арифметические выражения, содержащие операторы. Это требует знания трех свойств каждого оператора: его <emphasis>позиции, </emphasis>его <emphasis>приоритета </emphasis>и его <emphasis>ассоциативности. </emphasis>В данном разделе будут описаны правила использования операторов Пролога с учетом этих свойств, но пока без излишних подробностей. В Пролог-программе можно определить много различных видов операторов, но мы будем иметь дело только с хорошо знакомыми атомами +, -, * и /.</p>
    <p>Синтаксис терма, содержащего операторы, частично зависит от их <emphasis>позиций. </emphasis>Операторы, подобные знакам сложения (+), вычитания (-), умножения (*) и деления (/), записываются между своими аргументами и называются поэтому <emphasis>инфиксными </emphasis>операторами. Можно также помещать операторы перед их аргументами. Так, в выражении -<emphasis>х+у </emphasis>минус перед <emphasis>х </emphasis>обозначает арифметическую операцию изменения знака. Операторы, записываемые перед своими аргументами, называются <emphasis>префиксными </emphasis>операторами. Наконец, некоторые операторы могут помещаться после своего аргумента. Например, оператор вычисления факториала, употребляемый математиками, помещается после числа, для которого необходимо вычислить факториал. В математических обозначениях факториал <emphasis>х </emphasis>записывается как <emphasis>x</emphasis>!<emphasis><sub>t</sub> </emphasis>где восклицательный знак обозначает операцию вычисления факториала. Операторы, записанные после своих аргументов, называются <emphasis>постфиксными </emphasis>операторами. Таким образом, позиция оператора указывает его место по отношению к своим аргументам. Все операторы, рассматриваемые в следующем разделе, являются <emphasis>инфиксными.</emphasis></p>
    <p>Теперь рассмотрим приоритет операторов. Когда нам необходимо проинтерпретировать терм <emphasis>х+y*z</emphasis> как арифметическое выражение, мы знаем, что для того, чтобы получить правильное значение, нужно сначала перемножить <emphasis>у </emphasis>и <emphasis>z, </emphasis>а затем прибавить <emphasis>х. </emphasis>Этими знаниями мы обязаны школе, где нас научили, что умножения и деления выполняются до сложений и вычитаний; исключениями являются случаи, когда порядок операций задается скобками. С другой стороны, структурная форма <strong>+(x,*(y,z)) </strong>явно показывает порядок выполнения операций, поскольку структура с функтором * является аргументом структуры с функтором +. Для того чтобы ЭВМ правильно произвела соответствующие вычисления, необходимо сначала выполнить умножение – тогда в структуре с + будут известны значения аргументов. Таким образом, для использования операторов необходимы правила, указывающие порядок выполнения операций. Именно этой цели служит <emphasis>приоритет.</emphasis></p>
    <p>Приоритет оператора определяет, какая операция выполняется первой. В Прологе каждый оператор связан со своим <emphasis>классом приоритета. </emphasis>Класс приоритета представляет собой целое число, величина которого зависит от конкретной версии Пролога. Однако в любой версии оператор с большим приоритетом имеет класс приоритета, более близкий к 1. Если классы приоритетов принимают значения из диапазона от 1 до 255, то оператор с первым классом приоритета выполняется первым, до выполнения операторов, принадлежащих (например) к классу 129. В Прологе операторы умножения и деления принадлежат к более высокому классу приоритетов, чем сложение и вычитание, поэтому терм <strong>а-b/с</strong> эквивалентен терму <strong>-(a,/(b,c))</strong>. Точное соответствие между операторами и классами приоритетов в данный момент не существенно, однако желательно запомнить относительный порядок выполнения операций.</p>
    <p>Наконец, рассмотрим свойство <emphasis>ассоциативности </emphasis>операторов. Необходимость знания этого свойства становится очевидной, когда нам требуется определить порядок выполнения операторов с одинаковым приоритетом. Например, какому выражению эквивалентно выражение «8/2/2» – «(8/2)/2» или «8/(2/2)»? В первом случае при интерпретации выражения было бы получено значение 2, во втором 8. Для того чтобы иметь возможность разделить эти два случая, необходимо знать, является ли данный оператор <emphasis>левоассоциативным </emphasis>или <emphasis>правоассоциативным. Левоассоциативный </emphasis>оператор должен иметь слева операции <emphasis>одинакового </emphasis>или <emphasis>низшего </emphasis>приоритета, а справа – операции <emphasis>низшего </emphasis>приоритета. Например, все арифметические операции (сложить, вычесть, умножить и поделить) являются левоассоциативными. Это означает, что выражения, подобные «8/4/4», интерпретируются как «(8/4)/4», а выражение «5+8/2/2» эквивалентно «5+((8/2)/2)».</p>
    <p>На практике в выражениях, понимание которых затрудняется правилами приоритета и ассоциативности, люди стремятся использовать круглые скобки. В нашей книге этот прием тоже будет использоваться, однако для полного понимания операторов надо знать синтаксические правила.</p>
    <p>Напомним, что структура, образованная арифметическими операторами, подобна любой другой структуре. На самом деле никакие арифметические действия не выполняются до тех пор, пока не встретится предикат <strong>'is'</strong> (есть), описанный в разд. 2.5.</p>
   </section>
   <section>
    <title>
     <p>2.4. Равенство и установление соответствия</p>
    </title>
    <p>В Прологе существует особый предикат <emphasis>равенство, </emphasis>являющийся инфиксным оператором, обозначаемым литерой '='. Когда делается попытка доказать согласованность с базой данных целевого утверждения </p>
    <empty-line/>
    <p>?- X = Y. </p>
    <empty-line/>
    <p>(произносится <emphasis>X равно Y), </emphasis>Пролог пытается <emphasis>установить соответствие </emphasis>между <strong>X</strong> и <strong>Y</strong>; целевое утверждение «доказуемо», если такое соответствие имеется. Это действие можно представить себе как <emphasis>попытку сделать </emphasis><strong>X</strong> <emphasis>и </emphasis><strong>Y</strong> <emphasis>равными. </emphasis>Предикат равенства является <emphasis>встроенным, </emphasis>т. е. он уже определен в Пролог-системе. Предикат равенства работает так, словно определен следующий факт: X = X.</p>
    <p>Внутри всякого утверждения <strong>X</strong> всегда равно <strong>X</strong>, и это свойство использовано нами при определении предиката равенства.</p>
    <p>При согласовании с базой данных цели вида <strong>X = Y</strong>, где <strong>X</strong> и <strong>Y</strong> – любые термы, в которых могут содержаться неконкретизированные переменные, действуют следующие правила:</p>
    <p>• если <strong>X</strong> представляет собой неконкретизированную переменную, а переменная <strong>Y</strong> конкретизирована (какое именно значение ей дано, неважно), то <strong>X</strong> и <strong>Y</strong> равны. Кроме того, <strong>X</strong> станет конкретизированной – ей будет дано то же значение, что и <strong>Y</strong>. Например, следующий вопрос приведет к тому, что <strong>X</strong> будет присвоено значение в виде структуры: <strong>ехать(клерк, велосипед)</strong>:</p>
    <empty-line/>
    <p>?- ехать(клерк, велосипед) = X.</p>
    <empty-line/>
    <p>• целые числа и атомы всегда равны самим себе. Например, попытки согласовать следующие целевые утверждения дадут результаты, показанные справа:</p>
    <empty-line/>
    <p>полицейский = полицейский /* верно */</p>
    <p>бумага = карандаш /* ложно */</p>
    <p>1066=1066 /* верно */</p>
    <p>1206=1583 /* ложно */</p>
    <empty-line/>
    <p>• Две структуры равны, если они имеют один и тот же функтор и одинаковое число аргументов, причем все соответствующие аргументы равны. Например, при согласовании следующего целевого утверждения <strong>X</strong> будет присвоено конкретное значение <strong>велосипед</strong>:</p>
    <empty-line/>
    <p>ехать(клерк,велосипед) = ехать(клерк,Х).</p>
    <empty-line/>
    <p>Структуры могут быть вложены одна в другую на любую глубину. Если такие вложенные структуры проверяются на равенство, проверка займет больше времени, поскольку необходимо проверить все структуры. Попытка согласовать следующую цель:</p>
    <empty-line/>
    <p>a(b,C,d(e,F,g(h,i,J)))=a(B,c,d(E,f,g(H,i,j))).</p>
    <empty-line/>
    <p>будет успешной, <strong>а </strong>переменные <strong>В</strong>, <strong>С</strong>, <strong>F</strong>, <strong>Е</strong>, <strong>J</strong> будут конкретизированы, им будут присвоены соответственно значения <strong>b</strong>, <strong>с</strong>, <strong>f</strong>, <strong>e</strong>, <strong>j</strong>. Что произойдет, если мы попытаемся приравнять две неконкретизированные переменные? Это специальный случай первого из вышеприведенных правил. Так, цель будет согласована и две переменные станут <emphasis>сцепленными. </emphasis>Если две переменные сцеплены, то при конкретизации одной из них второй переменной будет автоматически присвоено то же самое конкретное значение, что и первой. Таким образом, в следующем правиле второй аргумент будет конкретизирован так же, как первый:</p>
    <empty-line/>
    <p>ничего_не_делать(Х,Y):- Х = Y.</p>
    <empty-line/>
    <p>Целевое утверждение X=Y всегда верно (т. е. согласуется с базой данных), если один из аргументов неконкретизирован. Более простой способ записи такого правила заключается в использовании того факта, что переменная равна самой себе:</p>
    <empty-line/>
    <p>ничего_не_делать(Х,Х).</p>
    <empty-line/>
    <p>Пролог предоставляет также предикат '\=' соответствующий <emphasis>не равно. </emphasis>Целевое утверждение <strong>Х\=Y</strong> верно в тех случаях, когда не доказуемо утверждение <strong>X=Y</strong>, и наоборот. Таким образом, <strong>Х\=Y</strong> означает, что <strong>X</strong> <emphasis>не может быть сделано равным </emphasis><strong>Y</strong>.</p>
    <p><strong>Упражнение 2.1. </strong>Скажите, верны ли следующие целевые утверждения, какие переменные будут конкретизированы и какие им будут даны значения:</p>
    <p>пилоты(А, Лондон) = пилоты(лондон, париж) </p>
    <p>точка(Х,Y,Z) = точка(Х1,Y1,Z1) = слово(буква)</p>
    <p>существительное(альфа) = альфа</p>
    <p>'викарий' = викарий</p>
    <p>f(X,X) = f(a,b) </p>
    <p>f(X,a(b,c)) = f(Z,a(Z,c)</p>
   </section>
   <section>
    <title>
     <p><strong>2.5. Арифметика</strong></p>
    </title>
    <p>ЭВМ часто используют для выполнения действий над числами. С помощью арифметических операций можно сравнивать числа и проводить вычисления. В данном разделе будут приведены примеры такого использования арифметических операций.</p>
    <p>Рассмотрим сначала сравнение чисел. Для двух заданных чисел всегда можно сказать, <emphasis>равно ли </emphasis>одно число другому, <emphasis>меньше ли </emphasis>одно число другого, <emphasis>больше ли </emphasis>одно число другого. Пролог предоставляет некоторые «встроенные» предикаты, позволяющие</p>
    <p>сравнивать числа. Для этого могут использоваться обсуждавшиеся в разд. 2.4 предикаты '='и '\='. Их аргументами могут быть конкретизированные переменные, значениями которых являются целые числа, а также целые числа, записанные в виде констант. Существует еще несколько предикатов, позволяющих сравнивать числа. Перечислим здесь все эти предикаты, отметив предварительно, что каждый из них можно использовать в форме инфиксного оператора.</p>
    <p><strong>X = Y</strong> <emphasis>X и Y представляют одно и то же число</emphasis></p>
    <p><strong>X \= Y</strong> <emphasis>X и Y представляют разные числа</emphasis></p>
    <p><strong>X ‹ Y</strong> <emphasis>X меньше Y</emphasis></p>
    <p><strong>X › Y</strong> <emphasis>X больше Y</emphasis></p>
    <p><strong>X =‹ Y</strong> <emphasis>X меньше или равно Y</emphasis></p>
    <p><strong>X ›= Y</strong> <emphasis>X больше или равно Y</emphasis></p>
    <p>Отметим, что символ «меньше или равно» записывается не так, как во многих других языках программирования (обычно ‹=). Это сделано в Прологе для того, чтобы программист мог использовать похожий на стрелку атом ‹= для своих собственных нужд.</p>
    <p>Поскольку операторы сравнения являются предикатами, можно было бы предположить, что в Прологе допустим следующий факт:</p>
    <empty-line/>
    <p>2›3.</p>
    <empty-line/>
    <p>утверждающий, что 2 на самом деле больше 3. Факты, подобные этому, с формальной стороны полностью соответствует правилам Пролога. Однако Пролог не разрешает добавлять факты к «встроенным» предикатам. Такая особенность предотвращает непредсказуемые изменения смысла встроенных предикатов. В главе 6 будут описаны все встроенные предикаты, в том числе и те, с которыми мы уже познакомились.</p>
    <p>В качестве первого примера использования чисел предположим, что у нас есть база данных, содержащая сведения о принцах, правивших Уэльсом в 9-м и 10-м веках. Предикат <strong>правил(Х,Y,Z) </strong>истинен, если принц с именем <strong>X</strong> находился у власти с года <strong>Y</strong> по год <strong>Z</strong>. Список фактов базы данных выглядит следующим образом:</p>
    <empty-line/>
    <p>правил(родри,844,878). </p>
    <p>правил(анаравд,878,916). </p>
    <p>правил(хивел_дда,916,950). </p>
    <p>правил(лаго_ад_идвал,950,979). </p>
    <p>правил(хивел_аб_иеуаф,979,985). </p>
    <p>правил(кадваллон,985,986). </p>
    <p>правил(маредудд, 986,999).</p>
    <empty-line/>
    <p>Теперь предположим, что мы хотим узнать, кто был на троне Уэльса в каком-то конкретном году. Можно было бы определить правило, аргументами которого являлись бы имя и дата и которое просматривало бы базу данных и сравнивало заданную дату с теми, что указаны в фактах. Давайте определим предикат <strong>принц(X, Y), </strong>который истинен, если принц по имени <strong>X</strong> был на троне в год <strong>Y</strong>:</p>
    <p>X был </p>
    <p> <emphasis>принцем в год Y, если:</emphasis></p>
    <p><emphasis> X правил с года А по год В и </emphasis></p>
    <p><emphasis> Y находится между А и В или совпадает с А или В.</emphasis></p>
    <p>Первое целевое утверждение будет согласовываться с базой данных путем поиска подходящего факта. Второе целевое утверждение верно, если <strong>Y</strong> равно <strong>А</strong>, или <strong>Y</strong> равно <strong>В</strong>, или <strong>Y</strong> лежит между <strong>А</strong> и <strong>В</strong>. Для проверки можно использовать утверждения <strong>Y›=А</strong> и <strong>Y=‹В</strong>. Переписав это на Прологе, получаем следующее правило:</p>
    <empty-line/>
    <p>принц (X,Y):-правил(Х,А,В),Y ›= А,Y =‹ В.</p>
    <empty-line/>
    <p>Ниже приведено несколько возможных запросов и ответов, даваемых Пролог-системой.</p>
    <empty-line/>
    <p>?- принц(кадваллон,986).</p>
    <p>да</p>
    <p>?- принц(родри,1979).</p>
    <p>нет</p>
    <p>?- принц(Х,900).</p>
    <p>Х = анаравд</p>
    <p>да</p>
    <p>?- принц(X,979).</p>
    <p>X = лаго_ад_идвал<strikethrough>;</strikethrough></p>
    <p>X = хивел_аб_иеуаф да</p>
    <empty-line/>
    <p>Заметьте использование переменных в последних примерах. Убедитесь, что вы понимаете, как работает механизм поиска Пролога при ответе на подобные вопросы.</p>
    <p>Арифметические операции могут также использоваться для вычислений. Например, если имеются сведения о населении и площади некоторой страны, то можно вычислить среднюю плотность населения для этой страны. Средняя плотность населения показывает, сколь тесно было бы в данной стране, если бы ее население было равномерно распределено по всей ее территории.</p>
    <p>Рассмотрим следующую базу данных, содержащую сведения о населении и площади некоторых стран в 1976 г. Для представления связи между страной и ее населением будет использоваться предикат <strong>нас. </strong>В наши дни население обычно характеризуется довольно большими числами. Не все версии Пролога позволяют работать с такими числами. Поэтому будем исчислять население в миллионах: <strong>нас(Х, Y) </strong>означает, что население страны <strong>X</strong> составляет примерно «<strong>Y</strong> миллионов» людей. Предикат <strong>площадь </strong>будет обозначать связь между страной и ее площадью (в миллионах квадратных километров):</p>
    <empty-line/>
    <p>нас(сша,203). </p>
    <p>нас(индия, 548). </p>
    <p>нас(китай,800). </p>
    <p>нас(бразилия,108).</p>
    <p>площадь(сша,8). </p>
    <p>площадь(индия,3). </p>
    <p>площадь(китай,9). </p>
    <p>площадь(бразилия,8).</p>
    <empty-line/>
    <p>Теперь для того, чтобы найти среднюю плотность населения некоторой страны, мы должны использовать правило, гласящее, что значение плотности получается делением числа, представляющего население, на число, представляющее площадь.</p>
    <p>Введем предикат <strong>плотность(Х, </strong>Y), где X – это страна, a Y – плотность населения в данной стране, и запишем соответствующее правило на Прологе:</p>
    <empty-line/>
    <p>плотность(X,Y):-нас(Х,Р), площадь(Х,А), Y is Р/А.</p>
    <empty-line/>
    <p>Данное правило читается следующим образом:</p>
    <p><emphasis>Плотность населения страны X представляется числом Y, если:</emphasis></p>
    <p><emphasis> Население X </emphasis>- <emphasis>это Р, и Площадь X </emphasis>- <emphasis>это A, и Y вычисляется делением Р на A.</emphasis></p>
    <p>В правиле используется оператор деления '/' введенный в предыдущем разделе. Операция деления выполняется на самом деле как целочисленное деление, сохраняющее только целую часть результата.</p>
    <p>Новым здесь является инфиксный оператор <strong>'is'</strong>. Его правый аргумент – терм, интерпретируемый как арифметическое выражение. Для того чтобы выполнить <strong>'is'</strong>, Пролог сначала вычисляет его правый аргумент в соответствии с правилами арифметики. Результат вычислений проверяется на соответствие с левыми аргументами, чтобы определить, доказуемо ли целевое утверждение. В вышеприведенном примере переменная <strong>Y</strong> до исполнения <strong>is</strong> не конкретизирована, и она остается в таком состоянии до вычисления выражения. Когда выражение вычислено, <strong>Y</strong> принимает значение, равное полученной величине. Это означает, что должны быть известны значения всех переменных, находящихся справа от <strong>is</strong>.</p>
    <p>Предикат <strong>is</strong> нужно использовать каждый раз, когда требуется вычислить арифметическое выражение. Напомним, что конструкции вида <strong>Р/А</strong> являются такими же обычными структурами Пролога, как и <strong>автор(эмили,бронте). </strong>Но если некоторая структура интерпретируется как арифметическое выражение, то к ней применяется специальная операция, заключающаяся в фактическом выполнении арифметических действий над двоичными представлениями элементов структуры и получении соответствующего результата. Эта операция называется <emphasis>вычислением </emphasis>арифметического выражения. Не любую структуру можно вычислить как арифметическое выражение. Например, очевидно, что нельзя вычислить структуру <strong>автор, </strong>поскольку функтор <strong>автор </strong>не определен как арифметическая операция.</p>
    <p>Вернемся к примеру со средней плотностью населения. Нетрудно видеть, что типичные вопросы и ответы на них выглядят следующим образом:</p>
    <empty-line/>
    <p>?- плотность(китай,X).</p>
    <p>X=89</p>
    <p>?= плотность(турция,X).</p>
    <p>нет</p>
    <empty-line/>
    <p><strong>Х=89 </strong>в первом вопросе представляет собой ответ Пролог-системы, означающий 89 человек на квадратный километр. Второй запрос не выполним, поскольку в базе данных нашего примера невозможно найти сведения о населении Турции.</p>
    <p>Набор допустимых арифметических операций зависит от используемой ЭВМ. Однако все Пролог-системы обеспечивают выполнение следующих операций:</p>
    <p><strong>X+Y</strong> <emphasis>сумма X и Y</emphasis></p>
    <p><strong>X–Y</strong> <emphasis>разность X и Y</emphasis></p>
    <p><strong>X*Y</strong> <emphasis>произведение X и Y</emphasis></p>
    <p><strong>X/Y</strong> <emphasis>частное от деления X на Y</emphasis></p>
    <p><strong>X mod Y</strong> <emphasis>остаток от деления X на Y</emphasis></p>
    <p>Этот список вместе со списком операторов сравнения, приведенным выше, содержит все, что необходимо для решения простых арифметических задач. Поскольку Пролог в основном ориентирован на нечисловые задачи, арифметические возможности не так важны, как в других языках программирования.</p>
   </section>
   <section>
    <title>
     <p>2.6. Общая схема согласования целевых утверждений</p>
    </title>
    <section>
     <p>Для ответа на вопрос, поступивший от программиста, Пролог выполняет решение некоторой задачи. Вопрос содержит <emphasis>конъюнкцию </emphasis>целевых утверждений, которые необходимо попытаться доказать, т. е. проверить на согласованность с базой данных. Для доказательства целевых утверждений Пролог использует известные <emphasis>утверждения. </emphasis>Факт может привести к немедленному доказательству (согласованию) целевого утверждения, в то время как правило может только свести данную задачу к конъюнкции предикатов-подцелей. Однако использование некоторого утверждения возможно только, когда оно «подходит» к рассматриваемому целевому утверждению, т. е. соответствует ему (сопоставимо с ним). Если целевое утверждение не доказано, возбуждается <emphasis>процесс возврата. </emphasis>Процесс возврата заключается в пересмотре проделанной работы и попытках передоказать (вновь согласовать) целевые утверждения путем поиска альтернативных путей доказательства. Более того, если программист неудовлетворен ответом на свой вопрос, он может сам инициировать процесс возврата, нажав на клавиатуре клавишу ';', после того как Пролог информирует его о найденном решении. В данном разделе будут представлены диаграммы, показывающие, как Пролог пытается доказать и передоказать целевые утверждения.</p>
    </section>
    <section>
     <title>
      <p>2.6.1. Успешное доказательство конъюнкции целевых утверждений</p>
     </title>
     <p>Пролог пытается согласовать с базой данных входящие в конъюнкцию целевые утверждения в том порядке, в каком они написаны (слева направо), где бы они ни появились – в теле правила или в вопросе. Это означает, что Пролог не будет проверять некоторое утверждение, пока не будет доказан его сосед слева. А сосед справа будет рассматриваться только после доказательства данного целевого утверждения. Рассмотрим следующую простую программу о семейных связях:</p>
     <empty-line/>
     <p>родители (С,M,F):- мать(С,М), отец(C,F).</p>
     <p>мать(джон,анна).</p>
     <p>мать(мэри,анна).</p>
     <p>отец(мэри,фред). отец(джон,фред).</p>
     <empty-line/>
     <p>Давайте рассмотрим последовательность событий, позволяющую дать ответ на вопрос:</p>
     <empty-line/>
     <p>?-женщина(мэри), родители(мэри,М,Р), родители(джон,М,Р).</p>
     <image l:href="#pic_2.jpg"/>
     <empty-line/>
     <empty-line/>
     <p>Данный вопрос позволяет определить, является ли <strong>мэри</strong> сестрой <strong>джона</strong>. Для того чтобы дать ответ Прологу, необходимо согласовать с базой данных последовательность подцелей, приведенных на рис. 2.1.</p>
     <p>Представим целевые утверждения в виде прямоугольников, распределенных по странице. Стрелка, начинающаяся в верхней части страницы, указывает, какие целевые утверждения уже согласованы. Прямоугольники, через которые стрелка уже прошла, соответствуют согласованным целевым утверждениям. Прямоугольники, лежащие ниже острия стрелки, соответствуют целевым утверждениям, которые Пролог еще не рассматривал. При выполнении программы стрелка движется вверх и вниз по странице в соответствии с переходом Пролога от одного целевого утверждения к другому. Будем называть ее <emphasis>цепочкой доказательств. </emphasis>В данном примере стрелка начинается в верхней части страницы, как показано выше. По мере согласования трех целевых утверждений она будет удлиняться вниз, проходя через соответствующие прямоугольники. Конечная ситуация представлена на рис. 2.2. Отметим, что в ходе доказательства согласованности целевых утверждений с базой данных были найдены значения для переменных <strong>М</strong> и <strong>F</strong>.</p>
     <p>Такая диаграмма иллюстрирует общую структуру происходящего, но она не показывает, <emphasis>как </emphasis>доказывались эти три целевых утверждения. Для того чтобы показать это, поместим внутрь прямоугольников больше информации. Давайте посмотрим, как доказывалось второе целевое утверждение. Доказательство согласованности целевого утверждения с базой данных включает в себя поиск в базе данных <emphasis>соответствующих </emphasis>(сопоставимых) утверждений, пометку этого места базы данных и затем доказательств возникших подцелей. Этот процесс для второго целевого утверждения можно проиллюстрировать, включив в прямоугольник <strong>родители </strong>индикацию выбранного утверждения и возникшие подцели. Выбранное утверждение обозначается числом в скобках, в данном случае <strong>(1)</strong>. Это число указывает <emphasis>номер выбранного утверждения в наборе утверждений с соответствующим предикатом. </emphasis>Таким образом, число <strong>1</strong> означает, что было выбрано первое утверждение с данным предикатом. Эта информация достаточна для отметки места в базе данных. Подцели заключены в маленькие прямоугольники, помещенные в прямоугольник данного целевого утверждения. В момент, когда выбрано утверждение <strong>родители, </strong>ситуация выглядит так, как показано на рис. 2.3.</p>
     <image l:href="#pic_3.jpg"/>
     <empty-line/>
     <p>Рис. 2.3.</p>
     <p>Стрелка вошла в прямоугольник <strong>родители </strong>и прошла через скобки, указывая, что выбрано некоторое утверждение. Данное утверждение создало две подцели – <strong>мать </strong>и <strong>отец. В </strong>данный момент для получения ответа на вопрос необходимо, чтобы стрелка прошла через два маленьких прямоугольника, вышла из прямоугольника <strong>родители </strong>и затем прошла через второй прямоугольник <strong>родители. </strong>Когда стрелка проходит через маленькие прямоугольники, необходимо выполнить те же самые шаги: выбор соответствующего утверждения и доказательство порождаемых им подцелей. В данном примере для каждого из этих двух целевых утверждений в базе данных находится соответствующий факт, и их согласованность с базой данных доказывается. На рис. 2.4 приведено более детальное изображение ситуации в момент получения ответа на вопрос.</p>
     <image l:href="#pic_4.jpg"/>
     <p>Рис. 2.4.</p>
     <p>Отметим, что для полноты картины нам необходимо было бы показать, как доказываются целевые утверждения <strong>женщина(мэри) </strong>и <strong>родители(джон,анна,фред). </strong>Однако столь подробная диаграмма не поместилась бы на одной странице.</p>
     <p>Данный пример иллюстрирует общую схему рассмотрения целевых утверждений, объединенных в конъюнкцию, для случая, когда все цели согласуются с базой данных. Стрелка перемещается вниз по странице, по очереди проходя через прямоугольники. Когда стрелка входит в какой-либо прямоугольник, выбирается некоторое утверждение и отмечается его позиция. Если данное утверждение сопоставимо с целью и является фактом, стрелка может покинуть прямоугольник (такая ситуация имела место для целевых утверждений <strong>мать </strong>и <strong>отец). </strong>Если же утверждение сопоставимо с целью, но является правилом, создаются прямоугольники для подцелей, и стрелка должна пройти через них, прежде чем она сможет покинуть первоначальный прямоугольник.</p>
    </section>
    <section>
     <title>
      <p><emphasis>2.6.2. Рассмотрение целевых утверждений при использовании механизма возврата</emphasis></p>
     </title>
     <p>Когда целевое утверждение недоказуемо (проверены все возможные утверждения или пользователь нажал клавишу ';'), «цепочка доказательств» проходит назад тот путь, по которому она пришла в данную точку. Она возвращается в покинутые перед этим прямоугольники для того, чтобы попытаться <emphasis>передоказать </emphasis>(вновь согласовать) соответствующие целевые утверждения. Когда стрелка возвращается в то место, где было выбрано какое-то утверждение (это событие изображается числом в скобках), Пролог пытается найти альтернативное утверждение, соответствующее данной цели. Сначала делаются неопределенными все переменные, которые были конкретизированы в ходе доказательства данного целевого утверждения. Затем возобновляется поиск в базе данных, начиная с того места, где был оставлен маркер. Если будет найдено другое утверждение, соответствующее целевому, Пролог помечает это место, и дальше события развиваются, как было описано выше в разд. 2.6.1. Отметим, что рассмотрение любых целевых утверждений, находящихся «ниже» данного (даже если они были пройдены в ходе рассмотрения предыдущей альтернативы), всегда начинается с самого начала. Пролог пытается доказать их без учета положения маркера (т. е. это не передоказательство). Если не удается найти другое подходящее утверждение, данное целевое утверждение считается недоказуемым и стрелка продолжает возвращаться назад до следующего маркера. В нашем примере, если целевое утверждение <strong>родители(джон,анна,фред) </strong>недоказуемо, стрелка уйдет назад из прямоугольника <strong>родители(джон,анна,фред) </strong>и войдет в прямоугольник <strong>родители (мэри,анна,фред) </strong>снизу для того, чтобы попытаться передоказать данное целевое утверждение (см. рис. 2.5).</p>
     <image l:href="#pic_5.jpg"/>
     <p>Рис. 2.5.</p>
     <p>Отступая дальше, стрелка достигнет места, где было выбрано утверждение, соответствующее целевому утверждению отец. В первую очередь освобождаются все переменные, которые были конкретизированы в результате использования данного утверждения. Это означает, что переменная <strong>F</strong> вновь становится неконкретизированной. Затем Пролог просматривает базу данных, начиная с утверждения, следующего за первым утверждением с предикатом <strong>отец </strong>(здесь находится маркер), пытаясь найти альтернативное утверждение. Если предположить, что <strong>мэри </strong>имеет только одного отца, то этот процесс успехом не завершится. Поэтому стрелка продолжит отступление. Она покинет прямоугольник <strong>отец(мэри, F) </strong>(это целевое утверждение недоказуемо) и вернется в прямоугольник <strong>мать(мэри,анна) </strong>(для того, чтобы попытаться передоказать данное целевое утверждение) (см. рис. 2.6).</p>
     <image l:href="#pic_6.jpg"/>
     <empty-line/>
     <p>Рис. 2.6.</p>
     <p>Отступление стрелки будет продолжаться до успешного доказательства соответствующего целевого утверждения.</p>
     <p>Эти примеры иллюстрируют общую схему повторного рассмотрения целевых утверждений в процессе возврата. Когда некоторое целевое утверждение недоказуемо, стрелка возвращается из соответствующего прямоугольника в прямоугольник с предшествующим целевым утверждением. Стрелка отступает до тех пор, пока не встретится маркер. Все переменные, которые были конкретизированы в результате предыдущего выбора сопоставимого утверждения, становятся неконкретизированными. Затем Пролог возобновляет поиск в базе данных сопоставимого утверждения, начиная с маркера. Если сопоставимое утверждение будет найдено, новое место помечается маркером, создаются прямоугольники для целевых подутверждений и стрелка опять начинает движение вниз. В противном случае стрелка продолжает отступать вверх в поисках другого маркера.</p>
    </section>
    <section>
     <title>
      <p><emphasis>2.6.3. Установление соответствия</emphasis></p>
     </title>
     <p>Правила, определяющие, подходит ли некоторое утверждение для согласования с целевым утверждением, выглядят следующим образом. Отметим, что при выборе утверждения все переменные сначала неконкретизированы.</p>
     <p>• Неконкретизированная переменная соответствует любому объекту. Этот объект становится значением переменной.</p>
     <p>• Целое число или атом соответствуют только самим себе.</p>
     <p>• Между структурами можно установить соответствие, только если они имеют одинаковый функтор, одинаковое число параметров и соответствующие параметры соответствуют друг другу.</p>
     <p>Особым случаем является установление соответствия между двумя неконкретизированными переменными. В этом случае мы говорим, что переменные <emphasis>сцеплены. </emphasis>Две сцепленные переменные обладают следующим свойством: как только одна из них принимает конкретное значение, то же самое конкретное значение принимает и другая.</p>
     <p>Если читатель заметил сходство между установлением соответствия и приравниванием аргументов (разд. 2.4), то он совершенно прав. Дело в том, что предикат '=' пытается сделать свои аргументы равными путем установления соответствия между ними.</p>
     <p>Попытаемся применить на практике наши знания об операторах, арифметических действиях и установлении соответствия. Предположим, что в базе данных находятся следующие факты:</p>
     <empty-line/>
     <p>сумма(5). </p>
     <p>сумма(З). </p>
     <p>сумма(X+Y).</p>
     <empty-line/>
     <p>Рассмотрим вопрос:</p>
     <empty-line/>
     <p>?- сумма(2+3).</p>
     <empty-line/>
     <p>Какой из вышеприведенных фактов будет соответствовать данному запросу? Если вы думаете, что таковым будет первый факт, вам следует вернуться назад и еще раз прочесть разделы о структурах и операторах. В вопросе аргументом структуры <strong>сумма</strong> является <emphasis>структура </emphasis>с функтором + и компонентами 2 и 3. На самом деле указанной цели соответствует третий факт, при этом переменные <strong>X</strong> и <strong>Y</strong> принимают конкретные значения 2 и 3.</p>
     <p>С другой стороны, если программист действительно хочет вычислить сумму, ему следовало бы воспользоваться предикатом is. Он должен был бы написать</p>
     <empty-line/>
     <p>?- X is 2+3.</p>
     <empty-line/>
     <p>или (в качестве развлечения) он мог бы определить предикат сложить, связывающий два целых числа и их сумму:</p>
     <empty-line/>
     <p>сложить (X, Y, Z):- Z is X+Y.</p>
     <empty-line/>
     <p>В этом определении <strong>X</strong> и <strong>Y</strong> должны быть конкретизированы, а <strong>Z</strong> неконкретизирована.</p>
    </section>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 3. <strong>ИСПОЛЬЗОВАНИЕ СТРУКТУР ДАННЫХ</strong></p>
   </title>
   <section>
    <p>Оксфордский толковый словарь английского языка определяет слово «рекурсия» следующим образом:</p>
    <p>РЕКУРСИЯ. [Теперь употребляется редко, устаревшее.] Обратное движение, возвращение.</p>
    <p>Это определение загадочно и, по-видимому, устаревшее. В настоящее время рекурсия является очень популярным и мощным средством в области нечислового программирования. Она используется в двух случаях: для описания структур, имеющих другие структуры в качестве компонент, и для описания программ, выполнению которых предшествует выполнение их собственной копии. Иногда начинающие программисты относятся к рекурсии с подозрением, не понимая, как это можно определить некоторое отношение через само себя? В Прологе рекурсия – это нормальный и естественный способ представления структур данных и программ. Мы надеемся, что тема этой главы – рекурсия – обретает ясность удобным и ненавязчивым образом.</p>
   </section>
   <section>
    <title>
     <p>3.1. Структуры и деревья</p>
    </title>
    <p>Чтобы легче было понять сложную структуру, ее обычно представляют в виде <emphasis>дерева, </emphasis>в котором каждому функтору соответствует вершина, а компонентам соответствуют ветви дерева. Каждая ветвь может указывать на другую структуру, так что мы можем иметь структуры внутри структур. Обычно принято изображать дерево таким образом, чтобы корень дерева находился вверху, а ветви были направлены вниз, как это показано на рис. 3.1. Заметим, что два последних дерева имеют одинаковую форму, хотя корни и листья деревьев различны. Прежде чем читать дальше, вы должны быть уверены в том, что можете представить в виде дерева каждую из структур, с которыми вы уже сталкивались в предыдущих главах.</p>
    <p>Предположим, у нас есть предложение «Джону нравится Мэри», и необходимо представить синтаксическую структуру этого предложения. В английском языке имеется очень простое синтаксическое правило построения предложений: предложение состоит из существительного, за которым следует глагольная группа. В свою очередь глагольная группа состоит из глагола и другого существительного. Это отношение между частями предложения может быть описано следующей структурой (которая представлена в виде дерева, приведенного на рис. 3.2): <strong>предложение(существительное, глагольная_группа(глагол, существительное)).</strong></p>
    <image l:href="#pic_7.jpg"/>
    <empty-line/>
    <p>Рис. 3.1.</p>
    <p>Если мы возьмем наше предложение («Джону нравится Мэри») и вставим слова из этого предложения в качестве аргументов функторов <strong>существительное </strong>и <strong>глагол </strong>в структуру предложения, то мы получим (см. рис. 3.3):</p>
    <p>предложение(существительное(джон), глагольная_группа(глагол(нравится), существительное(мэри)))</p>
    <p>Этот пример показывает, как можно использовать структуры в языке Пролог для представления синтаксиса очень простых предложений. В общем случае если мы знаем, какой частью речи является каждое слово в предложении, то можно записать структуру на Прологе, которая в явном виде описывает отношения между различными словами в предложении. Эта задача сама по себе представляет интересную тему исследования, и далее мы еще вернемся к вопросу о том, как, используя Пролог, заставить ЭВМ «понимать» некоторые простые предложения.</p>
    <p>Деревья могут также применяться для графического описания переменных внутри структуры, в частности показывая, как сцеплены переменные, имеющие одинаковые имена (см. рис. 3.4).</p>
    <empty-line/>
    <image l:href="#pic_8.jpg"/>
    <p> Рис. 3.2.</p>
    <image l:href="#pic_9.jpg"/>
    <p>Рис. 3.3.</p>
    <image l:href="#pic_10.jpg"/>
    <p>Рис. 3.4.</p>
   </section>
   <section>
    <title>
     <p>3.2. Списки</p>
    </title>
    <p><emphasis>Список </emphasis>- довольно широко используемая структура данных в области числового программирования. Список -это <emphasis>упорядоченная последовательность элементов, </emphasis>которая может иметь произвольную длину. Признак <emphasis>упорядоченный </emphasis>указывает на то, что порядок элементов в последовательности является существенным. <emphasis>Элементами </emphasis>списка могут быть любые термы – константы, переменные, структуры, которые включают, конечно, и другие списки. Указанные свойства очень полезны в ситуации, когда мы не в состоянии заранее предсказать, насколько большим должен быть список и какую информацию он будет содержать. Более того, списки позволяют представить практически любой тип структуры, который может потребоваться при символьных вычислениях. Списки широко используются для представления деревьев синтаксического разбора, грамматик, карт городов, программ для ЭВМ и математических объектов, таких как графы, формулы и функции. Существует язык программирования – Лисп, в котором единственными доступными структурами данных являются константа и список. Однако в Прологе список – это просто один из частных видов структуры.</p>
    <p>Списки могут быть представлены как специального вида дерево. Список – это любой <emphasis>пустой список, </emphasis>не содержащий ни одного элемента, либо структура, имеющая две компоненты: голову и хвост списка. Конец списка обычно представляют как хвост, который является пустым списком. Пустой список записывают как [] – открывающая квадратная скобка, за которой следует закрывающая квадратная скобка. Голова и хвост списка являются компонентами функтора, обозначаемого точкой '.'. Так, список, состоящий из одного элемента '<strong>а</strong>' есть <strong>.(а, [])</strong>, а его представление в виде дерева имеет вид</p>
    <image l:href="#pic_11.jpg"/>
    <p>Аналогично список, состоящий из атомов <strong>a</strong>, <strong>b</strong> и <strong>с</strong>, мог бы быть записан как <strong>.(а,.(b,.(с,[])))</strong>, что изображается следующим образом:</p>
    <image l:href="#pic_12.jpg"/>
    <p>Иногда функтор точка ('.') определяется как оператор, так что допустимо для Пролога два последних списка записать как <strong>а.[]</strong> и <strong>а.(b.(с.[])))</strong>. Второй список можно было бы записать просто как <strong>а.b.с.[]</strong>, так как функтор точка – правоассоциативный оператор. Списки являются упорядоченными последовательностями элементов, так что список <strong>а.b</strong> отличается от списка <strong>b.а</strong>.</p>
    <p>Некоторые любят записывать древовидные диаграммы списков в виде дерева, «растущего» слева направо, ветви которого направлены вниз. Приведенный выше список, представленный диаграммой в виде такой «виноградной лозы» выглядит так:</p>
    <image l:href="#pic_13.jpg"/>
    <p>В этой диаграмме компонента функтора '.', соответствующая голове списка, «свисает» вниз, а компонента, соответствующая хвосту списка, «растет» вправо. Конец списка четко выделен тем, что последняя компонента – хвост списка – является пустым списком. Главное преимущество использования диаграммы для представления списка заключается в том, что она может быть записана справа налево на листе бумаги.</p>
    <p>«Виноградная» диаграмма может оказаться удобной для записи списков на бумаге, когда нам необходимо видеть структуру списка, но в программах на Прологе для записи списков такие диаграммы не используются. Так как запись сложных списков с помощью функтора '.' часто оказывается неудобной, то в Прологе предусмотрена другая синтаксическая форма, которая может быть использована для записи списков в программе. Это так называемая <emphasis>скобочная форма записи списка. </emphasis>Она представляет собой заключенную в квадратные скобки последовательность элементов списка, разделенных запятыми. Например, упоминавшиеся выше списки могут быть записаны в скобочной форме в виде <strong>[а]</strong> и <strong>[а, b, с]</strong>. Списки могут содержать другие списки или переменные. Например, в Прологе допустимы следующие списки:</p>
    <p>[]</p>
    <p>[конкретный, человек, [любит, ловить, рыбу]] </p>
    <p>[а, V1, b, [X, Y]]</p>
    <p>Переменные, входящие в списки, ничем не отличаются от переменных в любой другой структуре. Они в любой момент могут быть конкретизированы, так что умелое использование переменных может обеспечить образование «пустых мест» в списке, которые впоследствии могут быть заполнены данными.</p>
    <p>Чтобы продемонстрировать структуру списков, содержащих в качестве элементов другие списки, приведем «виноградную» диаграмму для последнего из рассмотренных списков:</p>
    <image l:href="#pic_14.jpg"/>
    <p>Из приведенной диаграммы ясно видно, что каждый ее горизонтальный уровень является списком, состоящим из некоторого числа элементов. Верхний уровень на приведенной диаграмме представляет список, содержащий четыре элемента, один из которых сам является списком. Второй уровень, содержащий два элемента, представляет четвертый элемент списка верхнего уровня. Работа со списками основана на расщеплении их <emphasis>наголову </emphasis>и <emphasis>хвост </emphasis>списка. Голова списка – это первый аргумент функтора '.', который используется для конструирования списка. Хвост списка – это второй аргумент функтора '.'. В случае когда для записи списка используется скобочная форма записи, головой списка является первый его элемент. Хвост списка представляет <emphasis>список, </emphasis>состоящий из всех элементов исходного списка, за исключением первого его элемента. Следующие примеры демонстрируют расщепление списков на голову и хвост:</p>
    <table>
     <tr align="left">
      <td align="left" valign="top"><strong>Список</strong></td>
      <td align="left" valign="top"><strong>Голова</strong></td>
      <td align="left" valign="top"><strong>Хвост</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[а, b, с]</strong></td>
      <td align="left" valign="top"><strong>а</strong></td>
      <td align="left" valign="top"><strong>[b, с]</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[а,]</strong></td>
      <td align="left" valign="top"><strong>а</strong></td>
      <td align="left" valign="top"><strong>[]</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[]</strong></td>
      <td align="left" valign="top"/>
      <td align="left" valign="top"/>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[[эта, кошка], сидела]</strong></td>
      <td align="left" valign="top"><strong>[эта, кошка]</strong></td>
      <td align="left" valign="top"><strong>[сидела]</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[эта, [кошка, сидела]]</strong></td>
      <td align="left" valign="top"><strong>эта</strong></td>
      <td align="left" valign="top"><strong>[кошка, сидела]]</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[эта, [кошка, села], на пол]</strong></td>
      <td align="left" valign="top"><strong>эта</strong></td>
      <td align="left" valign="top"><strong>[кошка, села], на пол]</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[X+Y, х + y]</strong></td>
      <td align="left" valign="top"><strong>X + Y</strong></td>
      <td align="left" valign="top"><strong>[x + y]</strong></td>
     </tr>
    </table>
    <p>Заметим, что пустой список не имеет ни головы, ни хвоста. В последнем примере оператор ± используется как функтор для структур <strong>+(Х, Y)</strong> и <strong>+(х,у)</strong>.</p>
    <p>Так как операция расщепления списка на голову и хвост очень широко используется, то в Прологе введена специальная форма для представления списка с головой <strong>X</strong> и хвостом <strong>Y</strong>. Это записывается как <strong>[X|Y]</strong>, где для разделения <strong>X</strong> и <strong>Y</strong> используется вертикальная черта. При конкретизации структуры подобного вида <strong>X</strong> сопоставляется с головой списка, a <strong>Y</strong> – с хвостом списка, как это показано в следующем примере:</p>
    <empty-line/>
    <p>p([1, 2, 3]).</p>
    <p>p([эта, кошка, сидела, [на, этой, подстилке]]).</p>
    <p>?- p([X|Y]).</p>
    <p>X = 1 Y=[2,3] <strikethrough>;</strikethrough></p>
    <p>X=эта Y=[кошка, сидела, [на, этой, подстилке]]</p>
    <p>?- p([_,_,_,[_|X]]).</p>
    <p>X=[этой, подстилке]</p>
    <empty-line/>
    <p>Ниже приведено еще несколько примеров с использованием различных синтаксических возможностей записи списков, показывающих, каким образом производится сопоставление списков. В этих примерах делается попытка сопоставить два заданных списка, конкретизируя переменные, если это возможно.</p>
    <table>
     <tr align="left">
      <td align="left" valign="top"><strong>Список 1</strong></td>
      <td align="left" valign="top"><strong>Список 2</strong></td>
      <td align="left" valign="top"><strong>Конкретизация</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[X, Y, Z] </strong></td>
      <td align="left" valign="top"><strong>[джону,нравится,рыба] </strong></td>
      <td align="left" valign="top"><strong>X=джону Y= нравится Z = рыба </strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[кошка] </strong></td>
      <td align="left" valign="top"><strong>[X| Y] </strong></td>
      <td align="left" valign="top"><strong>X= кошка</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[X, Y | Z] </strong></td>
      <td align="left" valign="top"><strong>[мэри,нравится,вино] </strong></td>
      <td align="left" valign="top"><strong>X = мэри  Y = нравится Z = [вино]</strong> </td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[[этот, Y]|Z] </strong></td>
      <td align="left" valign="top"><strong>[[X, заяц], [находится, здесь]]  </strong></td>
      <td align="left" valign="top"><strong><strong>X = этот Y = заяц Z = [[находится_ здесь]]</strong> </strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[X, Y|Z, W] </strong></td>
      <td align="left" valign="top">(синтаксически некорректная конструкция списка) </td>
      <td align="left" valign="top"/>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[золотистый | T] </strong></td>
      <td align="left" valign="top"><strong>[золотистый, норфолк] </strong></td>
      <td align="left" valign="top"><strong>T= [норфолк]</strong></td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[лошадь, X] </strong></td>
      <td align="left" valign="top"><strong>[белая, лошадь]</strong></td>
      <td align="left" valign="top">(сопоставление невозможно) </td>
     </tr>
     <tr align="left">
      <td align="left" valign="top"><strong>[белая | Q] </strong></td>
      <td align="left" valign="top"><strong>[P | лошадь]</strong></td>
      <td align="left" valign="top"><strong>P</strong> = <strong>белая Q</strong> = <strong>лошадь</strong></td>
     </tr>
    </table>
    <p>Как видно из последнего примера, используя скобочную форму записи списков, можно создавать структуры, похожие на списки, но не заканчивающиеся пустым списком. Одна из таких структур, <strong>[белая|лошадь], </strong>обозначает структуру, головой которой является <strong>белая, </strong>а хвостом – <strong>лошадь. </strong>Константа <strong>лошадь </strong>не является ни списком, ни пустым списком, и, как мы увидим далее, обработка таких структур требует большой осторожности, когда они используются в качестве хвоста списка.</p>
    <p>Существует еще одна область применения списков – это представление строк литер. Иногда возникает необходимость в использовании строк литер для печати или ввода текста. Если строка литер заключена в двойные кавычки, то эта строка представляется как список кодов, соответствующих литерам строки. Для кодировки литер используется код ASCII, который обсуждался в разд. 2.2. Например, строка <strong>"system" </strong>преобразуется в Прологе в следующий список: <strong>[115, 121, 115</strong>, <strong>116, 101, 109].</strong></p>
   </section>
   <section>
    <title>
     <p>3.3. Принадлежность элементов списку</p>
    </title>
    <p>Предположим, что имеется некоторый список, в котором <strong>X</strong> обозначает его голову, a <strong>Y</strong> – хвост списка. Напомним, что такой список мы можем записать так: <strong>[X|Y]</strong>. Этот список мог бы содержать, например, клички тех лошадей потомков жеребца <strong>Coriander, </strong>которые все выиграли скачки в Великобритании в 1927 году:</p>
    <p>[curragh_tip, music_star, park_mill, portland]</p>
    <p>Теперь предположим, что мы хотим определить, содержится ли некоторая кличка в указанном списке. В Прологе это можно сделать, определив, совпадает ли данная кличка с головой списка.</p>
    <p>Если совпадает, то наш список завершается успехом. Если нет, то мы проверяем, есть ли кличка в хвосте исходного списка. Это значит, что снова проверяется голова, но уже <emphasis>хвоста </emphasis>списка. Затем проверяется голова <emphasis>очередного </emphasis>хвоста списка. Если мы доходим до конца списка, который будет пустым списком, то наш поиск завершается неудачей: указанной клички в исходном списке нет.</p>
    <p>Для того чтобы записать все это на Прологе, сначала надо установить, что между объектом и списком, в который этот объект может входить, существует отношение. Это отношение, называемое отношением принадлежности, представляет достаточно распространенное в повседневной жизни понятие. Так, мы говорим о людях, являющихся членами клубов, и о других тому подобных вещах. Для записи этого отношения мы будем использовать предикат <strong>принадлежит: </strong>целевое утверждение <strong>принадлежит(X, Y)</strong> является истинным («выполняется»), если терм, связанный с <strong>X</strong>, является элементом списка, связанного с <strong>Y</strong>. Имеются два условия, которые надо проверить для определения истинности предиката. Первое условие говорит, что <strong>X</strong> будет элементом списка <strong>Y</strong>, если X совпадает с головой списка <strong>Y</strong>. На Прологе этот факт записывается следующим образом:</p>
    <empty-line/>
    <p>принадлежит(X,[X |_]).</p>
    <empty-line/>
    <p>Эта запись констатирует, что <strong>X</strong> <emphasis>является элементом списка, который имеет </emphasis><strong>X</strong> <emphasis>в качестве головы. </emphasis>Заметим, что мы использовали анонимную переменную '_' для обозначения хвоста списка. Это сделано потому, что мы никак не используем хвост списка в этом частном факте. Заметим, что данное правило могло бы быть записано и по-другому:</p>
    <empty-line/>
    <p>принадлежит(X,[Y|_]:- X = Y.</p>
    <empty-line/>
    <p>К этому моменту вы должны уже понимать, почему можно использовать <strong>X</strong> сразу в двух местах в первой, более короткой, версии этого правила.</p>
    <p>Второе, и последнее, правило говорит о том, что <strong>X</strong> принадлежит списку при условии, что он входит в хвост этого списка, обозначаемый через <strong>Y</strong>. И нет лучшего пути, чем использовать тот же самый предикат <strong>принадлежит </strong>для того, чтобы определить, принадлежит ли <strong>X</strong> хвосту списка! В этом и состоит суть рекурсии. На Прологе это выглядит так:</p>
    <empty-line/>
    <p>принадлежит(X,[_ |Y]):- принадлежит(X,Y).</p>
    <empty-line/>
    <p>и констатирует, что X <emphasis>является элементом списка, если </emphasis>X <emphasis>является элементом хвоста этого списка. </emphasis>Заметим, что мы использовали анонимную переменную '_', так как нас не интересует имя переменной, обозначающей голову списка. Два этих правила в совокупности определяют предикат для отношения принадлежности и указывают Прологу, каким образом просматривать список от начала до конца при поиске некоторого элемента в списке. Наиболее важный момент, о котором следует помнить, встретившись с рекурсивно определенным предикатом, заключается в том, что прежде всего надо найти <emphasis>граничные условия </emphasis>и способ <emphasis>использования рекурсии.</emphasis></p>
    <p>Для предиката <strong>принадлежит</strong> в действительности имеются два типа граничных условий. Либо объект, который мы ищем, содержится в списке, либо он не содержится в нем. Первое граничное условие для предиката <strong>принадлежит</strong> распознается первым утверждением, которое приведет к прекращению поиска в списке, если первый аргумент предиката <strong>принадлежит</strong> совпадает с головой списка, соответствующего второму аргументу. Второе граничное условие встречается, когда второй аргумент предиката <strong>принадлежит</strong> является пустым списком.</p>
    <p>Как мы можем убедиться в том, что граничные условия будут когда-либо удовлетворены? Для этого необходимо обратить внимание на то, как используется рекурсия во втором правиле для предиката <strong>принадлежит</strong>. Заметим, что каждый раз, когда при поиске соответствия для целевого предиката <strong>принадлежит</strong> происходит рекурсивное обращение к тому же предикату, новая цель формируется для <emphasis>более короткого </emphasis>списка. Хвост списка всегда является более коротким списком, чем исходный список. Очевидно, что рано или поздно произойдет одно из двух событий: либо произойдет сопоставление с первым правилом для <strong>принадлежит</strong>, либо в качестве второго аргумента <strong>принадлежит</strong> будет задан список длины 0, т. е. пустой список. Как только возникнет одна из этих ситуаций, прекратится рекуррентное порождение целей для предиката <strong>принадлежит</strong>. Первое граничное условие распознается фактом, который не вызывает порождения новых подцелей. Второе граничное условие не распознается ни одним из утверждений для <strong>принадлежит</strong>, так что процесс поиска сопоставимого элемента списка для целевого утверждения принадлежит закончится неудачей. Это демонстрирует следующий пример на Прологе:</p>
    <empty-line/>
    <p>принадлежит(Х, [X | _]).</p>
    <p>принадлежит(Х,[_|Y]):- принадлежит (X,Y).</p>
    <p>?- принадлежит(d,[a,b,с,d,e,f,g]).</p>
    <p>да</p>
    <p>?- принадлежит(2,[3,a,4,f]).</p>
    <p>нет</p>
    <empty-line/>
    <p>Предположим, мы введем вопрос</p>
    <empty-line/>
    <p>?- принадлежит(clugatе,[curraugh_tiр,music_star,раrk_mill, ortland]).</p>
    <empty-line/>
    <p>Так как <strong>clygate </strong>не сопоставимо с <strong>curragh_tip, </strong>то происходит сопоставление со вторым правилом для <strong>принадлежит. </strong>Переменная Y получает значение <strong>[music_star, park_mill, portland], </strong>и порождается следующая цель: определить, принадлежит ли <strong>clygate </strong>этому списку. Опять происходит сопоставление со вторым правилом, и снова выделяется хвост списка. Текущей целью становится <strong>принадлежит (clugate,[park_mill,portland]) </strong>Этот процесс рекурсивно повторяется до тех пор, пока мы не доберемся до цели, у которой <strong>X</strong> есть <strong>clygate, </strong>a <strong>Y</strong> есть <strong>[portland]. </strong>Происходит еще одно сопоставление со вторым правилом, и теперь <strong>Y</strong> конкретизируется хвостом списка <strong>[portland], </strong>который является пустым списком. Следующей целью становится <strong>принадлежит(clygate,[]). </strong>Ни одно из правил в базе данных не сопоставимо с этой целью, так что цель оказывается ложной и ответ на вопрос будет отрицательным.</p>
    <p>Важно помнить, что каждый раз, когда при согласовании <strong>принадлежит </strong>с базой данных выбирается второе утверждение этого предиката, Пролог рассматривает рекурсивное обращение к предикату <strong>принадлежит </strong>как попытку найти соответствие для некоторой новой его «копии». Это предотвращает путаницу переменных, соответствующих одному употреблению утверждения, с переменными, соответствующими другому употреблению этого же утверждения.</p>
    <p>Предикат отношения принадлежности настолько полезен, что мы еще неоднократно будем использовать его в оставшейся части этой книги. Предикат <strong>принадлежит</strong> важен еще и потому, что он представляет практически наименьший полезный пример рекурсивного предиката – определение предиката <strong>принадлежит </strong>содержит утверждения, которые могут быть проверены с помощью только того же самого предиката <strong>принадлежит. </strong>Рекурсивные определения часто встречаются в программах на Прологе, и они полностью равноправны с другими определениями. Однако надо быть осторожным, чтобы не допускать «закольцованные» определения, как, например, следующее:</p>
    <empty-line/>
    <p>родитель(X,Y):- ребенок(Y,X). </p>
    <p>ребенок(A,B):- родитель(B,A).</p>
    <empty-line/>
    <p>В этом примере, чтобы согласовать с базой данных целевое утверждение <strong>родитель, </strong>необходимо согласовать подцель <strong>ребенок</strong>. Однако определение для ребенок приведет к появлению единственной подцели – <strong>родитель. </strong>Вы должны понимать, почему вопрос, содержащий в качестве целей <strong>родитель </strong>или <strong>ребенок, </strong>приводит к циклу, находясь в котором Пролог не сможет найти какие-либо новые факты, и этот цикл никогда не завершится.</p>
    <p>Одна важная проблема, на которую следует обращать внимание в рекурсивных определениях, - это <emphasis>левосторонняя рекурсия. </emphasis>Она возникает в случае, когда правило порождает подцель, по существу эквивалентную исходной цели, которая явилась причиной использования этого правила. Так, если бы мы определили предикат</p>
    <empty-line/>
    <p>человек(X):- человек(Y), мать(Х,Y). </p>
    <p>человек(адам).</p>
    <empty-line/>
    <p>и ввели вопрос</p>
    <empty-line/>
    <p>?- человек(X).</p>
    <empty-line/>
    <p>то Пролог сначала использовал бы правило и рекурсивно породил подцель <strong>человек (Y). </strong>Попытка найти соответствие этой цели вновь привела бы к выбору первого правила и породила бы еще одну новую эквивалентную подцель. И так далее, до тех пор, пока не исчерпались бы вычислительные ресурсы. Конечно, если бы была возможность использовать механизм возврата, то был бы найден сообщенный в определении факт об Адаме и началось бы порождение решений<sup><a l:href="#n_7" type="note">[7]</a></sup>. Ошибка заключается в том, что для того, чтобы начался возврат, Пролог должен потерпеть неудачу при проверке первого утверждения. В данном же случае поиск решения оказывается неопределенно длинным, и нет никакой возможности завершить этот поиск с успехом либо с неудачей. Из всего сказанного выше можно извлечь следующую мораль:</p>
    <p>Не следует предполагать, что только потому, что вы предоставили все относящиеся к делу факты и правила, Пролог всегда найдет их. Создавая программу на Прологе, вы все время должны представлять, каким образом Пролог осуществляет поиск в базе данных и какие переменные будут конкретизированы, когда будет использовано одно из ваших правил.</p>
    <p>Для приведенного примера имеется простой способ устранения ошибки – поместить факт перед правилом, а не после него. В действительности существует хороший эвристический принцип: помещать, где это возможно, факты перед правилами. Иногда при размещении правил в некотором конкретном порядке может возникнуть ситуация, когда они будут правильно работать для целей одного вида и не будут работать для целей другого вида. Рассмотрим следующее определение предиката <strong>список (X), </strong>при котором предикат <strong>список </strong>является истинным, если <strong>X</strong> – список, последний элемент которого имеет в качестве хвоста пустой список:</p>
    <empty-line/>
    <p>список([A|B]):- список(B). </p>
    <p>список([]).</p>
    <empty-line/>
    <p>Если мы используем эти правила для получения ответов на вопросы, подобные следующим:</p>
    <empty-line/>
    <p>?- список ([a,b,c,d]).</p>
    <p>?- список([]).</p>
    <p>?- список(f(1,2,3))</p>
    <empty-line/>
    <p>то данное определение будет работать хорошо. Но если мы сделаем запрос</p>
    <empty-line/>
    <p>?- список(X).</p>
    <empty-line/>
    <p>то программа зациклится. Предикат, аналогичный предикату <strong>список, </strong>но неподверженный зацикливанию, задается следующими двумя фактами:</p>
    <empty-line/>
    <p>обобщенный_список([]). </p>
    <p>обобщенный_список([_ |_]).</p>
    <empty-line/>
    <p>В этом варианте просто проверяется начало списка, а не тот факт, что последний хвост списка является пустым списком ([]). Последнее определение не является таким же строгим тестом правильности списка, как определение предиката <strong>список, </strong>но оно не приведет к зацикливанию, если аргументом является переменная.</p>
   </section>
   <section>
    <title>
     <p>3.4. Пример: преобразование предложений</p>
    </title>
    <p>Рассмотрим программу на Прологе, которая в ответ на введенное с терминала предложение (на английском языке) печатает другое предложение, представляющее преобразованное исходное предложение. Эта программа для «ответов» программисту могла бы поддерживать следующий диалог:</p>
    <p>Вы: you are a computer (Вы - ЭВМ)</p>
    <p>Пролог: i am not a computer (Я – не ЭВМ)</p>
    <p>Вы: do you speak french (Вы говорите по-французски?)</p>
    <p>Пролог: no i speak german (Нет, я говорю по-немецки)</p>
    <p>Хотя этот диалог может показаться натянутой, но все же осмысленной беседой, очень легко написать программу, выполняющую свою «часть» диалога. Для этого достаточно просто последовательно выполнять следующие действия:</p>
    <p>1. Ввести предложение, набранное пользователем на терминале.</p>
    <p>2. Заменить каждое вхождение слова <strong>you </strong>на слово <strong>i</strong>.</p>
    <p>3. Аналогичным образом заменить <strong>are </strong>на <strong>am not.</strong></p>
    <p>4. Заменить <strong>french </strong>на <strong>german.</strong></p>
    <p>5. Заменить <strong>do</strong> на <strong>nо.</strong></p>
    <p>Если применить данную схему преобразования <strong>к </strong>надлежащим образом подобранным предложениям, подобным использованным в приведенном выше диалоге, то получим осмысленные преобразованные предложения. Однако эта схема применима не ко всем предложениям. Например;</p>
    <empty-line/>
    <p>Вы: i do like you (я действительно люблю вас)</p>
    <p>Пролог: i no like i (я не люблю себя)</p>
    <empty-line/>
    <p>Но если простая программа уже написана, то впоследствии ее можно модифицировать так, чтобы она справлялась и с предложениями, подобными приведенному.</p>
    <p>Программа на Прологе, преобразующая одно предложение английского языка в другое, может быть реализована следующим образом. Прежде всего необходимо осознать, что имеется отношение между исходным предложением и преобразованным. В связи с этим нам следует определить предикат, называемый <strong>преобразовать. Преобразовать(Х, Y) </strong>означает, что предложение <strong>X</strong> может быть преобразовано в предложение <strong>Y</strong>. Предложения <strong>X</strong> и <strong>Y</strong> удобно представлять в виде списков атомов, обозначающих слова, так что предложения могут быть записаны следующим образом: <strong>[this,is,a</strong>,<strong>sentence] </strong>(это некоторое предложение). Определив предикат <strong>преобразовать, </strong>мы могли бы обращаться к Прологу с вопросами вида</p>
    <empty-line/>
    <p>?- преобразовать([dо,you,know,french],X). (Знаете ли вы французский)</p>
    <empty-line/>
    <p>на что Пролог отвечал бы</p>
    <empty-line/>
    <p>X=[no,i,know,german] (нет, я знаю немецкий).</p>
    <empty-line/>
    <p>Не следует обращать внимание на то, что вводимое и печатаемое в ответ предложения представлены в такой неестественной форме и не похожи на обычные предложения. В последующих главах мы обсудим способы ввода и вывода структур в виде, удобном для чтения. В данный момент нас интересуют лишь способы преобразования одного списка в другой.</p>
    <p>Так как аргументами предиката <strong>преобразовать</strong> являются списки, то прежде всего следует рассмотреть, что произойдет, если исходный список пустой. В этом случае мы скажем, что пустой список преобразуется в пустой список:</p>
    <empty-line/>
    <p>преобразовать([], [])</p>
    <empty-line/>
    <p>Или, иначе: <emphasis>это факт, что преобразование пустого списка дает пустой список. </emphasis>Если причины для того, чтобы рассматривать пустой список, здесь не очевидны, то последующее изложение прояснит их. Далее нам следует разобраться в том, что основные действия предиката <strong>преобразовать</strong> заключаются в следующем:</p>
    <p>1. Заменить голову входного списка соответствующим словом и поместить это слово в выходной список в качестве головы.</p>
    <p>2. Преобразовать хвост входного списка и сделать его хвостом выходного списка.</p>
    <p>3. Если мы достигли конца входного списка, то к выходному списку больше ничего добавлять не надо, и мы можем завершить выходной список пустым списком [].</p>
    <p>Переводя это на язык, более близкий к Прологу, можно сказать:</p>
    <p><emphasis>Преобразование списка с головой </emphasis><strong>H</strong> <emphasis>и хвостом </emphasis><strong>T</strong> <emphasis>дает список с головой </emphasis><strong>X</strong> <emphasis>и хвостом </emphasis><strong>Y</strong>, <emphasis>если замена слова </emphasis><strong>H</strong> <emphasis>дает слово </emphasis><strong>X</strong>, <emphasis>а преобразование списка </emphasis><strong>T</strong> <emphasis>дает список </emphasis><strong>Y</strong>.</p>
    <p>Теперь следует сказать, что значит «заменить» одно слово на другое. Это может быть сделано при наличии в базе данных фактов вида <strong>заменить(Х, Y)</strong>, означающих, что слово <strong>X</strong> может быть заменено словом <strong>Y</strong>. В конце базы данных следует поместить факт-«ловушку», так как если слово не заменяется другим словом, то его следует заменить самим собой. Если сейчас не совсем понятно назначение «ловушки», то позднее, когда мы объясним, как работает программа, это должно стать ясным.</p>
    <p>Роль такого факта-ловушки выполняет факт <strong>заменить(Х,Х), </strong>который обозначает, что слово <strong>X</strong> заменяется самим собой. Ниже приведена база данных, обеспечивающая указанные выше замены слов:</p>
    <empty-line/>
    <p>заменить(уоu,i).</p>
    <p>заменить(аrе, [am,not]).</p>
    <p>заменить(french,german).</p>
    <p>заменить(dо,nо)</p>
    <p>заменить(Х,Х). /* это факт-ловушка */</p>
    <empty-line/>
    <p>Заметим, что фраза <strong>«am not» </strong>представлена как список, так что она входит в факт как один аргумент.</p>
    <empty-line/>
    <p>Теперь можно перевести приведенный выше текст на псевдо-Прологе в настоящую программу на Прологе, помня, что запись <strong>[А|В] </strong>обозначает список, имеющий голову А и хвост В. Мы получаем нечто подобное следующему:</p>
    <empty-line/>
    <p>преобразовать([],[]). </p>
    <p>преобразовать([Н|T],[X|Y]):-заменить(Н, X), преобразовать(Т,Y).</p>
    <empty-line/>
    <p>Первое утверждение в приведенной процедуре проверяет, является ли аргумент пустым списком. Оно же проверяет окончание списка. Как? Рассмотрим это на примере:</p>
    <empty-line/>
    <p>?- преобразовать([уоu,are,a,computer],Z).</p>
    <empty-line/>
    <p>Этот вопрос был бы сопоставлен с основным правилом для <strong>преобразовать, </strong>при этом переменная <strong>Н</strong> получила бы значение <strong>you</strong>, а переменная <strong>Т</strong> – значение <strong>[are,a,computer]</strong>. Затем была бы рассмотрена подцель заменить <strong>(you,Х)</strong>, найден подходящий факт и переменная <strong>X</strong> стала бы равной <strong>i</strong>. Так как <strong>X</strong> является головой выходного списка (в целевом утверждении преобразовать), то первое слово в выходном списке есть <strong>i</strong>. Далее, поиск соответствия для подцели преобразовать <strong>([are, a, computer], Y)</strong> привел бы к использованию того же правила. Слово are в соответствии с имеющейся базой данных заменяется на список <strong>[am,not]</strong>, и генерируется другая подцель с предикатом <strong>преобразовать</strong> – <strong>преобразовать([а,computer], Y)</strong>. Ищется факт <strong>заменить(а,X)</strong>, но так как в базе данных нет факта заменить, первый аргумент которого равен а, то будет найден факт-ловушка, расположенный в конце базы данных, заменяющий '<strong>а</strong>' на '<strong>а</strong>'. Правило преобразовать вызывается еще раз с <strong>computer</strong> в качестве головы входного списка и <emphasis>пустым списком </emphasis>[] в качестве хвоста входного списка. Как и ранее, <strong>заменить(computer, X)</strong> сопоставляется с фактом-ловушкой. Наконец, преобразовать вызывается с пустым списком на месте первого аргумента, и происходит сопоставление с первым утверждением предиката преобразовать. Результатом является пустой список, который заканчивает преобразованное предложение (напомним, что список заканчивается пустым хвостом). В заключение Пролог отвечает на вопрос, печатая</p>
    <empty-line/>
    <p>Z = [i,[am,not], a, computer]</p>
    <empty-line/>
    <p>Отметим, что фраза <strong>[am,not]</strong> появляется в списке точно в таком же виде, как она была в него вставлена.</p>
    <p>Теперь должны быть ясны причины появления в базе данных факта <strong>преобразовать ([],[])</strong> и факта-ловушки заменить<strong>(Х,Х)</strong>. Факты, подобные этим, часто включаются в программу, когда требуется проверить выполнение граничных условий. Из приведенного выше объяснения должно быть ясно, что выход на граничные условия происходит в случае, когда входной список становится пустым и когда оказываются просмотренными все факты для предиката <strong>заменить</strong>. В обоих случаях выхода на граничные условия необходимо выполнить определенные действия. В случае когда входной список становится пустым, необходимо завершить выходной список (вставив пустой список в его конец). Если просмотрены все факты для предиката <strong>заменить</strong>, но при этом не обнаружен факт, содержащий данное слово, то это слово должно остаться неизменным (путем замены его самим собой).</p>
   </section>
   <section>
    <title>
     <p><strong>3.5. Пример: упорядочение по алфавиту</strong></p>
    </title>
    <p>Как мы видели в гл. 2, в Прологе существуют предикаты для сравнения целых чисел. В приложениях, имеющих дело со словами, например работа со словарями, полезно иметь предикат для сравнения <emphasis>слов </emphasis>в соответствии с алфавитным порядком.</p>
    <p>Рассмотрим предикат, который мы назовем <strong>меньше. </strong>Если предикат <strong>меньше(Х, Y) </strong>используется в качестве целевого утверждения, то он истинен (т. е. согласуется с базой данных), если X и Y обозначают атомы и X по алфавиту предшествует Y. Так, предикат <strong>меньше(арбуз, букварь) </strong>истинен, а <strong>меньше(ветер,автомобиль) </strong>ложен. Точно так же должен быть ложен и предикат <strong>меньше(картина,картина). </strong>Сравнивая два слова, мы сравниваем их последовательно, буква за буквой и при сравнении каждой буквы определяем, какое из следующих условий имеет место:</p>
    <p>1. Достигнут конец первого слова, но не достигнут конец второго слова. Это имеет место, например, в случае <strong>меньше(пар, паровоз). </strong>При возникновении такой ситуации предикат <strong>меньше </strong>должен считаться истинным (т. е. согласованным с базой данных).</p>
    <p>2. Очередная литера в первом слове предшествует в алфавите соответствующей литере во втором слове. Например, <strong>меньше (слово,слон). </strong>Буква '<strong>в</strong>' в слове <strong>слово </strong>предшествует в алфавите букве '<strong>н</strong>' в слове <strong>слон. </strong>В этом случае предикат <strong>меньше </strong>истинен.</p>
    <p>3. Литера в первом слове совпадает с соответствующей литерой во втором слове. В этом случае следует использовать предикат <strong>меньше </strong>для сравнения <emphasis>оставшихся литер </emphasis>в обоих словах. Например, если дано <strong>меньше(облако,одеяло), </strong>то, так как оба аргумента начинаются с буквы '<strong>о</strong>', необходимо взять в качестве следующей цели <strong>меньше(блако,деяло).</strong></p>
    <p>4. Одновременно достигнут конец первого и второго слов, как, например, в случае <strong>меньше(яблоко,яблоко). </strong>При возникновении такого условия предикат <strong>меньше </strong>должен быть ложным, так как оба слова являются одинаковыми.</p>
    <p>5. Обработаны все литеры второго слова, но еще остались литеры в первом слове, как, например, в случае <strong>меньше(алфавитный,алфавит). </strong>В такой ситуации предикат <strong>меньше </strong>должен быть ложным.</p>
    <p>После того как сформулированы перечисленные выше условия, задача перевода их на Пролог является довольно простой. Будем представлять слова в виде списков литер (целых чисел из некоторого диапазона). Для этого необходим способ преобразования атома в список литер. Эту функцию выполняет встроенный предикат Пролога <strong>name(имя)</strong>. Целевое утверждение <strong>name(X, Y)</strong> согласуется с базой данных, когда атом, являющийся значением <strong>X</strong>, состоит из литер, коды которых образуют список, являющийся значением <strong>Y</strong> (используются коды ASCII). Отсылаем читателя к гл. 2, если он забыл, что такое коды ASCII. Если один из аргументов не определен, то Пролог предпримет попытку конкретизировать его, создавая соответствующую структуру. Поэтому можно использовать предикат <strong>name </strong>для преобразования слова в список литер. Например, зная, что код ASCII для <strong>'а'</strong> есть 97, код для <strong>'l'</strong> – 108 и код для <strong>'p'</strong> – 112, можно задавать следующие вопросы:</p>
    <empty-line/>
    <p>?- name (Х,[97,108,112])</p>
    <p>Х=аlр</p>
    <p>?- name (alp,X)</p>
    <p>X=[97,108,112]</p>
    <empty-line/>
    <p>Первым утверждением в определении предиката <strong>меньше </strong>является следующее правило:</p>
    <empty-line/>
    <p>меньше(Х, Y):- name(X,L),name(Y,M), меньше_l(L,M) </p>
    <empty-line/>
    <p>Это правило сначала преобразует слова в списки, используя предикат <strong>name, </strong>и затем с помощью предиката <strong>меньше_1 </strong>(будет определен ниже) сравнивает списки на соответствие алфавиту. Определение предиката <strong>меньше_1 </strong>состоит из утверждений, реализующих приведенный выше набор условий. Первое условие является истинным, когда первый аргумент есть пустой список, а второй аргумент – это произвольный непустой список:</p>
    <empty-line/>
    <p>меньше_1([], [_|_]).</p>
    <empty-line/>
    <p>Второе условие записывается следующим образом: </p>
    <empty-line/>
    <p>меньше_1([X|_],[Y|_]):- X‹Y</p>
    <empty-line/>
    <p>Напомним, что аргументами предиката <strong>меньше_1 </strong>являются списки чисел, так что разрешается сравнивать элементы этих списков, используя предикат '‹'. Третье условие записывается следующим образом:</p>
    <empty-line/>
    <p>меньше_1([А|Х],[В|Y]:- А=В, меньше_1(Х,Y).</p>
    <empty-line/>
    <p>Наконец, два последних условия описывают ситуации, когда предикат ложен, т. е. не согласуется с базой данных, так что если мы не предусмотрим никаких соответствующих им фактов или правил, то при используемом механизме поиска в базе данных доказательство согласованности любого целевого утверждения, для которого эти условия справедливы, закончится неудачей. Собирая все правила вместе, получим</p>
    <empty-line/>
    <p>меньше(Х,Y):- name(X,L), name(Y,M), меньше _1(L,M). </p>
    <p>меньше_1([], [_|_]).</p>
    <p>меньше_1([X|_],[Y|_]):- Х‹Y.</p>
    <p>меньше_1([P|Q], [R|S]):- P = R, меньше_1(Q,S).</p>
    <empty-line/>
    <p>Заметим, что третье правило для <strong>меньше_1</strong> можно было бы записать более естественно так:</p>
    <p>меньше_1([H|Q], [H|S]):- меньше_l(Q,S).</p>
    <empty-line/>
    <p><strong>Упражнение 3.1.</strong> Подумайте, какое еще утверждение необходимо добавить к этому определению так, чтобы предикат был истинен и в том случае, когда два слова совпадают. В результате получится предикат, проверяющий, меньше или равен первый аргумент второму по алфавиту. Указание: обратите внимание на условие (4), приведенное выше, и вставьте утверждение, обрабатывающее это условие.</p>
    <p><strong>Упражнение 3.2.</strong> Почему в первом утверждении для предиката <strong>меньше_1</strong> в качестве второго аргумента использован список [_|_]? Почему недостаточно использовать список [.]?</p>
   </section>
   <section>
    <title>
     <p>3.6. Использование предиката присоединить и спецификация деталей</p>
    </title>
    <p>Предикат <strong>присоединить</strong>, обрабатывающий списки, используется для создания нового списка, являющегося результатом соединения двух других списков. Например, верен следующей факт:</p>
    <empty-line/>
    <p>присоединить([а,b,с], [3,2,1], [а,b,с,3,2,1]).</p>
    <empty-line/>
    <p>Предикат <strong>присоединить</strong> наиболее часто используется для создания нового списка в результате конкатенации двух других списков, как в следующем примере:</p>
    <empty-line/>
    <p>?- присоединить ([alpha,beta],[gamma,delta],X). </p>
    <p>X=[alpha, beta, gamma, delta]</p>
    <empty-line/>
    <p>Но он может также использоваться и другим способом;</p>
    <empty-line/>
    <p>?- присоединить(Х,[b,c,d],[a,b,c,d]). Х=[а]</p>
    <empty-line/>
    <p>Предикат <strong>присоединить</strong> имеет следующее определение;</p>
    <empty-line/>
    <p>присоединить([],L,L).</p>
    <p>присоединить([Х|L1],L2,[Х|L3]):- присоединить (L1,L2,L3).</p>
    <empty-line/>
    <p>Выход на граничное условие происходит, когда первый аргумент является пустым списком. Любой список, присоединенный к пустому списку, дает тот же самый список. Во всех других случаях будет выполняться второе правило, смысл которого можно описать словами следующим образом:</p>
    <p>1. Первый элемент первого списка <strong>(X)</strong> всегда будет и первым элементом третьего списка.</p>
    <p>2. Хвост третьего аргумента <strong>(L3)</strong> всегда будет представлять результат присоединения второго аргумента <strong>(L2)</strong> к хвосту первого списка <strong>(L1)</strong>.</p>
    <p>3. Для присоединения одного списка к другому, о чем шла речь в пункте 2, необходимо использовать предикат <strong>присоединить.</strong></p>
    <p>4. Так как при каждом обращении к правилу удаляется голова списка, являющегося первым аргументом, то постепенно этот список будет исчерпан и станет пустым, так что произойдет выход на граничное условие.</p>
    <p>В дальнейших примерах будут встречаться ссылки на предикат <strong>присоединить</strong> с необходимыми дополнительными пояснениями. В последующих главах мы обсудим различные свойства и применения этого предиката. Но сначала давайте применим его в другом простом примере рекурсии.</p>
    <p>Предположим, что мы работаем на заводе, выпускающем велосипеды, и нам необходимо хранить спецификацию деталей велосипеда. Для того чтобы собрать велосипед, надо знать, какие детали заказать поставщикам. Каждая деталь велосипеда может состоять из более мелких элементов – поддеталей, например каждое колесо имеет спицы, обод и ступицу. Более того, ступица может состоять из оси и шестеренок. Давайте рассмотрим базу данных, организованную в виде дерева, которая позволит нам делать запросы о деталях, необходимых для изготовления некоторой части велосипеда. В одной из следующих глав предложенная здесь программа будет улучшена, с тем чтобы позволить вычислять, сколько экземпляров каждой детали нам потребуется.</p>
    <p>Имеются два типа объектов, которые используются для изготовления велосипеда. Это <emphasis>узлы </emphasis>и <emphasis>детали. </emphasis>Каждый узел состоит из некоторого числа деталей, подобно тому как колесо состоит из спиц, обода и ступицы. Детали не имеют еще более мелких частей – они просто соединяются друг с другом, образуя узлы.</p>
    <p>Можно представить детали как факты следующим образом:</p>
    <empty-line/>
    <p>деталь(обод). деталь(спица).</p>
    <p>деталь(задняя_рама). деталь(руль).</p>
    <p>деталь(шестерни). деталь(болт).</p>
    <p>деталь(гайка). деталь(вилка).</p>
    <empty-line/>
    <p>Естественно, что это далеко не полный список деталей, необходимых для сборки велосипеда, но приведенные факты показывают основную идею. Узел может быть представлен именем узла, за которым следует список входящих в него деталей с указанием их количества. Например, следующий факт означает, что <strong>велосипед </strong>- это узел, состоящий из двух колес и рамы:</p>
    <empty-line/>
    <p>узел(велосипед, [колесо, колесо, рама]).</p>
    <empty-line/>
    <p>Ниже представлена база данных узлов, необходимых для нашего упрощенного велосипеда:</p>
    <empty-line/>
    <p>узел(велосипед, [колесо,колесо,рама]). </p>
    <p>узел(колесо, [спица,обод,ступица]).</p>
    <p>узел(рама, [задняя_рама, передняя_рама]). </p>
    <p>узел(передняя_рама, [вилка,руль]). </p>
    <p>узел(ступица, [шестерни,ось]). </p>
    <p>узел(ось, [болт,гайка]).</p>
    <empty-line/>
    <p>Заметим, что это частное множество утверждений неполностью описывает велосипед. Мы не делаем различия между передней и задней ступицами – обе имеют шестерни! Цепь и педали отсутствуют, и негде сидеть велосипедисту. Не указано также, как соединять детали друг с другом. Это просто перечисление некоторого числа требуемых деталей.</p>
    <p>Теперь мы готовы написать программу, которая для заданной части перечислит все детали, необходимые для ее сборки. Если часть, которую мы хотим собрать, является деталью, то для нее ничего больше не требуется. Однако если мы хотим собрать некоторый узел, то необходимо применить этот процесс к каждой составной части узла. Определим предикат <strong>часть (X, Y), </strong>где <strong>X </strong>- имя части, a <strong>Y</strong> – список деталей, необходимых для ее сборки. В первой версии программы мы не будем рассматривать вопрос о количестве деталей каждого типа, необходимых для сборки. Более полная программа будет представлена в гл. 7.</p>
    <p>Выход на граничное условие происходит, когда <strong>X</strong> является деталью. В этом случае <strong>X</strong> просто возвращается в качестве элементарного списка:</p>
    <empty-line/>
    <p>часть(Х, [X]):- деталь(Х).</p>
    <empty-line/>
    <p>Следующее условие связано со случаем, когда <strong>X</strong> является узлом. Здесь необходимо определить, имеется ли в базе данных соответствующий факт узел, и если такой имеется, то применить предикат <strong>часть </strong>к каждому элементу списка подчастей. Для выполнения второй из указанных задач используется предикат, названный <strong>список_частей.</strong></p>
    <empty-line/>
    <p>часть(Х,Р):- узел(Х,Подчасти),</p>
    <p>список_чаcтей(Подчасти, Р).</p>
    <empty-line/>
    <p>Предикат <strong>список_частей </strong>берет список частей (из второго аргумента факта узел, представленного выше) и применяет предикат <strong>часть </strong>к каждой части в списке. После вызова самого себя, необходимого для обработки хвоста списка, предикат <strong>список_частей </strong>должен склеить полученные списки вместе, используя предикат <strong>присоединить:</strong></p>
    <empty-line/>
    <p>список_частей([Р|Хвост], Полный_список):- часть(Р,Части_головы)</p>
    <p>список_частей(Хвост,Части_хвоста)</p>
    <p>присоединить(Части_головы, Части_хвоста, Полный_список)</p>
    <empty-line/>
    <p>Список, созданный предикатом <strong>часть</strong>, не будет содержать информации о требуемом количестве деталей, при этом элементы списка могут дублироваться. В гл. 7 будет представлена улучшенная версия программы, в которой эти недостатки отсутствуют.</p>
    <p>Существуют две идеи, указывающие, как использовать предикат <strong>часть</strong> для генерации предложений на английском языке. Во-первых, предложения могут быть представлены в виде иерархических структур: предложение имеет части <strong>группа_существительного</strong> и <strong>группа_глагола</strong>; <strong>группа_существительного</strong> состоит из <strong>определения</strong> и <strong>существительного</strong> и т. д. Так что любая простая грамматика может быть выражена на языке «частей». Во-вторых, предикат <strong>список_частей</strong> всегда обрабатывает элементы списка, представленного его первым аргументом, в порядке слева направо, и его результат (второй аргумент) накапливается в том же порядке. Два указанных свойства предиката <strong>часть</strong> показывают, что можно использовать тот же метод для генерации предложений по некоторой грамматике. Типичный «узел» в этой грамматике мог бы выглядеть так:</p>
    <empty-line/>
    <p>узел(предложение,[группа_существительного,группа_глагола]). </p>
    <p>узел(группа_существительного,[определение,существительное]). </p>
    <p>узел(определение,[thе]). </p>
    <p>узел(существительное, [clergyman]). </p>
    <p>узел(существительное,[motorcar]).</p>
    <empty-line/>
    <p>А слова используемой лексики были бы определены как «детали»:</p>
    <empty-line/>
    <p>деталь(сlеrgуmаn). </p>
    <p>деталь(motorcar)</p>
    <empty-line/>
    <p>Теперь у вас может возникнуть желание поэкспериментировать с таким подходом к генерации предложений. Для этого необходимо составить разумную грамматику и словарь. Убедитесь сами, что измененная таким образом программа будет выдавать все допускаемые грамматикой предложения, которые можно построить по заданным грамматике и словарю. Всякий раз, выдав очередное предложение, Пролог будет ожидать, когда вы введете точку с запятой, указывающую ему, что необходимо выполнить возврат для получения следующего предложения.</p>
    <p>На приведенном здесь примере не заканчивается обсуждение проблемы обработки текстов на естественном языке в этой книге. Глава 9 полностью посвящена более детальному рассмотрению такого применения Пролога.</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 4. ВОЗВРАТ И ОТСЕЧЕНИЕ</p>
   </title>
   <section>
    <p>Давайте подытожим всю информацию, которую мы почерпнули в гл. 1 и 2 о том, что может произойти с целевым утверждением (целью).</p>
    <p>1. Может иметь место попытка <emphasis>доказать согласованность </emphasis>целевого утверждения с базой данных. В процессе доказательства база данных просматривается, начиная с ее вершины. При этом возможны две ситуации:</p>
    <p>(а) Может быть найден факт (или заголовок правила), сопоставимый с целевым утверждением. В этом случае мы говорим, что произошло <emphasis>сопоставление </emphasis>цели с утверждением (фактом или правилом) в базе данных. Это место отличается в базе данных маркером и конкретизируются (присваиваются значения) соответствующие переменные, если они не были конкретизированы ранее. Если произошло сопоставление с правилом, то прежде всего необходимо попытаться доказать согласованность подцелей, вводимых этим правилом. Если цель согласуется с базой данных, то предпринимается попытка согласовать следующее целевое утверждение. В используемых нами диаграммах это будет цель, указанная в следующем, нижнем прямоугольнике, на который указывает стрелка. Если исходная цель входит в конъюнкцию, то это будет цель, расположенная в программе <emphasis>непосредственно справа </emphasis>от исходной цели.</p>
    <p>(б) В базе данных нет факта (или заголовка правила), сопоставимого с целевым утверждением. В этом случае мы говорим, что попытка доказать согласованность целевого утверждения потерпела <emphasis>неудачу </emphasis>(цель не согласуется с базой данных). Тогда будет предпринята попытка (см. п.2) <emphasis>вновь доказать согласованность </emphasis>целевого утверждения, указанного в прямоугольнике, расположенном выше стрелки. Если исходное целевое утверждение входит в конъюнкцию, то это будет целевое утверждение, расположенное в программе непосредственно слева от рассматривавшегося целевого утверждения.</p>
    <p>2. Мы можем сделать попытку <emphasis>вновь доказать согласованность </emphasis>целевого утверждения с базой данных. Для этого прежде всего необходимо попытаться вновь согласовать каждую из его подцелей, при этом стрелка возвращается в некоторую исходную позицию, поднимаясь вверх по странице. Если ни одна из подцелей вновь не может быть согласована каким-либо подходящим образом, делается попытка найти альтернативное утверждение для самой исходной цели. В этом случае необходимо вернуть в исходное (неопределенное) состояние каждую переменную, конкретизированную при выборе предыдущего утверждения. Эти действия мы называем «уничтожением» результатов, полученных ранее при доказательстве согласованности целевого утверждения. Затем возобновляется просмотр базы данных, но начинается этот просмотр с места, отмеченного маркером данной цели. Как и ранее, эта новая цель, выбранная при возврате, может оказаться либо согласованной, либо несогласованной с базой данных. При этом будет иметь место либо шаг (а), либо шаг (б).</p>
    <p>В этой главе процесс возврата будет рассмотрен более подробно. Кроме того, будет рассмотрен специальный механизм – «отсечение», который может быть использован в программах на Прологе. Отсечение позволяет указывать, какие из ранее сделанных выборов альтернатив не следует более пересматривать.</p>
   </section>
   <section>
    <title>
     <p><strong>4.1. Порождение множественных решений</strong></p>
    </title>
    <p>Простейшая ситуация, в которой некоторое множество фактов допускает несколько ответов на вопрос, возникает, когда в этом множестве имеется несколько фактов, сопоставимых с вопросом. Например, имеются следующие факты:</p>
    <empty-line/>
    <p>отец(мэри, джордж). </p>
    <p>отец(джон, джордж). </p>
    <p>отец(сью,гарри). </p>
    <p>отец(джордж,эдуард).</p>
    <empty-line/>
    <p>в которых <strong>отец(X, Y) </strong>обозначает, что <strong>Y</strong> является отцом <strong>X</strong>. Вопрос</p>
    <empty-line/>
    <p>?- отец(X,Y).</p>
    <empty-line/>
    <p>имеет несколько возможных ответов. Если мы будем вводить после каждого ответа точку с запятой, то Пролог выдаст следующие ответы:</p>
    <empty-line/>
    <p>X = мэри, Y = джордж;</p>
    <p>X = джон, Y = джордж;</p>
    <p>X = сью, Y = гарри;</p>
    <p>X = джордж, Y = эдуард.</p>
    <empty-line/>
    <p>Пролог найдет эти ответы, просматривая базу данных в поисках фактов и правил с предикатом <strong>отец </strong>и печатая их в том порядке, в каком они представлены в базе данных. При этом Пролог не проявляет особого «интеллекта» – он ничего не помнит о предыдущих ответах. Так, если мы обратимся с вопросом</p>
    <empty-line/>
    <p>?- отец(_,X).</p>
    <empty-line/>
    <p><emphasis>(для каких </emphasis><strong>X</strong> <emphasis>верно то, что </emphasis><strong>X</strong> <emphasis>является отцом), </emphasis>то мы получим</p>
    <empty-line/>
    <p>Х=джордж; </p>
    <p>Х=джордж; </p>
    <p>Х=гарри; </p>
    <p>Х=эдуард.</p>
    <empty-line/>
    <p>при этом ответ <strong>джордж</strong> повторен дважды, так как Джордж является отцом как Мэри, так и Джона. Если Пролог может сделать одно и то же двумя различными способами, то он рассматривает это как два различных решения.</p>
    <p>Повторный просмотр выполняется точно таким же способом, если выбор среди альтернатив происходит на более глубоком уровне обработки. Например, для определения отношения «одним из детей <strong>X</strong> является <strong>Y</strong>» могло бы быть использовано правило</p>
    <empty-line/>
    <p>ребенок(Х,Y):- отец(Y,X).</p>
    <empty-line/>
    <p>Тогда вопрос</p>
    <empty-line/>
    <p>?- ребенок(Х,Y).</p>
    <empty-line/>
    <p>дал бы</p>
    <empty-line/>
    <p>X = джордж, Y = мэри;</p>
    <p>X = джордж, Y=джон;</p>
    <p>X = гарри, Y = сью;</p>
    <p>X = эдуард, Y = джордж.</p>
    <empty-line/>
    <p>Так как <strong>отец(Y, X)</strong> имеет четыре решения, то столько же решений имеет и <strong>ребенок(Х, Y). </strong>Более того, решения порождаются в том же самом порядке. Единственное, что отличает эти решения, - это различный порядок аргументов в соответствии с определением для предиката <strong>ребенок. </strong>Аналогично, если мы определили</p>
    <empty-line/>
    <p>отец(X):- отец(_,X).</p>
    <empty-line/>
    <p>(отец (X) обозначает, что X является чьим-либо отцом), то на вопрос</p>
    <empty-line/>
    <p>?- отец(X). </p>
    <empty-line/>
    <p>были бы получены ответы:</p>
    <empty-line/>
    <p>X = джордж; </p>
    <p>X = джордж;</p>
    <p>X<emphasis> = </emphasis>гарри; </p>
    <p>X = эдуард.</p>
    <empty-line/>
    <p>Если мы перемешаем факты и правила, то выбор альтернатив вновь будет производиться в соответствии с порядком, в котором представлены факты и правила. Так, мы могли бы определить:</p>
    <empty-line/>
    <p>человек(адам).</p>
    <p>человек(X):- мать(X,Y).</p>
    <p>человек(ева).</p>
    <p>мать(каин,ева).</p>
    <p>мать(авель,ева).</p>
    <p>мать(иавал,ада).</p>
    <p>мать(тувалкаин,цилла).</p>
    <empty-line/>
    <p>(<strong>адам </strong>- человек; объект является человеком, если он имеет мать; <strong>ева</strong> – человек. Перечисленные люди имеют указанных матерей). В этом случае если бы мы сделали запрос</p>
    <empty-line/>
    <p>?- человек (X).</p>
    <empty-line/>
    <p>то ответом было бы: </p>
    <p>X = адам;</p>
    <p>X = каин; </p>
    <p>X = авель; </p>
    <p>X = иавал; </p>
    <p>X = тувалкаин; </p>
    <p>X = ева. </p>
    <empty-line/>
    <p>Давайте рассмотрим более интересный случай, когда имеются два целевых утверждения, для каждого из которых есть несколько решений. Предположим, что мы планируем провести вечеринку и хотим порассуждать о том, кто с кем мог бы танцевать. Мы можем начать писать программу следующим образом: </p>
    <empty-line/>
    <p>возможная_пара(X, Y):- парень(Х), девушка(Y). </p>
    <p>парень(джон). </p>
    <p>парень(мармадук). </p>
    <p>парень(бертрам). </p>
    <p>парень(чарлз). </p>
    <p>девушка(гризелда). </p>
    <p>девушка(эрминтруда). </p>
    <p>девушка(брунхильда). </p>
    <empty-line/>
    <p>В программе определено, что <strong>X</strong> и <strong>Y</strong> образуют возможную пару, если <strong>X</strong> является парнем, a <strong>Y</strong> — девушкой. Теперь давайте посмотрим, какие возможные пары имеются: </p>
    <empty-line/>
    <p>?- возможная_пара(X, Y). </p>
    <empty-line/>
    <p>X = джон, Y = гризелда;</p>
    <p>X = джон, Y = эрминтруда;</p>
    <p>X = джон, Y = брунхильда;</p>
    <p>X = мармадук, Y = гризелда;</p>
    <p>X = мармадук, Y = эрминтруда;</p>
    <p>X = мармадук, Y = брунхильда;</p>
    <p>X = бертрам, Y = гризелда;</p>
    <p>X = бертрам, Y = эрминтруда;</p>
    <p>X = бертрам, Y = брунхильда;</p>
    <p>X = чарлз, Y = гризелда;</p>
    <p>X = чарлз, Y = эрминтруда;</p>
    <p>X = чарлз, Y = брунхильда.</p>
    <empty-line/>
    <p>Вы должны быть уверены, что понимаете, почему Пролог породил решения в таком порядке. Прежде всего он ищет сопоставление для цели <strong>парень(X) </strong>и находит, что первым парнем является <strong>джон. </strong>Затем он находит сопоставление для цели <strong>девушка(Y)</strong>, выбирая <strong>гризелда </strong>в качестве первой девушки. В этом месте мы запрашиваем новое решение, вводя ';'. Пролог поэтому считает, что последнее доказательство согласованности цели потерпело неудачу, и делает попытку вновь доказать согласованность последней из рассматривавшихся целей. Этой целью является утверждение девушка, встретившееся при доказательстве согласованности целевого утверждения <strong>возможная_пара. </strong>Обнаруживается альтернативный вариант <strong>эрминтруда, </strong>и, следовательно, следующим решением является пара <strong>джон </strong>и <strong>эрминтруда. </strong>Аналогично порождается пара <strong>джон </strong>и <strong>брунхильда </strong>в качестве третьего решения. При следующей попытке доказать согласованность целевого утверждения <strong>девушка(Y) </strong>Пролог обнаружит, что маркер, соответствующий этому целевому утверждению, находится в конце базы данных и, следовательно, попытка найти новое сопоставление для этого целевого утверждения терпит неудачу. Тогда делается попытка вновь доказать согласованность целевого утверждения <strong>парень(Х), </strong>маркер которого был установлен на первый факт предиката <strong>парень, </strong>и, следовательно, следующим найденным решением, соответствующим второму парню, является <strong>мармадук. </strong>Теперь, когда для этого целевого утверждения найдено новое решение, Пролог определяет, что следует делать далее – он должен найти сопоставление для цели <strong>девушка(Y), </strong>осуществляя поиск решения с самого начала базы данных. Так что он выбирает гризелда в качестве первой девушки. Следующие три решения содержат <strong>мармадук </strong>и имена трех девушек. Очередная попытка найти альтернативное решение для цели <strong>девушка </strong>заканчивается неудачей. Поэтому ищется другой парень, а поиск среди девушек производится с начала базы данных. Аналогичным образом происходит выполнение программы и далее.</p>
    <p>В конце концов сложится ситуация, когда доказательство согласованности целевого утверждения <strong>девушка </strong>закончится неудачей и при этом будут также исчерпаны все решения для целевого утверждения <strong>парень. </strong>Программа не может более найти ни одной пары.</p>
    <p>Все приведенные примеры являются очень простыми. Они содержат лишь определения большого числа фактов или используют правила для доступа к этим фактам. По этой причине они могут порождать только конечное число возможных решений. В некоторых случаях нам может потребоваться порождать бесконечное число возможных вариантов – не потому, что мы хотим рассмотреть их все, а потому, что мы не знаем заранее, сколько их понадобится. В этом случае необходимо рекурсивное определение (обсуждавшееся в предыдущей главе).</p>
    <p>Рассмотрим следующее определение целого числа (здесь под «целым» числом понимается целое положительное число). Целевое утверждение <strong>целое</strong>_<strong>число(N) </strong>согласуется с базой данных, если переменная <strong>N</strong> конкретизирована и ее значением является целое число. Если переменная <strong>N</strong> неконкретизирована в момент рассмотрения целевого утверждения, то попытка найти соответствие для утверждения <strong>целое_число (N)</strong> приведет к тому, что будет выбрано целое число, которое будет присвоено N в качестве значения.</p>
    <empty-line/>
    <p>/* 1 */ целое_число(0).</p>
    <p>/* 2 */ целое_число (X):- целое_число (Y),X is Y+1)</p>
    <empty-line/>
    <p>Если мы зададим вопрос</p>
    <empty-line/>
    <p>?- целое_число (X).</p>
    <empty-line/>
    <p>то получим в качестве возможных ответов все целые числа в порядке возрастания (0, 1, 2, 3,…), по одному числу каждый раз. Всякий раз, когда инициируется возврат (возможно, в результате ввода точки с запятой ';'), для предиката <strong>целое_число </strong>находится новое сопоставление, в результате чего его аргументу присваивается очередное целое число. Таким образом, это короткое определение порождает бесконечное число решений. Почему? На рис. 4.1, 4.2, 4.3 показана последовательность событий, приводящая к порождению трех первых решений. На каждом этапе самый нижний указатель (1) на рисунке указывает место, где впоследствии будет выбрано <emphasis>иное решение. </emphasis>Первоначально для ответа на вопрос имеется выбор между фактом <strong>1</strong> и правилом <strong>2</strong>. Если выбирается факт <strong>1</strong>, то ничего более выбирать не придется, и мы получаем X = 0. В противном случае выбирается правило <strong>2</strong> и ищется соответствие для цели, порождаемой этим правилом. Если выбирается факт <strong>1</strong>, то завершается доказательство целевого утверждения с ответом <strong>X=1</strong>; в противном случае используется правило <strong>2</strong> и снова ищется соответствие для появившейся подцели. И так далее. На каждом этапе первое что делает Пролог – это выбирает факт <strong>1</strong>. Только при выполнении возврата он изменяет последний сделанный им выбор. Каждый раз, когда он это делает, он возвращается к тому месту, где в последний раз выбирал факт <strong>1</strong>, и выбирает вместо него правило <strong>2</strong>. При этом выборе появляется новая подцель. Факт <strong>1</strong> представляет первую возможность для сопоставления с этой подцелью.</p>
    <image l:href="#pic_15.jpg"/>
    <p>Рис. 4.1.</p>
    <image l:href="#pic_16.jpg"/>
    <p>Рис. 4.2.</p>
    <image l:href="#pic_17.jpg"/>
    <empty-line/>
    <p>Рис. 4.3.</p>
    <p>Большинство правил на Прологе будут порождать альтернативные решения, если они сопоставляются с целями, содержащими большое число неконкретизированных переменных. Например, отношение принадлежности элемента списку:</p>
    <empty-line/>
    <p>принадлежит(X,[X |_]<emphasis>).</emphasis></p>
    <p>принадлежит(X,[_ |Y]):- принадлежит(X,Y).</p>
    <empty-line/>
    <p>порождает альтернативные решения. Если мы задаем вопрос </p>
    <empty-line/>
    <p>?- принадлежит(а,X).</p>
    <empty-line/>
    <p>(обратите внимание, что <strong>X</strong> в вопросе является неконкретизированной переменной), то последовательные значения переменной <strong>X</strong> будут представлять частично конкретизированные списки, в которых <strong>а</strong> является первым, вторым, третьим и так далее элементом списка. Убедитесь, что вы понимаете, почему так получается. Другим следствием возврата, допускаемого при выполнении предиката принадлежит, является то, что вопрос</p>
    <empty-line/>
    <p>?- принадлежит(а,[а,b,r,а,с,а,d,а,b,r,а]).</p>
    <empty-line/>
    <p>фактически может быть согласован <emphasis>пятью способами. </emphasis>Очевидно, что имеются приложения предиката <strong>принадлежит</strong>, в которых требуется найти лишь одно решение, если оно вообще существует, и затем отбросить (обойти) остальные возможные решения. Такое отбрасывание оставшихся решений может быть реализовано с помощью «отсечения».</p>
   </section>
   <section>
    <title>
     <p>4.2. Отсечение</p>
    </title>
    <p>Этот раздел посвящен специальному механизму, используемому в программах на Прологе и называемому «отсечением»<a l:href="#n_8" type="note">[8]</a>. Отсечение позволяет указать, какие из сделанных ранее выборов не следует пересматривать при возврате по цепочке согласованных целевых утверждений. Существуют две причины, побуждающие включать в программу такие указания:</p>
    <p>• Программа будет выполняться быстрее, так как не будет тратиться время на попытки найти новые сопоставления для целей, о которых заранее известно, что они не внесут более ничего нового в решение.</p>
    <p>• Программа может занимать меньше места в памяти ЭВМ, так как отсутствие необходимости запоминать точки возврата для последующего анализа позволяет более экономно использовать память.</p>
    <p>В некоторых случаях включение отсечения в программу может означать переход от программы, которая не будет работать, к программе, которая будет работать.</p>
    <p>Синтаксически использование в правиле отсечения выглядит как вхождение целевого утверждения с предикатом '!', не имеющим аргументов. Как целевое утверждение этот предикат всегда согласуется с базой данных и не может быть вновь согласован. Однако он имеет побочный эффект, который изменяет процесс последующего возврата. Эффект заключается в том, что маркеры некоторых целей становятся недоступными, так что для этих целей нельзя найти новые сопоставления. Рассмотрим, как это происходит на примере. Предположим, что вы заведуете библиотекой и имеете базу данных на Прологе, содержащую информацию о наличии книг, о том, кто и какие книги взял и когда книги должны быть возвращены. Один из вопросов, который мог бы вас интересовать,- это какие виды услуг, предоставляемых библиотекой, доступны каждому из читателей. Некоторые услуги, которые мы могли бы назвать основными, должны быть доступны любому читателю. Они включают пользование каталогом и справочным бюро. С другой стороны, дополнительные услуги, такие как пользование абонементом или получение книг из других библиотек, хотелось бы предоставлять читателю выборочно. Одно из правил могло бы состоять в том, что если читатель не возвратил в указанный срок книгу, то дополнительные виды услуг ему недоступны до тех пор, пока он не вернет книгу. Здесь приведена часть программы, которая использует это правило:</p>
    <empty-line/>
    <p>услуги(Читатель,Вид_услуг):-</p>
    <p> книга_не_возвращена(Читатель,Книга),!,основные_услуги (Вид_услуг). </p>
    <p>услуги(Читатель,Вид_услуг):-общие_услуги(Вид_услуг). </p>
    <p>основные_услуги(пользование_каталогом).</p>
    <p>основные_услуги(получение_справок). </p>
    <p>дополнительные_услуги (абонемент). </p>
    <p>дополнительные_услуги(межбиблиотечный_абонемент). </p>
    <p>общие_услуги(X):-основные_услуги(X). </p>
    <p>общие_услуги(X):-дополнительные_услуги(X). </p>
    <p>книга_не_возвращена('С. Уотзер',книга10089),</p>
    <p>книга_не_возвращена('А. Джонс', книга29907).</p>
    <p>. . .</p>
    <p>читатель('А.Джонс'). читатель('В.Метеск').</p>
    <empty-line/>
    <p>Зачем понадобилось использовать отсечение в этой программе и какой эффект оно оказывает? Предположим, что вы хотите просмотреть список всех читателей и определить, какие услуги им доступны. В этом случае вам надо обратиться к Прологу со следующим вопросом:</p>
    <empty-line/>
    <p>?- читатель(X), услуги(X,Y).</p>
    <empty-line/>
    <p>Начав поиск ответа, Пролог выберет первого читателя: <strong>А.Джонс. </strong>Предположим, что этот читатель имеет на руках несколько не возвращенных в указанный срок книг. Для того чтобы определить, какие услуги доступны ему, Пролог воспользуется первым утверждением для предиката <strong>услуги. </strong>Это приводит к появлению нового целевого утверждения – <strong>книга_не_возвращена. </strong>После небольшого поиска среди фактов <strong>книга_не_возвращена </strong>обнаружен факт о первой не возвращенной А. Джонсом в срок книги (второй факт для этого предиката). Следующее целевое утверждение – это отсечение. Эта цель автоматически согласуется с базой данных, и в результате этого в системе закрепляются все решения, принятые с момента выбора первого утверждения <strong>услуги.</strong></p>
    <p>Мы можем представить ситуацию, возникшую непосредственно перед выполнением отсечения, в виде диаграммы, приведенной на рис. 4.4. Когда в программе встречается отсечение, то оно «отсекает» путь, представляющий цепочку выполненных доказательств таким образом, что следующая цель соединяется непосредственно с исходной (см. рис. 4.5). Результат действия отсечения в правиле для предиката <strong>услуги </strong>(утверждение 1) заключается в том, что все цели, выбранные с момента, когда было выбрано это правило, запоминаются в системе как неизменяемые при обратном просмотре.</p>
    <p>Путь, представляющий цепочку найденных доказательств, при этом изменяется так, что исключаются все маркеры, соответствующие целям, расположенным между <strong>услуги </strong>и отсечением включительно. Таким образом, если впоследствии произойдет возврат на точку! (отсечение), то попытка согласовать цель <strong>услуги </strong>немедленно потерпит неудачу. Система не будет рассматривать альтернативные решения для целевого утверждения <strong>книга_не_возвращена ('А. Джонс', Книга), </strong>и это совершенно разумно, так как мы интересуемся лишь тем, числится ли за читателем <emphasis>хотя бы одна </emphasis>не возвращенная в срок книга, а не тем, каковы <emphasis>все </emphasis>книги, числящиеся за ним. Утверждение 2 в предикате <strong>услуги </strong>тоже рассматриваться системой не будет, так как при возврате обходится и выбор правила, в котором встречается отсечение. Такое поведение системы в рассматриваемой ситуации тоже является разумным, так как мы не хотим порождать решения, указывающие на то, что <strong>А. Джонсу </strong>доступны все услуги.</p>
    <image l:href="#pic_18.jpg"/>
    <p>Рис. 4.4.</p>
    <image l:href="#pic_19.jpg"/>
    <p>Рис. 4.5.</p>
    <p>Действие отсечения в этом примере можно резюмировать следующим образом:</p>
    <p>Если оказывается, что читатель имеет не возвращенную в срок книгу, то ему разрешается пользоваться лишь основными видами услуг, предоставляемыми библиотекой. Нет необходимости выявлять все книги, не возвращенные читателем в срок, равно как нет необходимости рассматривать какие-либо другие правила относительно услуг, предоставляемых читателю.</p>
    <p>В этом примере использование отсечения привело к «сокращению» всех решений, принятых после выбора целевого утверждения <strong>услуги. </strong>Оно называется <emphasis>родительским </emphasis>целевым утверждением для отсечения, так как именно это целевое утверждение привело к использованию правила, содержащего отсечение. На наших диаграммах родительским целевым утверждением всегда является целевое утверждение, соответствующее наименьшему прямоугольнику, содержащему прямоугольник с '!'. Формальное определение эффекта, производимого отсечением, формулируется следующим образом:</p>
    <p>Если отсечение встречается в качестве целевого утверждения, то после этого система лишается возможности изменять решения, принятые ею с момента вызова родительского целевого утверждения. Все альтернативы принятым решениям отбрасываются. Следовательно, попытка вновь доказать согласованность с базой данных любого целевого утверждения между родительским целевым утверждением и ! (отсечением) закончится неудачей.</p>
    <p>Существуют различные способы описания того, что произошло с решениями, попавшими в область действия отсечения. Можно сказать, что эти решения отсекаются или замораживаются, что система лишается возможности изменять эти решения или что оставшиеся альтернативы отбрасываются. Можно также смотреть на символ отсечения как на некий разделитель (забор), отделяющий целевые утверждения. Так, при обработке конъюнкции целей</p>
    <empty-line/>
    <p>foo:- а, b, с,!, d, e, f</p>
    <empty-line/>
    <p>Пролог без каких-либо ограничений может выполнять возврат среди целей <strong>a</strong>, <strong>b</strong> и <strong>с </strong><emphasis>до тех пор, </emphasis>пока доказательство согласованности целевого утверждения <strong>с </strong>с базой данных не приведет к тому, что Пролог «перешагнет» через «забор»! и приступит к доказательству согласованности целевого утверждения <strong>d</strong>. Далее возврат может осуществляться между целевыми утверждениями <strong>d</strong>, <strong>e</strong> и <strong>f</strong>, при этом, возможно, неоднократно будет достигаться согласованность всей конъюнкции целиком. Однако если произойдет неудача при доказательстве согласованности целевого утверждения <strong>d</strong>, что вызовет «перешагивание через забор» справа налево, то никаких попыток вновь доказать согласованность целевого утверждения <strong>с </strong>делаться не будет; доказательство согласованности конъюнкции целей в целом, а следовательно, и цели <strong>foo</strong> потерпит неудачу.</p>
    <p>Прежде чем перейти к рассмотрению других примеров с использованием отсечения, сделаем еще одно замечание. Мы сказали, что если отсечение появляется в некотором правиле и выбирается в качестве целевого утверждения, то Пролог-система лишается возможности <emphasis>изменять все решения, принятые с момента вызова родительского целевого утверждения. </emphasis>Это значит, что выбор этого правила и всех решений, принятых после него, становится зафиксированным. Далее мы увидим, что есть возможность указывать альтернативы в <emphasis>рамках одного правила, </emphasis>используя встроенный предикат ';' (обозначающий «<strong>или</strong>»). На выбор альтернатив, сделанный с использованием этой возможности, эффект отсечения действует точно так же, т. е. при отсечении фиксируются все «<strong>или</strong>»-выборы, сделанные с момента выбора правила, содержащего отсечение.</p>
   </section>
   <section>
    <title>
     <p><strong>4.3. Общие случаи использования отсечения</strong></p>
    </title>
    <section>
     <p>Мы можем выделить три основных случая использования отсечения.</p>
     <p>Первый связан с ситуациями, когда мы хотим указать Пролог-системе, что она нашла нужное правило для заданного целевого утверждения. В этом случае отсечение означает: «если вы дошли до этого места, то вы выбрали именно то правило, которое нужно для данного целевого утверждения».</p>
     <p>Второй случай относится к ситуации, когда мы хотим указать Пролог-системе, что необходимо немедленно прекратить доказательство согласованности конкретного целевого утверждения, не пытаясь найти для него альтернативные решения. В этом случае используется конъюнкция отсечения с предикатом <strong>fail, </strong>что означает; «если вы дошли до этого места, то вам следует прекратить попытки доказать согласованность данного целевого утверждения».</p>
     <p>К третьему случаю относятся ситуации, когда мы хотим закончить порождение альтернативных решений механизмом возврата. В этом случае отсечение означает: «если вы дошли до этого места, то вы нашли единственное решение задачи и никакой возможности найти другие альтернативные решения нет».</p>
     <p>Теперь мы рассмотрим несколько примеров использования отсечения в перечисленных выше ситуациях. Однако необходимо помнить, что во всех этих случаях отсечение имеет один и тот же смысл. Выделение трех случаев использования отсечения обусловлено чисто методическими соображениями, чтобы показать, по каким причинам в программах могут использоваться отсечения.</p>
    </section>
    <section>
     <title>
      <p>4.3.1. Подтверждение правильности выбора правила</p>
     </title>
     <p>При программировании на Прологе очень часто возникает желание использовать для описания одного предиката несколько утверждений. Одно утверждение будет использоваться, если аргументы имеют один вид, другое будет использоваться для аргументов иного вида и так далее. Часто мы можем указать, какое правило следует использовать для данного целевого утверждения, указав в качестве аргументов в заголовке правила необходимые образцы структур так, чтобы это правило могло быть сопоставлено лишь с соответствующими целевыми утверждениями. Однако это не всегда возможно. Если мы не можем сказать заранее, какого вида аргументы будут использоваться, или если мы не можем перечислить все множество возможных образцов аргументов, то мы можем принять компромиссное решение. Это значит, что задаются правила для аргументов определенных типов, а в конце задается правило-«ловушка» для всех остальных правил. В качестве примера такого способа рассмотрим следующую программу. Определим предикат сумма таким образом, что при выборе в качестве целевого утверждения <strong>сумма(N, X)</strong>, где <strong>N</strong> – некоторое целое число, переменной <strong>X</strong> присваивается значение, равное сумме всех целых чисел от <strong>1</strong> до <strong>N</strong>. Так, например, возможен следующий диалог:</p>
     <p>?- сумма(5,X).</p>
     <p>X = 15; </p>
     <p>нет</p>
     <p>Полученный ответ объясняется тем, что 1+2+3+4+5 равно 15. Здесь приведена соответствующая программа.</p>
     <empty-line/>
     <p>сумма(1,1):-!.</p>
     <p>сумма(N,Результат):- N1 is N-1, сумма(N1,Результат),Результат is Результат+N.</p>
     <empty-line/>
     <p>Приведенное определение является рекурсивным. Идея состоит в том, что выход на граничное условие происходит в случае, когда первый аргумент равен 1. В этом случае ответ тоже равен <strong>1</strong>. Второе утверждение вводит рекурсивное целевое утверждение <strong>сумма</strong>. Однако первый аргумент нового целевого утверждения на единицу меньше, чем первый аргумент в исходном целевом утверждении. Следующее целевое утверждение, которое будет порождено этим целевым утверждением, снова будет иметь первый аргумент на единицу меньше. И так далее до тех пор, пока не будет достигнуто граничное условие. Так как первый аргумент всегда на единицу меньше, то в конце концов произойдет выход на граничное условие (в предположении, что исходное целевое утверждение имеет первый аргумент не меньше 1) и выполнение программы закончится.</p>
     <p>Представляет интерес то, как в этой программе организована обработка двух случаев: когда число, соответствующее первому аргументу, равно <strong>1</strong> и когда оно отлично от <strong>1</strong>. Когда мы определяли предикаты для обработки списков, то было легко указать два типичных случая: когда список был пустым ([]) и когда он имел вид <strong>[A|B]. </strong>Для чисел это не так просто сделать, потому что мы не можем задать такой аргумент, который был бы сопоставим только с целым числом, не равным 1. Приемлемое решение в данном примере состоит в том, чтобы выделить случай, когда первый аргумент равен 1, и обеспечить сопоставление для всех остальных случаев с помощью переменной. Мы знаем, что в соответствии со стратегией, используемой при поиске в базе данных, Пролог сначала будет пытаться произвести сопоставление с правилом для <strong>1</strong>, и только в случае неудачи он попытается использовать второе правило. Таким образом, второе правило используется только для чисел, не равных <strong>1</strong>. Но этим дело не кончается. Если когда-либо Пролог будет выполнять возврат и попытается пересмотреть выбор правила с первым аргументом, равным <strong>1</strong>, то он обнаружит, что второе правило тоже применимо. Как можно видеть, оба правила являются альтернативными для целевого утверждения <strong>сумма(1,X). </strong>Мы должны указать Прологу, что ни в коем случае не следует использовать второе правило, если число, соответствующее первому аргументу, равно 1. Один из способов сделать это – вставить отсечение в первое правило (как это и показано в записи этого правила). Это отсечение указывает Прологу, что если выбрано первое правило, то больше не следует принимать нового решения относительно того, какое правило использовать для целевого утверждения <strong>сумма. В </strong>случае если число, соответствующее первому аргументу, действительно равно <strong>1</strong>, может произойти только выбор первого правила.</p>
     <p>Давайте посмотрим, как все это выглядит на языке диаграмм. Если мы обратимся к предикату <strong>сумма(1,X) </strong>в следующем контексте:</p>
     <empty-line/>
     <p>выполнить:- сумма(1,X), foo(apples)</p>
     <p>?-выполнить.</p>
     <empty-line/>
     <p>и для цели <strong>foo(apples) </strong>нет сопоставления, то к моменту, когда обнаружится несогласованность <strong>foo(apples) </strong>с базой данных, результат работы Пролога будет иметь вид, как показано на рис. 4.6. Если Пролог попытается найти новые сопоставления для целевых утверждений, просматривая их в обратном порядке, то обнаружится, что рассмотренные выше два альтернативных целевых утверждения не могут быть пересмотрены, так как они исключены из цепочки доказательства. Следовательно, наиболее верный путь – не пытаться найти другое сопоставление для предиката <strong>сумма(1,X).</strong></p>
     <image l:href="#pic_20.jpg"/>
     <p>Рис. 4.6.</p>
     <p><strong>Упражнение 4.1. </strong>Что произойдет в процессе возврата при попытке найти новое сопоставление для целевогоутверждения <strong>сумма, </strong>если из первого правила для предиката <strong>сумма </strong>удалить отсечение? Какие альтернативные результаты будут получены (если вообще они будут возможны) и почему?</p>
     <p>Последний пример показал, как можно использовать отсечение для того, чтобы сделать поведение Пролога чувствительным к случаю, когда мы не можем выделить все возможные случаи путем перечисления образцов в заголовках правил. Более типичная ситуация, в которой мы не можем указать структуру заголовков правил для выполнения сопоставления, возникает, если мы хотим ввести дополнительные условия в виде целевых утверждений Пролога, позволяющих в процессе согласования с базой данных выбрать соответствующие правила. Рассмотрим следующий альтернативный вариант решения последнего примера:</p>
     <empty-line/>
     <p>сумма(N,1):- N =‹ 1,!.</p>
     <p>cyммa(N,R):- N1 is N-1, сумма(N1,R1), R is Rl+N</p>
     <empty-line/>
     <p>В этом случае указывается, что первое правило следует выбрать, когда заданное количество суммируемых чисел меньше или равно единице. Такое определение правила немного лучше, чем предыдущее, потому что соответствующая ему программа даст ответ (вместо того чтобы выполняться бесконечно), если в качестве первого аргумента будет задан <strong>0</strong> или отрицательное число. Если условие первого правила выполняется, то сразу же выдается результат <strong>1</strong> и не требуется прибегать к рекурсивному порождению целевых утверждений. Второе правило следует попытаться использовать лишь в случае, когда это условие не выполняется. Мы должны указать Прологу, что если уже обнаружено, что N <emphasis>= ‹ </emphasis>1, то не следует возвращаться к пересмотру выбора правила. Это как раз и достигается с помощью отсечения.</p>
     <p>Общий принцип заключается в том, что использование механизма отсечения для указания Прологу на ситуации, когда он выбрал единственно правильное правило, может быть заменено использованием предиката <strong>not. </strong>Это встроенный предикат Пролога, т. е. определение этого предиката заранее известно Пролог-системе. Поэтому его можно использовать, не выписывая каждый раз его определение (более полно встроенные предикаты описываются в гл. 6). Предикат <strong>not </strong>определен таким образом, что целевое утверждение <strong>not(X) </strong>истинно, только если X, рассматриваемое как целевое утверждение, не согласуется с базой данных. Таким образом, <strong>not(X) </strong>означает, что <strong>X</strong> <emphasis>недоказуемо как целевое утверждение Пролога, </emphasis>т. е. не согласовано с базой данных. В качестве примера использования <strong>not </strong>вместо отсечения перепишем два варианта определения предиката <strong>сумма </strong>следующим образом:</p>
     <empty-line/>
     <p>сумма(1,1).</p>
     <p>cyммa(N,R):- not(N = 1), N1 is N-1, cyммa(N1,R1),R is N1 + R1.</p>
     <empty-line/>
     <p>или</p>
     <empty-line/>
     <p>сумма(N,1):- N =‹1.</p>
     <p>сумма(N,R):- not(N=‹l), N1 is N-1, сумма(N1,R1<emphasis>),</emphasis>R is N1 + R1.</p>
     <empty-line/>
     <p>В действительности в Прологе имеются другие удобные встроенные предикаты, которые могут заменить оба из приведенных вхождений предиката <strong>not. </strong>Например, можно заменить <strong>not(N=1) </strong>на <strong>N\=1, </strong>a <strong>not(N </strong>=‹ <strong>1) </strong>на <strong>N›1. </strong>В общем случае это можно сделать не со всеми возможными условиями.</p>
     <p>Использование предиката <strong>not </strong>вместо отсечения свойственно для хорошего стиля программирования. Это связано с тем, что программы, содержащие отсечения, как правило, более трудны для чтения, чем программы, не содержащие их. Если удается локализовать все вхождения отсечения и заменить их с помощью предиката <strong>not</strong>, то программа станет более понятной. Однако определение not предполагает попытку доказать, что заданное целевое утверждение согласуется с базой данных. Поэтому если мы имеем программу, в общем виде представимую как</p>
     <p><emphasis>A:-B, C</emphasis></p>
     <p><emphasis>A:-not(B),D</emphasis></p>
     <p>то Прологу для успешного завершения программы может потребоваться две попытки согласовать <emphasis>B. </emphasis>Он должен попытаться согласовать <emphasis>B</emphasis> при просмотре первого правила. Но если затем будет выполнен возврат и рассмотрено второе правило, то он будет вынужден попытаться согласовать <emphasis>B</emphasis> вновь, чтобы убедиться, может ли быть согласовано <emphasis>not(B). </emphasis>Такое дублирование приводит к потере эффективности программы, когда условие <emphasis>B </emphasis>достаточно сложно. Этого бы не произошло, если бы вместо приведенной программы мы имели:</p>
     <p><emphasis>A:-B,!,C</emphasis></p>
     <p><emphasis>A:-D</emphasis></p>
     <p>Таким образом, иногда нужно взвесить преимущества ясной программы по сравнению с преимуществами ее быстрого выполнения. Обсуждение вопроса эффективности приводит нас к последнему примеру, в котором отсечение используется для фиксирования выбора правила. Рассмотрим определение предиката <strong>присоединить</strong>:</p>
     <empty-line/>
     <p>присоединить([],X,X).</p>
     <p>присоединить([А|В],С,[А|D]) – присоединить(В,С,D).</p>
     <empty-line/>
     <p>Если предикат <strong>присоединить </strong>используется лишь в случаях, когда, имея два списка, мы хотим найти список, получающийся в результате добавления элементов второго списка в конец первого, то такая программа неэффективна, поскольку, если выполняется возврат при обработке целевого утверждения вида <strong>присоединить([],[a,b,c,d],X)</strong>, Пролог обязан сделать попытку использовать второе правило, несмотря на то что эта попытка заранее обречена на неудачу. В таком контексте пустота первого списка указывает на то, что первое правило является единственным возможным для использования и эта информация может быть сообщена Прологу с помощью отсечения. В общем случае при применениях Пролог-системы смогут лучше использовать имеющуюся память, если сообщать системе такие сведения, по сравнению с тем, когда она должна хранить информацию о выборе правил, которая в действительности использована не будет. Можно с этой целью переписать наше определение следующим образом:</p>
     <empty-line/>
     <p>присоединить([],X,X):-!. </p>
     <p>присоединить([А|В],С,[А|D]:- присоединить(В,С,D).</p>
     <empty-line/>
     <p>При сделанных предположениях относительно применения предиката <strong>присоединить</strong> это никак не повлияет на то, какие решения найдет программа, но несколько повысит ее эффективность по времени выполнения и объему занятой памяти. В качестве платы за это мы потеряли возможность использования предиката <strong>присоединить</strong> в других ситуациях – он больше не будет работать ожидаемым образом, что будет показано в разд. 4.4.</p>
    </section>
    <section>
     <title>
      <p><emphasis>4.3.2. Комбинация «отсечение-fail»</emphasis></p>
     </title>
     <p>Во втором из перечисленных выше случаев применения отсечение используется в конъюнкции с встроенным предикатом <strong>fail</strong> – еще одним встроенным предикатом, подобным <strong>not</strong>. Предикат <strong>fail</strong> не имеет аргументов, это означает, что выполнение целевого утверждения <strong>fail</strong> не зависит от того, какие значения имеют переменные. Действительно, предикат <strong>fail</strong> определен таким образом, что доказательство его согласованности как целевого утверждения всегда заканчивается неудачей и приводит к включению механизма возврата. Это в точности совпадает с тем, что происходит, когда мы пытаемся найти сопоставление для целевого утверждения, для которого в базе данных нет ни фактов, ни правил. Если <strong>fail</strong> встречается после отсечения, то нормальное выполнение возврата изменится в результате действия механизма отсечения. Данная комбинация «отсечение-<strong>fail</strong>» оказывается очень полезной на практике.</p>
     <p>Давайте обсудим, как можно было бы использовать эту комбинацию в программе вычисления размера налога, который следует уплатить тому или иному человеку. Один из вопросов, на который мы хотели бы получить ответ – это является ли человек «средним налогоплательщиком». В этом случае вычисления были бы очень простыми и не требовали бы рассмотрения множества особых случаев. Давайте определим предикат <strong>средний_налогоплательщик</strong>, где <strong>средний_налогоплательщик(X)</strong> означает, что <strong>X</strong> является средним налогоплательщиком. Например, Френд Влоггс, который женат, имеет двух детей и работает на велосипедном заводе, мог бы рассматриваться как действительно средний налогоплательщик. Однако директор-распорядитель нефтяной компании получает, по-видимому, достаточно много, а пенсионер – слишком мало, чтобы в обоих случаях был приемлем один и тот же способ вычисления налога. Нам следовало бы начать с особого случая. Возможно, что на иностранного гражданина распространяются особые налоговые законы, так как он может иметь налоговые обязательства также и в своей стране. Поэтому, каким бы средним он ни являлся в других отношениях, иностранец не будет классифицирован как средний налогоплательщик. Мы можем начать запись правил об этом следующим образом:</p>
     <empty-line/>
     <p>средний_ налогоплательщик(X):- иностранец(X), fail<strong>. </strong></p>
     <p>средний_налогоплательщик(X):-…</p>
     <empty-line/>
     <p>В этой выдержке из программы <emphasis>(которая является неверной) </emphasis>в первом правиле делается попытка сказать: «если X – иностранец, то доказательство согласованности целевого утверждения <strong>средний_налогоплательщик(X)</strong> должно закончиться неудачей». Второе правило должно использовать общий критерий того, что значит быть средним налогоплательщиком в тех случаях, когда <strong>X</strong> – не иностранец. Ошибка заключается в том, что если бы мы обратились с вопросом</p>
     <empty-line/>
     <p>?- средний_налогоплательщик(видслевип).</p>
     <empty-line/>
     <p>об иностранце по фамилии <strong>видслевип, </strong>то произошло бы сопоставление с первым правилом и согласованность целевого утверждения <strong>иностранец </strong>была бы доказана. Далее, целевое утверждение <strong>fail </strong>инициировало бы возврат. При попытке найти новое сопоставление для цели <strong>средний_налогоплательщик </strong>Пролог нашел бы второе правило, определяющее общие критерии вычисления налога, и начал бы применять это правило к <strong>видслевип. </strong>Вполне вероятно, что этот иностранец удовлетворил бы общим критериям, что привело бы к неверному ответу «да».</p>
     <p>Таким образом, первое правило оказалось абсолютно неэффективно при «отбраковке» нашего приятеля как среднего налогоплательщика. Почему так получается? Ответ кроется в том, что при возврате Пролог пытается найти новое сопоставление для <emphasis>каждого </emphasis>целевого утверждения, рассматривавшегося ранее. Поэтому, в частности, будут исследованы альтернативные способы сопоставления для <strong>средний_налогоплательщик(видслевип)</strong>. Для того чтобы остановить поиск альтернатив в данном случае, необходимо отсечь сделанный выбор правила (заморозить решение), прежде чем будет выполнен предикат <strong>fail. </strong>Мы можем сделать это, вставив отсечение перед <strong>fail. </strong>Несколько более обстоятельное определение предиката <strong>средний_налогоплательщик, </strong>включающее эти изменения, приведено ниже:</p>
     <empty-line/>
     <p>средний_налогоплателыцик(Х):- иностранец(Х),!,fail. </p>
     <p>средний_налогоплательщика(X):-супруга(Х,Y), доход(Y,Доход), Доход › 3000,!, fail. </p>
     <p>средний_налогоплателыцик(Х):- доход(X,Доход),2000 ‹ Доход, 20000 › Доход. </p>
     <p>доход(Х,Y):- получаемое_пособие(Х,Р),Р‹5000,!, fail<strong>.</strong></p>
     <p>доход(Х,Y):-жалованье(Х,Z),доход_от_капиталовложений(X,W),Y is Z + W. </p>
     <p>доход_от_капиталовложений(Х,Y):-…</p>
     <empty-line/>
     <p>Обратите внимание на использование в этой программе других комбинаций «отсечение-<strong>fail</strong>». Во втором правиле <strong>средний_налогоплательщик</strong> говорится, что попытка показать, что некоторый человек является средним налогоплательщиком, может быть прервана, если можно показать, что заработок его супруги превышает некоторый порог. Точно так же в определении предиката <strong>доход </strong>указано (в первом правиле), что если человек получает пособие, сумма которого меньше некоторого порога, то независимо от других обстоятельств мы будем рассматривать его как вовсе не имеющего дохода.</p>
     <p>Интересный пример использования комбинации «отсечение-<strong>fail» </strong>представляет предикат <strong>not. </strong>Большинство реализаций имеют этот предикат как встроенный, но интересно рассмотреть, как можно описать его с помощью правил. Мы требуем, чтобы целевое утверждение <strong>not(P), </strong>где <strong>P </strong>обозначает некоторое другое целевое утверждение, было истинным тогда и только тогда, когда доказательство согласованности целевого утверждения <strong>P</strong> терпит неудачу. Это не совсем точно соответствует нашему интуитивному пониманию «не является истинным» – далеко не всегда мы можем без опасения считать, что что-то не является истинным, если мы не в состоянии доказать это. Но как бы то ни было, здесь приводится соответствующее определение:</p>
     <empty-line/>
     <p>not(P):- call(P),!, fail.</p>
     <p>not(P)</p>
     <empty-line/>
     <p>Определение предиката <strong>not </strong>содержит обращение к аргументу <strong>P</strong> как к целевому утверждению с использованием встроенного предиката <strong>call. </strong>Предикат <strong>call </strong>просто интерпретирует свой аргумент как целевое утверждение и пытается доказать его согласованность. Мы хотим, чтобы первое правило применялось в тех случаях, когда согласуется <strong>P</strong> с базой данных, а в противном случае должно применяться второе правило. Таким образом, мы говорим, что если Пролог может согласовать <strong>call(P), </strong>то он должен прекратить на этом правиле доказательство целевого утверждения <strong>not. </strong>Другая возможность имеет место, если Пролог не может согласовать <strong>call(P). </strong>В этом случае он никогда не дойдет до отсечения. Так как доказательство согласованности <strong>call(P) </strong>потерпело неудачу, то происходит возврат, и Пролог обнаруживает второе правило. Следовательно, доказательство согласованности целевого утверждения <strong>not(P) </strong>закончится успешно в случае, когда <strong>P</strong> недоказуемо.</p>
     <p>Как и в первом случае применения отсечения, мы можем заменить любое употребление комбинации «отсечение-<strong>fail» </strong>использованием предиката <strong>not. </strong>Такая замена требует несколько большей реорганизации программы, чем ранее, но при этом не приводит к потере эффективности. Если бы мы стали с этой целью переписывать нашу программу для предиката <strong>средний</strong>_<strong>налогоплательщик, </strong>то следовало бы начать ее примерно так:</p>
     <empty-line/>
     <p>средний_налогоплателыцик(X):-</p>
     <p> nоt(иностранец(X)),not((супруга(X,Y),доход(Y,Доход), Доход›3000)), доход(Х, Доход1),…</p>
     <empty-line/>
     <p>Обратите внимание на то, что в этом примере конъюнкция целей, являющаяся аргументом <strong>not, </strong>заключена в скобки. Для того чтобы однозначно показать, что запятые разделяют цели в конъюнкции (а не аргументы предиката <strong>not), </strong>мы заключили аргумент предиката <strong>not </strong>в дополнительные круглые скобки.</p>
     <p>Теперь мы можем рассмотреть последнюю основную область применения отсечения в программах на Прологе – завершение последовательности порождения и проверки вариантов. Очень часто программа состоит из частей, соответствующих следующей общей модели. Имеется последовательность целей, которые могут быть согласованы множеством различных способов и которые порождают много возможных решений при возврате. Кроме того, имеются цели, проверяющие приемлемость порожденных решений для последующего использования. Если поиск сопоставлений для этих целевых утверждений закончится неудачей, то возврат приведет к тому, что будет предложено новое решение. Новое решение будет подвергнуто проверке на пригодность и так далее. Процесс завершится, либо когда будет порождено приемлемое решение (успех), либо когда нельзя больше найти решений (неудача). Мы можем назвать «генератором» целевые утверждения, которые порождают все возможные альтернативы, а целевые утверждения, которые проверяют пригодность решения, - «контролером». Давайте рассмотрим пример такой программы. Приводимый ниже фрагмент мог бы быть частью программы, играющей в крестики-нолики. Эта программа использует встроенные предикаты <strong>var </strong>и <strong>arg, </strong>которые подробно рассмотрены в гл. 6.</p>
     <empty-line/>
     <p>вынужденный ход(Доска,K):- линия(Клетки), угроза(Клетки,Доска,K),!. </p>
     <p>линия([1,2,3]). </p>
     <p>линия([4,5,6]).</p>
     <p>линия([7,8,9]). </p>
     <p>линия([1,4,7]). </p>
     <p>линия([2,5,81). </p>
     <p>линия([3,6,9]). </p>
     <p>линия ([1,5,9]). </p>
     <p>линия([3,5,7]). </p>
     <p>угроза([X,Y,Z],B,X):- пусто(Х,В), крестик (Х,В), крестик(Z,B). </p>
     <p>угроза([X,Y,Z],B,Y):- пусто(Y,B), крестик (Х,В), крестик(Z,B).  </p>
     <p>угроза([X,Y,Z],B,Z):- пусто(Z,B), крестик(Х,В), крестик(Y,B). </p>
     <p>пусто(К,Доска):- arg(K,Дocкa,C), var(C). </p>
     <p>крестик(К,Доска):- arg(K,Дocкa,C), nonvar(C), C=X. </p>
     <p>нолик(К,Доска):- arg(К,Доска,С), nonvar(C), С=0. </p>
     <empty-line/>
     <p>Для тех, кто не знаком с этой игрой, вкратце объясним ее правила. Два игрока по очереди заполняют клетки на доске размером 3x3. Один игрок использует для этого символ 0, а другой игрок — символ X. Цель игры — расположить три своих символа подряд по одной линии (вертикальной, горизонтальной или диагональной). Мы можем перенумеровать девять клеток на доске следующим образом: </p>
     <image l:href="#pic_23.jpg"/>
     <p>Предполагается, что программа действует за игрока, делающего свои ходы ноликами. Предикат <strong>вынужденный_ход</strong> используется для ответа на вопрос: «Нужно ли делать вынужденный ход в конкретной позиции?» Такая ситуация имеет место, если игрок 0 (игрок, делающий ходы ноликами, т. е. программа) не может выиграть немедленно (мы не будем рассматривать этот слу- случай), но есть угроза того, что игрок <strong>X</strong> может выиграть следую- следующим ходом. Например, в позиции </p>
     <image l:href="#pic_24.jpg"/>
     <p>Игрок <strong>0</strong> вынужден поставить <strong>0</strong> в 4-й квадрат, так как если он не сделает этого, то его противник будет иметь возможность на следующем ходу заполнить линию 1-4-7. Программа работает, пытаясь найти линию, две клетки которой заполнены крестиками, а третья – пустая. Если такая линия имеется, то игрок 0 вынужден сделать ход, поставив нолик в пустую клетку. В утверждении для предиката <strong>вынужденный_ход</strong> цель</p>
     <empty-line/>
     <p>линия(Клетки)</p>
     <empty-line/>
     <p>служит «генератором» возможных линий. Эта цель может быть согласована с базой данных несколькими способами, в частности, присваиванием в качестве значения переменной Клетки одного из возможных списков номеров клеток, находящихся на одной линии. Выбрав линию, необходимо проверить, существует ли угроза со стороны противника на этой линии. Это составляет задачу целевого утверждения, выполняющего функции «контролера»:</p>
     <empty-line/>
     <p>угроза(Клетки,Доска,К)</p>
     <empty-line/>
     <p>В этом целевом утверждении переменная <strong>Доска </strong>используется для представления текущей позиции на доске (т. е. какие клетки заняты и какими символами), а переменная К получает в качестве значения номер клетки, в которой игрок 0 должен поставить нолик (при условии что доказательство этой цели завершается успешно).</p>
     <p>Основная идея программы очень проста – предикат <strong>линия </strong>выдает линию, а затем предикат <strong>угроза</strong> проверяет, имеется ли на этой линии угроза. Если это так, то доказательство согласованности исходного целевого утверждения <strong>вынужденный_ход </strong>заканчивается успешно. Иначе инициируется возврат, и предикат <strong>линия </strong>предполагает другую возможную линию. Эта линия также подвергается проверке, и, возможно, снова произойдет возврат. Если мы окажемся в ситуации, когда предикат <strong>линия </strong>не может более порождать линии, то доказательство согласованности целевого утверждения <strong>вынужденный_ход </strong>закончится неудачей (вынужденных ходов нет).</p>
     <p>Теперь рассмотрим, что происходит, если эта программа, являясь частью некоторой большей системы, успешно находит вынужденный ход. Переменная К получит в качестве значения номер клетки, в которой должен быть сделан ход, и эта информация будет использована где нибудь в другом месте в программе. Предположим, что в дальнейшем где-то в программе имеет место неудача при доказательстве согласованности некоторого утверждения и что Пролог в конце концов пытается вновь согласовать целевое утверждение <strong>вынужденный_ход. </strong>Тогда предикат <strong>линия </strong>начнет порождение новых возможных линий, которые должны быть проверены. Это бессмысленно, так как нет никакой пользы в том, чтобы искать альтернативный вынужденный ход. Если найден один из таких ходов, то мы не можем сделать ничего лучше, чем сделать этот ход – неудача при его осуществлении гарантировала бы проигрыш игры. В большинстве случаев, однако, альтернативных вынужденных ходов не будет, и при поиске сопоставления для цели <strong>вынужденный_ход </strong>будут бесполезно просматриваться все неопробованные линии, прежде чем попытка доказать согласованность цели не закончится неудачей. Однако в случае альтернативных ходов известно, что даже если имеется другое решение, оно не может быть использовано без возникновения проблем с использованием первого решения Мы можем предотвратить потерю времени Прологом на поиск различных вынужденных ходов, поместив отсечение в конце соответствующего утверждения. Это приведет к замораживанию последнего успешного решения для предиката <strong>линия. </strong>Введение отсечения равносильно следующему заявлению: «если ищутся вынужденные ходы, то важно найти только первое решение».</p>
     <p>Чтобы понять такое использование отсечения, необходимо лишь рассмотреть общую структуру этой программы. Однако некоторые из деталей также представляют интерес. В программе предполагается, что игровую доску можно описать с помощью структуры, состоящей из девяти компонент. Каждая компонента представляет содержимое клетки с соответствующим номером. Таким образом, в любой момент времени содержимое четвертой клетки доски может быть получено путем выборки четвертого аргумента структуры, представляющей текущую позицию на доске (для этого мы используем встроенный предикат <strong>arg</strong>). Если клетка ничем не заполнена, то переменная будет неконкретизи-рованной; иначе ее значение равно одному из атомов <strong>О</strong> или <strong>X</strong>. Мы используем предикаты <strong>var </strong>и <strong>nonvar </strong>для того, чтобы определить, занята клетка или нет.</p>
     <p>Давайте рассмотрим другой пример программы, работающей по методу «порождения и проверки». Вернемся к вопросу о делении целых чисел, рассмотренному в разд. 2.5. Большинство Пролог-систем обеспечивают эту возможность автоматически, но здесь представлена программа для целочисленного деления, которая использует лишь операции сложения и умножения.</p>
     <empty-line/>
     <p>разделить(N1,N2,Результат):-</p>
     <p> целое_число(Результат), Произведение_1 is Результат*N2, Произведение_2 is (Результат + 1)*N2, Произведение_1 =‹ N1, Произведение_2›N1,!.</p>
     <empty-line/>
     <p>Это правило использует предикат <strong>целое_число </strong>(как он определен ранее) для порождения числа <strong>Результат, </strong>которое является результатом «деления» <strong>N1</strong> на <strong>N2</strong>. Так, например, результат деления <strong>27</strong> на <strong>6</strong> равен <strong>4</strong>, так как <strong>4&#215;6</strong> меньше или равно <strong>27</strong>, а <strong>5&#215;6</strong> больше чем <strong>27</strong>.</p>
     <p>Приведенное правило использует предикат <strong>целое_число </strong>как «генератор», а остальные целевые утверждения выполняют функцию соответствующего «контролера». Мы заранее знаем, что если заданы конкретные значения <strong>N1</strong> и <strong>N2</strong>, то предикат <strong>разделить(N1, N2, Результат) </strong>может иметь значение «истина» лишь для одного возможного значения <strong>Результат. </strong>Несмотря на то что <strong>целое_число </strong>может породить бесконечное множество кандидатов, лишь для одного из них будут выполняться последние тесты. Мы можем явно выразить это наше знание, вставив отсечение в конце правила. Словами это можно сказать так: «если нам удалось породить число <strong>Результат </strong>такое, что оно успешно проходит тесты для числа, являющегося результатом деления, то нет надобности пытаться получить другое решение». В частности, нет необходимости пересматривать какой-либо из выборов, которые были сделаны при поиске правил для <strong>разделить, целое_число </strong>и так далее. Мы нашли единственное решение, и нет оснований искать другое. Если бы мы "не" добавили отсечение, то любой возврат в конце концов снова инициировал бы поиск альтернатив для <strong>целое_число. </strong>Так что продолжилось бы порождение значений для переменной <strong>Результат. </strong>Ни одно из новых значений не было бы правильным результатом деления, и, таким образом, генерация целых чисел продолжалась бы до бесконечности.</p>
    </section>
   </section>
   <section>
    <title>
     <p>4.4. Проблемы, связанные с использованием отсечения</p>
    </title>
    <p>Мы уже убедились в том, что иногда необходимо учитывать стратегию, используемую в Прологе для поиска в базе данных, и что порядок записи утверждений в программе на Прологе влияет на результат доказательства согласованности целевых утверждений. Проблема, связанная с введением отсечений, заключается в том, что мы должны еще более детально знать, как именно будут использоваться правила программы. Ибо, когда правило используется одним способом, отсечение может быть безвредным или даже полезным, в то время как при другом способе употребления правила отсечение может привести к непредвиденному результату. Рассмотрим измененное определение предиката <strong>присоединить, </strong>приведенное в предыдущем разделе:</p>
    <empty-line/>
    <p>присоединить([],Х,Х):-!. </p>
    <p>присоединить[А|В],С,[А|D]:- присоединить(В,С,D).</p>
    <empty-line/>
    <p>Когда мы имеем дело с целевыми утверждениями, подобными</p>
    <empty-line/>
    <p>присоединить([а,b,с],[d,е],Х) </p>
    <empty-line/>
    <p>и</p>
    <empty-line/>
    <p>присоединить([а,b,с],Х,Y)</p>
    <empty-line/>
    <p>то использование отсечения вполне уместно. Если первый аргумент такого целевого утверждения уже имеет некоторое значение, то единственный смысл отсечения – это подтверждение того, что когда значение первого аргумента есть [], то только первое правило применимо. Однако рассмотрим, что произойдет, если мы имеем целевое утверждение</p>
    <empty-line/>
    <p>присоединить(Х,Y,[а,b,с]).</p>
    <empty-line/>
    <p>Это целевое утверждение будет сопоставлено с заголовком первого правила, что даст</p>
    <p>X = [], Y = [a,b,c]</p>
    <p>но затем встретится отсечение. Это приведет к тому, что будет заморожен сделанный нами выбор правила, и как следствие в случае если мы обратимся за новым решением, ответ будет «нет», даже если в действительности для данного запроса имеются другие решения.</p>
    <p>Приведем другой интересный пример того, что может произойти, если правило, содержащее отсечение, используется незапланированным способом. Давайте определим предикат <strong>число_родителей, </strong>который дает информацию о том, сколько родителей имеет человек. Мы можем определить его следующим образом:</p>
    <empty-line/>
    <p>число_родителей(адам,0):-!. </p>
    <p>число_родителей(ева,0) :-!. </p>
    <p>число_родителей(Х,2).</p>
    <empty-line/>
    <p>то есть число родителей для <strong>адам</strong> и <strong>ева </strong>равно 0, а для всех остальных равно 2. Если мы всегда используем наше определение предиката <strong>число_родителей </strong>для определения числа родителей некоторого данного человека, то все идет нормально. Мы получаем</p>
    <empty-line/>
    <p>?- число_родителей(ева,Х).</p>
    <p>X = 0; нет</p>
    <p>?- число_родителей(джон,Х).</p>
    <p>X = 2;</p>
    <p>нет</p>
    <empty-line/>
    <p>и так далее, как это и требуется. Отсечение необходимо, чтобы предотвратить процесс возврата, который мог бы привести к третьему правилу в случае, когда человек – это <strong>адам </strong>или <strong>ева</strong>. Однако рассмотрим, что произойдет, если мы используем те же самые правила, чтобы проверить, что данный человек имеет данное число родителей. Все хорошо, за исключением того, что мы получаем</p>
    <empty-line/>
    <p>?- число_родителей(ева,2). </p>
    <p>да</p>
    <empty-line/>
    <p>Вам следует самостоятельно разобраться, почему так получается – это просто следствие стратегии, применяемой в Прологе для поиска в базе данных. Наша реализация обработки «остальных» случаев, основанная на использовании отсечения, просто больше не работает надлежащим образом. Существуют два способа изменить определение, которые позволили бы нам устранить указанный эффект:</p>
    <empty-line/>
    <p>число_родителей(адам,N):-!, N=0. </p>
    <p>число_родителей(ева,N):-!, N=0. </p>
    <p>число_родителей(Х,2).</p>
    <empty-line/>
    <p>или</p>
    <empty-line/>
    <p>число_родителей(адам,0).</p>
    <p>число_родителей(ева,0).</p>
    <p>число_родителей(Х,2):- X \= адам, X \= ева.</p>
    <empty-line/>
    <p>Конечно, эти определения по-прежнему не работают, если задать целевое утверждение вида</p>
    <empty-line/>
    <p>?- число_родителей(Х,Y).</p>
    <empty-line/>
    <p>ожидая, что возврат позволит перечислить все возможности. Таким образом, можно сделать следующий вывод:</p>
    <p>Если вы вводите отсечения для того, чтобы обеспечить правильную работу программы для целевых утверждений определенной формы, то нет гарантии, что при появлении целевых утверждений иной формы будет происходить что-либо разумное. Отсюда следует, что надежное использование отсечения возможно лишь в том случае, когда вы имеете четкое представление о том, как ваши правила будут использоваться. Если характер использования правил меняется, то необходимо пересмотреть все случаи употребления отсечения.</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 5 ВВОД И ВЫВОД</p>
   </title>
   <section>
    <p>В предыдущих главах фигурировал только один способ предоставления информации Пролог-программе – обращение к ней с вопросом. Точно так же единственный способ определить значение переменной на некотором этапе доказательства согласованности целевого утверждения с базой данных состоял в построении вопроса таким образом, чтобы Пролог-система напечатала ответ в виде «Х=ответ». В большинстве случаев такого непосредственного взаимодействия с программой посредством вопросов вполне достаточно, чтобы убедиться в том, что программа работает правильно. Однако во многих ситуациях удобно писать программу на Прологе так, чтобы она сама инициировала диалог с пользователем. Например, предположим, что имеется база данных, содержащая информацию о событиях, происходивших в мире в 16-м веке. Информация представлена в виде фактов, включающих дату события и его краткое содержание. Даты могут быть представлены как целые числа, а содержание – в виде списков атомов. Те атомы в списке, которые начинаются с прописной буквы, будут заключаться в одинарные кавычки, чтобы Пролог не принял их за переменные:</p>
    <empty-line/>
    <p>событие(1505, ['Начала','Евклида', переведены, на, латинский, язык]).</p>
    <p>событие(1510, ['Начало', спора, между, 'Реучлином', и 'Пфефферкорном']).</p>
    <p> событие(1523, [Кристиан, 'II', покинул, 'Данию']).</p>
    <p><strong>. . .</strong></p>
    <empty-line/>
    <p>Теперь, для того чтобы узнать, что связано с конкретной датой, мы могли бы задать следующий вопрос:</p>
    <empty-line/>
    <p>?- событие(1505,Х).</p>
    <empty-line/>
    <p>на что Пролог напечатал бы ответ:</p>
    <empty-line/>
    <p>Х=['Начала', 'Евклида', переведены, на, латинский, язык]</p>
    <empty-line/>
    <p>Представление краткого содержания событий в виде списков атомов дает возможность определить дату событий по некоторым ключевым моментам, имевшим место. Например, рассмотрим предикат <strong>когда, </strong>который мы определим ниже. Целевое утверждение <strong>когда(Х, Y) </strong>доказуемо, если в заголовке события, имевшего место в году Y, упоминается X:</p>
    <empty-line/>
    <p>когда(Х,Y):- событие(Y,Z), принадлежит (X,Z).</p>
    <p>?- когда(Кристиан,D).</p>
    <p>D=1523</p>
    <empty-line/>
    <p>Один из недостатков использования списков атомов заключается в том, что их неудобно вводить в систему, особенно если атомы начинаются с прописной буквы. Другая возможность, которая имеет свои недостатки и преимущества,- это представлять названия событий в виде списков литер. Из предыдущих глав мы знаем, что списки литер представляются в виде строк литер, заключенных в двойные кавычки:</p>
    <empty-line/>
    <p>событие(1511, "Лютер посещает Рим").</p>
    <p>событие(1521, "Генри III провозглашен защитником веры").</p>
    <p>событие(1524, "Умер Васко да Гама").</p>
    <p>событие(1529, "Берквин сожжен в Париже").</p>
    <p>событие(1540, "Возобновление войны с Турцией").</p>
    <p>. . .</p>
    <empty-line/>
    <p>Такая форма представления удобнее для ввода, но посмотрим, что произойдет, если задаться вопросом</p>
    <empty-line/>
    <p>?- событие(1524,X).</p>
    <empty-line/>
    <p>В ответ Пролог напечатает непонятный список кодов ASCII, соответствующих литерам строки, являющейся значением переменной <strong>X</strong>! Хотя список литер легче ввести в систему, механизм 'вопрос – ответ' Пролога не позволяет получить ясный ответ. Было бы намного удобнее, если бы вместо того, чтобы обращаться к Прологу с подобными вопросами, можно было написать программу, которая вначале спрашивает, какая дата вас интересует, а затем выводит содержание соответствующего события на терминал. При этом названия событий можно было бы представлять в желаемом виде. Для выполнения задач подобного сорта в Прологе существует ряд встроенных предикатов, которые печатают свои аргументы на терминале. Имеются также предикаты, которые ожидают, пока пользователь введет текст с клавиатуры терминала, и присваивают переменной в качестве значения введенный текст. С помощью этих предикатов программа может взаимодействовать с вами, принимая от вас данные и печатая для вас результат. Когда программа ждет от вас данные, будем говорить, что она <emphasis>читает </emphasis>или <emphasis>вводит </emphasis>данные. Точно так же, когда программа печатает некоторый результат, будем говорить, что она <emphasis>выводит </emphasis>результат. В этой главе мы описываем различные методы ввода и вывода данных. Один из рассматриваемых примеров связан с печатью кратких содержаний событий из базы данных исторических событий, а в заключение будет приведена программа, воспринимающая предложения на естественном языке и преобразующая их в список констант, который впоследствии может быть подвергнут обработке другими программами. Эта преобразующая программа, названная <strong>ввести, </strong>может использоваться как некий «модуль», с помощью которого можно создавать программы для анализа предложений на естественном языке. Программы, выполняющие такой анализ, обсуждаются в последующих главах, особенно в гл. 9.</p>
   </section>
   <section>
    <title>
     <p>5.1. Ввод и вывод термов</p>
    </title>
    <section>
     <title>
      <p>5.1.1. Вывод термов</p>
     </title>
     <p>Наиболее удобный способ напечатать некоторый терм на дисплее терминала состоит, по-видимому, в использовании встроенного предиката <strong>write. </strong>Если значением переменной <strong>X</strong> является терм, то появление цели <strong>write(X) </strong>вызовет печать этого терма на дисплее. В случае если переменная <strong>X</strong> неконкретизирована, будет напечатано некоторое уникальное имя, которое состоит из одних цифр (например, '_253'). Однако если две переменные «сцеплены» в пределах одного и того же аргумента предиката <strong>write, </strong>то им будет соответствовать одна и та же переменная. Предикат <strong>write </strong>нельзя согласовать вновь. Этот предикат выполняется лишь один раз, и всякая попытка вновь согласовать его заканчивается неудачей. Нельзя ли использовать <strong>write </strong>для вывода краткого содержания исторических событий в нашем примере? Вспомните, что строка литер в действительности представляется как список кодов литер. Если бы такой список был выведен с помощью предиката <strong>write, </strong>то он был бы напечатан как заключенная в квадратные скобки последовательность целых чисел, разделенных запятыми!</p>
     <p>Прежде чем мы познакомимся с первым примером использования предиката <strong>write, </strong>нам нужно описать еще два предиката. Встроенный предикат <strong>nl</strong> применяется для перехода на новую строку при печати данных на дисплее. Название «<strong>nl</strong>» образовано от <emphasis>«new line» </emphasis>(новая строка). Как и <strong>write, </strong>предикат <strong>nl</strong> выполняется только один раз. Следующий встроенный предикат <strong>tab </strong>используется для печати пробелов на экране дисплея. Целевое утверждение <strong>tab(X) </strong>выполняется только раз и вызывает перемещение курсора на <strong>X</strong> позиций вправо. Предполагается, что значение переменной <strong>X</strong> – целое число. Возможно, выбор имени <strong>tab</strong> не очень удачен, так как в действительности этот предикат не имеет ничего общего с табуляцией на обычных пишущих машинках или на дисплеях терминалов.</p>
     <p>При печати списков полезно печатать элементы списка таким образом, чтобы получаемый результат можно было легко понять. Списки, которые содержат другие «вложенные» списки, читать особенно трудно, тем более когда внутри них содержатся структуры. Определим предикат <strong>рр</strong> (<strong>pretty print</strong> – «хорошая печать») так, что целевое утверждение <strong>рр(Х, Y)</strong> печатает в удобном виде список, присвоенный в качестве значения переменной <strong>X</strong>. Смысл второго аргумента предиката рр будет объяснен позднее. Каждый автор программы, реализующей хорошую печать, имеет свой собственный стиль представления списков. Мы воспользуемся методом, при котором элементы списка печатаются в колонку. Если элемент сам является списком, то его элементы печатаются в колонке, которая смещена вправо по отношению к основной колонке. Такая форма представления по существу совпадает с рассмотренным в гл. 3 способом изображения списков. Например, список [1,2,3] «хорошо» печатается в следующем виде:</p>
     <p>1 </p>
     <p>2</p>
     <p>3</p>
     <p>а список <strong>[1,2,[3,4],5,6]</strong> печатается как</p>
     <p>1</p>
     <p>2</p>
     <p>   3</p>
     <p>   4</p>
     <p>5</p>
     <p>6</p>
     <p>Заметим, что мы решили не печатать квадратные скобки и запятые, разделяющие элементы списка. Если элемент списка является структурой, то он будет обрабатываться точно таким же способом, что и атом. При таком подходе нам не нужно «раскрывать организацию» структур, чтобы «хорошо» напечатать их компоненты. Следующая программа реализует определенный нами способ хорошей печати:</p>
     <empty-line/>
     <p>pp([H|T],I):-!, F is I+3, pp(H,F), ppx(T,F),nl. </p>
     <p>pp(X,I):- tab (I), write(X), nl.</p>
     <p>ppx([],_).</p>
     <p>ppx([H|T],I):- pp(H,I), ppx(T,I).</p>
     <empty-line/>
     <p>Теперь видно, что второй аргумент предиката <strong>рр </strong>выполняет функции счетчика колонок. Целевое утверждение «верхнего уровня» для печати некоторого списка могло бы выглядеть как</p>
     <empty-line/>
     <p>… PP(L,0),…</p>
     <empty-line/>
     <p>при этом начальное значение счетчика колонок устанавливается равным 0. Первое утверждение предиката <strong>рр </strong>обрабатывает специальный случай – когда первый аргумент является списком. Если это так, то необходимо установить новую колонку, увеличив счетчик на некоторое число (здесь 3). Затем мы должны отпечатать с помощью <strong>рр</strong> голову списка, так как она сама может оказаться списком. Далее нужно напечатать все элементы хвоста списка, располагая каждый элемент в той же самой колонке. Это как раз и выполняет предикат <strong>ррх. </strong>А предикат <strong>ррх </strong>использует <strong>рр, </strong>поскольку каждый элемент может быть списком. Второе утверждение предиката <strong>рр </strong>соответствует случаю, когда нам необходимо напечатать что-либо, не являющееся списком. Мы просто делаем отступ на указанное число позиций, используем предикат <strong>write </strong>для печати терма и <strong>nl</strong> для перехода на новую строку. Первое утверждение для <strong>рр</strong> также заканчивается <strong>nl</strong>, поскольку печать каждого списка должна завершиться переходом на новую строку.</p>
     <p>Отметим, что в предикате <strong>рр </strong>мы поместили утверждение для обработки особого случая перед утверждением, обрабатывающим выход на граничное условие. Если бы мы поместили второе утверждение перед первым утверждением, то тогда список, являющийся первым аргументом предиката рр, был бы сопоставлен с переменной <strong>X</strong> в заголовке второго правила. В результате получилось бы, что список был бы просто напечатан как единое целое без удобств и «хорошей» печати. Поэтому мы хотим, чтобы случай, когда аргумент является списком, проверялся первым. Именно поэтому мы выбрали такой порядок утверждений. Второе утверждение используется как правило-ловушка. Другой способ добиться такого же результата состоит в том, чтобы правило, осуществляющее проверку граничного условия, поставить первым и включить в его тело подцель, которая не выполняется, если первый аргумент является списком:</p>
     <empty-line/>
     <p>рр(Х,I):- not(список(Х)), tab(I), write(X), nl. </p>
     <p>pp([H|T],I):- J is I+3, pp(H,J), ppx(T,J), nl.</p>
     <p>/*ppx как и ранее */</p>
     <p>список([]) список([_|_]).</p>
     <empty-line/>
     <p>Нам потребовалось определить соответствующий предикат <strong>список </strong>таким образом, что целевое утверждение <strong>список(Х) </strong>является согласованным, если <strong>X</strong> – список. Первый факт определения этого предиката указывает, что пустой список является списком. Второй факт указывает, что структура, имеющая голову и хвост, является списком. Строго говоря, следовало бы проверить, что хвост структуры также является списком, но мы опустили здесь эту проверку.</p>
     <p>Давайте вернемся к фактам, представляющим предикат событие, который мы обсуждали в начале этой главы. Если есть одно из кратких содержаний событий, представленное в виде списка атомов, то можно использовать предикат <strong>write</strong>, чтобы напечатать каждый атом, вставляя пробел между атомами. Рассмотрим предикат <strong>phh</strong> для печати краткого содержания событий:</p>
     <empty-line/>
     <p>phh([]):- nl.</p>
     <p>phh([H|T]):- write(H), tab(l), phh(T).</p>
     <empty-line/>
     <p>Так, при следующем запросе было бы напечатано каждое событие, в содержании которого встречается «Англия»:</p>
     <empty-line/>
     <p>?- событие(_,L), принадлежит('Англия',L), phh(L).</p>
     <empty-line/>
     <p>Обратим внимание на использование механизма возврата для поиска в базе данных. Каждый раз, когда для целевого утверждения <strong>принадлежит</strong> не находится сопоставление, делается попытка найти новое сопоставление для целевого утверждения <strong>событие</strong>. В результате в поисках событий, в которых упоминается атом <strong>«Англия»</strong>, будет целиком просмотрена сверху вниз вся база данных.</p>
     <p>Предикат <strong>write</strong> печатает термы с некоторым «пониманием» того, что он делает, так как он учитывает, какие объявления операторов были сделаны. Например, если мы объявили некоторый атом как инфиксный оператор, то терм, имеющий этот атом в качестве функтора структуры с двумя аргументами, будет напечатан таким образом, что атом окажется между аргументами. Существует еще один предикат, который выполняет те же действия, что и <strong>write</strong>, за тем исключением, что он игнорирует все сделанные объявления операторов. Этот предикат называется <strong>display</strong>. Различие между <strong>write</strong> и <strong>display</strong> иллюстрирует следующий пример:</p>
     <empty-line/>
     <p>?- write(a+b*c*c),nl, display(a+b*c*c).</p>
     <p>a+b*c*c</p>
     <p>+(a,*(*(b,c),c)) </p>
     <p>да</p>
     <empty-line/>
     <p>Обратим внимание на то, что предикат <strong>display</strong> обработал атомы + и * – точно так же, как и любые другие атомы, которые он печатает в этом терме. Как правило, нежелательно, чтобы печатаемые структуры выглядели подобным образом, так как наличие операторов обычно делает более понятными при чтении как вводимые, так и выводимые программой данные. Однако иногда, когда мы не совсем уверены в том, что знаем, каков приоритет операторов, использование предиката <strong>display </strong>может оказаться очень полезным.</p>
    </section>
    <section>
     <title>
      <p>5.1.2. Ввод термов</p>
     </title>
     <p>Предикат <strong>read </strong>читает следующий терм, набираемый пользователем на клавиатуре терминала. После вводимого терма должны следовать точка '.' и непечатаемая литера, такая как пробел или <strikethrough>RETURN</strikethrough>. Если переменная <strong>X</strong> не конкретизирована, то целевое утверждение <strong>read(X) </strong>приведет к вводу следующего терма и этот терм будет присвоен в качестве значения переменной <strong>X</strong>, Как и другие предикаты ввода-вывода, с которыми мы уже сталкивались, предикат <strong>read </strong>выполняется лишь один раз. Если в момент рассмотрения целевого утверждения <strong>read(X) </strong>его аргумент конкретизирован, то попытка доказать согласованность этого целевого утверждения с базой данных вызовет чтение следующего терма и попытку сопоставления его с аргументом, заданным в <strong>read. </strong>Согласованность цели с базой данных зависит от результата этого сопоставления.</p>
     <p>Используя предикаты <strong>read </strong>и <strong>phh, </strong>как они были определены выше, мы можем написать программу для печати краткого содержания исторических событий, хранящихся в базе данных, с помощью фактов с предикатом <strong>событие. </strong>Эта программа имеет вид:</p>
     <empty-line/>
     <p>обращение:-</p>
     <p> phh(['Какая',дата,вас,'интересует?'!),read(D),coбытиe(D,S),pph(S).</p>
     <empty-line/>
     <p>Мы определили предикат <strong>обращение, </strong>не имеющий аргументов. Когда мы обращаемся к системе с вопросом</p>
     <empty-line/>
     <p>?- обращение. </p>
     <empty-line/>
     <p>Пролог напечатает</p>
     <empty-line/>
     <p>Какая дата вас интересует?</p>
     <p> и будет ждать ответа. Предположим, что мы ввели с клавиатуры</p>
     <p>1523.</p>
     <empty-line/>
     <p>Обратите внимание на то, что после 1523 необходимо ввести точку, так как этого требует предикат <strong>read. </strong>И, как обычно, мы должны нажать клавишу <strikethrough>RETURN</strikethrough>, чтобы сообщить ЭВМ, что мы закончили ввод строки текста. После этого Пролог ответит</p>
     <empty-line/>
     <p>Кристиан II покинул Данию</p>
     <empty-line/>
     <p>Обратите внимание, что в первой строке тела правила <strong>обращение </strong>используется предикат <strong>phh, </strong>хотя в этом случае печатается не краткое содержание исторического события. Это просто показывает, что <strong>phh </strong>вполне подходит для печати <emphasis>произвольного </emphasis>списка атомов независимо от того, откуда он взялся.</p>
    </section>
   </section>
   <section>
    <title>
     <p>5.2. Ввод и вывод литер</p>
    </title>
    <section>
     <p>Наименьшей единицей данных, которая может участвовать в операциях ввода-вывода, является литера. Мы уже знаем, что литеры интерпретируются как небольшие целые числа в соответствии с кодом ASCII. В Прологе имеется несколько встроенных предикатов для ввода и вывода литер.</p>
    </section>
    <section>
     <title>
      <p>5.2.1. Вывод литер</p>
     </title>
     <p>Если переменная <strong>X</strong> имеет в качестве значения некоторую литеру (ее код ASCII), то эта литера будет напечатана при обработке целевого утверждения <strong>put(X). </strong>Предикат <strong>put </strong>всегда выполняется и не может быть пересогласован (это приводит к неудаче). В качестве «побочного эффекта» <strong>put </strong>печатает литеру на дисплее терминала. Например, мы можем напечатать слово <strong>hello </strong>довольно необычным способом:</p>
     <empty-line/>
     <p>?- put(104),put(101),put(108),put(108),put(111).</p>
     <p>hello</p>
     <empty-line/>
     <p>Результатом такой конъюнкции целей является печать Прологом литер <strong>h</strong>, <strong>е</strong>, <strong>l</strong>, <strong>l</strong>, <strong>о </strong>непосредственно под вопросом, как показано выше. Мы уже видели, что имеется возможность начать печать текста с начала следующей строки, использовав для этого предикат без аргументов nl. В действительности nl «печатает» некоторые управляющие литеры, что вызывает перевод курсора на дисплее терминала на начало следующей строки. Вопрос</p>
     <empty-line/>
     <p>?- put(104),put(105),nl,put(116),put(104),put(101),put(114), put(1O1).</p>
     <empty-line/>
     <p>вызвал бы следующую печать:</p>
     <empty-line/>
     <p>hi</p>
     <p>there</p>
     <empty-line/>
     <p>Другой предикат, с которым мы уже познакомились, - это <strong>tab(X), </strong>печатающий <strong>X</strong> пробелов (ASCII код равен 32). Разумеется, переменной <strong>X</strong> должно быть присвоено целое число. Отметим, что предикат <strong>tab(X) </strong>мог бы быть определен так:</p>
     <empty-line/>
     <p>tab(0):- !.</p>
     <p>tab(N):- put(32), M is N-1, tab(M).</p>
     <empty-line/>
     <p>Теперь мы можем определить предикат, который мы назовем <strong>печать_строки</strong>. Если значением переменной <strong>X</strong> является список кодов литер (строка), то целевое утверждение <strong>печать_строки </strong>напечатает этот список (строку), используя <strong>put</strong> для печати каждого элемента списка. Как и во всех подобных программах, граничным условием является появление пустого списка. Это условие мы и используем для завершения рекурсии. При непустом списке с помощью <strong>put</strong> печатается голова списка, а затем используем <strong>печать_строки</strong> – хвост списка:</p>
     <empty-line/>
     <p>печать_строки([]).</p>
     <p>печать_строки([Н|Т]):- put(H), печать_строки(Т).</p>
     <p>?- печать_строки(«Чарлз V отрекся от престола в Брюсселе»).</p>
     <p>Чарлз V отрекся от престола в Брюсселе</p>
     <empty-line/>
     <p>Если мы решили представлять краткое содержание исторических событий как строки литер, а не как списки атомов, то такого определения вполне достаточно, чтобы печатать строки из базы данных для предиката событие.</p>
    </section>
    <section>
     <title>
      <p>5.2.2. Ввод литер</p>
     </title>
     <p>Для ввода литер, набираемых на клавиатуре терминала, могут быть использованы предикаты <strong>get0(X)</strong> и <strong>get(X)</strong>. Эти предикаты всегда согласуются с базой данных, если их аргументы неконкре-тизированы, а попытка повторного согласования всегда неудачна. При обработке целей, включающих эти предикаты, ЭВМ ожидает до тех пор, пока пользователь не наберет на клавиатуре какую-либо литеру. Указанные предикаты немного различаются тем, что <strong>get0(X)</strong> присвоит <strong>X</strong> любую набранную на клавиатуре литеру независимо от ее вида. Напротив, <strong>get(X)</strong> пропустит все <emphasis>управляющие </emphasis>литеры и присвоит <strong>X</strong> в качестве значения первую печатаемую литеру. Как отмечалось в гл. 2, печатаемая литера – это литера, которая визуализируется на дисплее терминала.</p>
     <p>Если <strong>X</strong> уже присвоено значение, то целевое утверждение <strong>get(X)</strong> пропустит все управляющие литеры и сравнит следующую за ними печатаемую литеру со значением <strong>X</strong>. Доказательство согласованности целевого утверждения зависит от результата этого сравнения. Целевое утверждение <strong>get0(X)</strong> сравнивает <strong>X</strong> со следующей литерой и в зависимости от совпадения считается согласованным с базой данных или нет.</p>
     <p>В следующем разделе приводятся некоторые примеры с использованием предикатов для чтения литер. Заранее обращаем внимание читателя на те случаи, когда возникает необходимость в возврате за целевое утверждение <strong>get.</strong></p>
    </section>
   </section>
   <section>
    <title>
     <p>5.3. Ввод предложений</p>
    </title>
    <p><strong>В </strong>этом разделе мы представим программу, которая вводит предложение с терминала и преобразует его в список атомов языка Пролог. В программе определяется предикат <strong>ввести, </strong>имеющий один аргумент. Программа должна уметь определять, где заканчивается одно вводимое слово и начинается следующее. Поэтому предположим, что слово состоит из нескольких букв, цифр или специальных литер. Буквы и цифры уже были представлены в разд. 2.1. Мы будем рассматривать одиночную кавычку ''' и дефис '-' как специальные литеры. Литеры</p>
    <p>, ; : ? ! .</p>
    <p>будут рассматриваться как отдельные слова. Все другие литеры являются разделителями между словами. Предложение считается законченным, когда встречается одно из слов '.', '!' или '?'. Прописные буквы автоматически преобразуются в строчные, так что одно и то же слово всегда превращается в один и тот же атом. В результате такого определения программа будет поддерживать диалог с пользователем, подобный следующему:</p>
    <p>?- ввести(S).</p>
    <p>The man, who is very rich, saw John's watch.</p>
    <p>S = [the,man,',',who,is,very,rich,',',saw,'John's',watch,'.']</p>
    <p>В действительности мы вставили в представление предложения дополнительные одинарные кавычки, чтобы выделить некоторые атомы.</p>
    <p>Программа использует предикат <strong>get0</strong> для ввода литер с терминала. Затруднение, связанное с предикатом <strong>get0</strong>, состоит в том, что если литера прочитана с терминала этим предикатом, то она «ушла навсегда» и никакое другое целевое утверждение <strong>get0</strong> или попытка вновь доказать целевое утверждение <strong>get0</strong> не позволит получить доступ к этой литере вновь. Поэтому следует избегать возврата за точку использования <strong>get0</strong>, если мы хотим избежать «потери» литеры, которую он читает. Например, следующая программа, которая должна вводить литеры и печатать их снова, заменяя литеры <strong>а</strong> на <strong>b</strong> (код литеры <strong>97</strong> на код <strong>98</strong>), не будет работать:</p>
    <empty-line/>
    <p>выполнить:- заменить_литеру, выполнить.</p>
    <p>заменить_литеру:- get0(X) = 97,!, put(98). </p>
    <p>заменить_литеру:- get0(X), put(X).</p>
    <empty-line/>
    <p>Приведенную программу в любом случае нельзя считать хорошей, потому что она будет работать вечно. Однако рассмотрим эффект попытки доказать согласованность целевого утверждения <strong>заме-нить_литеру. </strong>Если первое правило определения предиката заме-нить_литеру используется для чтения литеры, код которой отличен от <strong>97</strong>, то возврат приведет к тому, что будет сделана попытка воспользоваться вместо него вторым правилом. Однако согласование целевого утверждения <strong>get0(X)</strong> во втором правиле приведет к тому, что X будет конкретизирована <emphasis>следующей </emphasis>литерой. Это объясняется тем, что доказательство исходного целевого утверждения <strong>get0 </strong>было <emphasis>необратимым </emphasis>процессом. Таким образом, эта программа в действительности не печатала бы все литеры. Она даже иногда печатала бы литеры <strong>а</strong>.</p>
    <p>Как же программа <strong>ввести </strong>преодолеет проблемы возврата при вводе? Ответ заключается в том, что программа конструируется таким образом, что она вводит литеры с опережением на одну литеру, а проверки литеры выполняются правилом, отличным от правила, в котором эта литера была прочитана. Если литера введена в каком-то месте программы и не может быть здесь же использована, то она возвращается обратно для возможного использования другими правилами. В соответствии со сказанным предикат для ввода одного слова читать_слово в действительности имеет три аргумента. Первый предназначен для литеры, которая была получена при последнем выполнении <strong>get0 </strong>где-либо в программе, но которую оказалось невозможным использовать в месте ее получения. Второй предназначен для атома, который будет создан для прочитанного слова. Последний аргумент предназначен для литеры, следующей во вводимом предложении сразу за прочитанным словом. Для того чтобы определить, где кончается слово, необходимо ввести литеру, следующую непосредственно за словом. Эта литера должна быть сохранена, потому что она может оказаться первой литерой другого слова.</p>
    <p>Здесь приведен текст программы:</p>
    <empty-line/>
    <p>/* Прочитать предложение */</p>
    <p>ввести([Сл|Слс]):- get0(C), читать_слово(С,Сл,С1), остаток_предложения(Сл, С1, Слс).</p>
    <p>/* Дано слово и литера после него, ввести остаток предложения */</p>
    <p>остаток_предложения (Сл,_,П):- последнее_слово (Сл),!. </p>
    <p>остаток_предложения(Сл,С,[Сл1|Слс]):- читать_слово(С, Сл, С1), остаток_предложения(Сл1,С1,Слс).</p>
    <p>/* Ввести одно слово, имея начальную литеру и запомнив, какая литера идет после слова */</p>
    <p>читать_слово(С,Сл,С1):- литера(С),!, name(Сл,С), get0(C1). </p>
    <p>читать_слово(С,Сл,С2):- слово(С, Нс),!,get0(Cl),</p>
    <p>остаток_слова(С1,Сс,С2),name(Сл,[Нс|Сс]).</p>
    <p>читать_слово(С,Сл,С2):-get0(Cl), читать_слово (С1, Сл,С2). </p>
    <p>остаток_слова(С,[Нс|Сс],С2):-слово(С,Нс),!,get0(Cl),остаток_слова (С1, Сс, С2<emphasis>). </emphasis>остаток_слова(С, [],С).</p>
    <p>/* Эти литеры образуют отдельные слова */ </p>
    <p>литера(44) /*, */ </p>
    <p>литера(59) /*; */ </p>
    <p>литера(58) /*: */ </p>
    <p>литера(63) /*? */ </p>
    <p>литера(ЗЗ) /*! */ </p>
    <p>литера(46) /*. */</p>
    <p>/* Следующие литеры могут встретиться внутри слова */ </p>
    <p>/* Второй факт для предиката <strong>слово </strong>преобразует прописные литеры в строчные</p>
    <p>слово(С,С):- С › 96, С ‹ 123. /* a b… */</p>
    <p>слово(С,М):- С › 64, С ‹ 91, M is С+ 32. /*А В… */</p>
    <p>слово(С,С):- С › 47, С ‹ 58 /* 1 2… 9*/</p>
    <p>слово(39,39). /* ' */</p>
    <p>слово(45,45) /* – */ </p>
    <p>/* Следующие слова заканчивают предложение */ </p>
    <p>последнее_слово('.'). </p>
    <p>последнее_слово('!'). </p>
    <p>последнее_слово('?').</p>
    <p><strong>Упражнение 5.1.</strong> Объясните, для чего используется каждая переменная в приведенной программе.</p>
    <p><strong>Упражнение 5.2. </strong>Напишите программу, которая читает неограниченную последовательность литер и печатает ее, предварительно заменяя вхождения литеры <strong>а </strong>литерой <strong>b.</strong></p>
   </section>
   <section>
    <title>
     <p>5.4. Чтение файлов и запись в файлы</p>
    </title>
    <section>
     <p>Предикаты, обсуждавшиеся в этой главе ранее, использовались для ввода (чтения) и вывода (записи) данных при обмене лишь с терминалом, но они могут быть использованы и в более общих ситуациях. В Пролог-системе определяется <emphasis>текущий входной поток данных, </emphasis>из которого производится чтение всех вводимых данных. Все выводимые данные записываются в <emphasis>текущий выходной поток данных. </emphasis>В обычном состоянии текущий входной поток данных поступает с клавиатуры терминала, а текущий выходной поток данных направляется на дисплей терминала. Часто оказывается удобно выполнять операции чтения и записи данных над <emphasis>файлами, </emphasis>которые представляют последовательность литер во вторичной внешней памяти. Конкретный вид этой памяти зависит от используемой ЭВМ, но сейчас файлы обычно хранятся на магнитных дисках. Предполагается, что каждый файл имеет собственное <emphasis>имя(имя файла), </emphasis>используемое для идентификации файла. Для того чтобы содержание этой главы было понятно, читателю следует познакомиться с правилами организации и способом задания имен файлов в той операционной обстановке, в которой он работает. В Прологе имена файлов представляются атомами, но мы не можем исключить возможность каких-либо ограничений на синтаксис имен файлов, накладываемых конкретной обстановкой, в которой работает Пролог-система.</p>
     <p>Файлы имеют определенную длину. Это означает, что они содержат определенное количество литер. В конце файла имеется специальный маркер, называемый <emphasis>маркером конца файла. </emphasis>Мы не обсуждали маркер конца файла до сих пор, так как выход на конец файла является более обычным делом для файлов, расположенных во внешней памяти, чем при обмене с терминалом. Если программа производит чтение файла, то маркер конца файла может быть обнаружен и в случае, когда программа читает термы и когда читаются отдельные литеры. Если при выполнении <strong>get0(X)</strong> встречается конец файла, то <strong>X</strong> будет конкретизирована некоторой управляющей литерой, обычно имеющей код 26 в таблице кодов ASCII. Если конец файла встречается при выполнении <strong>read(X)</strong>, то <strong>X</strong> будет конкретизирована некоторым специальным термом, значение которого зависит от конкретной Пролог-системы. При попытке прочитать файл далее маркера конца возникает ошибка.</p>
     <p>Имеется встроенный (стандартный) файл, называемый <strong>user</strong>. Чтение этого файла вызывает ввод данных с клавиатуры терминала, а запись в этот файл приводит к тому, что литеры печатаются на дисплее. Такой режим работы считается стандартным. При вводе с клавиатуры терминала признак конца файла генерируется при вводе управляющей литеры с кодом ASCII 26. Это окажет на выполнение <strong>get0</strong> и <strong>read</strong> такое же воздействие, как если бы встретился конец файла.</p>
    </section>
    <section>
     <title>
      <p>5.4.1. Запись в файлы</p>
     </title>
     <p>Для записи в файлы термов и литер могут быть использованы в точности те же самые предикаты, что обсуждались ранее Единственное различие состоит в том, что когда мы хотим записать данные в файл, то нам надо сменить <emphasis>текущий выходной поток данных </emphasis>так, чтобы им являлся файл, в который мы будем записывать данные, а не дисплей терминала. Текущий выходной поток данных изменяется с помощью предиката <strong>tell. </strong>Если <strong>X</strong> конкретизирована именем файла, которое должно быть атомом, то целевое утверждение <strong>tell(X) </strong>переключает текущий выходной поток данных таким образом, что любая операция записи (выполняемая с помощью <strong>write, put </strong>и других подобных предикатов) будет производиться в этот файл, а не на дисплей терминала. Целевое утверждение <strong>tell(X) </strong>можно согласовать лишь один раз. Точно так же при выполнении Прологом возврата за целевое утверждение <strong>tell </strong>не происходит восстановления прежнего текущего выходного потока данных. Наряду со сменой текущего выходного потока данных предикат <strong>tell </strong>в зависимости от ситуации выполняет также другие операции. В первый раз, когда программа обращается к <strong>tell </strong>с конкретным именем файла <strong>X</strong>, Пролог считает, что необходимо завести новый файл с этим именем. Поэтому если <strong>X</strong> конкретизирована некоторым именем файла и файл с таким именем уже существует, то все литеры, уже содержащиеся в этом файле, удаляются. Напротив, если файла с именем, являющимся значением <strong>X</strong>, не существует, то файл с таким именем будет создан. В обоих случаях файл считается открытым (для записи в него). Это значит, что каждая последующая запись в этот файл будет добавлять литеры в конец файла до тех пор, пока не появится явное указание, что запись в файл полностью завершена (пока файл не будет закрыт). С данного момента если будет сделана новая попытка записи в этот файл, то Пролог, как и прежде, будет считать, что необходимо писать новую версию этого файла. При попытке выполнить <strong>tell(X), </strong>когда переменная <strong>X</strong> не имеет конкретного значения или ее значение не является именем файла, возникает ошибка. Реакция Пролог-системы на возникающие ошибки зависит от конкретной реализации.</p>
     <p>Предикат <strong>telling </strong>используется для определения имени файла, служащего текущим выходным потоком данных. Целевое утверждение <strong>telling(X) </strong>считается согласованным, если <strong>X</strong> имеет своим значением имя файла текущего выходного потока данных. Как вы, наверное, догадываетесь, если X неконкретизировано, то <strong>telling </strong>конкретизирует <strong>X</strong> атомом (именем файла), делающим это целевое утверждение верным.</p>
     <p>Когда запись в файл полностью завершена, то выполнение предиката <strong>told </strong>оформит конец файла и закроет его (для вывода). Кроме того, в результате его выполнения текущим выходным потоком данных снова станет дисплей терминала. Таким образом, типичная последовательность целевых утверждений для записи в файл некоторой совокупности литер имеет вид</p>
     <p>… tеll(фред), write(X), told,…</p>
     <p>Если текущий выходной поток данных переключается на другой файл без использования <strong>told, </strong>то прежний файл не будет закрыт и останется доступным для записи в него. Это позволяет делать записи в файл с перерывами, как в следующем примере;</p>
     <empty-line/>
     <p>…tell (X), write(A), tell(user),write(B), tell(X), write(C), told.</p>
    </section>
    <section>
     <title>
      <p>5.4.2. Чтение файлов</p>
     </title>
     <p>Предикаты, которые предоставляет Пролог для переключения текущего входного потока данных, аналогичны предикатам, обсуждавшимся выше. Целевое утверждение <strong>see(X) </strong>переключает текущий входной поток данных на файл с указанным именем. Так же как и <strong>tell, </strong>это целевое утверждение не может быть доказано вновь, и выполненное предикатом изменение входного потока не переделывается при возврате. При первом выполнении <strong>see(X) </strong>для некоторого файла <strong>X</strong> этот файл становится открытым (для чтения), при этом чтение начинается с начала файла. Последующая операция чтения продолжает читать данные с того места, где закончила предыдущая операция. И так до тех пор, пока не будет сделано явного закрытия файла. С этого момента новая попытка читать из файла приведет к тому, что файл будет открыт и чтение начнется с начала файла, как и прежде. Текущий входной поток данных может быть определен в результате выполнения <strong>seeing(X), </strong>и текущий входной поток данных может быть переключен обратно на ввод с терминала в результате выполнения целевого утверждения <strong>seen</strong>, которое также закрывает файл.</p>
    </section>
    <section>
     <title>
      <p>5.4.3. Ввод программ</p>
     </title>
     <p>Чтение данных из файлов и запись данных в файлы наиболее полезны тогда, когда объем данных, с которыми работает наша программа и которые мы хотим поместить в базу данных, превосходит тот объем, который мы можем вводить вручную при каждом сеансе работы с ЭВМ. В Прологе файлы используются главным образом для хранения программ. Если текст Пролог-программы содержится в некотором файле, то мы можем прочитать все утверждения, содержащиеся в файле, и поместить их в базу данных, воспользовавшись для этого предикатом <strong>consult. </strong>Если значением <strong>X</strong> является имя файла, то цель <strong>consult(X) </strong>прочитает утверждения (факты и правила) и целевые утверждения из этого файла. Большинство реализаций Пролога имеют специальную форму записи для предиката <strong>consult, </strong>позволяющую прочитать последовательно один за другим список файлов. Если вопрос к Пролог-системе имеет вид списка атомов, то Пролог-система прочитает каждый файл из этого списка. В качестве примера использования такой формы записи приведем следующий вопрос:</p>
     <empty-line/>
     <p>?- файл1, отображение, эксперт.</p>
     <empty-line/>
     <p>Этот вопрос обрабатывается таким образом, как если бы Пролог выполнял целевое утверждение <strong>consultall(X), </strong>где <strong>X </strong>- это список, заданный в вопросе, а предикат <strong>consultall </strong>определен следующим образом:</p>
     <empty-line/>
     <p>consultall([]).</p>
     <p>consultall(H|T]):- consult(H), consultall(T).</p>
     <empty-line/>
     <p>Однако короткая списковая запись более экономична, а это особенно важно, если принять во внимание, что самое первое действие, которое выполняет работающий с Прологом программист,- это чтение из файлов своих предикатов. Предикат <strong>consult </strong>автоматически прекращает чтение утверждений, когда встречается конец файла. В разд. 6.1 предикат <strong>consult </strong>описывается более подробно.</p>
    </section>
   </section>
   <section>
    <title>
     <p>5.5. Объявление операторов</p>
    </title>
    <p>Причина, по которой операторы рассматриваются в главе, посвященной вводу-выводу, состоит в том, что операторы предоставляют некоторые синтаксические удобства при чтении и записи термов. Никаких других причин для введения операторов нет. Для начала коротко напомним сказанное в разд. 2.3, а затем расскажем о том, как объявляются операторы.</p>
    <p>Синтаксис языка разрешает использование операторов, обладающих следующими тремя свойствами: позицией, приоритетом и ассоциативностью. По занимаемой позиции операторы могут быть инфиксными, постфиксными или префиксными (оператор, имеющий два аргумента, может располагаться между аргументами; оператор с одним аргументом может находиться либо после аргумента, либо перед ним). Приоритет оператора – это некоторое целое число, диапазон изменения которого зависит от конкретной реализации Пролога. Предположим, что оно находится в диапазоне от <strong>1</strong> до <strong>255</strong>. Приоритет используется для того, чтобы придать однозначную интерпретацию выражениям в тех случаях, когда синтаксис термов не задан явно с помощью скобок. Ассоциативность необходима для придания однозначной интерпретации выражениям, в которых имеются два оператора с одинаковыми приоритетами. Оператору в языке Пролог соответствует специальный атом, который специфицирует позицию и ассоциативность оператора. Для инфиксных операторов возможны следующие спецификации:</p>
    <p>xfx xfy yfx yfy</p>
    <p>Чтобы понять смысл этих спецификаций, их полезно рассматривать как «образцы» возможного использования операторов. В приведенных образцах буква <strong>f</strong> представляет оператор, а <strong>х</strong> и <strong>у</strong> – аргументы. Таким образом, во всех приведенных выше образцах оператор должен находиться <emphasis>между </emphasis>двумя аргументами, т. е. он является инфиксным оператором. В соответствии с этим соглашением</p>
    <p>fx fy</p>
    <p>есть две спецификации для префиксных операторов (оператор записывается перед его единственным аргументом). Точно так же</p>
    <p>xf yf</p>
    <p>представляют возможные спецификации для постфиксных операторов. Может вызвать недоумение использование двух букв для обозначения аргументов. Использование букв <strong>х</strong> и <strong>у</strong> в той или иной позиции позволяет выразить информацию об ассоциативности оператора. В предположении, что выражение не содержит скобок, буква у указывает, что соответствующий ей аргумент может содержать операторы с приоритетом, равным приоритету данного оператора или с более низким приоритетом. Напротив, буква <strong>х</strong> указывает, что каждый оператор в соответствующем ей аргументе должен иметь строго более низкий приоритет по сравнению с приоритетом данного оператора. Рассмотрим, что это значит для оператора +, объявленного как <strong>yfx</strong>. Если имеется выражение</p>
    <p>а + b + с</p>
    <p>то для него возможны две следующие интерпретации: </p>
    <p>(а + b) + с      а + (b + с)</p>
    <p>Вторая интерпретация исключается, так как при этом аргумент, стоящий после первого вхождения +, содержит оператор с тем же самым приоритетом (второй оператор +). Это противоречит тому, что в спецификации оператора + после <strong>f</strong> стоит <strong>х</strong>.</p>
    <p>Оператор, имеющий спецификацию <strong>yfx</strong>, является левоассоциативным. Аналогично оператор со спецификацией <strong>xfy</strong> является правоассоциативным. Если мы знаем необходимую ассоциативность объявляемого инфиксного оператора, то это значит, что однозначно определяется соответствующая оператору спецификация.</p>
    <p>Заметим, что использование букв <strong>х</strong> и <strong>у</strong> в двух других случаях имеет тот же смысл относительно того, какие операторы могут появляться в соответствующей позиции при отсутствии скобок. Это значит, что, например, последовательность</p>
    <p>not not a</p>
    <p>допустима синтаксически, если оператор <strong>not </strong>объявлен как <strong>fy</strong>, и недопустима в случае, когда он объявлен как <strong>fx</strong>.</p>
    <p>Если мы хотим объявить на Прологе оператор с заданными позицией, приоритетом и ассоциативностью таким образом, чтобы Пролог распознавал его при вводе и выводе термов, то мы используем встроенный предикат <strong>ор. </strong>Если <strong>Имя </strong>- это оператор, который мы желаем иметь (атом, который мы хотим сделать оператором), <strong>Приоритет </strong>- приоритет оператора (целое число в соответствующем диапазоне) и <strong>Спецификация </strong>- спецификация, определяющая положение и ассоциативность оператора (один из приведенных выше атомов), то такой оператор может быть объявлен с помощью выполнения следующего целевого утверждения</p>
    <empty-line/>
    <p>?- ор (Приоритет,Спецификация,Имя).</p>
    <empty-line/>
    <p>Если объявление оператора является допустимым, то эта цель будет достигнута.</p>
    <p>В качестве примера объявления операторов далее приводится полный список базовых операторов, обсуждаемых в данной книге. Конкретные реализации Пролога могут иметь несколько отличный набор «стандартных» операторов; может потребоваться масштабирование указанных приоритетов. Однако взаимный порядок операторов в иерархии приоритетов обычно остается неизменным.</p>
    <empty-line/>
    <p>?-op(255,xfx,':-').</p>
    <p>?-op(255,fx,'?-').</p>
    <p>?-op(254,xfy,';').</p>
    <p>?-op(253,xfy,',').</p>
    <p>?-op(250,fx,spy).</p>
    <p>?-op(250,fx,nospy).</p>
    <p>?-op(60,fx,not).</p>
    <p>?-op(51,xfy,'.').</p>
    <p>?-op(40,xfx,is).</p>
    <p>?-op(40,xfx,' =..').</p>
    <p>?-op(40,xfx,=).</p>
    <p>?-op(40,xfx,\=).</p>
    <p>?-op(40,xfx,‹).</p>
    <p>?-op(40,xfx,=‹).</p>
    <p>?-op(40,xfx,›=).</p>
    <p>?-op(40,xfx,›).</p>
    <p>?-op(40,xfx, ==).</p>
    <p>?-op(40,xfx,\==).</p>
    <p>?-op(31,yfx,-).</p>
    <p>?-op(31,yfx,+).</p>
    <p>?-op(21,yfx,/).</p>
    <p>?-op(21,yfx,*).</p>
    <p>?-op(ll,xfx, mod).</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 6. ВСТРОЕННЫЕ ПРЕДИКАТЫ</p>
   </title>
   <section>
    <p>В этой главе будут описаны некоторые <emphasis>встроенные </emphasis>предикаты, которые может обеспечивать Пролог-система. Что имеется в виду, когда мы говорим, что предикат является встроенным? Это значит, что определение этого предиката уже имеется в Пролог-системе и нет необходимости иметь собственное его описание. Встроенные предикаты предоставляют возможности, которые нельзя реализовать с помощью описаний на чистом Прологе. Они также могут предоставлять удобные средства, избавляя программиста от необходимости самому определять эти предикаты. В действительности мы уже встречались с некоторыми встроенными предикатами – это предикаты для ввода и вывода, обсуждавшиеся в гл. 5. Оператор «отсечения» тоже можно рассматривать как встроенный предикат.</p>
    <p>Предикаты для ввода-вывода показывают, что встроенные предикаты могут иметь «побочные эффекты». Это значит, что при доказательстве согласованности целевого утверждения, содержащего такой предикат, помимо конкретизации аргументов предиката могут возникнуть дополнительные изменения. Это, естественно, не может случиться с предикатами, определенными на чистом Прологе. Другой важный факт, касающийся встроенных предикатов, состоит в том, что они могут быть определены только для аргументов конкретного вида. Например, рассмотрим предикат '‹' определенный таким образом, что <strong>Х‹Y</strong> выполняется, если число <strong>X</strong> меньше, чем число <strong>Y</strong>. Подобное отношение не может быть определено в Прологе без помощи посторонних средств, использующих некоторые знания о числах. Таким образом, <strong>‹</strong> – это встроенный предикат, а его определение использует некоторые операции вычислительной машины, на которой реализована Пролог-система, для определения относительной величины чисел (представленных в виде двоичного кода или каким-либо иным способом).</p>
    <p>Что произойдет, если мы используем в качестве целевого утверждения предикат <strong>X‹Y</strong>, где <strong>X</strong> является атомом или даже более того, если как <strong>X</strong>, так и <strong>Y</strong> неконкретизированы? Определение предиката, данное на машинном языке, окажется просто неприменимым. Поэтому мы должны оговорить, что предикат <strong>X‹Y</strong> может быть использован в качестве целевого утверждения, если на момент, когда делается попытка выполнить его, обе переменные <strong>X</strong> и <strong>Y</strong> имеют в качестве значений числа. Что произойдет в случае, когда это условие не выполняется, зависит от конкретной реализации Пролог-системы. Возможно, доказательство согласованности такого целевого утверждения просто закончится неудачей. А может быть, будет напечатано сообщение об ошибке и система выполнит ряд действий, соответствующих этой ситуации (подобных прекращению попыток ответить на текущий вопрос).</p>
   </section>
   <section>
    <title>
     <p><strong>6.1. Ввод новых утверждений</strong></p>
    </title>
    <p>Когда вы пишете программу на Прологе, вам следует сообщить системе, какие утверждения нужно использовать, и затем задавать относительно них вопросы. Возможно, вы захотите вводить утверждения с терминала или захотите указать Пролог-системе приготовленный вами заранее файл, откуда следует брать утверждения. В действительности обе эти операции с точки зрения Пролога одинаковы, так как терминал рассматривается как файл, имеющий имя <strong>user</strong>. Имеются два основных встроенных предиката для ввода новых утверждений: <strong>consult </strong>и <strong>reconsult. </strong>Кроме того, в языке существует удобная форма записи на случай, когда вы захотите ввести утверждения сразу из нескольких файлов,- так называемая списковая форма записи. Для тех, кому это интересно, укажем, что в разд. 7.13 приведены простые определения на Прологе предикатов <strong>consult </strong>и <strong>reconsult.</strong></p>
    <subtitle>consult(X)</subtitle>
    <p>Встроенный предикат <strong>consult </strong>предназначен для использования в тех ситуациях, когда вы хотите добавить утверждения из некоторого файла /или вводимые с терминала) к утверждениям, уже имеющимся в базе данных. Аргумент предиката должен быть атомом, указывающим имя файла, из которого должны браться утверждения. Какие литеры составляют допустимое имя файла, естественно, зависит от конкретной, используемой вами ЭВМ. Ниже приведены примеры возможной записи целевого утверждения с предикатом <strong>consult </strong>на различных ЭВМ:</p>
    <empty-line/>
    <p>?- consult(myfile).</p>
    <p>?- consult('/us/gris/pl/chat').</p>
    <p>?- consult('lib:iorout.pl'),</p>
    <empty-line/>
    <p>В случае когда Пролог должен доказать согласованность целевого утверждения consult, он просматривает файл, добавляя утверждения, которые он обнаруживает, в конец базы данных. В результате новые утверждения будут помещены после всех уже имевшихся утверждений для тех же предикатов. Если в файле будет обнаружен вопрос, то он будет рассматриваться точно так же, как обычный вопрос, за тем исключением, что ответ не будет напечатан. Обычно не имеет смысла вставлять вопросы в файл с новыми утверждениями, за исключением тех случаев, когда необходимо сделать операции, подобные объявлению новых операторов и печати полезных сообщений.</p>
    <subtitle>reconsult(X)</subtitle>
    <p>Предикат <strong>reconsult</strong> аналогичен предикату <strong>consult</strong>, за исключением того, что вводимые утверждения <emphasis>заменяют </emphasis>все имеющиеся утверждения для того же самого предиката. Вследствие этого reconsult удобно использовать для исправления ошибок в программе. Если вы вводите некоторые файлы с утверждениями и затем обнаруживаете, что одно из утверждений содержит ошибку, то вы можете исправить ее, и для этого нет необходимости вводить заново все файлы. Чтобы сделать это, вам необходимо ввести с помощью <strong>reconsult</strong> файл, содержащий совокупность правильных утверждений для предиката, содержащего ошибку. Вы можете ввести исправления либо непосредственно с терминала <strong>(reconsult (user))</strong>, либо сначала отредактировать соответствующий файл, не выходя из Пролог-системы (такую возможность предоставляют не все реализации), и затем ввести этот файл с помощью <strong>reconsult</strong>. Конечно, при вводе исправленных утверждений с терминала содержание <emphasis>базы данных, </emphasis>с которой работает Пролог, изменится, но при этом исходный <emphasis>файл, </emphasis>содержащий первоначальные утверждения с ошибками, останется неизменным! В разд. 8.5 показано использование предикатов <strong>consult</strong> и <strong>reconsult</strong> в процессе разработки программы.</p>
    <subtitle>Списковая форма записи</subtitle>
    <p>Пролог предоставляет специальную форму записи, позволяющую более удобно задавать предикаты <strong>consult</strong> и <strong>reconsult</strong> в качестве целевых утверждений, особенно в случае, когда вы хотите ввести более чем один файл. Для этого достаточно просто записать совокупность имен файлов (как атомов Пролога) в виде списка и задать этот список в качестве целевого утверждения. Если вы хотите, чтобы содержимое файла было просто добавлено к базе данных <strong>(consult)</strong>, то имя такого файла записывается в списке в том виде, как оно есть, если же вы хотите, чтобы при этом произошла замена уже имеющихся одинаковых предикатов <strong>(reconsult), </strong>то перед именем файла ставится знак '-' (минус). Так, например, вопрос</p>
    <empty-line/>
    <p>?- [файл1,-файл2,'фред.1',-'билл.2'].</p>
    <empty-line/>
    <p>полностью эквивалентен следующему, но более длинному;</p>
    <empty-line/>
    <p>?- consult(файл1), reconsult(файл2), consult('фред:1'), reconsult('билл.2').</p>
    <empty-line/>
    <p>Списковая форма сводится к удобству записи, она не дает каких-либо дополнительных возможностей по сравнению с использованием предикатов <strong>consult </strong>и <strong>reconsult. </strong>Некоторые реализации Пролога могут использовать в списковой форме записи вместо знака '-' какой-нибудь иной знак, но эффект при этом останется прежним.</p>
   </section>
   <section>
    <title>
     <p>6.2. Выполнение и невыполнение целевого утверждения</p>
    </title>
    <p>При нормальном выполнении программы на Прологе целевое утверждение считается согласованным (с базой данных), когда это может быть доказано, и несогласованным в случае, когда доказательства найти не удается. В языке имеются два предиката, позволяющих удобно и явным образом определить случаи, когда целевое утверждение считается согласованным и когда несогласованным. Это предикаты <strong>true </strong>и <strong>fail.</strong></p>
    <subtitle>true</subtitle>
    <p>Это целевое утверждение всегда согласуется с базой данных. В действительности этот предикат не является необходимым, так как утверждения в базе данных и цели могут быть переупорядочены или перегруппированы так, чтобы избежать использования предиката <strong>true. </strong>Однако для удобства он входит в состав встроенных предикатов.</p>
    <subtitle>fail</subtitle>
    <p>Это целевое утверждение никогда не согласуется с базой данных. Имеются две ситуации, когда этот предикат оказывается полезным. Одна из них – это использование комбинации !- <strong>fail, </strong>которая уже была описана в разд. 4.3. Конъюнкция целевых утверждений</p>
    <empty-line/>
    <p>…!, fail</p>
    <empty-line/>
    <p>применяется для того, чтобы указать, что <emphasis>если процесс выполнения дошел до этого момента, то можно больше не пытаться доказать (согласовать) данное целевое утверждение. </emphasis>Конъюнкция считается несогласованной благодаря наличию предиката <strong>fail, </strong>а родительское целевое утверждение не согласуется ввиду того, что использовано отсечение.</p>
    <p>Другая ситуация, в которой используется предикат <strong>fail, </strong>возникает, когда вы хотите явно указать, что для некоторого целевого утверждения нужно перебрать все решения. Возможно, вы захотите напечатать все возможные решения. Например, выполнение целевого утверждения</p>
    <empty-line/>
    <p>?- событие (X,Y), phh(Y), fail.</p>
    <empty-line/>
    <p>привело бы к печати всех событий, имеющихся в базе данных, рассмотренной в разд. 5.1, выбор событий и печать их краткого содержания выполняют предикаты событие и <strong>phh, </strong>при этом цель окажется несогласованной с базой данных. Еще одно применение <strong>fail </strong>рассмотрено в разд. 7.13 (в определении предиката <strong>retrac-tall).</strong></p>
   </section>
   <section>
    <title>
     <p>6.3. Классификация термов</p>
    </title>
    <p>Если вам надо определить предикаты, которые будут использоваться с аргументами различных типов, то полезно иметь возможность выделять в определении предиката ситуации, соответствующие каждому из возможных типов. В простейшем случае может понадобиться применять разные утверждения в зависимости от того, является ли аргумент целым числом или атомом. Разные утверждения могут потребоваться и для конкретизированных и неконкретизированных аргументов. Приводимые ниже предикаты позволяют программисту включить в утверждения эти дополнительные условия.</p>
    <subtitle>var(X)</subtitle>
    <p>Целевое утверждение <strong>var(X)</strong> согласуется с базой данных, если на текущий момент <strong>X</strong> является неконкретизированной переменной. Таким образом, возможен следующий диалог:</p>
    <empty-line/>
    <p>?- var(X).</p>
    <p>да</p>
    <p>?- var(23).</p>
    <p>нет</p>
    <p>?- X = Y, Y = 23, var(X).</p>
    <p>нет</p>
    <empty-line/>
    <p>Неконкретизированная переменная может представлять часть некоторой структуры, которая еще не полностью заполнена. Примерами могут служить неотмеченные клетки на доске для игры в крестики-нолики, рассмотренной в разд. 4.3.3, и незаполненные части упорядоченного дерева, представляющего словарь в разд. 7.1. При работе с такими структурами предикат <strong>var</strong> очень, полезен при определении, являются ли некоторые части структуры уже заполненными или нет. Это может предотвратить «случайную» конкретизацию переменной при попытке анализа ее значения. Например, при работе со словарем, представленным в виде упорядоченного дерева, может потребоваться узнать, имеется ли уже вход для некоторого ключа, не создавая такой вход в случае его отсутствия. При игре в крестики-нолики может возникнуть необходимость определить, занята или нет некоторая клетка. Попытка сопоставить неконкретизированную переменную с «<strong>о</strong>» или «<strong>х</strong>» привела бы просто к тому, что соответствующий символ был бы помещен в клетку, соответствующую переменной.</p>
    <subtitle>nonvar(X)</subtitle>
    <p>Целевое утверждение <strong>nonvar(X)</strong> согласуется с базой данных, если <strong>X</strong> на текущий момент не является неконкретизированной переменной. Предикат <strong>nonvar</strong> является, таким образом, противоположным по отношению к предикату <strong>var</strong>. Действительно, он может быть определен на Прологе следующим образом:</p>
    <empty-line/>
    <p>nonvar(X):- var(X),!, fail. </p>
    <p>nonvar(_).</p>
    <empty-line/>
    <subtitle>atom(X)</subtitle>
    <p>Целевое утверждение <strong>atom(X)</strong> согласуется с базой данных, если текущее значение <strong>X</strong> является атомом в смысле языка Пролог. Как следствие возможен следующий диалог:</p>
    <empty-line/>
    <p>?- atom(23).</p>
    <p>нет</p>
    <p>?- atom(apples).</p>
    <p>да</p>
    <p>?- atom('/us/qris/pl. 123').</p>
    <p>да</p>
    <p>?- atom("этo строка").</p>
    <p>нет</p>
    <p>?- atom(X).</p>
    <p>нет</p>
    <p>?- atom(book(bronte,w_h,X)).</p>
    <p>нет</p>
    <empty-line/>
    <subtitle>integer(X)</subtitle>
    <p>Целевое утверждение <strong>integer(X) </strong>согласуется с базой данных, если на текущий момент <strong>X</strong> обозначает целое число. Этот предикат можно использовать при определении простого предиката для упрощения арифметических выражений, где необходимо знать, является ли выражение целым числом (см., например, разд. 7.12).</p>
    <subtitle>atomic(X)</subtitle>
    <p>Целевое утверждение <strong>atomic(X) </strong>согласуется с базой данных, если на текущий момент <strong>X</strong> обозначает либо целое число, либо атом. Предикат <strong>atomic </strong>может быть определен через предикаты <strong>atom </strong>и <strong>integer </strong>следующим образом:</p>
    <empty-line/>
    <p>atomic(X):- atom(X).</p>
    <p>atomic(X):- integer(X)</p>
   </section>
   <section>
    <title>
     <p>6.4. Работа с утверждениями как с термами</p>
    </title>
    <p>Пролог позволяет программисту анализировать и изменять свою программу (т. е. утверждения, которые используются для доказательства согласованности его целевых утверждений). Это непосредственно следует из того, что утверждения можно рассматривать как обычные структуры языка Пролог. В связи с этим в Прологе есть встроенные предикаты, позволяющие программисту следующее:</p>
    <p>• Создавать структуру, представляющую утверждения в базе данных.</p>
    <p>• Добавлять к базе данных утверждение, представленное заданной структурой.</p>
    <p>• Удалять из базы данных утверждение, представленное заданной структурой.</p>
    <p>Большинство операций над базой данных могут быть выполнены с помощью этих предикатов и обычных операций языка Пролог для конструирования и декомпозиции структур. В дополнение к приведенным здесь примерам в разд. 7.8 представлены некоторые способы использования данных предикатов для добавления и удаления утверждений.</p>
    <p>Прежде чем мы рассмотрим соответствующие предикаты, необходимо понять, как утверждения Пролога могут быть представлены в виде структур. Для простого факта такой структурой является соответствующий ему предикат с аргументами. То есть факт, подобный</p>
    <empty-line/>
    <p>нравится(джон,Х)</p>
    <empty-line/>
    <p>может рассматриваться как обычная структура с функтором <strong>нравится </strong>(имеющим два аргумента) и аргументами <strong>джон </strong>и <strong>X. </strong>С другой стороны, правило можно рассматривать как структуру с главным функтором ':-'(с двумя аргументами). Этот функтор объявлен как инфиксный оператор. Первым аргументом является заголовок утверждения, а вторым – его тело. Так что</p>
    <empty-line/>
    <p>нравится(джон, X):- нравится(Х,вино)</p>
    <empty-line/>
    <p>есть не что иное, как</p>
    <empty-line/>
    <p>':-' (нравится(джон,Х), нравится(Х,вино))</p>
    <empty-line/>
    <p>– совершенно обычная структура. Далее, если правило содержит более одного целевого утверждения, то они считаются объединенными в структуры с функтором ',' (с двумя аргументами). Этот предикат также объявлен как инфиксный оператор. Так что</p>
    <empty-line/>
    <p>прародитель(Х, Z):- родитель(Х, Y), родитель(Y,Z)</p>
    <empty-line/>
    <p>есть в действительности просто</p>
    <empty-line/>
    <p>':-'(прародитель(Х,Z),Y(родитель(Х,Y),родитель(Y, Z))</p>
    <empty-line/>
    <p>Далее приведены предикаты, позволяющие программисту анализировать и изменять его утверждения.</p>
    <empty-line/>
    <subtitle>listing (A)</subtitle>
    <p>Выполнение целевого утверждения <strong>listing(A), </strong>когда значением <strong>А</strong> является атом, приводит к тому, что все утверждения, предикат которых совпадает с этим атомом, будут записаны в виде термов Пролога в текущий файл вывода. Таким способом вы можете проверить, какие утверждения для некоторого предиката имеются в базе данных на текущий момент. Конкретный формат представления выводимых утверждений зависит от используемой вами реализации Пролог-системы. Заметим, что будут представлены все утверждения, предикат которых совпадает с атомом независимо от того, сколько аргументов они имеют. Использование предиката <strong>listing </strong>может помочь вам обнаружить ошибки в программе. Так, в приведенном далее примере сеанса работы с системой программист обнаруживает, что он неправильно определил предикат <strong>обр</strong>.</p>
    <empty-line/>
    <p>?- [test].</p>
    <p>test consulted</p>
    <p>да</p>
    <p>?- обр([a,b,c,d],X). </p>
    <p>нет</p>
    <p>?- listing(обр).</p>
    <p>обр([],[]).</p>
    <p>обр ([_44|_45],_38):-обр(_45,_47),присоединить(_47,[_44],_38). </p>
    <p>да</p>
    <empty-line/>
    <p>Печать утверждений предиката <strong>обр </strong>показывает, что атом <strong>присоединить </strong>написан в программе с ошибкой.</p>
    <subtitle>clause(X, Y)</subtitle>
    <p>Выполнение целевого утверждения вида <strong>clause(X, Y)</strong> приводит к тому, что <strong>X</strong> и <strong>Y</strong> сопоставляются с заголовком и телом некоторого имеющегося в базе данных утверждения. При попытке выполнить указанное целевое утверждение переменная <strong>X</strong> должна быть до такой степени конкретизирована, чтобы был известен главный предикат утверждения. Если для данного предиката нет утверждений, то доказательство согласованности целевого утверждения заканчивается неудачей. Если имеется несколько утверждений, соответствующих предикату, то Пролог выбирает первое из них. В этом случае если предпринимается попытка вновь согласовать целевое утверждение, то будет выбрано следующее утверждение и так далее.</p>
    <p>Заметим, что в то время как предикат <strong>clause </strong>всегда имеет аргумент, соответствующий телу утверждения, далеко не каждое утверждение действительно имеет тело. Если утверждение не имеет тела, то считается, что оно имеет фиктивное тело <strong>true. </strong>Мы называли такие утверждения «фактами». В той или иной степени конкретизируя <strong>X</strong> и <strong>Y</strong>, можно искать либо все утверждения, соответствующие данному предикату с вполне определенным числом аргументов, либо все утверждения, соответствующие некоторому образцу. Так, например:</p>
    <empty-line/>
    <p>присоединить([], X, X).</p>
    <p>присоединить([А|В]),С,[А|D]:- присоединить(В,С,D).</p>
    <p>?- clause(присоединить(А,В,С),Y).</p>
    <p>А=[], В =_23, С=_23, Y = true;</p>
    <p>А = [_23|_24], В =_25, С = [_23|_26], Y = присоединить(_24,_25,_26);</p>
    <p>нет</p>
    <empty-line/>
    <p>Предикат <strong>clause </strong>очень полезен в том случае, если нам надо создать программы, анализирующие или исполняющие другие программы (см. разд. 7.13).</p>
    <subtitle>asserta(X), assertz(X)</subtitle>
    <p>Два встроенных предиката <strong>asserta</strong> и <strong>assertz</strong> позволяют добавлять новые утверждения в базу данных. Оба предиката действуют в точности одинаковым образом, за тем исключением, что <strong>asserta</strong> добавляет утверждение в <emphasis>начало </emphasis>базы данных, в то время как <strong>assertz</strong> добавляет утверждение в ее <emphasis>конец. </emphasis>Это отличие можно легко запомнить, учитывая, что «<strong>а</strong>» является первой буквой английского алфавита, a «<strong>z</strong>» его последняя буква. При выполнении целевого утверждения <strong>asserta(X)</strong>, <strong>X</strong> должно иметь значением нечто, что можно представлять как утверждение; действительно, как и в случае <strong>clause</strong>, <strong>X</strong> должно быть достаточно конкретизировано, чтобы можно было установить главный предикат. Необходимо подчеркнуть, что результат добавления в базу данных утверждения не устраняется при выполнении возврата. Следовательно, если мы использовали предикат <strong>asserta</strong> или <strong>assertz </strong>для того, чтобы добавить новое утверждение, то это утверждение может быть удалено только в случае, если мы явно укажем это (используя предикат <strong>retract</strong>).</p>
    <subtitle>retract(X)</subtitle>
    <p>Встроенный предикат <strong>retract</strong> позволяет удалять утверждения из базы данных. Этот предикат имеет один аргумент, представляющий терм, с которым должно быть сопоставлено удаляемое утверждение. Указанный терм должен быть достаточно конкретизирован, чтобы можно было определить предикат утверждения (аналогично предикатам <strong>asserta</strong>, <strong>clause</strong> и т. д.). При попытке выполнить целевое утверждение <strong>retract(X)</strong> находится первое утверждение в базе данных, с которым может быть сопоставлен <strong>X</strong>, и это утверждение удаляется. При попытке вновь выполнить это целевое утверждение Пролог просматривает базу данных, начиная с места удаленного утверждения, в попытке найти другое сопоставимое утверждение. Если такое утверждение находится, то выполняются действия, рассмотренные выше. Если делается новая попытка согласовать целевое утверждение, то продолжается поиск следующего подходящего утверждения. И так далее. Заметим, что если утверждение было удалено, то оно ни при каких условиях не будет восстановлено вновь, даже при попытке вновь выполнить предикат <strong>retract</strong> при возврате. Если в некоторый момент поиск не дает новых сопоставлений утверждений, то согласование целевого утверждения заканчивается неудачей.</p>
    <p>Так как аргумент <strong>X</strong> сопоставляется с удаляемым утверждением, то имеется возможность получить точное представление об удаляемом утверждении, даже если <strong>X</strong> исходно означал некоторую структуру, содержащую множество неконкретизированных переменных. Это позволяет использовать предикат <strong>retract</strong> вместо предиката <strong>clause</strong>, в ситуации когда найденное утверждение сразу же удаляется. Такая ситуация как раз имеет место в определении предиката генатом (разд. 7.8).</p>
   </section>
   <section>
    <title>
     <p>6.5. Создание структур и работа с компонентами структур</p>
    </title>
    <p>Обычно когда мы хотим задать в программе на Прологе операции со структурой определенного вида, то мы делаем это, «упоминая» некоторым образом подобную структуру. Это значит, что если предикат используется для обработки множества структур различного вида, передаваемых ему в качестве аргумента, то обычно мы обеспечиваем отдельное утверждение для каждого класса структур. Хорошим примером такого подхода является программа для символьного дифференцирования, которая будет рассмотрена в разд. 7.1. В этой программе используются отдельные утверждения для функторов +, -, * и так далее. Мы знаем заранее, какие структуры могут появиться, и обеспечиваем утверждения для каждой из них.</p>
    <p>В некоторых программах мы не можем предвидеть заранее все возможные структуры. Это имеет место, например, при написании программы «красивой печати», которая могла бы печатать произвольные структуры языка Пролог, размещая их в нескольких строках и используя отступы. (См. разд. 5.1, где представлена такая программа для печати списков.) Так, например, возможно, мы захотели бы напечатать терм</p>
    <p>книга(629,автор(бронте, эмили),вх) </p>
    <p>следующим образом:</p>
    <p>книга </p>
    <p> 629 </p>
    <p> автор </p>
    <p>  бронте</p>
    <p>  эмили</p>
    <p> вх</p>
    <p>Важным моментом является то, что мы хотим, чтобы эта программа работала правильно, какую бы структуру мы ей ни задали. Понятно, что одна из возможностей сделать это – обеспечить отдельное утверждение для каждого функтора, какой только можно представить. Но это работа, которую мы никогда не завершим, потому что существует бесконечно много различных функторов! Написать подобную программу можно, используя встроенные предикаты для работы со структурами произвольного вида. Здесь мы опишем некоторые из них – это предикаты <strong>functor</strong>, <strong>arg</strong> и '<strong>=..</strong>'. Мы опишем также предикат <strong>name</strong>, выполняющий операции над атомами.</p>
    <subtitle>functor(T,F,N)</subtitle>
    <p>Предикат <strong>functor </strong>определен таким образом, что <strong>functor(T,F,N) </strong>означает, что <strong>Т</strong> – <emphasis>это структура с функтором </emphasis><strong>F</strong>, <emphasis>имеющим </emphasis><strong>N</strong> <emphasis>аргументов. </emphasis>Этот предикат можно использовать двумя основными способами, В первом случае аргумент <strong>Т</strong> уже имеет значение. Целевое утверждение считается несогласованным с базой данных, если <strong>Т</strong> не является ни атомом, ни структурой. Если <strong>Т</strong> – это атом или структура, то <strong>F</strong> сопоставляется с функтором этой структуры, а <strong>N</strong> присваивается значение, равное числу аргументов функтора. Заметим, что в данном контексте считается, что атом – это структура с числом аргументов 0. Ниже приведено несколько примеров целевых утверждений с предикатом <strong>functor:</strong></p>
    <empty-line/>
    <p>?- functor(f(a,b,g(Z)),F,N). </p>
    <p>Z = _23, F = f<strong>, </strong>N<emphasis> = </emphasis>3</p>
    <p>?- functor(a+b,F,N).</p>
    <p>F = +, N = 2</p>
    <p>?- functor([a,b,c],F,N). </p>
    <p>F =., N <emphasis>= 2</emphasis></p>
    <p>?- functor(apple,F,N). </p>
    <p>F = apple, N = 0</p>
    <p>?- functor([a,b,c],'.',3). </p>
    <p>нет</p>
    <p>?- functor([a,b,c],a,Z). </p>
    <p>нет</p>
    <empty-line/>
    <p>Прежде чем перейти к обсуждению предиката <strong>arg, </strong>следует рассмотреть второй способ использования предиката <strong>functor. </strong>В этом случае первый аргумент целевого утверждения <strong>functor (Т, F, N) </strong>неконкретизирован. В этом случае два других аргумента должны быть конкретизированы, однозначно определяя функтор и число аргументов соответственно. Целевое утверждение такого вида всегда согласуется с базой данных, и в результате значением <strong>Т</strong> становится структура с указанными функтором и числом аргументов. Таким образом, это некоторый способ <emphasis>создания </emphasis>произвольных структур по заданным функтору структуры и числу ее аргументов. Аргументами такой структуры, созданной с помощью предиката <strong>functor, </strong>являются неконкретизированные переменные. Следовательно, эта структура будет сопоставима с любой другой структурой, имеющей тот же функтор и одинаковое число аргументов.</p>
    <p>Предикат <strong>functor </strong>используется для создания структуры в основном тогда, когда нам надо получить «копию» некоторой уже существующей структуры с новыми переменными в качестве аргументов. Мы можем ввести для этого предикат <strong>копирование, </strong>использующий <strong>functor </strong>как целевое утверждение:</p>
    <empty-line/>
    <p>копирование(Старая, Новая):- functor(Cтapaя,F,N), functor(Hoвaя,F,N).</p>
    <empty-line/>
    <p>В этом определении подряд используются два целевых утверждения <strong>functor. </strong>Если целевое утверждение <strong>копирование </strong>имеет конкретизированный первый аргумент и неконкретизированный второй, то произойдет следующее. Первое целевое утверждение <strong>functor </strong>будет соответствовать первому способу использования этого предиката (так как первый аргумент этого предиката конкретизирован). Следовательно, <strong>F</strong> и <strong>N</strong> конкретизируются, получив в качестве значений функтор и число аргументов этой существующей структуры. Второе целевое утверждение <strong>functor </strong>соответствует второму способу использования этого предиката. На этот раз первый аргумент неконкретизирован, и информация, задаваемая <strong>F</strong> и <strong>N</strong>, используется для создания структуры <strong>Новая. </strong>Эта структура имеет те же функтор и число аргументов, что и Старая, но ее компонентами являются переменные. Таким образом, возможен следующий диалог:</p>
    <empty-line/>
    <p>?- копирование(sentence(np(n(john)), v(eats)),X). </p>
    <p>X = sentence(_23,_24)</p>
    <empty-line/>
    <p>Мы используем подобную комбинацию целевых утверждений <strong>functor </strong>в определении предиката <strong>reconsult </strong>в разд. 7.13.</p>
    <subtitle>arg(N,T,A<emphasis>)</emphasis></subtitle>
    <p>Предикат <strong>arg </strong>всегда должен использоваться с конкретизированными первым и вторым аргументами. Он применяется для доступа к конкретному аргументу структуры. Первый аргумент предиката <strong>arg </strong>определяет, какой аргумент структуры необходим. Второй аргумент определяет структуру, к аргументу которой необходим доступ. Пролог находит соответствующий аргумент и затем пытается сопоставить его с третьим аргументом предиката <strong>arg. </strong>Таким образом, цель <strong>arg(N,T,A) </strong>согласуется с базой данных, если <strong>N</strong>-й аргумент <strong>Т</strong> есть <strong>А</strong>. Давайте рассмотрим несколько целевых утверждений с <strong>arg</strong>.</p>
    <empty-line/>
    <p>?- аrg(2,отношение(джон,мать(джейн)),Х). </p>
    <p>X = мать(джейн)</p>
    <p>?- arg(1,a+(b+c),X). </p>
    <p>X =а</p>
    <p>?- arg(2,[a,b,c],X). </p>
    <p>X = [b,c]</p>
    <p>?-arg(l,a+(b+c),b). </p>
    <p>нет</p>
    <empty-line/>
    <p>Иногда мы захотим использовать предикаты <strong>functor</strong> и <strong>arg </strong>в ситуации, когда возможные структуры уже известны. Это связано с тем, что структура может иметь так много аргументов, что просто неудобно каждый раз перечислять их все. Рассмотрим пример, в котором структуры используются для описания книг. Мы могли бы иметь отдельную компоненту для названия книги, ее автора, издательства, года издания и так далее. Будем считать, что результирующая структура имеет четырнадцать компонент. Мы могли бы написать следующие полезные определения:</p>
    <empty-line/>
    <p>является _ книгой(книга(_,_,_,_,_,_,_,_,_,_,_,_,_,_)).</p>
    <p>название(книга(Т,_,_,_,_,_,_,_,_,_,_,_,_,_),Т).</p>
    <p>автор(книга(_,А,_,_,_,_,_,_,_,_,_,_,_,_),А).</p>
    <p>. . .</p>
    <empty-line/>
    <p>В действительности мы можем записать это значительно более компактно следующим образом:</p>
    <p>является_книгой(Х):- functor(X, книга, 14). </p>
    <p>название(Х,Т):- является_книгой(Х), arg(1,X,T). </p>
    <p>автор(Х,А):- является_книгой(Х), arg(2,X,T).</p>
    <p>. . .</p>
    <subtitle>X=..L</subtitle>
    <p>Предикаты <strong>functor </strong>и <strong>arg </strong>дают один из способов создания произвольных структур и доступа к их аргументам. Предикат «=..» предоставляет альтернативный способ, полезный в том случае, когда необходимо одновременно получить все аргументы структуры или создать структуру по заданному списку ее аргументов. Целевое утверждение <strong>X=..L</strong> означает, что <strong>L</strong> <emphasis>есть список, состоящий из функтора структуры </emphasis><strong>X</strong>, <emphasis>за которым следуют аргументы </emphasis><strong>X</strong>. Такое целевое утверждение может быть использовано двумя способами, так же как и целевое утверждение <strong>functor. </strong>Если <strong>X</strong> уже имеет значение, то Пролог создает соответствующий список и пытается сопоставить его с <strong>L</strong>. Напротив, если <strong>X</strong> неконкретизировано, то список будет использован для формирования соответствующей структуры, которая станет значением <strong>X</strong>. В этом случае голова списка должна быть атомом (этот атом станет функтором X). Ниже приведено несколько примеров целевых утверждений, содержащих =..:</p>
    <p>?- имя(а,b,с) =.. X. </p>
    <p>X = [имя,а,b,с]</p>
    <p>?- присоединить([А|В],С, [A|D]) =..L.</p>
    <p>A = _2, В = _3, С = _4, D = _5, L = [присоединить,[_2|_3],_4,[_2|_5]]</p>
    <p>?- [a,b,c,d] =..L. </p>
    <p>L = ['.',a,[b,c,d]].</p>
    <p>?- (a+b) =.. L.</p>
    <p>L = [+,a,b].</p>
    <p>?- (a+b) =..</p>
    <p>[+,A,B] A = а, В = b</p>
    <p>?- [a,b,c,d] =..</p>
    <p>[A|B] A = '.', В = [a,[b,c,d]]</p>
    <p>?- X =.. [a,b,c,d]</p>
    <p>X = a(b,c,d).</p>
    <p>?- X =.. [присоединить,[a,b,],[c],[a,b,c]]. </p>
    <p>X = присоединить([а,b],[с],[а,b,с])</p>
    <p>Примеры использования предиката =.. приведены в разд. 7.12.</p>
    <subtitle>name(А,L)</subtitle>
    <p>В то время как предикаты <strong>functor</strong>, <strong>arg</strong> и <strong>=..</strong> используются для формирования произвольных структур и доступа к их аргументам, предикат <strong>name</strong> используется для работы с произвольными атомами. Предикат <strong>name</strong> сопоставляет атому список литер (их ASCII кодов), из которых состоит этот атом. Данный предикат можно использовать как для определения литер, составляющих указанный атом, так и для определения атома, содержащего заданные литеры. Целевое утверждение <strong>name(A, L)</strong> означает, что <emphasis>литеры, образующие атом </emphasis><strong>А</strong>, <emphasis>являются элементами списка </emphasis><strong>L</strong>. Если аргументу А уже присвоено значение, то Пролог создает список литер и пытается сопоставить его с <strong>L</strong>. В противном случае Пролог использует список <strong>L</strong> для создания атома, который станет значением <strong>А</strong>. Приведем примеры использования предиката <strong>name</strong>:</p>
    <empty-line/>
    <p>?- name(apple,X).</p>
    <p>X = [97,112,112,108,100]</p>
    <p>?- name(X,[97,l12,112,108,100]). </p>
    <p>X = apple</p>
    <p>?- name(apple,"apple"). </p>
    <p>да</p>
    <p>?- name(apple,"pear"). </p>
    <p>нет</p>
    <p>В разд. 9.5 предикат <strong>name </strong>используется для доступа к внутренней структуре слов английского языка, представляемых атомами Пролога.</p>
   </section>
   <section>
    <title>
     <p><strong>6.6. Воздействие на процесс возврата</strong></p>
    </title>
    <p>В Прологе есть два встроенных предиката, изменяющих нормальную последовательность событий, происходящих в процессе возврата. Предикат «<strong>!</strong>» устраняет возможности для повторного согласования целевых утверждений, а предикат <strong>repeat </strong>создает новые альтернативы там, где их не было ранее.</p>
    <subtitle>Отсечение</subtitle>
    <p>Символ отсечения ('!') можно рассматривать как встроенный предикат, который лишает Пролог-систему возможности изменить некоторые из решений, принятых ею ранее. Более подробное описание отсечения смотрите в гл. 4.</p>
    <subtitle>repeat</subtitle>
    <p>Встроенный предикат <strong>repeat </strong>обеспечивает дополнительную возможность для порождения множественных решений в процессе возврата. Хотя он и является встроенным, его поведение полностью соответствует следующему определению:</p>
    <empty-line/>
    <p>repeat.</p>
    <p>repeat:- repeat.</p>
    <empty-line/>
    <p>Что произойдет, если мы поместим предикат <strong>repeat </strong>как целевое утверждение в одно из наших правил?</p>
    <p>Во-первых, это целевое утверждение согласуется с базой данных, так как имеется соответствующий факт – первое утверждение определения предиката <strong>repeat. </strong>Во-вторых, если в процессе возврата вновь будет достигнуто это место, то Пролог будет иметь возможность испробовать альтернативу – правило (второе утверждение). При использовании правила порождается другое целевое утверждение <strong>repeat. </strong>Так как оно сопоставляется с фактом для предиката <strong>repeat, </strong>то это целевое утверждение вновь согласуется с базой данных. Если процесс возврата снова дойдет до этого места, то Пролог вновь использует правило там, где он ранее использовал факт. Чтобы доказать согласованность вновь порожденного целевого утверждения, он снова выберет факт. И так далее. В действительности в процессе возврата целевое утверждение <strong>repeat </strong>может быть согласовано бесконечное число раз. Обратим внимание на существенность порядка, в котором записаны утверждения для предиката <strong>repeat. </strong>(Что произойдет, если факт будет записан после правила?)</p>
    <p>Для чего нужно порождать целевые утверждения, которые всегда будут согласовываться в процессе возврата? Они нужны для того, чтобы создавать правила, в которых имеется возможность выбора вариантов, из правил, которые такой возможности не содержат. И тем самым мы можем заставить их порождать каждый раз различные значения.</p>
    <p>Рассмотрим встроенный предикат <strong>get0, </strong>который описан в гл. 5. Если Пролог пытается доказать согласованность целевого утверждения <strong>get0(X)</strong>, то он понимает это как указание взять очередную литеру (букву, цифру, пробел или что-либо еще), которая была введена в систему, и попытаться сопоставить целочисленный код этой литеры со значением <strong>X</strong>. Если они будут сопоставимы, то целевое утверждение считается согласованным, в противном случае оно несогласовано. При этом нет никакого выбора – предикат <strong>get0</strong> всегда обрабатывает только текущую литеру, введенную в систему в момент обращения к предикату. При следующем обращении к целевому утверждению, включающему <strong>get0</strong>, он возьмет следующую литеру, но при этом опять не будет никакого выбора. Мы можем определить новый предикат <strong>new_get</strong> следующим образом:</p>
    <empty-line/>
    <p>new_get(X):- repeat, get0(X).</p>
    <empty-line/>
    <p>Предикат <strong>new_get</strong> обладает следующим свойством: он порождает одно за одним значения всех последующих литер (в порядке их поступления) как альтернативные решения. Почему так получается? Когда мы первый раз вызываем <strong>new_get(X), </strong>то подцель <strong>repeat </strong>согласуется и подцель <strong>getO(X)</strong> тоже, при этом переменная <strong>X</strong> конкретизируется очередной литерой. Когда мы инициируем возврат, то выясняется, что последним местом, где имелся выбор, является <strong>repeat</strong>. Пролог забывает все, что было сделано с того момента, а повторное согласование целевого утверждения <strong>repeat </strong>успешно завершается. Теперь он вновь должен обратить свое внимание на <strong>getO(X). </strong>К этому моменту текущей литерой является следующая литера, и в результате <strong>X</strong> получает в качестве значения вторую литеру.</p>
    <p>Мы можем использовать наше определение <strong>new_get, </strong>чтобы определить другой полезный предикат. Предикат <strong>get</strong> обычно является встроенным. Когда Пролог обрабатывает целевое утверждение <strong>get(X), </strong>он рассматривает его как указание читать литеры до тех пор, пока он не найдет очередную неуправляющую литеру, имеющую изображение при печати (пробел, признак конца строки и т. д.). Затем он пытается сопоставить целочисленный код этой литеры со значением X. Мы можем написать приблизительное определение предиката <strong>get</strong> следующим образом:</p>
    <empty-line/>
    <p>get(X):- new_get(X), X › 32.</p>
    <empty-line/>
    <p>Чтобы понять это определение, нужно вспомнить, что в кодировке ASCII все неуправляющие (печатаемые) литеры имеют код, превышающий 32, все остальные литеры имеют код, меньший или равный 32. Что происходит при попытке согласовать <strong>get(X)? </strong>Прежде всего <strong>new_get(X) </strong>сопоставляет X с текущей литерой, введенной в систему. Если ее код меньше или равен 32, то следующее целевое утверждение неверно и <strong>new_get </strong>будет вынужден породить следующую литеру как следующее возможное решение. Эта литера будет затем сравнена с 32 и так далее. В конце концов <strong>new_get </strong>найдет неуправляющую литеру, сравнение закончится успешно и код этой литеры будет возвращен в качестве результата <strong>get.</strong></p>
    <p><strong>Упражнение 6.1. </strong>Приведенное определение предиката <strong>get</strong> не будет работать надлежащим образом, если мы обратимся к целевому утверждению <strong>get(X) </strong>с уже определенным значением <strong>X</strong>. Почему это происходит?</p>
    <p>Неприятность, связанная с предикатом <strong>repeat, </strong>состоит в том, что он всегда имеет альтернативное решение. Следовательно, в процессе возврата <strong>repeat </strong>никогда не будут пересмотрены решения, принятые раньше, чем произошел последний вызов <strong>repeat, </strong>если только мы не отсечем каким-либо образом эту постоянную возможность выбора. В силу сказанного предыдущие определения должны быть переписаны следующим образом:</p>
    <empty-line/>
    <p>new_get(X):- repeat, get0(X).</p>
    <p>get(X):- new_get(X), X › 32,!.</p>
    <empty-line/>
    <p>Заметим, что это определение по-прежнему работает, лишь если мы пытаемся согласовать <strong>get(X) </strong>с неконкретизированной значением переменной <strong>X</strong>. Из-за проблемы, связанной с механизмом возврата за <strong>repeat, </strong>в каждом применении <strong>new_get </strong>необходимо предусматривать отсечение дальнейших вариантов, как только порождается литера, удовлетворяющая заданным условиям.</p>
   </section>
   <section>
    <title>
     <p>6.7. Формирование составных целевых утверждений</p>
    </title>
    <p>В правилах и вопросах вида <strong>X:-Y</strong> или <strong>?-Y</strong> терм, появляющийся на месте <strong>Y</strong>, может состоять из единственного целевого утверждения либо представлять конъюнкцию целевых утверждений или их дизъюнкцию. Более того, можно употреблять в качестве целевых утверждений <strong>переменные </strong>и успешно доказывать согласованность целевого утверждения, когда целевое утверждение в действительности не согласуется, используя для этого предикат <strong>not. </strong>Предикаты, представленные в этом разделе, позволяют реализовать эти сложные способы выражения целевых утверждений.</p>
    <subtitle>Конъюнкция целей</subtitle>
    <p>Функтор ',' (запятая) определяет конъюнкцию целевых утверждений. Этот функтор был введен в гл. 1. Если <strong>X </strong>и <strong>Y</strong> – целевые утверждения, то целевое утверждение <strong>X</strong>, <strong>Y</strong> согласуется с базой данных, если согласуется <strong>X</strong> и <strong>Y</strong>. Если <strong>X</strong> согласуется и затем <strong>Y</strong> не согласуется, то делается попытка найти новое доказательство согласованности для <strong>X</strong>. Если <strong>X</strong> не согласуется, то не согласуется и конъюнкция в целом. Это и составляет суть механизма возврата. Функтор <strong>Y</strong> является встроенным и определен как левоассоциативный инфиксный оператор, так что <strong>X</strong>, <strong>Y</strong>, <strong>Z</strong> эквивалентно <strong>(X,Y),Z</strong>.</p>
    <subtitle>Дизъюнкция целей</subtitle>
    <p>Функтор ';' определяет дизъюнкцию (означающую <emphasis>или) </emphasis>целевых утверждений. Если <strong>X</strong> и <strong>Y</strong> – целевые утверждения, то целевое утверждение <strong>X</strong>; <strong>Y</strong> согласуется с базой данных, если согласуется <strong>X</strong> или <strong>Y</strong>. Если <strong>X</strong> не согласуется, то делается попытка доказать согласованность <strong>Y</strong>. Если и <strong>Y</strong> не согласуется, то не согласуется и дизъюнкция в целом. Мы можем использовать функтор ';' для того, чтобы выразить альтернативы в <emphasis>пределах одного утверждения. </emphasis>Например, будем считать, что некоторый объект является человеком, если этот объект – либо Адам либо Ева или если у объекта есть мать. Мы можем выразить это в одном правиле следующим образом:</p>
    <empty-line/>
    <p>человек(Х):- (Х=адам; Х = ева; мать(Х,Y)).</p>
    <empty-line/>
    <p>В этом правиле мы в действительности определили три альтернативы. Однако для Пролога это правило содержит две альтернативы, одна из которых сама содержит две альтернативы. Так как функтор ';' является встроенным и определен как правоассоциативный инфиксный оператор, то целевое утверждение в приведенном правиле в действительности можно переписать следующим образом:</p>
    <empty-line/>
    <p>';' (Х = адам, ';'(Х=ева,мать(Х, Y)))</p>
    <empty-line/>
    <p>Таким образом, первая возможность соответствует тому, что <strong>X</strong> – это адам. Вторая возможность включает две альтернативы: <strong>X</strong> это ева или у <strong>X</strong> есть мать</p>
    <p>Мы можем использовать дизъюнкцию в любом месте, где может быть использовано любое другое целевое утверждение на Прологе. Однако целесообразно использовать дополнительные скобки, чтобы избежать недоразумений, касающихся взаимодействия операторов ';' и ','. Обычно мы можем избежать применения дизъюнкции путем использования нескольких фактов и правил, содержащих, возможно, определения некоторых дополнительных предикатов. Например, приведенный выше пример в точности эквивалентен следующему:</p>
    <empty-line/>
    <p>человек(адам).</p>
    <p>человек(ева).</p>
    <p>человек(Х):- мать(Х,Y).</p>
    <empty-line/>
    <p>Этот вариант более традиционен и, возможно, проще для чтения. Для многих Пролог-систем он может быть более эффективным по сравнению с использованием ';'.</p>
    <p>Результатом отсечения является невозможность изменить выбор альтернатив, обусловленных наличием дизъюнкций, сделанный с момента сопоставления с правилом, содержащим отсечение (см. гл. 4). Вследствие этого имеется ряд случаев, когда программа, содержащая отсечения, не может быть преобразована в обычную программу без использования дизъюнкций. Однако в общем случае не рекомендуется чрезмерно часто использовать ';'. В качестве предостережения отсылаем вас к гл. 8, где показано, как необдуманное использование ';' затрудняет понимание программ.</p>
    <subtitle>call(X)</subtitle>
    <p>Предполагается, что <strong>X</strong> конкретизирован термом, который может быть интерпретирован как целевое утверждение. Целевое утверждение <strong>саll(X) </strong>считается согласованным, если попытка доказать согласованность <strong>X</strong> завершается успехом. Целевое утверждение <strong>call(X) </strong>не согласуется с базой данных, если попытка доказать согласованность <strong>X</strong> заканчивается неудачей. На первый взгляд этот предикат может показаться излишним, поскольку, естественно, возникает вопрос: почему аргумент <strong>call </strong>не может быть записан непосредственно как целевое утверждение? Например, целевое утверждение</p>
    <p>…, саll(принадлежит(а,Х)),…</p>
    <p>всегда может быть заменено следующим:</p>
    <p>…, принадлежит(a,X),…</p>
    <p>Однако если мы создаем целевые утверждения, используя предикат '=..' или ему подобные, то возможны обращения к целевым утверждениям, функторы которых неизвестны на момент ввода программы в Пролог-систему. Так, например, в определении предиката <strong>consult </strong>в разд. 7.13 нам надо иметь возможность рассматривать любой терм, прочитанный после <strong>?-</strong>, как целевое утверждение. Предполагая, что <strong>Р</strong>, <strong>Х </strong>и <strong>Y</strong> конкретизированы функтором и аргументами соответственно, можно использовать <strong>call </strong>следующим образом:</p>
    <p>…, Z =… [P,X,Y], call(Z),…</p>
    <p>Последний фрагмент программы можно рассматривать как способ выражения обращения к целевому утверждению следующего вида:</p>
    <p>…, P(X,Y),…</p>
    <p>которое в рамках стандартной версии Пролога, рассматриваемой в этой книге, синтаксически некорректно. Однако некоторые версии языка Пролог допускают использование переменной в качестве функтора целевого утверждения.</p>
    <subtitle>not(X)</subtitle>
    <p>Предполагается, что <strong>X</strong> конкретизирован термом, который может быть интерпретирован как целевое утверждение. Целевое утверждение <strong>not(X) </strong>считается согласованным с базой данных, если попытка доказать согласованность <strong>X</strong> заканчивается неудачей. Целевое утверждение <strong>not(X) </strong>считается несогласованным, если попытка доказать согласованность X успешно завершается. В этом плане предикат <strong>not </strong>очень похож на <strong>call, </strong>за тем исключением, что согласованность или несогласованность аргумента, рассматриваемого как целевое утверждение, приводит к противоположному результату.</p>
    <p>Чем отличаются следующие два вопроса?</p>
    <empty-line/>
    <p>/* 1 */?- принадлежит(Х,[а,b,с]), write(X).</p>
    <p>/* 2 */?- not(not(принадлежит(Х,[а,b,с]))), write(X).</p>
    <empty-line/>
    <p>Может показаться, что между ними нет никакой разницы, так как в запросе 2 <strong>принадлежит(Х,[а,b,с,])</strong> согласуется, поэтому <strong>not(принадлежит(Х,[а,b,с,])) </strong>не согласуется и <strong>not(not(принадлежит(Х,[а,b,с]))) </strong>согласуется. Это правильно лишь отчасти. В результате первого вопроса будет напечатан атом '<strong>а</strong>', а в результате второго – <emphasis>неконкретизированная переменная. </emphasis>Рассмотрим, что происходит при попытке доказать согласованность первого целевого утверждения из второго вопроса:</p>
    <p>1. Целевое утверждение <strong>принадлежит </strong>согласуется, и <strong>X</strong> конкретизируется значением <strong>а.</strong></p>
    <p>2 Предпринимается попытка доказать согласованность первого целевого утверждения <strong>not, </strong>которая заканчивается неудачей, так как целевое утверждение <strong>принадлежит, </strong>являющееся его аргументом, согласуется с базой данных. Теперь вспомним, что, когда целевое утверждение не согласуется, все конкретизированные переменные, такие как <strong>X</strong> в нашем примере, должны теперь «забыть», что они обозначали до сих пор. Следовательно, <strong>X</strong> становится неконкретизированной.</p>
    <p>3. Предпринимается попытка доказать второе целевое утверждение <strong>not, </strong>и эта попытка заканчивается успехом, так как его аргумент <strong>(not(принадлежит(…))) </strong>не согласован. Переменная <strong>X</strong> остается неконкретизированной.</p>
    <p>4. Предпринимается попытка выполнить целевое утверждение <strong>write </strong>с неконкретизированным значением <strong>X</strong>. И, как описано в разд. 6.9, неконкретизированные переменные печатаются специальным образом.</p>
   </section>
   <section>
    <title>
     <p>6.8. Равенство</p>
    </title>
    <p>В этом разделе коротко рассматриваются различные встроенные предикаты, используемые для проверки равенства элементов и позволяющие делать их равными.</p>
    <subtitle>X=Y</subtitle>
    <p>Когда Пролог встречает целевое утверждение <strong>X=Y</strong>, то он пытается сделать <strong>X</strong> и <strong>Y</strong> равными, сопоставляя их друг с другом. Если сопоставление возможно, то целевое утверждение считается согласованным (а <strong>X</strong> и <strong>Y</strong>, возможно, становятся более конкретизированными). В противном случае целевое утверждение считается несогласованным. Более полное обсуждение этого предиката приведено в разд. 2.4. Предикат <strong>равно </strong>определен таким образом, как если бы имел место факт </p>
    <p>X = X. </p>
    <p>Убедитесь, что вы понимаете, как это определение работает.</p>
    <subtitle>X\=Y</subtitle>
    <p>Предикат '<strong>\=</strong>' является противоположным по отношению к предикату '<strong>=</strong>' с точки зрения согласованности с базой данных. Это значит, что <strong>X\=Y</strong> согласовано, если <strong>X=Y</strong> не согласовано, и наоборот. Если целевое утверждение <strong>X\ = Y</strong> согласовано (<strong>X </strong>и <strong>Y</strong> не могут быть сопоставлены друг с другом), то не произойдет никаких изменений в конкретизации <strong>X</strong> и <strong>Y</strong>. Если бы '<strong>\=</strong>' не был встроенным предикатом, то мы могли бы определить его на Прологе следующим образом:</p>
    <empty-line/>
    <p>X \= Y:- X = Y,!, fail<strong>. </strong>X \= Y.</p>
    <subtitle>X==Y</subtitle>
    <p>Предикат '==' выполняет значительно более строгую проверку на равенство, чем предикат '='. Это значит, что если <strong>X==Y </strong>выполняется, то и тем более выполняется <strong>X=Y</strong>. А обратное заключение не всегда имеет место. Отличие '==' состоит в том, что он более строг к переменным. Предикат '=' предполагает, что не-конкретизированная переменная может быть равна чему угодно, так как она сопоставима с чем угодно. С другой стороны, предикат '==' предполагает, что неконкретизированная переменная может быть равна другой неконкретизированной переменной, лишь когда они уже сцеплены друг с другом. Иначе проверка на равенство заканчивается неудачей. Таким образом, возможен следующий диалог:</p>
    <empty-line/>
    <p>?- X==Y. </p>
    <p>нет</p>
    <p>?- X==X.</p>
    <p>X=_23</p>
    <p>?- X = Y, X == Y. X = _23, Y = _23</p>
    <p>?- присоединить([А|В],С) == присоединить(Х,Y). </p>
    <p>нет</p>
    <p>?- присоединить ([А|В],С) == присоединить([А|В],С). </p>
    <p>А = _23, В = _24, С = _25</p>
    <subtitle>Х \== Y</subtitle>
    <p>Этот предикат находится в таком же отношении с '==' как '\=' с '='. Это значит, что целевое утверждение, содержащее этот предикат, согласуемо в точности тогда, когда целевое утверждение с '==' не согласуемо, и наоборот. И вновь мы могли бы считать, что этот предикат определен на Прологе следующим образом:</p>
    <p>Х\== Y:- X == Y,!, fail.</p>
    <p>Х\== Y.</p>
   </section>
   <section>
    <title>
     <p>6.9. Ввод и вывод данных</p>
    </title>
    <p>Предикаты для ввода и вывода литер и термов обсуждались в гл. 5. Здесь мы резюмируем наши знания о каждом из этих предикатов.</p>
    <subtitle>get0(X)</subtitle>
    <p>Это целевое утверждение согласуется с базой данных, если <strong>X</strong> может быть сопоставлена с очередной литерой в текущем входном потоке данных. Цель <strong>get0</strong> выполняется лишь один раз (его нельзя согласовать повторно). Операция перехода к очередной литере не переделывается при возврате, так как не существует способа поместить литеру обратно в текущий входной поток данных.</p>
    <subtitle>get(X)</subtitle>
    <p>Это целевое утверждение согласуется с базой данных, если переменная <strong>X</strong> может быть сопоставлена с очередной печатаемой (неуправляющей) литерой в текущем входном потоке данных. Печатаемые литеры имеют код ASCII, превышающий 32. Все управляющие литеры пропускаются. Предикат <strong>get</strong> выполняется только один раз (он не может быть согласован вновь). Результат <strong>get</strong> не устраняется при возврате, так как нет способа поместить литеру обратно в текущий входной поток данных.</p>
    <subtitle>skip(X)</subtitle>
    <p>Этот предикат читает и пропускает литеры в текущем входном потоке данных до тех пор, пока не встретится литера, сопоставимая с <strong>X</strong>. Предикат <strong>skip</strong> выполняется только один раз.</p>
    <subtitle>read(X)</subtitle>
    <p>Этот предикат читает очередной терм из текущего входного потока данных и сопоставляет его с <strong>X</strong>. Предикат <strong>read</strong> выполняется только один раз. Вводимый терм должен заканчиваться точкой '.' которая не становится частью этого терма. После точки должна следовать по крайней мере одна управляющая литера. Точка удаляется из текущего входного потока данных.</p>
    <subtitle>put(X)</subtitle>
    <p>Этот предикат записывает целое число <strong>X</strong> в виде литеры (кодом которой и является <strong>X</strong>) в текущий выходной поток данных. Предикат <strong>put</strong> выполняется только один раз. Если <strong>X</strong> неконкретизирован, то фиксируется ошибка.</p>
    <subtitle>nl</subtitle>
    <p>Записывает в текущий выходной поток данных последовательность управляющих литер, вызывающую переход на «новую строку». В случае вывода на дисплей все литеры, выводимые после <strong>nl</strong>, будут размещены на следующей строке страницы; <strong>nl</strong> выполняется только один раз.</p>
    <subtitle>tab(X)</subtitle>
    <p>Записывает <strong>X</strong> «пробелов» в текущий выходной поток данных. Если <strong>X</strong> неконкретизирован, то фиксируется ошибка, <strong>tab </strong>выполняется только один раз.</p>
    <subtitle>write(X)</subtitle>
    <p>Этот предикат записывает терм <strong>X</strong> в текущий выходной поток данных, <strong>write </strong>выполняется только один раз. Каждая неконкретизированная переменная, входящая в <strong>X</strong>, записывается как уникальное имя, начинающееся с подчеркивания ('_'), за которым следует уникальное число, как, например, '_239'. Переменные, сцепленные в пределах одного аргумента предиката <strong>write, </strong>при печати будут иметь одинаковые имена. Предикат <strong>write </strong>учитывает при печати термов имеющиеся объявления операторов. Так, например, инфиксный оператор будет напечатан между своими аргументами.</p>
    <subtitle>display(X)</subtitle>
    <p>Предикат <strong>display </strong>работает в точности таким же способом, что и <strong>write, </strong>за тем исключением, что он игнорирует все объявления операторов. Предикат <strong>display </strong>печатает любую структуру, начиная с ее функтора, за которым в круглых скобках печатается список аргументов.</p>
    <subtitle>op(X,Y,Z)</subtitle>
    <p>Этот предикат объявляет оператор, имеющий приоритет X, позицию и ассоциативность <strong>Y</strong> и имя <strong>Z</strong>. Спецификация позиции и ассоциативности выбирается из числа следующих атомов:</p>
    <p><strong>fx fy xf yf xfx xfy yfx yfy</strong></p>
    <p>Если объявление оператора корректно, то <strong>op</strong> считается согласованным. Более подробно этот предикат описан в разд. 5.5.</p>
   </section>
   <section>
    <title>
     <p>6.10. Обработка файлов</p>
    </title>
    <p>Предикаты для изменения текущего входного и текущего выходного потоков данных были введены в гл. 5. Здесь мы резюмируем наши знания о каждом из этих предикатов.</p>
    <subtitle>see(X)</subtitle>
    <p>Этот предикат открывает файл <strong>X</strong>, если он еще не открыт, и определяет, что текущим входным потоком данных становится файл <strong>X</strong>. Если <strong>X</strong> неконкретизирована или <strong>X</strong> конкретизирована именем несуществующего файла, то фиксируется ошибка.</p>
    <subtitle>seeing(X)</subtitle>
    <p>Это целевое утверждение согласуется с базой данных, если имя текущего входного потока данных (файла) сопоставимо с <strong>X</strong>, и не согласуется в противном случае.</p>
    <subtitle>seen</subtitle>
    <p>Этот предикат закрывает текущий входной поток данных (файл) и определяет, что текущим входным потоком данных становится клавиатура терминала <strong>(user)</strong>.</p>
    <subtitle>tell(X)</subtitle>
    <p>Этот предикат открывает файл <strong>X</strong>, если он еще не открыт, и определяет, что текущим выходным потоком данных, в который производится запись, является указанный файл. Если <strong>X</strong> неконкретизирована, то возникает ошибка. Если <strong>tell</strong> используется для. переключения выходного потока на еще неоткрытый файл и файл с именем, определяемым <strong>X</strong> не существует, то файл с таким именем создается. Иначе, если файл, определяемый <strong>X</strong>, уже существует, то предшествующее содержимое файла уничтожается.</p>
    <subtitle>telling<emphasis>(X)</emphasis></subtitle>
    <p>Это целевое утверждение согласуется с базой данных, если X сопоставимо с именем текущего выходного потока данных, иначе оно не согласуется.</p>
    <subtitle>told</subtitle>
    <p>Этот предикат закрывает текущий выходной поток данных (файл) и записывает маркер конца файла в соответствующий файл. Текущим выходным потоком данных становится дисплей терминала (<strong>user</strong>).</p>
   </section>
   <section>
    <title>
     <p>6.11. Вычисление арифметических выражений</p>
    </title>
    <p>Арифметические возможности языка Пролог первоначально обсуждались в разд. 2.5. Здесь мы подытожим наши знания об использовании предиката <strong>'is'</strong> и о том, какие имеются функторы для формирований арифметических выражений.</p>
    <subtitle>X is Y</subtitle>
    <p><strong>Y</strong> должен быть конкретизирован структурой, которую можно интерпретировать как арифметическое выражение (см. разд. 2.4). Сначала вычисляется выражение, которым конкретизирован <strong>Y</strong>, и получается целое число, называемое <emphasis>результатом. </emphasis>Результат сопоставляется с <strong>X</strong>, и <strong>is</strong> считается согласованным или несогласованным в зависимости от исхода сопоставления. Ниже описываются функторы, которые могут быть использованы для построения структуры, расположенной справа от предиката <strong>is</strong>.</p>
    <subtitle>X + Y</subtitle>
    <p>Оператор сложения. При вычислении, инициированном предикатом <strong>is</strong>, результатом является арифметическая сумма его аргументов. Аргументы должны быть конкретизированы структурами, которые можно вычислить и получить в качестве результатов целые числа.</p>
    <subtitle>X – Y</subtitle>
    <p>Оператор вычитания. При вычислении, инициированном предикатом <strong>is</strong>, результатом является арифметическая разность его аргументов. Аргументы должны быть конкретизированы структурами, которые можно вычислить и получить в качестве результатов целые числа.</p>
    <subtitle>X * Y</subtitle>
    <p>Оператор умножения. При вычислении, инициированном предикатом <strong>is</strong>, его результатом является арифметическое произведение его аргументов. Аргументы должны быть конкретизированы структурами, которые можно вычислить и получить в качестве результатов целые числа.</p>
    <subtitle>X / Y</subtitle>
    <p>Оператор целочисленного деления. При вычислении, инициированном предикатом <strong>is</strong>, его результатом является целая часть частного от деления его аргументов. Аргументы должны быть конкретизированы структурами, которые можно вычислить и получить в качестве результатов целые числа.</p>
    <subtitle>X mod Y</subtitle>
    <p>Остаток от деления целых чисел (сравнение по модулю). При вычислении, инициированном предикатом <strong>is</strong>, его результатом является целочисленный остаток, получаемый при делении <strong>X</strong> на <strong>Y</strong>. Аргументы должны быть конкретизированы структурами, которые можно вычислить и получить в качестве результатов целые числа.</p>
    <p>Конкретные реализации Пролога могут включать и некоторые другие арифметические операции, такие, как возведение в степень. Примеры, приведенные в этой книге, используют лишь операции, перечисленные здесь.</p>
   </section>
   <section>
    <title>
     <p>6.12. Сравнение чисел</p>
    </title>
    <p>В Прологе имеются шесть предикатов для сравнения целых чисел. Эти предикаты первоначально были представлены в разд. 2.5, когда мы обсуждали арифметические возможности языка. Каждый такой предикат записывается как инфиксный оператор, имеющий два аргумента.</p>
    <subtitle>X = Y</subtitle>
    <p>Предикат проверки на <emphasis>равенство, </emphasis>описанный в разд. 6.8, считается согласованным и в случае, когда его аргументами являются равные целые числа.</p>
    <subtitle>X \= Y</subtitle>
    <p>Предикат проверки на <emphasis>несовпадение </emphasis>из разд. 6.8 также применим для целых чисел. Он выполняется, когда его аргументами являются различные числа.</p>
    <subtitle>X ‹ Y</subtitle>
    <p>Предикат <emphasis>меньше </emphasis>выполняется, если целое число, соответствующее левому аргументу, меньше, чем число, соответствующее правому аргументу. Оба аргумента должны быть конкретизированы.</p>
    <subtitle>X › Y</subtitle>
    <p>Предикат <emphasis>больше </emphasis>выполняется, когда целое число, соответствующее левому аргументу, больше, чем целое число, соответствующее правому аргументу. Оба аргумента должны быть конкретизированы, иначе возникает ошибка.</p>
    <subtitle>X ›= Y</subtitle>
    <p>Предикат <emphasis>больше или равно </emphasis>выполняется, когда целое число, соответствующее левому аргументу, больше или равно целому числу, соответствующему правому аргументу. Оба аргумента должны быть конкретизированы.</p>
    <subtitle>X =‹ Y</subtitle>
    <p>Предикат <emphasis>меньше или равно </emphasis>выполняется, когда левый аргумент меньше или равен правому аргументу. Оба аргумента должны быть конкретизированы. Заметим, что этот предикат записан как '=‹' а не '‹=' так что символ '‹=' является свободным и может быть использован в качестве оператора, который выглядит как стрелка.</p>
   </section>
   <section>
    <title>
     <p><strong>6.13. Наблюдение за выполнением программы на Прологе</strong></p>
    </title>
    <p>В этом разделе описаны встроенные предикаты, которые позволяют наблюдать за выполнением вашей программы. Здесь мы лишь опишем эти встроенные предикаты, а более подробное обсуждение отладки и трассировки программ содержится в гл. 8.</p>
    <subtitle>trace</subtitle>
    <p>Эффект выполнения предиката <strong>trace </strong>заключается в установлении режима полной трассировки. Это значит, что после выполнения <strong>trace </strong>вы получите возможность наблюдать за каждым из четырех основных типов событий<a l:href="#n_9" type="note">[9]</a><emphasis>, </emphasis>которые происходят с каждым порождаемым вашей программой целевым утверждением.</p>
    <subtitle>notrace</subtitle>
    <p>Эффект выполнения предиката <strong>notrace </strong>заключается в отмене режима полной трассировки. Однако сохраняется трассировка, вызываемая наличием контрольных точек (предикат <strong>spy</strong>).</p>
    <subtitle>spy Р</subtitle>
    <p>Предикат <strong>spy</strong> используется, когда необходимо обратить особое внимание на выполнение целевых утверждений, содержащих конкретные предикаты. Это можно сделать, установив на них <emphasis>контрольные точки. </emphasis>Предикат <strong>spy</strong> определен как префиксный оператор, и поэтому нет необходимости заключать в скобки его аргумент. Аргументом предиката может быть:</p>
    <p>• Атом. В этом случае контрольная точка устанавливается на все предикаты с именем, соответствующим атому, независимо от того, сколько аргументов они имеют. Так, если бы мы имели утверждения для <strong>сорт, </strong>имеющие как два, так и три аргумента, то целевое утверждение <strong>spy сорт </strong>вызвало бы установку контрольных точек на оба множества утверждений.</p>
    <p>• Структура вида <strong>Имя/Размерность, </strong>где <strong>Имя </strong>- это атом, а <strong>Размерность </strong>- целое число. Эта запись определяет предикат с функтором <strong>Имя, </strong>число аргументов которого равно <strong>Размерность</strong>. Так <strong>spy сорт/2</strong> вызвало бы установку контрольных точек на целевые утверждения предиката <strong>сорт </strong>с двумя аргументами.</p>
    <p>• Список. В этом случае список должен заканчиваться пустым списком '[]', а каждый элемент списка сам должен быть допустимым аргументом для предиката <strong>spy</strong>. Пролог установит контрольные точки во всех местах, указанных в списке. Так <strong>spy[copт/2, присоединить/3]</strong> вызвал бы установку контрольных точек на предикат <strong>сорт</strong> с двумя аргументами и на предикат <strong>присоединить</strong> с тремя аргументами.</p>
    <subtitle>debugging</subtitle>
    <p>Встроенный предикат <strong>debugging</strong> позволяет увидеть, какие контрольные точки установлены на текущий момент. В качестве подобного эффекта выполнения целевого утверждения <strong>debugging</strong> печатается список всех контрольных точек.</p>
    <subtitle>nodebug</subtitle>
    <p>Целевое утверждение <strong>nodebug</strong> вызывает устранение всех контрольных точек, установленных на текущий момент.</p>
    <subtitle>nospy</subtitle>
    <p>Подобно <strong>spy</strong>, <strong>nospy</strong> является префиксным оператором. Предикат <strong>nospy</strong> является более селективным, чем <strong>nodebug</strong>, так как вы можете точно указать, какие контрольные точки должны быть удалены. Это достигается путем указания аргумента, задаваемого в точности в такой же форме, как и для предиката <strong>spy. </strong>Так, целевое утверждение <strong>nospy[обр/2, присоединить/3]</strong> приведет к тому, что будут удалены все контрольные точки с предиката <strong>обр </strong>с двумя аргументами и с <strong>присоединить</strong> с тремя аргументами.</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 7. ЕЩЕ НЕСКОЛЬКО ПРИМЕРОВ ПРОГРАММ</p>
   </title>
   <section>
    <p>В каждом разделе этой главы рассматривается некоторое конкретное применение Пролога. Мы советуем вам прочитать все разделы. Не огорчайтесь, если вы не поймете назначение какой-либо программы потому, что незнакомы с данной конкретной областью применения. Например, оценить значение символьного дифференцирования смогут лишь читатели, уже знакомые с дифференциальным исчислением. Тем не менее прочтите этот раздел, потому что программа нахождения символьных производных показывает, как установление соответствия между образцами используется при преобразовании структур одного вида (арифметическое выражение) в структуры другого вида. Самое главное – добиться понимания техники программирования на Прологе, находящейся в распоряжении программиста, независимо от конкретной прикладной задачи.</p>
    <p>Мы надеемся, что набор задач достаточен, чтобы удовлетворить вкусам большинства читателей. Естественно, что все выбранные задачи относятся к таким областям, которые хорошо укладываются в те способы представления явлений реального мира, которые предлагает Пролог. Например, здесь отсутствует задача расчета потока тепла через трубу прямоугольного сечения. Правда, такие задачи тоже можно решать с помощью Пролога, однако выразительность и силу Пролога невыгодно демонстрировать на задачах, которые сводятся лишь к многократным повторениям вычислений над массивом чисел. Хотелось бы также рассмотреть и большие Пролог-программы, вроде тех, что используются в исследованиях по искусственному интеллекту для распознавания фраз естественного языка. К сожалению, цель такой книги как эта, не позволяет рассматривать программы, размеры которых превышают страницу текста и которые могут быть предложены лишь специально подготовленному читателю.</p>
   </section>
   <section>
    <title>
     <p><strong>7.1. Словарь в виде упорядоченного дерева</strong></p>
    </title>
    <p>Предположим, что мы хотим установить отношения между элементами информации с тем, чтобы использовать их, когда потребуется. Например, толковый словарь ставит в соответствие слову его определение, а словарь иностранного языка ставит в соответствие слову на одном языке слово на другом языке. Мы уже познакомились с одним способом составления словаря: с помощью задания фактов. Если нам нужно составить таблицу выигрышей на скачках, проводившихся на Британских островах в течение 1938 г., то мы можем просто определить факты вида <strong>выигрыши(Х, Y)</strong>, где <strong>X </strong>- кличка лошади, a <strong>Y</strong> – количество гиней (денежных единиц), выигранных этой лошадью. Следующая база данных может рассматриваться как часть этой таблицы:</p>
    <empty-line/>
    <p>Выигрыши(abaris,582). </p>
    <p>Выигрыши(careful,17).</p>
    <p>Выигрыши(jingling_silvee,300). </p>
    <p>Bыигрыши(majola,356).</p>
    <empty-line/>
    <p>Если мы хотим узнать, какую сумму выиграла лошадь по кличке <strong>maloja, </strong>нам нужно просто правильно построить вопрос и Пролог даст нам ответ:</p>
    <empty-line/>
    <p>?- Bыигрыши(maloja, X). </p>
    <p>X=356</p>
    <empty-line/>
    <p>Напомним, что Пролог просматривает базу данных сверху вниз. Это значит, что если база данных нашего словаря упорядочена в алфавитном порядке, как в приведенном выше примере, то на поиск суммы выигрыша для <strong>ablaze</strong> Пролог затратит меньше времени, чем на поиск суммы выигрыша для <strong>zoltan. </strong>Однако хотя Пролог способен просмотреть свою базу данных гораздо быстрее, чем вы сможете просмотреть напечатанную таблицу, неразумно просматривать таблицу с начала до конца, если известно, что данные искомой лошади расположены в самом конце. Точно так же, хотя в Прологе имеются специальные средства быстрого просмотра базы данных, он не всегда проходит так быстро, как хотелось бы. В зависимости от размеров таблицы и от того, сколько информации хранится о каждой лошади, Прологу может потребоваться на просмотр таблицы неприемлемо большое время.</p>
    <p>По этим и другим причинам специалисты по информатике потратили немало сил на поиски хороших способов организации хранения таких данных, как таблицы и словари. Сам Пролог использует некоторые из этих методов внутри себя при организации хранения своих собственных фактов и правил, но иногда их полезно использовать и в наших программах. Мы рассмотрим один такой метод организации словаря, который называется методом <emphasis>упорядоченного дерева. </emphasis>Метод упорядоченного дерева является одновременно и эффективным способом использования словаря и средством демонстрации того, насколько полезны списки структур.</p>
    <image l:href="#pic_25.jpg"/>
    <empty-line/>
    <p>Рис. 7.1.</p>
    <p>Упорядоченное дерево состоит из некоторого числа структур, называемых <emphasis>узлами, </emphasis>причем каждому входу словаря соответствует один узел. Каждый узел содержит четыре компоненты. Сюда входят два связанных с узлом элемента данных, как в предикате <strong>выигрыши </strong>в вышеприведенном примере. Один из этих элементов называется <emphasis>ключом, </emphasis>его имя определяет место в словаре (кличка лошади в нашем примере). Другой элемент используется для хранения какой-либо другой информации о данном объекте (сумма выигрыша в нашем примере). Кроме того, каждый узел содержит ссылку (наподобие ссылки на хвост списка) на узел со значением ключа, которое лексикографически (по алфавиту) <emphasis>меньше, </emphasis>чем имя, являющееся ключом данного узла, а также еще одну ссылку на узел со значением ключа лексикографически <emphasis>большим, </emphasis>чем имя, являющееся ключом данного узла. Будем использовать структуру, которую обозначим как <strong>в(Л,В,М, Б) (в </strong>- сокращение от «выигрыши»), где <strong>Л</strong> – кличка лошади (атом), используемая в качестве ключа, <strong>В</strong> – сумма выигрыша в гинеях (целое), <strong>М</strong> – структура, соответствующая лошади, кличка которой меньше, чем та, что хранится в <strong>Л</strong>, а <strong>Б </strong>– структура, соответствующая лошади, кличка которой больше, чем значение в <strong>Л</strong>. Когда для <strong>М </strong>и <strong>Б</strong> нет соответствующих структур, мы не будем их конкретизировать. Для небольшого множества лошадей указанная структура, будучи записанной в виде дерева, могла бы иметь вид, как представлено на рис. 7.1.</p>
    <p>Если записать ее на Прологе в ступенчатом виде, учитывая ширину страницы, то она могла бы выглядеть так:</p>
    <p>в(massinga,858,</p>
    <p>  в(braermar,385,</p>
    <p>    в(adela,588,_,_),</p>
    <p>    _),</p>
    <p>   в(panorama,158,</p>
    <p>     в(nettleweed,579,_,_), </p>
    <p>     _).</p>
    <p>).</p>
    <p>Теперь, располагая такой структурой, мы хотим «просмотреть» ее по кличкам лошадей, чтобы узнать их выигрыши в течение 1938 г. Как и раньше, структура должна иметь формат <strong>в(Л,В,М, Б). </strong>Условие окончания поиска состоит в том, что кличка искомой лошади должна совпасть с <strong>Л</strong>. В этом случае поиск удачен и не требуется пробовать другие варианты. В противном случае мы должны использовать предикат <strong>меньше, </strong>определенный в гл. 3, чтобы определить, какую из «ветвей» дерева, <strong>М</strong> или <strong>Б</strong>, нужно рекурсивно просмотреть. Мы используем эти принципы при определении предиката <strong>искать, </strong>причем <strong>искать(Л,Т, Г) </strong>означает, что лошадь Л, если она найдена в таблице Т (которая организована в виде структуры формата в), выиграла <strong>Г</strong> гиней:</p>
    <empty-line/>
    <p>искать (Л, в(Л,Г,_,),Г):- !.</p>
    <p>искать Л, в(Л1,_,До,_),Г):-меньше(Л,Л1),искать(Л,До,Г).</p>
    <p>искать(Л, в(Л1,_,_,После),Г):- not (меньше(Л,Л1)), искать(Л,После,Г).</p>
    <empty-line/>
    <p>Если при поиске по упорядоченному дереву использовать этот предикат, то в общем случае проверок будет меньше, чем если бы их данные были организованы в виде простого списка и просматривались бы с начала до конца.</p>
    <p>Предикат <strong>искать </strong>обладает одним интересным и удивительным свойством: когда вводим вопрос о лошади, клички которой нет в структуре, то любая информация, содержащаяся в вопросе, остается зафиксированной в этой структуре после окончания поиска. Иными словами, вопрос</p>
    <empty-line/>
    <p>?- искать(ruby_vintage,S,X).</p>
    <empty-line/>
    <p>имеет следующую интерпретацию: <emphasis>построить структуру </emphasis><strong>в, </strong><emphasis>в которой кличке </emphasis><strong>ruby_vintage</strong> <emphasis>поставлен в соответствие выигрыш </emphasis><strong>X</strong>, <emphasis>и присвоить ее в качестве значения переменной </emphasis><strong>S</strong>. Таким образом, <strong>искать </strong>осуществляет вставку новых компонент в частично заданную структуру. Поэтому многократно обратившись к <strong>искать, </strong>можно построить словарь. Например, вопрос</p>
    <empty-line/>
    <p>?- искать(abaris,X,582), искать(maloja,X,356).</p>
    <empty-line/>
    <p>привел бы к тому, что значение переменной <strong>X</strong> стало упорядоченным деревом из двух вхождений.</p>
    <p>Понять то, каким образом <strong>искать </strong>одновременно выполняет и создание и выборку компонент, можно на основе тех знаний о Прологе, которыми вы уже располагаете; мы настоятельно рекомендуем разобраться в этом самостоятельно. Подсказка: если <strong>искать(Л,Т, Г)</strong> используется в конъюнкции целей, то «изменения» в структуре <strong>Т</strong> сохраняются только в <emphasis>области определения </emphasis><strong>Т.</strong></p>
    <p><strong>Упражнение 7.1. </strong>Поэкспериментируйте с предикатом <strong>искать, </strong>чтобы установить, какие различия будут в словаре, если элементы в него вставлять каждый раз в разном порядке. Например, как будет выглядеть дерево словаря, если вставлять его элементы в таком порядке: <strong>massinga, braemar nettleweed, panorama? </strong>А если в таком порядке: <strong>adela, braemar, nettleweed, massinga?</strong></p>
   </section>
   <section>
    <title>
     <p><strong>7.2. Поиск в лабиринте</strong></p>
    </title>
    <p>Стоит темная грозовая ночь. Когда вы ехали по пустынной сельской дороге, ваша машина сломалась и вы оказались перед входом сказочного дворца. Вы подошли к двери, обнаружили, что она открыта, и стали искать телефон. Как нужно осматривать дворец, чтобы не заблудиться и быть уверенным, что вы осмотрели каждую комнату? И каков кратчайший путь к телефону? Именно для таких крайних обстоятельств и разработаны методы поиска в лабиринте.</p>
    <p>Во многих программах для ЭВМ, подобных программам поиска в лабиринте, полезно вести информационные списки и просматривать нужный список, когда впоследствии понадобится некоторая информация. Например, если мы решили найти во дворце телефон, нам может понадобиться список уже осмотренных комнат. Чтобы не плутать, снова и снова заходя в те же самые комнаты, нам нужно просто записывать на листке бумаги номера комнат, где мы уже побывали. Перед тем, как войти в комнату, мы проверяем, нет ли ее номера на нашем листке. Если он есть, мы пропускаем эту комнату, потому что уже должны были побывать там раньше. Если номера этой комнаты нет на листке, то мы записываем ее номер и входим в комнату, и так до тех пор, пока не найдем телефон.</p>
    <p>Этот метод нуждается в некоторых уточнениях, но мы сделаем их позднее, при обсуждении проблем поиска на графе. А сначала давайте запишем по порядку наши шаги, чтобы знать, какие задачи предстоит решать:</p>
    <p>1. Подойти к двери какой-либо комнаты. Если номер комнаты есть в нашем списке, то перейти к шагу 1.</p>
    <p>2. Если в поле зрения нет ни одной комнаты, то «вернуться назад» через ту комнату, через которую мы прошли сюда, и посмотреть, нет ли возле нее каких-либо других комнат.</p>
    <p>3. Иначе дописать номер комнаты к нашему списку.</p>
    <p>4. Поискать телефон в этой комнате.</p>
    <p>5. Если телефона нет, то перейти к шагу 1. Иначе мы останавливаемся, и наш список содержит путь, который мы прошли, чтобы попасть в нужную комнату.</p>
    <p>Будем считать, что номера комнат являются константами (безразлично целыми числами или атомами). Сначала мы можем решить, как просматривать номера комнат, записанные на листке бумаги. Для этого можно использовать предикат <strong>принадлежит</strong>, определенный в разд. 3.3, полагая, что содержимое листка бумаги представлено в виде списка. Теперь мы можем продвинуться в решении задачи поиска в лабиринте. Рассмотрим небольшой пример, где задан план дома, комнаты которого помечены буквами (см. рис. 7.2). Заметим, что просветы в стенах обозначают двери и что комната <strong>а</strong> – это просто представление пространства вне дома. Имеются двери, ведущие из <strong>а</strong> в <strong>b</strong>, из <strong>с</strong> в <strong>d</strong>, из <strong>f</strong> в <strong>е</strong>, и так далее. Сведения о том, где имеются двери, могут быть представлены в виде фактов Пролога:</p>
    <empty-line/>
    <p>д(а,b). </p>
    <p>д(b,е). </p>
    <p>д(b,с).</p>
    <p>д(d,c). </p>
    <p>д(c,d). </p>
    <p>д(e,f).</p>
    <p>д(g,e).</p>
    <image l:href="#pic_26.jpg"/>
    <p>Рис. 7.2.</p>
    <p>Заметим, что информация о наличии дверей не избыточна. Например, мы сказали, что имеется дверь, ведущая из комнаты <strong>g </strong>в комнату <strong>е</strong>, но не сказали, что имеется дверь, ведущая из комнаты <strong>е</strong> в комнату <strong>g</strong>, т. е. мы не зафиксировали утверждение <strong>д(e,g)</strong>. Чтобы обойти эту проблему представления двухсторонних дверей, мы могли бы повторно записать д-факт для каждой двери с перестановкой аргументов. Или мы могли бы устроить программу таким образом, чтобы она понимала, что каждая дверь фактически может рассматриваться как двухсторонняя. Этот вариант мы и выбрали в нижеследующей программе.</p>
    <p>Чтобы перейти из одной комнаты в другую, мы должны распознать один из следующих случаев:</p>
    <p>• мы находимся в той комнате, которая нам нужна, или</p>
    <p>• мы должны войти в дверь и распознать эти случаи снова (рекурсивно).</p>
    <p>Рассмотрим целевое утверждение <strong>переход(X,Y,T)</strong>, которое доказуемо (согласуется с базой данных), если можно перейти из комнаты <strong>X</strong> в комнату <strong>Y</strong>. Третий аргумент <strong>Т</strong> – это наш листок бумаги, который мы носим с собой и на котором записан перечень номеров комнат, в которых мы побывали до сего момента.</p>
    <p>Граничное условие перехода из комнаты <strong>X</strong> в комнату <strong>Y</strong> состоит в том, что, возможно, мы уже находимся в комнате <strong>Y</strong> (т. е., возможно, <strong>X</strong> есть <strong>Y</strong>). Это условие представлено в виде утверждения:</p>
    <empty-line/>
    <p>переход(Х,Х,Т).</p>
    <empty-line/>
    <p>В противном случае мы выбираем некоторую смежную комнату, назовем ее <strong>Z</strong>, и смотрим, были ли мы в ней раньше. Если нет, то «переходим» из <strong>Z</strong> в <strong>Y</strong>, дописывая <strong>Z</strong> в наш список. Все это выражается в виде следующего утверждения:</p>
    <empty-line/>
    <p>переход(Х, Y,T,):- Д(Х,Z),not(принадлежит(Z,Т)), переход(Z,Y,[Z|T]).</p>
    <empty-line/>
    <p>Словами это может быть выражено так: для того чтобы «перейти» из <strong>X</strong> в <strong>Y</strong>, не проходя через комнаты из списка <strong>Т</strong>, надо найти дверь из <strong>X</strong> куда-либо (т. е. в <strong>Z</strong>), убедиться, что <strong>Z</strong> еще не занесена в список <strong>Т</strong>, и «перейти» из <strong>Z</strong> в <strong>Y</strong>, используя список <strong>Т </strong>с дописанной в него <strong>Z</strong>.</p>
    <p>При использовании этого правила существуют три возможности возникновения ошибки: во-первых, если в <strong>X</strong> вообще нет двери. Во-вторых, если дверь, которую мы выбрали, уже есть в списке. В-третьих, если «переход» в комнату <strong>Z</strong> приведет в тупик на следующих уровнях. Если первое целевое утверждение <strong>д(X, Z) </strong>не согласуется с базой данных, то и данное целевое утверждение <strong>переход </strong>также недоказуемо. На «самом верхнем» уровне (не рекурсивный вызов) это означает, что из <strong>X</strong> в <strong>Y</strong> нет пути; на более глубоких уровнях это означает, что мы должны сделать «шаг назад» и поискать другую дверь.</p>
    <p>Наша программа рассматривает каждую дверь как одностороннюю. Если мы считаем, что наличие двери из комнаты а в комнату <strong>b</strong> – это то же самое, что наличие двери из комнаты <strong>b</strong> в комнату а, то, как отмечалось выше, мы должны указать это явно. Кроме повторного задания <strong>д</strong>-фактов с перестановкой аргументов, имеются два способа задать эту информацию в самой программе. Самый очевидный способ – это добавить еще одно правило, получая в итоге:</p>
    <empty-line/>
    <p>переход(Х,X,T).</p>
    <p>переход(X,Y,T):- д(X,Z), not(принадлежит(Z,Т)),переход(Z,Y[Z|T]). переход(Х,Y,T):- д(Z,Х), not(принадлежит(Z,Т)),пeреход(Z,Y,[Z|T]).</p>
    <empty-line/>
    <p>Или, используя предикат ';' (обозначающий дизъюнкцию), можно записать:</p>
    <empty-line/>
    <p>переход(Х,Х,Т).</p>
    <p>переход(Х,Y,T):- (д(Х,Z); д(Z,Х)), not(принадлежит (Z,T)),пepexод(Z,Y,[Z|T]).</p>
    <empty-line/>
    <p>Теперь о том, как найти телефон. Рассмотрим целевое утверждение <strong>есть_телефон(X)</strong>, которое согласуется с базой данных, если в комнате <strong>X</strong> есть телефон. Если мы хотим сказать, что в комнате <strong>g</strong> есть телефон, то мы просто записываем в нашу базу данных факт <strong>есть_телефон(g)</strong>. Предположим, мы начали поиск с комнаты <strong>а</strong>. Один из способов узнать дорогу к телефону – это задать вопрос:</p>
    <empty-line/>
    <p>?- переход(а,Х,[]), есть_телефон(X).</p>
    <empty-line/>
    <p>Это – вопрос типа «создать и проверить», который находит достижимые комнаты и затем проверяет наличие в них телефона. Другой способ – это найти сопоставление сначала для предиката <strong>есть_телефон(Х)</strong>, а затем попробовать перейти из комнаты <strong>а</strong> в <strong>X</strong>:</p>
    <empty-line/>
    <p>?- есть_телефон(Х), переход(а,Х,[]).</p>
    <empty-line/>
    <p>Последний метод более эффективен, однако он подразумевает что мы «знаем», где телефон, еще до того, как начали поиск.</p>
    <p>Начальная установка третьего аргумента пустым списком означает, что мы начинаем поиск, имея чистый лист бумаги. Изменяя эту начальную установку, можно получить разные варианты поиска. Вопрос <emphasis>«найти телефону не заходя в комнаты </emphasis><strong>d</strong> <emphasis>и </emphasis><strong>f</strong>» можно выразить на Прологе так:</p>
    <empty-line/>
    <p>?- есть_телефон(X), переход (a,X,[d,f]).</p>
    <empty-line/>
    <p>В разд. 7.9 мы рассмотрим некоторые общие процедуры поиска по графу, в том числе программу, находящую кратчайший путь.</p>
    <p><strong>Упражнение 7.2. </strong>Допишите вышеприведенную программу так, чтобы она печатала такие сообщения, как «входим в комнату <strong>X</strong>» и «телефон найден в комнате <strong>Y</strong>», подставляя в них соответствующие номера комнат.</p>
    <p><strong>Упражнение 7.3. </strong>Может ли эта программа находить альтернативные пути? Если да, то где нужно <strong>«отсечь»</strong>, чтобы избежать нахождения более чем одного пути?</p>
    <p><strong>Упражнение</strong> 7.4. Чем определяется порядок, в котором просматриваются комнаты?</p>
   </section>
   <section>
    <title>
     <p>7.3. Ханойские башни</p>
    </title>
    <p>Ханойские башни - это игра, в которой используются три штыря и набор дисков. Все диски различаются диаметром и нанизываются на штыри через отверстие в центре каждого диска. Первоначально все диски находятся на левом штыре. Цель игры состоит в том, чтобы переместить все диски на центральный штырь. Правый штырь можно использовать как «запасной» для временного размещения дисков. При каждом перемещении диска с одного штыря на другой должны соблюдаться два ограничения: перемещать можно только самый верхний диск на штыре, и, кроме того, нельзя ставить диск на другой диск меньшего размера.</p>
    <p>Многим из тех людей, которые играют в эту игру, практически никогда не удается обнаружить весьма простую стратегию, позволяющую успешно играть в Ханойские башни с тремя штырями и <strong>N</strong> дисками. Чтобы не утомлять вас поисками решения этой задачи, мы откроем его:</p>
    <p>• Граничное условие выполняется в случае, когда на исходном (левом) штыре нет дисков. </p>
    <p>• Переместить N-1 дисков с исходного штыря на запасной (правый) штырь, используя итоговый штырь как запасной; отметим, что это перемещение осуществляется рекурсивно. </p>
    <p>• Переместить один диск с исходного штыря на итоговый штырь. В этом месте наша программа будет выдавать сообщение об этом перемещении. </p>
    <p>• Наконец, переместить N-1 дисков с запасного на итоговый, используя исходный штырь в качестве запасного.</p>
    <p>Пролог-программа, реализующая данную стратегию, определяется следующим образом. Определяется предикат <strong>ханой </strong>с одним аргументом, такой, что <strong>xaной(N) </strong>означает выдачу сообщений о последовательности перемещений, когда на исходном штыре находится <strong>N</strong> дисков. Из двух утверждений предиката <strong>переместить </strong>один задает граничное условие, которое сформулировано выше, а второй – реализует рекурсивные случаи. Предикат <strong>переместить </strong>имеет четыре аргумента. Первый аргумент – это число дисков, которые нужно переместить. Три другие представляют исходный, итоговый и запасной штыри для перемещения дисков. Предикат <strong>сообщить </strong>использует предикат <strong>write </strong>для печати названий штырей, участвующих в перемещении диска.</p>
    <empty-line/>
    <p>xaной(N):- переместить(N, левый,средний,правый).</p>
    <p>переместить(О,_,_,_):-!. </p>
    <p>переместить(N, А,В,С):-М is N-1,переместить(М,А,С,В),сообщить(А,В), переместить(М,С,В,А). </p>
    <p>сообщить(Х,Y):-write([переместили,диск,со,штыря,Х,на, штырь,Y]),nl.</p>
   </section>
   <section>
    <title>
     <p><strong>7.4. Справочник комплектующих деталей</strong></p>
    </title>
    <p>В главе 3 мы рассматривали программу, выдающую на печать список деталей, необходимых при сборке некоторого узла на основе справочника комплектующих деталей. В данном разделе мы усовершенствуем эту программу, будем учитывать количество деталей путем суммирования числа требуемых деталей по мере перехода от узлов к их составляющим. Кроме того, усовершенствованная программа правильно обрабатывает повторения; процедура <strong>собрать </strong>устраняет повторения при суммировании для каждой из требуемых деталей перед тем, как ответ выдается на печать.</p>
    <p>Организация базы данных справочника сходна с тем, что описано в гл. 3. Сборочный узел представлен в виде списка структур вида <strong>чис(X, Y)</strong>, где <strong>X</strong> – это имя некоторой детали (простой детали или узла), a <strong>Y</strong> – необходимое количество таких деталей. Ниже перечислены все предикаты измененной программы с указанием их назначения:</p>
    <p><strong>Деталиузла(А): </strong>выдает на печать список всех простых деталей, требующихся для сборки узла <strong>А</strong>, и количество каждой детали.</p>
    <p><strong>Деталиузлов(N,X,P): P </strong>- это список структур <strong>чис(Дет, Кол), </strong>где <strong>Дет </strong>- это название детали, а <strong>Кол </strong>- это количество таких деталей, требующихся для сборки каждого из экземпляров узлов <strong>X</strong>. <strong>N </strong>- целое, а <strong>X</strong> – атом, представляющий название некоторой детали.</p>
    <p><strong>Деталировка(N,S,Р): Р </strong>- это, как и выше, список структур <strong>чис, </strong>требующихся для сборки всех узлов, представленных элементами списка <strong>S</strong>; <strong>N</strong> задает число экземпляров списка <strong>S</strong>, <strong>N</strong> – целое; <strong>S</strong> – список структур <strong>чис.</strong></p>
    <p><strong>Собрать(Р, А)</strong>: <strong>Р</strong> и <strong>А</strong> – списки структур <strong>чис. А</strong> – это список, составленный из тех же элементов, что и <strong>Р</strong>, но без повторений одной и той же детали. Причем количество каждой детали, указанное в списке <strong>А</strong>, совпадает с суммой всех повторений этой детали в списке <strong>Р</strong>. Предикат <strong>собрать </strong>мы используем для того, чтобы собрать несколько описей наборов одинаковых деталей в одну опись. Например, <emphasis>3 винта, 4 шайбы и 4 винта </emphasis>собираются вместе, давая 7 <emphasis>винтов и 4 шайбы.</emphasis></p>
    <p><strong>Дособрать(Х,М, L,O,N) </strong>: <strong>L </strong>и <strong>О </strong>- это списки структур, <strong>чис, </strong>О – это список всех элементов списка L, в состав которых не входит деталь X; X – это атом, задающий название некоторой детали; <strong>N</strong> – это общее количество <strong>X</strong> в списке <strong>L</strong>, сложенное с <strong>М</strong>; <strong>М</strong> – это целое число, которое используется для суммирования количеств <strong>X</strong> в <strong>L</strong> и передается как аргумент в каждом вызове <strong>дособрать. </strong>При выходе из рекурсии, который обеспечивается выполнением граничного условия, <strong>М</strong> возвращается как <strong>N</strong>.</p>
    <p><strong>Вывдеталейузла(Р)</strong>: <strong>Р</strong> – это список структур <strong>чис, </strong>который выдается на печать по одной структуре на строке вывода. Цель <strong>put(9) </strong>выводит литеру с кодом ASCII=9, что соответствует горизонтальной табуляции. С предикатом <strong>присоединить </strong>мы уже неоднократно встречались ранее.</p>
    <p>Полностью Пролог-программа выглядит так: </p>
    <empty-line/>
    <p>деталиузла(Т):-деталиузлов(1,Т,Р), co6paть(P,Q), вывдеталейузла(Q). </p>
    <p>деталиузлов(N,Х,Р):-узел(Х,S), деталировка(N,S,Р). </p>
    <p>деталиузлов(N,Х, [чис(Х,N)]):- деталь(Х). </p>
    <p>деталировка(_, [], []). </p>
    <p>деталировка(N, [чис(Х, Число) |L],T):-М is N * Число, деталиузлов(М,Х,Хдетали),деталировка (N, L,Остдетали,Т),присоединить(Хдетали,Остдетали,Т). </p>
    <p>собрать([],[]). </p>
    <p>coбpaть([чис(X,N)|R],[чис(X,Nитог)|R2]):-дособрать(Х,N,R,O,Nитог),собрать(О,R2). </p>
    <p>досo6paть(_,N,[],[],N). </p>
    <p>дособрать(Х,N,[чис(Х,Число)|Oст],Прочие,Nитог):-!,М is N+Число, дособрать(Х,М,Ост,Прочие,Nитог).</p>
    <p>дособрать(Х,N,[Друг|Ост],[Друг|Прочие],Nитог):-дособрать(Х, N, Ост, Прочие, Nитог). </p>
    <p>вывдеталейузла([]). </p>
    <p>вывдеталейузла([чис(Х,N)|R):-tab(4),write(N),put(9),write(X),nl, вывдеталейузла(R).</p>
   </section>
   <section>
    <title>
     <p><strong>7.5. Обработка списков</strong></p>
    </title>
    <p>В этом разделе мы рассмотрим некоторые основные предикаты, полезные при работе со списками. Поскольку Пролог позволяет работать с произвольными структурами данных, списки не могут играть в нем той незаменимой роли, какая им отводится в других языках программирования, таких, как Лисп и Поп-2. Однако независимо от того, будут или не будут использоваться списки в ваших программах, всегда важно представлять себе, как работают предикаты, определения которых рассматриваются в данном разделе, поскольку они основаны на принципах, которые применимы при работе с любыми структурами данных.</p>
    <p><emphasis>Нахождение последнего элемента списка: </emphasis>Цель <strong>последний(X, L)</strong> согласуется с базой данных, если элемент <strong>X</strong> является последним элементом списка <strong>L</strong>. Граничное условие выполняется, когда список <strong>L</strong> содержит только один элемент. Это условие проверяется первым правилом. Второе правило задает общий рекурсивный случай:</p>
    <empty-line/>
    <p>последний(Х,[Х]).</p>
    <p>последний(Х,[_,|Y]):- последний(Х,Y).</p>
    <p>?- последний(Х,[talk,of,the,town]). </p>
    <p>X = town</p>
    <empty-line/>
    <p><emphasis>Проверка порядка следования элементов: </emphasis>Цель <strong>следомза(Х, Y, L) </strong>согласуется с базой данных, если элементы <strong>X</strong> и <strong>Y</strong> являются последовательными элементами списка <strong>L</strong>. Особенности работы переменных допускают, чтобы или <strong>X</strong>, или <strong>Y</strong>, или обе переменные были неконкретизированы перед попыткой согласовать цель. В первом утверждении, которое проверяет граничное условие, должно быть также предусмотрено, что после <strong>X</strong> и <strong>Y</strong> в списке могут быть другие элементы. Этим объясняется появление анонимной переменной, в которой сохраняется хвост списка:</p>
    <empty-line/>
    <p>следомза(Х,Y,[Х,Y|_]). </p>
    <p>следомза(Х,Y,[_|Z]):- следомза(Х,Y,Z).</p>
    <empty-line/>
    <p><emphasis>Объединение списков: </emphasis>С приводимым примером мы уже встречались ранее в разд. 3.6. Цель <strong>присоединить(X, Y, Z) </strong>согласуется с базой данных в том случае, если <strong>Z</strong> – это список, построенный путем добавления <strong>Y</strong> в конец <strong>X</strong>. Например,</p>
    <empty-line/>
    <p>?- присоединить([a,b,с],[d,e,f],Q). </p>
    <p>Q=[a,b,c,d,e,f]</p>
    <empty-line/>
    <p>Определение предиката <strong>присоединить </strong>выглядит следующим образом:</p>
    <empty-line/>
    <p>присоединить([],L,L).</p>
    <p>присоединить([Х|L1],L2,[Х|LЗ]):- присоединить(L1,L2,LЗ).</p>
    <empty-line/>
    <p>Граничное условие выполняется тогда, когда первый аргумент является пустым списком. Действительно, пополнение какого-либо списка пустым списком не изменяет его. В дальнейшем мы постепенно приближаемся к граничному условию, поскольку каждое рекурсивное обращение к <strong>присоединить </strong>удаляет один элемент из головы первого аргумента.</p>
    <p>Заметим, что любые два аргумента <strong>присоединить </strong>могут быть конкретизированы, и в этом случае <strong>присоединить </strong>конкретизирует третий аргумент соответствующим результатом. Этим свойством, которое можно было бы назвать «недетерминированным программированием», обладают многие из определяемых в данной главе предикатов. Указанная гибкость <strong>присоединить </strong>позволяет определить с его помощью ряд других предикатов, что мы и сделаем:</p>
    <empty-line/>
    <p>последний(Е1,Список):- присоединить(_,[Е1],Список).</p>
    <p>следомза(Е11,Е12,Список):-</p>
    <p>присоединить(_,[Е11,Е12|_], Список).</p>
    <p>принадлежит(Е1,Список):- присоединить(_,[Е1|_],Список).</p>
    <empty-line/>
    <p><emphasis>Обращение списка: </emphasis>Цель <strong>обр(L,M) </strong>согласуется с базой данных, если результат перестановки в обратном порядке элементов списка <strong>L</strong> есть список <strong>М</strong>. В программе используется стандартный прием, когда обращенный список получается присоединением его головы к обращенному хвосту. Лучший способ обратить хвост – это использовать сам <strong>обр. </strong>Граничное условие выполняется тогда, когда первый аргумент сократился до пустого списка, в этом случае результатом также является пустой список:</p>
    <empty-line/>
    <p>обр([],[]).</p>
    <p>обр([Н|Т],L):- обр(T,Z), присоединить(Z,[Н],L).</p>
    <empty-line/>
    <p>Заметим, что на месте второго аргумента <strong>присоединить </strong>стоит <strong>Н</strong> в квадратных скобках. Причина в том, что <strong>Н</strong> – это голова первого аргумента, а голова списка сама не обязана быть списком. Хвост же списка по определению всегда является списком. Для более эффективной реализации <strong>обр </strong>мы можем встроить действия по объединению списков непосредственно в утверждения для <strong>обр:</strong></p>
    <empty-line/>
    <p>o6p2(L1,L2):- обрдоп(L1,[],L2).</p>
    <p>обрдоп([X|L],L2<sub>f</sub>L3):- обрдоп(L,[Х|L2],LЗ). </p>
    <p>обрдоп([],L,L).</p>
    <empty-line/>
    <p>Второй аргумент <strong>обрдоп </strong>используется для хранения «текущего результата». Каждый раз, когда выявляется новый фрагмент результата <strong>(X)</strong>, передаваемый в остальную часть программы, «текущий результат» представляет из себя старый «текущий результат», дополненный новым фрагментом <strong>X</strong>. В самом конце последний «текущий результат» возвращается в качестве результата исходного целевого утверждения. Аналогичный прием используется в разд. 7.8 при определении предиката <strong>имя_целого.</strong></p>
    <p><emphasis>Исключение одного элемента: </emphasis>Цель <strong>исключ1(Х, Y,Z) </strong>исключает первое вхождение элемента <strong>X</strong> из списка <strong>Y</strong>, формируя новый сокращенный список <strong>Z</strong>. Если в списке <strong>Y</strong> нет элемента <strong>X</strong>, то целевое утверждение недоказуемо. Граничное условие выполняется тогда, когда мы находим искомый элемент <strong>X</strong>, иначе осуществляется рекурсивная обработка хвоста списка <strong>Y</strong>:</p>
    <empty-line/>
    <p>исключ1(А,[А|L],L):-!. </p>
    <p>исключ1(А,[В|L],[В|М]):- исключ1(А,L,М).</p>
    <empty-line/>
    <p>Легко добавить утверждение, которое обеспечит доказательство предиката, когда второй аргумент сократится до пустого списка. Это утверждение, реализующее новое граничное условие, есть <strong>исключ1(_,[],[])-</strong></p>
    <p><emphasis>Исключение всех вхождений некоторого элемента; </emphasis>Цель <strong>исключить(Х, L1, L2) </strong>создает список <strong>L2</strong> путем удаления всех элементов <strong>X</strong> из списка <strong>L1</strong>. Граничное условие выполняется тогда, когда <strong>L1 </strong>является пустым списком. Это означает, что мы рекурсивно исчерпали весь список. Если <strong>X</strong> находится в голове списка, то результатом является хвост этого списка, из которого <strong>X</strong> тоже удаляется. Последний случай возникает, если во втором аргументе обнаружено, что-то отличное от X. Тогда мы просто входим в новую рекурсию.</p>
    <empty-line/>
    <p>исключить(_, [],[]).</p>
    <p>исключить(Х,[Х|L],М):-!, исключить(Х,L,М).</p>
    <p>исключить(Х,[Y|L1],[Y|L2]):- исключить(Х,L1,L2).</p>
    <empty-line/>
    <p><emphasis>Замещение: </emphasis>Этот предикат очень напоминает <strong>исключить, </strong>с той лишь разницей, что вместо удаления искомого элемента мы заменяем его некоторым другим элементом. Цель <strong>заменить(Х, L,A,M) </strong>строит новый список <strong>М</strong> из элементов списка <strong>L</strong>, при этом все элементы <strong>X</strong> заменяются на элементы <strong>А</strong>. Здесь возможны 3 случая. Первый, связанный с граничным условием, в точности совпадает с тем, что было в <strong>исключить. </strong>Второй случай – когда в голове второго аргумента содержится элемент <strong>X</strong>, а третий – когда там содержится нечто отличное от <strong>X</strong>:</p>
    <empty-line/>
    <p>заменить(_,[],_,[]).</p>
    <p>заменить(Х,[Х|L],А,[А|М]):-!, заменить(Х,L,А,М).</p>
    <p>заменить(Х,[Y|L],А,[Y|М]):- заменить(Х,L,А,М).</p>
    <empty-line/>
    <p><emphasis>Подсписки: </emphasis>Список <strong>X</strong> является подсписком списка <strong>Y</strong>, если каждый элемент <strong>X</strong> содержится и в <strong>Y</strong> с сохранением порядка следования и без разрывов. Например, доказуемо следующее:</p>
    <empty-line/>
    <p>подсписок[[собрание, членов, клуба],[общее, собрание, членов, клуба, будет, созвано, позже]).</p>
    <empty-line/>
    <p>Программа <strong>подсписок </strong>требует двух предикатов: один для нахождения совпадения с первым элементом, и второй, чтобы убедиться, что остальная часть первого аргумента поэлементно совпадает с соответствующей частью второго аргумента.</p>
    <empty-line/>
    <p>подсписок([Х|L],[Х|М]):- совпало(L,M),!. </p>
    <p>подсписок(L,[_|М]):- подсписок(L,M).</p>
    <p>совпало([],_).</p>
    <p>совпало([Х|L],[Х|М]):- совпало(L,М).</p>
    <empty-line/>
    <p><emphasis>Отображение: </emphasis>Это мощный метод, заключающийся в преобразовании одного списка в другой с применением к каждому элементу первого списка некоторой функции и использованием ее результата в качестве очередного элемента второго списка. Программа преобразования одного предложения в другое, которая рассматривалась в гл. 3, является одним из примеров отображения. Мы говорим, что «отображаем одно предложение в другое».</p>
    <p>Отображение настолько полезно, что заслуживает отдельного раздела. Кроме того, поскольку списки в Прологе – это просто частные случаи структур, мы отложим обсуждение отображения списков до разд. 7.12. Отображение многолико. В разд. 7.11, посвященном символическому дифференцированию, описывается способ отображения одного арифметического выражения в другие.</p>
   </section>
   <section>
    <title>
     <p>7.6. Представление и обработка множеств</p>
    </title>
    <p><emphasis>Множество </emphasis>- одна из наиболее важных структур данных, используемых как в математике, так и в программировании. Множество – это набор элементов, напоминающий список, но отличающийся тем, что вопрос о том, сколько раз и в каком месте что-либо входит в множество в качестве его элемента, не имеет смысла. Так, множество (1, 2, 3) – это то же самое множество, что и (1, 2, 3, 1), поскольку значение имеет только сам факт, принадлежит данный элемент множеству или нет. Элементами множеств могут также быть другие множества. Самой фундаментальной операцией над множествами является определение того, <emphasis>принадлежит </emphasis>некоторый элемент данному множеству или нет.</p>
    <p>Не должно вызывать удивления, что множества удобно представлять в виде списков. Список может содержать произвольные элементы, включая другие списки, и над списками можно определить предикат принадлежности. Однако условимся, что когда мы представляем множество в виде списка, такой список содержит только по одному элементу на каждый объект, принадлежащий множеству. При работе со списками без повторяющихся элементов упрощаются некоторые операции, такие, как удаление элементов. Итак, нам предстоит иметь дело только со списками без повторяющихся элементов. Предикаты, рассматриваемые ниже, соблюдают это свойство и опираются на него.</p>
    <p>Над множествами обычно определяется следующий набор операций (мы будем применять и общепринятые математические обозначения для тех читателей, кто к ним привык):</p>
    <p><emphasis>Принадлежность множеству: X&#8712;Y</emphasis></p>
    <p><strong>X</strong> принадлежит некоторому множеству <strong>Y</strong>, если <strong>X</strong> является одним из элементов <strong>Y</strong>.</p>
    <p>Пример: <emphasis>а&#8712;{с,а,t}.</emphasis></p>
    <p><emphasis>Включение: X</emphasis>&#8834;<emphasis>Y</emphasis></p>
    <p>Множество <strong>Y</strong> включает в себя множество <strong>X</strong>, если каждый элемент множества <strong>X</strong> является также элементом <strong>Y</strong>. Множество <strong>Y </strong>может содержать некоторые элементы, которых нет в <strong>X</strong>. </p>
    <p>Пример: <emphasis>{x,r,u}</emphasis>&#8834;<emphasis>{p,q,r,f,t,u,v,w,x,y,z}.</emphasis></p>
    <p><emphasis>Пересечение: X&#8745;Y</emphasis></p>
    <p>Пересечением множеств <strong>X</strong> и <strong>Y</strong> является множество, содержащее те элементы, которые одновременно принадлежат <strong>X</strong> и <strong>Y</strong>. </p>
    <p>Пример: <emphasis>{r,a,p,i,d} </emphasis>&#8745; <emphasis>{p,i,c,t,u,r,e} </emphasis>= <emphasis>{r,i,p}.</emphasis></p>
    <p><emphasis>Объединение: X </emphasis>&#8746; <emphasis>Y</emphasis></p>
    <p>Объединением множеств <strong>X</strong> и <strong>Y</strong> является множество, содержащее все элементы, принадлежащие <strong>X</strong> или <strong>Y</strong> или одновременно им обоим.</p>
    <p>Пример: <emphasis>{a,b,c} </emphasis>&#8746; <emphasis>{с,d,е} = {a,b,c,d,e}.</emphasis></p>
    <p>Это – основные операции, которые обычно используются при работе с множествами. Теперь мы можем приступить к написанию Пролог-программ, реализующих каждую из них. Первая основная операция 'принадлежность' реализуется тем же самым предикатом <strong>принадлежит</strong>, с которым мы уже встречались несколько раз. Однако в нашем определении <strong>принадлежит</strong> в граничном случае нет символа «отсечения», поэтому мы можем создавать последовательные элементы списка, используя возвратный ход:</p>
    <empty-line/>
    <p>принадлежит(Х,[Х|_]). </p>
    <p>принадлежит(Х,[_|Y]):- принадлежит(Х,Y).</p>
    <empty-line/>
    <p>Следующая операция 'включение' реализуется предикатом <strong>включает</strong>, причем <strong>включает(Х, Y)</strong> завершается успешно, если <strong>X</strong> является подмножеством <strong>Y</strong>, т. е. <strong>Y</strong> включает <strong>X</strong>. Второе утверждение в его определении опирается на математическое соглашение о том, что пустое множество является подмножеством любого множества. В Прологе это соглашение дает способ проверки граничного условия для первого аргумента, поскольку запрограммирована рекурсивная обработка его хвоста:</p>
    <empty-line/>
    <p>включает([А|Х],Y):- принадлежит(А,Y), включает(Х,Y). </p>
    <p>включает([],Y).</p>
    <empty-line/>
    <p>Следом идет самый сложный случай, реализация пересечения. Целевое утверждение пересечение(Х, Y,Z) доказуемо, если пересечением <strong>X</strong> и <strong>Y</strong> является <strong>Z</strong>. Это как раз тот случай, когда используется предположение, что данные списки не содержат повторяющихся элементов:</p>
    <empty-line/>
    <p>пересечение([], X, []). </p>
    <p>пересечение([X|R],Y,[X|Z]):-принадлежит(Х, Y),!,пересечение(R, Y,Z). </p>
    <p>пересечение([Х|R],Y,Z):- пересечение(R, Y,Z).</p>
    <empty-line/>
    <p>Наконец, <strong>объединение</strong>. Целевое утверждение <strong>объединение (X,Y,Z)</strong> доказуемо, если объединением <strong>X</strong> и <strong>Y</strong> является <strong>Z</strong>. Заметим, что реализация предиката <strong>объединение</strong> сконструирована на основе определений предикатов <strong>пересечение</strong> и <strong>присоединить</strong>:</p>
    <empty-line/>
    <p>объединение([],Х,Х).</p>
    <p>объединение([Х|R],Y,Z):- принадлежит(Х,Y),!,</p>
    <p>объединение(R,Y,Z). объединение([X |R],Y,[X|Z]):- объединение(R,Y,Z).</p>
    <empty-line/>
    <p>Этим исчерпывается наш перечень предикатов работы с множествами. И хотя использование множеств может оказаться не характерным для ваших программ, тем не менее полезно изучить эти примеры. Они позволяют вам получить ясное представление о том, как можно использовать рекурсию и возвратный ход.</p>
   </section>
   <section>
    <title>
     <p><strong>7.7. Сортировка</strong></p>
    </title>
    <p>Иногда полезно упорядочить список элементов в соответствии с заданным порядком их следования. Если элементами списка являются целые числа, то для того чтобы определить соблюден ли порядок следования, можно использовать предикат '‹'. Список (1, 2, 3) упорядочен, поскольку любая пара соседних целых чисел этого списка удовлетворяет предикату '‹'. Если элементами списка являются атомы, то мы можем воспользоваться предикатом <strong>меньше, </strong>о чем уже говорилось в гл. 3. Список <strong>[alpha,beta,gamma] </strong>упорядочен в алфавитном порядке, поскольку каждая пара соседних атомов этого списка удовлетворяет предикату <strong>меньше.</strong></p>
    <p>Специалисты по информатике разработали много методов сортировки списков, когда задан некоторый предикат, который говорит нам о том, находятся ли соседние элементы списка в требуемом порядке следования. Мы рассмотрим Пролог-программы для четырех таких методов: наивная сортировка, сортировка включением (вставками), сортировка методом пузырька и быстрая сортировка. В каждой программе используется предикат упорядочено, который может быть определен через '‹' <strong>меньше </strong>или любой другой предикат по вашему усмотрению, в зависимости от того, какого рода структуры вы сортируете. При этом предполагается, что целевое утверждение <strong>упорядочено(Х, Y) </strong>доказуемо, если объекты <strong>X</strong> и <strong>Y</strong> удовлетворяют требуемому порядку следования, т. е. если <strong>X</strong> в некотором смысле меньше чем <strong>Y</strong>.</p>
    <p>Один из способов сортировки чисел в порядке возрастания состоит в следующем: вначале создается некоторая перестановка чисел, затем проверяется расположен ли полученный список в порядке возрастания. Если это не так, то создается новая перестановка чисел. Этот метод известен под названием <emphasis>наивная сортировка:</emphasis></p>
    <empty-line/>
    <p>наивсорт(L1,L2):- перестановка(L1,L2),отсортировано(L2),!. </p>
    <p>перестановка(L,[H|T]):-присоединить(V,[Н|U],L), присоединить(V,U,W), перестановка(W,Т). </p>
    <p>перестановка([],[]).</p>
    <p>отсортировано(L):- отсортировано(0,L). </p>
    <p>отсортировано(_,[]).</p>
    <p>отсортировано(N,[H|T]):- упорядочено(N,Н),отсортировано(Н,T).</p>
    <empty-line/>
    <p>Используемый здесь предикат <strong>присоединить </strong>многократна определялся ранее. В этой программе предикаты имеют следующий смысл:</p>
    <p><strong>Наивсорт(L1, L2) </strong>означает, что <strong>L2</strong> – это список, являющийся упорядоченной версией списка <strong>L1;</strong></p>
    <p><strong>Перестановка(L1, L2) </strong>означает, что <strong>L2</strong>- это список, содержащий все элементы списка <strong>L1</strong> в одном из многих возможных порядков их следования; в терминологии разд. 4.3 – это <emphasis>генератор.</emphasis></p>
    <p>Предикат <strong>отсортировано(L) </strong>означает, что числа в списке <strong>L </strong>упорядочены в порядке возрастания; это – <emphasis>'контролер'.</emphasis></p>
    <p>Процесс поиска упорядоченной версии списка заключается в создании некоторой перестановки элементов и проверки ее упорядоченности. Если это так, то единственный ответ найден. Иначе мы вынуждены продолжать создание перестановок. Это не очень эффективный метод сортировки списка.</p>
    <p>При <emphasis>сортировке включением </emphasis>каждый элемент списка рассматривается отдельно и включается в новый список на соответствующее место. Этот метод используется, например, при игре в карты, когда игрок сортирует имеющиеся на руках карты, вынимая и переставляя по одной карте за раз. Целевое утверждение <strong>вклюсорт(X, Y) </strong>доказуемо тогда, когда список <strong>Y</strong> является упорядоченной версией списка <strong>X</strong>. Каждый элемент удаляется из головы списка и передается предикату <strong>вклюсорт2</strong>, который включает этот элемент в список и возвращает измененный список.</p>
    <empty-line/>
    <p>вклюсорт([],[]).</p>
    <p>вклюсорт([Х|L],М):- вклюсорт(L,N), вклюсорт2(Х,N,М).</p>
    <p>вклюсорт2(Х,[А|L],[А|М]):- упорядочено(А,Х),!,вклюсорт2(Х,L,М). </p>
    <p>вклюсорт2(Х,L,[Х |L]).</p>
    <empty-line/>
    <p>Чтобы сделать предикат сортировки включением более универсальным, удобно задавать предикат проверки порядка следования в качестве аргумента предиката <strong>вклюсорт. </strong>Используем для этого предикат ' =..', который рассматривался в гл. 6:</p>
    <empty-line/>
    <p>вклюсорт([],[],_).</p>
    <p>вклюсорт([Х|L],М,О):- вклюсорт(L,N,О),вклюсорт2(Х,N,М,О). </p>
    <p>вклюсорт2(Х,[А|L],[А|М],0):-Р=..[O,А,Х], call(P),!<strong>, </strong>вклюсорт2(Х,L,М,O). </p>
    <p>вклюсорт2(Х,L,[Х|L],О).</p>
    <empty-line/>
    <p>Теперь мы можем использовать такие цели как <strong>вклюсорт(А,В,'‹') и вклюсорт(А,В,меньше), </strong>т. е. отпадает необходимость в предикате <strong>упорядочено. </strong>Этот метод может быть распространен.и на другие алгоритмы сортировки данного раздела.</p>
    <p>При <emphasis>сортировке методом пузырька </emphasis>в списке ищется пара соседних элементов, расположенных не по порядку следования. Если такие элементы находятся, то они меняются местами. Этот процесс продолжается до тех пор, пока перестановки станут ненужными. Если при сортировке включением выбранный элемент как бы «тонет», попадая на нужное место, то сортировка методом пузырька названа так потому, что здесь элементы, подобно пузырькам воздуха, постепенно «всплывают», занимая соответствующее место.</p>
    <empty-line/>
    <p>пусорт(L,S):-присоединить(Х,[А,В|Y],L),упорядочено(В,А),присоединить(Х, [В, А|Y],M),пусорт(M,S). </p>
    <p>пусорт(L,L).</p>
    <p>присоединить([],L,L).</p>
    <p>присоединить([Н|Т],L[Н|V]):- присоединить(Т,L,V).</p>
    <empty-line/>
    <p>Заметим, что здесь применяется тот же самый предикат <strong>присоединить</strong>, с которым мы встречались ранее. Этот пример отличается от предыдущих необходимостью возвратного хода после каждого найденного решения. Поэтому в первом правиле в определении <strong>пусорт</strong> «отсечение» не используется. Эта программа еще один пример «недетерминированного» программирования,- для выбора элементов списка L здесь используется предикат <strong>присоединить</strong>. При этом контроль полноты выполненных перестановок целиком возложен на <strong>присоединить</strong>.</p>
    <p><emphasis>Быстрая сортировка </emphasis>- это более сложный метод сортировки, предложенный Хоором и применимый для сортировки больших списков. Для реализации быстрой сортировки на Прологе мы должны сначала разделить список, состоящий из головы <strong>Н</strong> и хвоста <strong>Т</strong>, на два списка <strong>L</strong> и <strong>М</strong> такие, что:</p>
    <p>• все элементы <strong>L</strong> меньше или равны <strong>Н</strong>;</p>
    <p>• все элементы <strong>М</strong> больше чем <strong>Н</strong>;</p>
    <p>• порядок следования элементов в <strong>L</strong> и <strong>М</strong> такой же как в<strong> [Н |Т]</strong>.</p>
    <p>После того, как мы разделили список, применяем быструю сортировку к каждому из полученных списков (это рекурсивная часть), и присоединяем <strong>М</strong> к <strong>L</strong> Цель <strong>разбить(H,T,L,M)</strong> разделяет список <strong>[Н |Т] </strong>на списки <strong>L</strong> и <strong>М</strong>, как сказано выше:</p>
    <empty-line/>
    <p>paзбить(H,[A|X],[A|Y],Z):- А=‹ Н, разбить(Н,Х,Y,Z). </p>
    <p>разбить(Н,[А|Х],Y,[А|Z]):- А › Н, разбить(Н,Х,Y,Z). </p>
    <p>разбить(_,[], [],[]).</p>
    <empty-line/>
    <p>Тогда программа быстрой сортировки примет вид:</p>
    <empty-line/>
    <p>бысорт([],[]). </p>
    <p>бысорт([H|T],S):-разбить(Н,Т,А,В),бысорт(А,А1),бысорт(В,В1), присоединить(А1, [H|B1],S).</p>
    <empty-line/>
    <p>Предикат <strong>присоединить </strong>можно встроить внутрь программы сортировки. Тогда получается другой предикат</p>
    <empty-line/>
    <p>бысорт2 ([H|T], S,X):-разбить(Н,T,А,В), бысорт2(А,S,[Н|Y]), бысорт2(B,Y,X). </p>
    <p>бысорт2([],Х,Х).</p>
    <empty-line/>
    <p>В этом случае третий аргумент используется как временная рабочая область, и при обращениях к <strong>бысорт2 </strong>этот аргумент должен заполняться пустым списком.</p>
    <p>Более подробные сведения о методах сортировки можно найти в книге D. Knuth, <emphasis>The Art of Computer Programming, </emphasis>v. 3 (Sort and Searching), Addison-Wesley, 1973 (Имеется перевод: Кнут Д. Искусство программирования для ЭВМ, т. 3 (Сортировка и поиск). М.: Мир, 1978.- <emphasis>Перев.) </emphasis>Метод быстрой сортировки Хоора описан в его статье в Computer Journal n. 5 (1962), стр. 10-15.</p>
    <p><strong>Упражнение 7.5.</strong> Проверьте, что предикат <strong>перестановка (L1, L2)</strong> строит все перестановки заданного списка <strong>L1</strong> (причем каждую по одному разу) и выдает их как альтернативные значения списка <strong>L2</strong>. В каком порядке строятся эти решения?</p>
    <p><strong>Упражнение 7.6.</strong> Быстрая сортировка лучше всего работает ка больших списках, поскольку там она обеспечивает более быструю сходимость к решению. В то же время объем работы, выполняемой на каждом уровне рекурсии быстрой сортировки, превышает то, что делается в других методах, из-за использования разбить. Поэтому, при сортировке небольших списков рекурсивные вызовы <strong>бысорт, </strong>видимо, можно заменить обращениями к другим методам сортировки, например, к сортировке включением. Разработайте «гибридную» программу, которая использует быструю сортировку для обработки больших подсписков (списков, полученных с помощью предиката <strong>разбить), </strong>но переключается на другой метод (сортировка включением) при значительном уменьшении длины подсписка. Подсказка: поскольку <strong>разбить </strong>должен просмотреть все элементы списка, то он может заодно подсчитать и длину списка.</p>
   </section>
   <section>
    <title>
     <p><strong>7.8. Использование базы данных: random, генатом, найтивсе</strong></p>
    </title>
    <p>Во всех программах, которые рассматривались до сих пор, база данных использовалась лишь для хранения фактов и правил, с помощью которых определяются предикаты. Можно использовать базу данных и для хранения обычных структур, т. е. таких, которые порождаются при выполнении программы. До сих пор для передачи таких структур от одного предиката к другому мы применяли механизм аргументов. Однако существуют доводы в пользу хранения этой информации в базе данных. Иногда некоторый элемент информации может потребоваться во многих частях программы. Передача его через механизм аргументов может привести к появлению одного – двух дополнительных аргументов у большинства предикатов. Другим доводом является возможность сохранения информации при возвратном ходе. В этом разделе мы рассмотрим три предиката, которые позволяют хранить в базе данных структуры, время жизни которых превышает то, что может быть обеспечено с помощью переменных. Вот эти три предиката: <strong>random, </strong>вырабатывающий при каждом вызове псевдослучайное целое, <strong>найтивсе, </strong>порождающий список всех структур, обеспечивающих истинность данного предиката, и <strong>генатом, </strong>порождающий атомы с различающимися именами.</p>
    <subtitle>Генератор случайных чисел (random)</subtitle>
    <p>Цель <strong>random(R, N) </strong>конкретизирует <strong>N</strong> целым числом, случайно выбранным в диапазоне от <strong>1</strong> до <strong>R</strong>. Метод выбора случайного числа основан на конгруэнтном методе с использованием начального числа («затравки») инициализируемого произвольным целым числом. Каждый раз, когда требуется случайное число, ответ вычисляется на основе существующего начального значения, и при этом порождается новое начальное число, которое сохраняется до тех пор, пока вновь не потребуется вычислить случайное число. Для хранения начального числа между вызовами <strong>random </strong>мы используем базу данных. После того как начальное число использовано, мы убираем (с помощью <strong>retract) </strong>из базы данных старую информацию о начальном числе, вычисляем его новое значение, и засылаем в базу данных новую информацию (с помощью <strong>asserta). </strong>Исходное начальное значение – это просто факт в базе данных, с функтором <strong>seed </strong>имеющим одну компоненту – целое значение начального числа.</p>
    <empty-line/>
    <p>seed(13).</p>
    <p>random (R,N):-seed(S),N is (S mod R) + 1,retract(seed(S)),NewSeed is (125 * S + 1) mod 4096,asserta(seed(NewSeed)),!.</p>
    <empty-line/>
    <p>Используя семантику <strong>retract </strong>можно упростить определение <strong>random </strong>следующим образом:</p>
    <empty-line/>
    <p>random(R,N):-retract(seed(S)),N is (S mod R)+1,NewSeed is (125 * S +1) mod 4096,asserta(seed(NewSeed)),!.</p>
    <empty-line/>
    <p>Для того, чтобы напечатать последовательность случайных чисел, расположенных в диапазоне между 1 и 10, которая обры-вается после того, как будет порождено значение 5, нужно задать следующий вопрос:</p>
    <empty-line/>
    <p>?- repeat, random(10,X), write(X), nl, X=5.</p>
    <empty-line/>
    <subtitle>Генератор имен (генатом)</subtitle>
    <p>Предикат <strong>генатом </strong>позволяет порождать новые атомы Пролога. Если у нас есть программа, которая воспринимает информацию об окружающем мире (например, путем анализа описывающих его предложений на английском языке), то в случае появления в этом мире нового объекта возникают трудности с его обозначением. Естественно представлять объект атомом Пролога. Если объект ранее не встречался, мы должны убедиться в том, что тот атом, который мы ему сопоставляем, случайно не совпал с другим атомом, уже представляющим какой-то другой объект. Иными словами, нам необходимо иметь возможность формировать новые атомы. Мы можем также потребовать, чтобы созданный атом имел также некоторое мнемоническое значение: это облегчит понимание информации выводимой нашей программой. Если бы атомы представляли, скажем, студентов, то целесообразно было <emphasis>бы </emphasis>назвать первого студента – <strong>студент1, </strong>второго – <strong>студент2</strong>, третьего – <strong>студентЗ </strong>и т. д. Если к тому же нам нужно было бы работать с объектами представляющими еще и преподавателей, то можно было бы выбрать для их представления атомы <strong>преподаватель1</strong>, <strong>преподаватель2, преподавательЗ </strong>и т. д.</p>
    <p>Функция программы <strong>генатом </strong>состоит в том, чтобы порождать новые атомы от заданных корней (таких как <strong>студент </strong>и <strong>преподаватель). </strong>Для каждого корня программа запоминает, какой номер был использован в последний раз. Поэтому, когда в следующий раз от нее требуется породить атом с данным корнем можно гарантировать, что он будет отличаться от тех, что были порождены ранее. Так, когда вопрос</p>
    <empty-line/>
    <p>?- генатом(студент,X).</p>
    <empty-line/>
    <p>задан впервые, ответом будет </p>
    <p>X = студент1</p>
    <p>В следующий же раз ответом будет </p>
    <p>X = студент2 </p>
    <p>и т. д.</p>
    <p>Заметим, что эти различающиеся решения при возвратном ходе не порождаются (<strong>генатом(Х, Y)</strong> нельзя согласовать вновь), они порождаются последующими целями, включающими этот предикат.</p>
    <p>В определении <strong>генатом </strong>используется вспомогательный предикат <strong>тек_номер</strong>. Контроль за тем, какой номер использовать следующим для данного корня, осуществляется программой <strong>генатом </strong>путем записи в базу данных фактов вида <strong>тек_номер </strong>и удаления фактов, которые стали ненужными. Факт <strong>тек_номер (Корень, Номер) </strong>означает, что последний номер, использованный с корнем <strong>Корень, </strong>был <strong>Номер. </strong>Иными словами, последний атом, порожденный для этого корня, состоял из литер, взятых из <strong>Корень, </strong>за которыми был приформирован номер, взятый из <strong>Номер. </strong>Когда Пролог пытается доказать согласованность цели <strong>генатом</strong>, обычно делается следующее: последний факт <strong>тек_номер </strong>для заданного корня удаляется из базы данных, к его номеру прибавляется 1, и новый факт <strong>тек_номер </strong>запоминается в базе данных, заменяя исключенный факт. С этого момента новый номер может быть использован как основа для порождения нового атома. Хранить информацию о текущем номере в базе данных очень удобно. В противном случае каждый предикат, прямо или косвенно участвующий в выполнении <strong>генатом</strong>, должен был бы пересылать информацию о текущих номерах через дополнительные аргументы.</p>
    <p>Последние несколько утверждений этой программы определяют предикат <strong>целое_имя, </strong>который используется для преобразования целого числа в последовательность литер-цифр. Атомы, порождаемые <strong>генатом, </strong>формируются с помощью встроенного предиката <strong>name, </strong>который формирует атом из литер корня, за которыми следуют цифры номера. В некоторых реализациях Пролога используется версия предиката <strong>name, </strong>которая выполняет также функции предиката <strong>целое_имя, </strong>однако весьма поучительно посмотреть, как его можно определить на Прологе. В этом определении неявно используется тот факт, что коды ASCII для цифр 0, 1, 2 и т. д. равны соответственно 48, 49, 50 и т. д. Поэтому, чтобы преобразовать число меньшее 10 в код ASCII соответствующей цифры, достаточно прибавить к этому числу 48. Перевести в последовательность литер число, большее 9, сложнее. Последнюю цифру такого числа получить легко, поскольку это просто остаток от деления на <strong>10 (число mod 10). </strong>Таким образом, цифры числа легче формировать в обратном порядке. Мы просто циклически повторяем следующие операции: получение последней цифры, вычисление остальной части числа (результат его целого деления на 10). Определение этого на Прологе выглядит следующим образом:</p>
    <empty-line/>
    <p>цифры_наоборот(N,[С]):- N‹10,!, С is N+48. </p>
    <p>цифры_наоборот(М,[С|Сs]):-С is (N mod 10) + 48,N1 is N/10,цифры_нaoбopот(N1,Cs).</p>
    <empty-line/>
    <p>Чтобы получить цифры в правильном порядке, применим трюк: в этот предикат добавим дополнительный аргумент – список «уже сформированных» цифр, С помощью этого аргумента мы можем получать цифры по одной в обратном порядке, но в итоговый список вставлять их в прямом порядке. Это делается следующим образом. Пусть у нас есть число 123. В начале список «уже сформированных» цифр есть []. Первым получаем число 3, которое преобразуется в литеру с кодом 51. Затем мы рекурсивно вызываем <strong>целое_имя, </strong>чтобы найти цифры числа 12. Список «уже сформированных» цифр, который передается в это целевое утверждение, содержит литеру, вставленную в исходный список «уже сформированных» цифр – это список [51]. Вторая цель <strong>целое_имя </strong>выдает код 50 (для цифры 2) и снова вызывает <strong>целое_имя, </strong>на этот раз с числом 1 и со списком «уже сформированных» цифр [50, 51]. Эта последняя цель успешно выполняется и, поскольку число было меньше 10, дает ответ [49,50,51]. Этот ответ передается через аргументы разных целей <strong>целое_имя </strong>и дает ответ на исходный вопрос – какие цифры соответствуют числу 123?</p>
    <p>Приведем теперь всю программу полностью.</p>
    <empty-line/>
    <p>/* Породить новый атом, начинающийся с заданного корня, и оканчивающийся уникальным числом. */</p>
    <p>генатом (Корень,Атом),выдать_номер(Корень,Номер), name(Корень,Имя1), целое_имя(Номер,Имя2), присоединить(Имя1,Имя2,Имя), name(Атом,Имя). </p>
    <p>выдать_номер(Корень, Номер):-retract(тeк_номер(Корень, Номер1)),!,Номер is Номер 1 + 1, asserta(тек_номер(Корень, Номер)). </p>
    <p>выдать_номер(Корень,1):- asserta(тек_номep(Kopeнь,l)).</p>
    <p>/* Преобразовать целое в список цифр */ </p>
    <p>целое_имя(Цел,Итогспи):- целое_имя (Цел, [], Итогспи). </p>
    <p>целое_имя(I,Текспи,[С|Текспи]:- I ‹10,!, С is I+48. </p>
    <p>целое_имя(I,Текспи,Итогспи):-Частное is I/10, Остаток is I mod 10,С is Остаток+48.</p>
    <p>целое_имя(Частное,[С|Текспи],Итогспи).</p>
    <empty-line/>
    <subtitle>Генератор списков структур (найтивсе)</subtitle>
    <p>В некоторых прикладных задачах полезно уметь определять все термы, которые делают истинным заданный предикат. Например, мы могли бы захотеть построить список всех детей Адама и Евы с помощью предиката <strong>родители </strong>из гл. <strong>1 </strong>(и располагая базой данных с фактами <strong>родители </strong>о родительских отношениях). Для этого мы могли бы использовать предикат по имени <strong>найтивсе</strong>, который мы определим ниже. Цель <strong>найтивсе(Х,G, L) </strong>строит список <strong>L</strong>, состоящий из всех объектов <strong>X</strong> таких, что они позволяют доказать согласованность цели <strong>G</strong>. При этом предполагается, что переменная <strong>G</strong> конкретизирована произвольным термом, однако таким, что <strong>найтивсе </strong>рассматривает его как целевое утверждение Пролога. Кроме того переменная <strong>X</strong> должна появиться где-то внутри <strong>G</strong>. Таким образом <strong>G</strong> может быть конкретизирована целевым утверждением Пролога произвольной сложности. Для того, чтобы найти всех детей Адама и Евы, необходимо было бы задать следующий вопрос:</p>
    <empty-line/>
    <p>?- найтивсе(Х, родители(Х,ева,адам), L).</p>
    <empty-line/>
    <p>Переменная <strong>L</strong> была бы конкретизирована списком всех <strong>X</strong>, для которых предикату <strong>родители(Х,ева,адам) </strong>можно найти сопоставление в базе данных. Задача <strong>найтивсе </strong>заключается в том, чтобы повторять попытки согласовать его второй аргумент, и каждый раз, когда это удается, программа должна брать значение X и помещать его в базу данных. Когда попытка согласовать второй аргумент завершится неудачно, собираются все значения <strong>X</strong>, занесенные в базу данных. Получившийся при этом список возвращается как третий аргумент. Если попытка доказать согласованность второго аргумента <strong>ни разу </strong>не удастся, то третий аргумент будет конкретизирован пустым списком. При помещении элементов данных в базу данных используется встроенный предикат <strong>asserta, </strong>который вставляет термы перед теми, которые имеют тот же самый функтор. Чтобы поместить элемент <strong>X</strong> в базу данных, мы задаем его в качестве компоненты структуры по имени <strong>найдено. </strong>Программа для <strong>найтивсе </strong>выглядит следующим образом:</p>
    <empty-line/>
    <p>найтивce(X,G,_):-asserta(найденo(мapкep)), call(G), asserta(найденo(X)),fail. </p>
    <p>найтивсе(_,_,L):- собрать_найденное([],М),!, L=M.</p>
    <p>собрать_найденное(S,L):- взятьеще(Х),!,собрать_найденное([Х |S],L).</p>
    <p>собрать_найденное(L,L). </p>
    <p>взятьеще(Х):- retract(найдено(Х)),!, Х\==маркер.</p>
    <p>Предикат <strong>найтивсе, </strong>начинает свою работу с занесения специального маркера, который представляет из себя структуру с функтором <strong>найдено </strong>и с компонентой <strong>маркер. </strong>Этот специальный маркер отмечает место в базе данных, перед которым будут занесены (с помощью <strong>asserta) </strong>все <strong>X, </strong>согласующие <strong>G</strong> с базой данных при данном запуске <strong>найтивсе. </strong>Затем делается попытка согласовать <strong>G </strong>и каждый раз, когда это удается, <strong>X</strong> заносится в базу данных в качестве компоненты функтора <strong>найдено. </strong>Предикат <strong>fail </strong>инициирует процесс возврата и попытку повторно согласовать <strong>G (asserta </strong>согласуется не более одного раза). Когда попытка согласовать <strong>G </strong>завершается неудачей, процесс возврата приводит к неудаче первого утверждения из определения <strong>найтивсе, </strong>и делается попытка согласовать в качестве цели второе утверждение. Второе утверждение вызывает <strong>собрать_найденное </strong>для выборки из базы данных всех структур найдено и включения их компонент в список. Предикат <strong>собрать_найденное </strong>вставляет каждый элемент в переменную, где хранится список «уже собранных» элементов. Этот прием мы рассматривали выше при разборе программы ге-натом. Как только встречается компонента <strong>маркер, взятьеще </strong>завершается неудачей, после чего выбирается второе утверждение для <strong>собрать_найденное. </strong>При сопоставлении <emphasis>его </emphasis>с текущей целью второй аргумент (результат) сцепляется с первым аргументом (с набранным списком)</p>
    <p>Заметим, что присутствие в базе данных структуры <strong>найдено (маркер) </strong>указывает на некоторое конкретное употребление <strong>найтивсе</strong>. Это означает, что <strong>найтивсе </strong>может вызываться рекурсивно – любое использование <strong>найтивсе </strong>во втором аргументе другого <strong>найтивсе </strong>будет обработано правильно.</p>
    <p>В разд. 7.9 мы разработаем программу, которая использует предикат <strong>найтивсе </strong>для построения списка всех потомков узла в графе. Этот список необходим для реализации программы поиска по графу вширь.</p>
    <p><strong>Упражнение 7.7. </strong>Напишите Пролог-программу <strong>случайный_выбор </strong>такую, что цель <strong>случайный_выбор(L, Е) </strong>конкретизирует Е случайно выбранным элементом списка <strong>L</strong>. Подсказка: используйте генератор случайных чисел и определите предикат, который возвращает N-й элемент списка.</p>
    <p><strong>Упражнение 7.8. </strong>Задана цель<strong>найтивсе(Х,G, L)</strong>. Что произойдет, если в <strong>G</strong> имеются неконкретизированные переменные не сцепленные с <strong>X</strong>?</p>
   </section>
   <section>
    <title>
     <p><strong>7.9. Поиск по графу</strong></p>
    </title>
    <epigraph>
     <empty-line/>
    </epigraph>
    <p>Граф – это сеть, состоящая из узлов, соединенных дугами. Например, географическую карту можно рассматривать как граф, где узлами являются населенные пункты, а дугами, соединяющие их дороги. Если вы хотите найти кратчайший маршрут между двумя населенными пунктами, вам предстоит решить задачу нахождения кратчайшего пути между двумя узлами графа.</p>
    <p>Проще всего описать граф в базе данных с помощью фактов, представляющих дуги между узлами графа. На рис, 7.3 приведен пример графа и его представления с помощью фактов. Чтобы пройти от узла <strong>g</strong> к узлу <strong>а</strong>, мы можем пойти по пути <strong>g</strong>, <strong>d</strong>, <strong>e</strong>, <strong>а</strong> или по одному из многих других возможных путей. Если мы представляем ориентированный граф, то предикат а следует понимать так, что <strong>а(Х, Y)</strong> означает, что существует дуга из <strong>X</strong> в <strong>Y</strong>, но из этого не следует существование дуги из <strong>Y</strong> в <strong>X</strong>. В данном разделе мы будем иметь дело только с неориентированными графами, у которых все дуги двунаправленные. Это допущение совпадает с тем, которое мы делаем в разд. 7.2 при поиске в лабиринте.</p>
    <image l:href="#pic_27.jpg"/>
    <p>Простейшая программа поиска по графу, представленному так, как указано выше, выглядит следующим образом:</p>
    <empty-line/>
    <p>переход(Х,X).</p>
    <p>переход(Х,Y):- (a(X,Z);a(Z,X)), переход(Z,Y).</p>
    <empty-line/>
    <p>К сожалению, эта программа может зацикливаться. Поэтому, как и раньше, мы используем список Т для хранения перечня тех узлов, в которых мы уже побывали в какой-либо рекурсии предиката.</p>
    <empty-line/>
    <p>переход(Х,Х,Т).</p>
    <p>переход(Х,Y,T):- (a(X,Z);a(Z,X)), not (принадлежит(Z, Т)),переход(Z, Y,[Z|T]).</p>
    <empty-line/>
    <p>Эта программа, разработанная в разд. 7.2, осуществляет так называемый поиск «вглубь», поскольку вначале рассматривается только один из соседей узла по графу, Другие же соседи игнорируются до тех пор, пока неудачные попытки согласовать цели в рекурсивных вызовах не возвратят Пролог к рассмотрению данного узла.</p>
    <p>Теперь давайте рассмотрим такой поиск по графу, который мог бы быть полезен на практике. Как быть, если мы должны спланировать маршрут поездки из одного города Северной Англии в другой? Для этого потребуется база данных с информацией о дорогах между городами в Северной Англии и их протяженности:</p>
    <empty-line/>
    <p>а(ньюкасл,карлайл,58). </p>
    <p>а(карлайл,пенрит,23). </p>
    <p>а(дарлингтон,ньюкасл,40). </p>
    <p>а(пенрит, дарлингтон,52). </p>
    <p>а(уэркингтон,карлайл,33). </p>
    <p>а(уэркингтон,пенрит,39).</p>
    <empty-line/>
    <p>На некоторое время мы можем забыть о расстояниях и определить новый предикат:</p>
    <empty-line/>
    <p>a(X,Y):- a(X,Y,Z).</p>
    <empty-line/>
    <p>С помощью этого определения предиката а уже имеющаяся программа поиска по графу (<strong>переход</strong>) будет находить пути, по которым можно переезжать из одного места на графе в любое другое. Однако программа <strong>переход</strong> имеет недостаток: когда она успешно завершается, мы не знаем, какой путь она нашла. По меньшей мере мы вправе ожидать от программы переход <strong>выдачи</strong> нам в нужном порядке списка мест, которые придется посетить. Тем более, что в программе имеется перечень этих мест, правда, в порядке, обратном тому, какой нам нужен. Чтобы получить правильный список, мы можем воспользоваться программой <strong>обр</strong>, определенной в разд. 7.5. Тогда мы получим новое определение программы <strong>переход</strong>, которая возвращает найденный маршрут через свой третий аргумент:</p>
    <empty-line/>
    <p>переход(Старт,Цель,Путь):- переход0(Старт,Цель,[],R),обр(R, Путь). </p>
    <p>переход0(Х,Х,Т,[Х|Т]).</p>
    <p>переход0(Место,Y,Т,R):-следузел(Место,Т,Сосед),переход0(Сосед,Y,[Место|T],R). </p>
    <p>следузел(Х,Бывали,Y):- (a(X,Y); a(Y,X)),not (принадлежит(Y,Бывали)).</p>
    <empty-line/>
    <p>Заметим, что предикат <strong>следузел </strong>позволяет получать для узла <strong>X</strong> «правильный» узел <strong>Y</strong>, т. е. такой, к которому можно непосредственно перейти от узла <strong>X</strong>. Ниже приводится пример работы этой программы при поиске маршрута из Дарлингтона в Уэркингтон:</p>
    <empty-line/>
    <p>?- переход(дарлингтон,уэркингтон,Х) </p>
    <p>Х=[дарлингтон,ньюкасл,карлайл,пенрит,уэркингтон]</p>
    <empty-line/>
    <p>Это не самый лучший маршрут, однако, программа найдет другие маршруты если мы инициируем процесс возврата.</p>
    <p>У этой программы много недостатков. Она совершенно не управляет выбором следующего участка пути, поскольку у нее нет доступа к полному набору возможных вариантов, а те выборы, которые у программы имеются, не представлены явно в виде структуры, которая может анализироваться программой, а неявно предопределены схемой работы механизма возврата.</p>
    <p>Ниже приведен переработанный вариант программы, который отличается большей универсальностью. В дальнейшем мы увидим, как с помощью простых изменений в этой программе можно получить разнообразные методы поиска.</p>
    <empty-line/>
    <p>переход(Старт,Цель,Путь):- переход1([[Старт]],Цель,R),обр(R, Путь). </p>
    <p>переход1([Первый|Ост],Цель,Первый):- Первый =[Цель|_].</p>
    <p>переход1([[Послед|Бывали]|Прочие],Цель,Путь):-найтивсе([Z, Послед|Бывали], следузел(Послед, Бывали,Z), Список), присоединить(Список, Прочие, НовПути), переход1(НовПути,Цель,Путь).</p>
    <empty-line/>
    <p>Предикат <strong>следузел</strong> остается прежним. Предикату <strong>переход1 </strong>передается список рассматриваемых путей вместе с конечным пунктом, и в последнем аргументе он возвращает удачный путь. Список рассматриваемых путей – это просто все дороги, начинающиеся в начальной точке, которые мы уже рассмотрели. Мы надеемся, что одна из них при продлении даст путь, который приведет нас в конечный пункт. Все пути представлены в виде обратных списков населенных пунктов, так что они могут также выполнять функции перечня мест, где мы уже бывали.</p>
    <p>В самом начале имеется только один возможный путь, который можно пытаться продлить. Это просто путь, который начинается в исходном пункте и никуда не ведет. Если мы стартуем из Дарлингтона, то это будет <strong>[дарлингтон]. </strong>Если теперь исследовать пути ведущие из Дарлингтона в соседние города, то можно обнаружить, что имеются два возможных пути <strong>[ньюкасл, дарлингтон] </strong>и <strong>[пенрит, дарлингтон]. </strong>Поскольку Уэркингтон не встречается ни на одном из этих путей, необходимо решить, какой из этих путей следует продолжить. Если принято решение продлить первый путь, то мы обнаружим, что существует всего один доступный узел – последний город на этом пути. Итак, кроме пути Дарлингтон – Пенрит у нас есть новый путь: <strong>[карлайл, ньюкасл, дарлингтон].</strong></p>
    <p>Наш «изыскатель», <strong>переход1 </strong>ведет полный список путей, по которым, может быть, стоит двигаться. Как же он решает какой из путей следует рассмотреть первым? Он просто выбирает <emphasis>первый попавшийся. </emphasis>Затем он ищет все возможные способы продления этого пути до следующего населенного пункта (используя <strong>найтивсе </strong>для построения списка всех таких продленных путей) и помещает получившиеся пути в <emphasis>начало </emphasis>списка для рассмотрения их на следующем уровне рекурсии.</p>
    <p>В результате, <strong>переход1 </strong>ведет себя таким образом, что он попробует все возможные способы продления первого пути прежде чем будет рассматривать альтернативные пути. Такая стратегия поиска является одним из вариантов <emphasis>поиска вглубь. </emphasis>Между прочим, <strong>переход1 </strong>рассматривает пути совершенно в том же порядке, что и <strong>переход0. </strong>Быть может вам будет интересно выяснить, почему это так.</p>
    <p>Если нас интересует кратчайший путь от Дарлингтона до Уэркингтона, то имеющаяся программа для этого не подходит. Первое найденное ею решение – это не кратчайший путь, а наоборот, самый длинный (в данном случае). Нам нужно изменить программу таким образом, чтобы она строила пути в порядке возрастания их длины. Если мы изменим ее так, чтобы она всегда продлевала более короткие пути, прежде чем рассматривать более длинные, то она будет вынуждена находить вначале кратчайшие пути (если измерять длину пути числом городов на нем). Полученная программа будет осуществлять <emphasis>поиск вширь. </emphasis>Единственное, что нужно сделать для этого – это вставлять новые альтернативы в конец всего списка возможностей, а не в начало, как в последнем примере. Мы просто исправим второе утверждение в определении <strong>переход1</strong>, чтобы он выглядел следующим образом:</p>
    <empty-line/>
    <p>переход1([[Послед|Бывали]|Прочие],Цель,Путь):-найтивсе([Z,Послед|Бывали], следузел(Послед, Бывали,Z),Список), присоединить(Прочие,Список,НовПути), переход1(НовПути,Цель, Путь).</p>
    <empty-line/>
    <p>Теперь исправленная программа находит возможные пути из Дарлингтона в Уэркингтон в следующем порядке:</p>
    <p>[дарлингтон,пенрит,уэркингтон] </p>
    <p>[дарлингтон,ньюкасл, карлайл,уэркингтон] </p>
    <p>[дарлингтон,пенрит,карлайл,уэркингтон] </p>
    <p>[дарлингтон,ньюкасл,карлайл,пенрит,уэркингтон]</p>
    <empty-line/>
    <p>Мы можем значительно упростить эту программу, если уверены, что ответ на вопрос всегда существует и если нам нужно только первое решение. В этом случае отпадает необходимость в проверке на зацикливание. Попробуйте самостоятельно выяснить, почему это так.</p>
    <p>К сожалению, путь через наименьшее число городов не обязательно будет самым кратчайшим по километражу. До сих пор мы не принимали во внимание информацию о расстояниях, имеющуюся в нашем графе. Если же мы добавим к нашему графу несколько фиктивных городов, чтобы получить:</p>
    <empty-line/>
    <p>а(ньюкасл,карлайл,58).</p>
    <p>а(карлайл,пенрит,23).</p>
    <p>а(городБ,городаА,15).</p>
    <p>а(пенрит, дарлингтон,52).</p>
    <p>а(городБ,городВ,10).</p>
    <p>а(уэркингтон, карлайл, 33).</p>
    <p>а(уэркингтон,городВ,5).</p>
    <p>а(уэркингтон,пенрит,39).</p>
    <p>а(дарлингтон,городА,25).</p>
    <empty-line/>
    <p>то путь, кратчайший по километражу, фактически будет построен последним, поскольку он проходит через большое число городов. С каждым путем, который может быть продолжен, нам нужно связать и поддерживать в процессе работы программы указатель текущей длины этого пути. Тогда программа будет всегда продлевать путь с наименьшим километражем. Такая стратегия называется поиском по критерию <emphasis>первый-лучший. </emphasis>Будем теперь представлять путь в списке альтернативных путей в виде структуры <strong>г(М, П)</strong>, где <strong>М</strong> – общая длина пути в километрах, а <strong>П</strong> – список мест, где мы уже побывали. Модифицированный предикат <strong>переходЗ</strong> находит кратчайший путь в списке альтернатив. Предикат кратчайший выделяет кратчайший путь в отдельный список, а остальные пути – в другой список. Предикат <strong>продлить</strong> находит все допустимые продолжения текущего кратчайшего пути и добавляет их к списку. Это в свою очередь требует новой версии предиката <strong>следузел</strong>, которая прибавляет расстояние до следующего города к уже вычисленному расстоянию. В целом программа выглядит так:</p>
    <empty-line/>
    <p>переходЗ (Пути,Цель,Путь):-кратчайший (Пути,Кратчайший,ОстПути), продлить(Кратчайший,Цель,ОстПути,Путь).</p>
    <p>продлить(г(Расст,Путь),Цель,_,Путь):- Путь = [Цель|_].</p>
    <p>продлить(г(Расст,[Послед| Бывали]),Цель,Пути,Путь):-найтивсе(г(D1,[Z,Послед|Бывали]),следузел(Послед,Бывали,Z,Расст,D1),Список), присоединить(Список,Пути,НовПути), переходЗ(НовПути,Цель,Пути).</p>
    <p>кратчайший([Путь[Пути],Кратчайший,[ПутьЮст]):-кратчайший(Пути,Кратчайший,Ост), короче(Кратчайший,Путь),!.</p>
    <p>кратчайший(Путь|Ост],Путь,Ост). короче(г(М1,_),г(М2, _):- M1 ‹ М2. </p>
    <p>следузел(Х,Бывали,Y,Расст,НовРасст):-(a(X,Y,Z); a(Y,X,Z)),not(принадлежит(Y,Бывали)),НовРасст is Расст+Z.</p>
    <empty-line/>
    <p>Чтобы использовать эту программу, необходимо задать вопрос, содержащий предикат переход, определенный следующим образом:</p>
    <empty-line/>
    <p>переход (Старт,Цель,Путь):-переход3([г(0,[Старт])],Цель,R), обр(R,Путь).</p>
    <empty-line/>
    <p>Эта новая программа успешно строит возможные пути в по-рядке возрастания их фактической протяженности. Может быть, вам захочется изменить ее так, чтобы вместе с ответами она печатала длины различных путей.</p>
    <p>Мы лишь затронули вопрос о возможных способах организации поиска по графу. Сведения о том, как осуществлять поиск по графу с использованием более эффективных критериев, чем «первый лучший», можно найти в литературе по искусственному интеллекту. Например: Nilsson N. <emphasis>Principles of Artificial Intelligence, </emphasis>Springer-Verlag, <emphasis>1982<a l:href="#n_10" type="note">[10]</a> </emphasis>и Winstone <emphasis>P. Artificial Intelligence, </emphasis>(second edition), Addison-Wesley, 1984.<sup><a l:href="#n_11" type="note">[11]</a></sup></p>
   </section>
   <section>
    <title>
     <p><strong>7.10. Просеивай Двойки, Просеивай Тройки</strong></p>
    </title>
    <epigraph>
     <poem>
      <stanza>
       <v><emphasis>Просеивай Двойки, </emphasis></v>
       <v><emphasis>Просеивай Тройки</emphasis>, </v>
       <v><emphasis>Эратосфена Решето, </emphasis></v>
       <v><emphasis>Пусть все кратные им отсеем, </emphasis></v>
       <v><emphasis>Простые числа получим зато. </emphasis></v>
      </stanza>
      <text-author><emphasis>Аноним</emphasis></text-author>
     </poem>
    </epigraph>
    <p>Простое число – это целое положительное число, которое делится нацело только на 1 и на само себя. Например, число 5 – простое, а число 15 – нет, поскольку оно делится на 3. Один из методов построения простых чисел называется «решетом Эратосфена». Этот метод, «отсеивающий» простые числа, не превышающие N, работает следующим образом:</p>
    <p>1. Поместить все числа от 2 до N в решето.</p>
    <p>2. Выбрать и удалить из решета наименьшее число.</p>
    <p>3. Включить это число в список простых.</p>
    <p>4. Просеять через решето (удалить) все числа, кратные этому числу.</p>
    <p>5. Если решето не пусто, то повторить шаги 2-5.</p>
    <p>Чтобы перевести эти правила на Пролог, мы определим предикат <strong>целые </strong>для получения списка целых чисел, предикат <strong>отсеять </strong>для проверки каждого элемента решета и предикат <strong>удалить </strong>для создания нового содержимого решета путем удаления из старого всех чисел, кратных выбранному числу. Это новое содержимое опять передается предикату <strong>отсеять. </strong>Предикат <strong>простые </strong>- это предикат самого верхнего уровня, такой что <strong>простые(N, L) </strong>конкретизирует <strong>L</strong> списком простых чисел, заключенных в диапазоне от <strong>1</strong> до <strong>N</strong> включительно.</p>
    <p>простые(Предел,Рs):- целые(2,Предел,Is),отсеять(Is,Рs). </p>
    <p>целые (Min,Max,[Min|Oct]):-Min=‹Max,!, М is Min+1,целые(М,Мах,Ост).</p>
    <p>целые(_,_,[]). </p>
    <p>отсеять([],[]). </p>
    <p>отсеять([I|Is],[I|Ps]):-удалить(I,Is,Нов),отсеять(Нов,Рs). </p>
    <p>удалить(Р,[],[]).</p>
    <p>удалить (P,[I|Is],[I|Nis]):-not(0 is I mod Р),!,удалить(Р,Is,Nis). </p>
    <p>удалить (P,[I|Is],Nis):-0 is I mod Р,!,удалить(Р,Is,Nis).</p>
    <p>Продолжая эту арифметическую тему, рассмотрим Пролог-программу, реализующую рекурсивную формулировку алгоритма Евклида для нахождения наибольшего общего делителя (НОД) и наименьшего общего кратного (НОК) двух чисел. Целевое утверждение <strong>нод(I,J,K) </strong>доказуемо, если <strong>K</strong> является наибольшим общим делителем чисел <strong>I</strong> и <strong>J</strong>. Целевое утверждение <strong>нок(I,J,K) </strong>доказуемо, если <strong>K</strong> является наименьшим общим кратным чисел <strong>I</strong> и <strong>J</strong>:</p>
    <p>нод(I,0,I).</p>
    <p>нод(I,J,K):- R is I mod J, нод(J,R,K).</p>
    <p>нок(I,J,K):- нод(I,J,R), K is (I*J)/R.</p>
    <p>Заметим, что из-за особенностей способа вычисления остатка эти предикаты не являются «обратимыми». Это означает, что для того чтобы они работали, необходимо заблаговременно конкретизировать переменные <strong>I </strong>и <strong>J.</strong></p>
    <p><strong>Упражнение 7.10. </strong>Если числа <emphasis>X</emphasis>, <emphasis>Y </emphasis>и Z таковы, что квадрат Z равен сумме квадратов <emphasis>X </emphasis>и <emphasis>Y </emphasis>(т. е. если <emphasis>Z</emphasis>&#178;=<emphasis>X</emphasis>&#178;+<emphasis>Y</emphasis>&#178;), то про такие числа говорят, что они образуют <emphasis>Пифагорову тройку. </emphasis>Напишите программу, порождающую Пифагоровы тройки. Определите предикат <strong>pythag </strong>такой что, задав вопрос</p>
    <p>?- pythag(X,Y,Z).</p>
    <p>и запрашивая альтернативные решения, мы получим столько разных Пифагоровых троек, сколько пожелаем. Подсказка: используйте предикаты, подобные <strong>целое_число </strong>из гл. <strong>4.</strong></p>
   </section>
   <section>
    <title>
     <p><strong>7.11. Символьное дифференцирование</strong></p>
    </title>
    <p>Символьным дифференцированием в математике называется операция преобразования одного арифметического выражения в другое арифметическое выражение, которое называется <emphasis>производной. </emphasis>Пусть <emphasis>U </emphasis>обозначает арифметическое выражение, которое может содержать переменную <emphasis>х. </emphasis>Производная от <emphasis>U </emphasis>по <emphasis>х </emphasis>записывается в виде <emphasis>dU/dx </emphasis>и определяется рекурсивно с помощью некоторых правил преобразования, применяемых к <emphasis>U. </emphasis>Вначале следуют два граничных условия. Стрелка означает «преобразуется в»; <emphasis>U </emphasis>и <emphasis>V </emphasis>обозначают выражения, а <emphasis>с</emphasis> – константу:</p>
    <p><emphasis>dc/dx </emphasis>&#8594; <emphasis>0 </emphasis></p>
    <p><emphasis>dx/dx </emphasis>&#8594; <emphasis>1 </emphasis></p>
    <p><emphasis>d(-U)/dx </emphasis>&#8594; <emphasis>-(dU/dx)</emphasis></p>
    <p><emphasis>d(U+V)/dx &#8594; dU/dx+dV/dx </emphasis></p>
    <p><emphasis>d(U-V)/dx </emphasis>&#8594; <emphasis>dU/dx-dV/dx </emphasis></p>
    <p><emphasis>d(cU)/dx </emphasis>&#8594; <emphasis>c(dU/dx) </emphasis></p>
    <p><emphasis>d(UV)/dx </emphasis>&#8594; <emphasis>U(dV/dx) + V(dU/dx) </emphasis></p>
    <p><emphasis>d(U/V)dx </emphasis>&#8594; <emphasis>d(UV<sup>-1</sup>)/dx </emphasis></p>
    <p><emphasis>d(U<sup>c</sup>)/dx </emphasis>&#8594; <emphasis>cU<sup>c</sup><sup>-</sup><sup>l</sup>(dU/dx) </emphasis></p>
    <p><emphasis>d(lnU)/dx </emphasis>&#8594; <emphasis>U<sup>-1</sup>(dU/dx)</emphasis></p>
    <p>Этот набор правил легко написать на Прологе, поскольку мы можем представить арифметические выражения как структуры и использовать знаки операций как функторы этих структур. Кроме того, сопоставление целевого утверждения с заголовком правила мы можем использовать как сопоставление образцов. Рассмотрим цель <strong>d(E,X, F)</strong>, которая считается согласованной, когда производная выражения <strong>E</strong> по константе<sup><a l:href="#n_12" type="note">[12]</a></sup> <strong>X</strong> есть выражение <strong>F</strong>. Помимо знаков операций +, -, *, /, которые имеют встроенные определения, нам нужно определить операцию ^, такую, что <strong>X^Y</strong> означаете <emphasis>x<sup>y</sup></emphasis>, а также одноместную операцию ~, такую что <strong>~Х</strong> означает «минус <strong>X</strong>». Эти определения операций введены исключительно для того, чтобы облегчить распознавание синтаксиса выражений. Например, после того как <strong>d</strong> определен, можно было бы задать следующие вопросы:</p>
    <empty-line/>
    <p>?- d(x+1,x,X). </p>
    <p>X = 1+0</p>
    <p>?- d(x*x-2,x,X).</p>
    <p> X = х*1+1*х-0</p>
    <empty-line/>
    <p>Заметим, что само по себе простое преобразование одного выражения в другое (на основе правил) не всегда дает результат в приведенной (упрощенной) форме. Приведение результата должно быть записано в виде отдельной процедуры (см. разд. 7.12). Программа дифференцирования состоит из определений дополнительных операций и построчной трансляции приведенных выше правил преобразования в утверждения Пролога:</p>
    <empty-line/>
    <p>?- op(10,yfx,^).</p>
    <p>?- op(9,fx,~). </p>
    <p>d(X,X,1):-!. </p>
    <p>d(C,X,0):- atomic(C). </p>
    <p>d(~U,X,~A):- d(U,X,A). </p>
    <p>d(U+V,X,A+B):- d(U,X,A), d(V,X,B). </p>
    <p>d(U-V,X,A-В):- d(U,X,A), d(V,X,B). </p>
    <p>d(C*U,X,C*A):- atomic(C), C\=X, d(U,X,A),!. </p>
    <p>d(U*V,X,B*U+A*V):- d(U,X,A), d(V,X,B). </p>
    <p>d(U/V,X,A):- d(U*V^~1),X,A).</p>
    <p>d(U^C,X,C*U^(C-1)*W):- atomic(C),C\=X,d(U,X,W). </p>
    <p>d(log(U),X,A*U^(~1)):- d(U,X,A).</p>
    <empty-line/>
    <p>Обратите внимание на два места, в которых задан предикат <strong>отсечения</strong>. В первом случае отсечение обеспечивает тот факт, что производная от переменной по ней самой распознается только первым утверждением, исключая возможность применения второго утверждения. Во втором случае предусмотрено два утверждения для умножения. Первое – для специального случая. Если имеет место специальный случай, то утверждение для общего случая должно быть устранено из рассмотрения.</p>
    <p>Как уже говорилось, данная программа выдает решения в неприведенной форме (т. е. без упрощений). Например, всякое вхождение <strong>х*1</strong> может быть приведено к х, а всякое вхождение вида <strong>х*1+1*х-0</strong> может быть приведено к <strong>2*х</strong>. В следующем разделе рассматривается программа алгебраических преобразований, которую можно использовать для упрощения арифметических выражений. Примененный способ очень похож на тот, каким выше выводились производные.</p>
   </section>
   <section>
    <title>
     <p>7.12. Отображение структур и преобразование деревьев</p>
    </title>
    <p>Если некоторая структура покомпонентно копируется с целью образования новой структуры, то мы говорим, что одна структура <emphasis>отображается </emphasis>в другую. Обычно при копировании каждая компонента слегка изменяется подобно тому, как в гл. 3 мы изменяли одно предложение, превращая его в другое. В том примере нам иногда нужно было скопировать какое-то слово в точности в том виде, в каком оно встретилось в исходном предложении, а иногда при копировании нам нужно было изменить слово. Для этого мы использовали следующую программу, которая <emphasis>отображает </emphasis>первый аргумент предиката <strong>преобразовать</strong> во второй его аргумент:</p>
    <empty-line/>
    <p>преобразовать([],[]).</p>
    <p>преобразовать([А|В],[С|D]):- заменить(А,С),преобразовать(В,D).</p>
    <empty-line/>
    <p>Поскольку отображение имеет довольно широкое применение, мы можем определить предикат <strong>отобспис</strong> такой, что целевое утверждение <strong>отобспис(Р, L, M)</strong> согласуется с базой данных, применяя предикат <strong>Р</strong> к каждому элементу списка <strong>L</strong> и образуя в результате новый список <strong>М</strong>. При этом предполагается, что предикат <strong>Р</strong> имеет два аргумента: первый аргумент для передачи «входного» элемента, а второй аргумент – для измененного элемента, подлежащего включению в список <strong>М</strong>.</p>
    <empty-line/>
    <p>отобспис((_,[],[]). </p>
    <p>отобспис((P,[X|L],[Y|M]):- Q =..[P,X,Y],call(Q),отобспис(Р,L,М).</p>
    <empty-line/>
    <p>Об этом определении следует сказать несколько слов. Во-первых, определение содержит граничное условие (первое утверждение) и общий рекурсивный случай (второе утверждение). Во втором утверждении используется оператор '=..', формирующий целевое утверждение на основе предиката <strong>(Р)</strong>, входного элемента <strong>(X)</strong> и переменной <strong>(Y)</strong>, которую предикат <strong>Р</strong> должен конкретизировать, чтобы образовать измененный элемент. Затем делается попытка согласовать цель <strong>Q</strong>, в результате чего <strong>Y</strong> конкретизируется, образуя голову третьего аргумента данного вызова предиката <strong>отобспис</strong>. Наконец, рекурсивный вызов отображает хвост первого аргумента в хвост второго.</p>
    <p>Функции предиката <strong>преобразовать</strong> может выполнять предикат <strong>отобспис</strong>. Полагая, что предикат <strong>заменить</strong> определен как в гл. 3, такое использование <strong>отобспис</strong> могло бы выглядеть следующим образом:</p>
    <empty-line/>
    <p>?- отобспис(заменить,[уоu,аrе,а,computer],Z). </p>
    <p>Z = [i, [am, not], a, computer]</p>
    <empty-line/>
    <p>Путем упрощения предиката <strong>отобспис</strong> получается предикат <strong>обрабспис</strong>, который просто обрабатывает список, применяя некоторый предикат от одного аргумента к каждому элементу списка. При этом новый список не порождается.</p>
    <empty-line/>
    <p>обрабспис(_,[]). </p>
    <p>обрабспис(Р,[Х|L]):-Q =…[Р,Х],call(Q),обрабспис(Р,L).</p>
    <empty-line/>
    <p>Заметим, что предикат <strong>печать_строки</strong> из гл. 5 можно было бы заменить запросом вида <strong>обрабспис(put, L)</strong>, где <strong>L</strong> – это строка, которую нужно напечатать.</p>
    <p>Отображение применимо не только к спискам; оно может быть определено для структуры любого вида. Например, рассмотрим арифметическое выражение, составленное из функторов * и +, имеющих по два аргумента. Пусть мы хотим отобразить одно выражение в другое, устраняя при этом все умножения на 1. Это алгебраическое приведение могло быть определено с помощью предиката <strong>s</strong> такого, что <strong>s(Op, L, R,Ans)</strong> означает, что выражение, состоящее из операции <strong>Ор</strong> с левым аргументом <strong>L</strong> и правым аргументом <strong>R</strong> приводится к упрощенному выражению <strong>Ans</strong>. Факты, необходимые для устранения умножений на 1, могли бы выглядеть так (из-за коммутативности умножения нужны два факта):</p>
    <empty-line/>
    <p>s(*,X,1,X). </p>
    <p>s(*,1,X,X).</p>
    <empty-line/>
    <p>Эта таблицы упрощений позволяет нам любое выражение вида 1*Х отобразить в X. Посмотрим, как можно воспользоваться этим в программе.</p>
    <p>При приведении выражения <strong>Е</strong> с помощью такой таблицы упрощений, мы вначале должны привести левый аргумент <strong>Е</strong>, затем привести правый аргумент <strong>Е</strong> и, наконец, посмотреть, подходит ли этот приведенный результат под случаи, предусмотренные в нашей таблице. Если это так, то мы порождаем новое выражение в соответствии с указаниями таблицы. В качестве «листьев» дерева, представляющего выражение, фигурируют целые числа или атомы, поэтому для приведения листьев к ним самим в граничном условии мы должны использовать встроенный предикат <strong>atomic. </strong>Как и выше, мы можем использовать ' =..', чтобы разложить выражение <strong>Е</strong> на функтор и компоненты;</p>
    <empty-line/>
    <p>привести(Е,Е):- atomic(E), 1. </p>
    <p>привести(Е,F):-Е =.. [Op,L,R],привести(L,Х),привести(R, Y),s(Op,X,Y,F).</p>
    <empty-line/>
    <p>Итак, предикат <strong>привести </strong>отображает выражение <strong>Е</strong> в выражение <strong>F</strong>, используя для этого факты, имеющиеся в таблице упрощений <strong>s</strong>. А что делать, если невозможны никакие упрощения? Чтобы избежать в этом случае неудачного завершения <strong>s(Op,X, Y, F), </strong>мы должны поместить в конец каждого раздела таблицы упрощений, относящегося к определенному оператору, правило-ловушку. Приведенная ниже таблица упрощений содержит правила для сложения и умножения. Кроме того, в ней выделены правила-ловушки для каждого вида операций.</p>
    <empty-line/>
    <p>s(+,X,0,X).</p>
    <p>s(+,0,X,X).</p>
    <p>s(+,X,Y,X + Y) /* ловушка для + */</p>
    <p>s(*,_,0,0).</p>
    <p>s(*,0,_,0).</p>
    <p>s(*,1,X,X).</p>
    <p>s(*,X,1,X).</p>
    <p>s(*,X,Y,X*Y). /* ловушка для * */</p>
    <p>При наличии правил-ловушек возникает вопрос о выборе способа упрощения некоторых выражений. Например, если нам дано выражение 3+0, мы можем либо использовать первый факт, либо применить правило-ловушку для +. Благодаря способу упорядочения фактов, прежде чем применить правило-ловушку Пролог всегда будет пытаться применить правила для специальных случаев. Поэтому первое решение, полученное предикатом <strong>привести, </strong>всегда будет являться действительно упрощенным выражением (если оно возможно). Однако альтернативные решения будут иметь не самый простой вид из всех возможных.</p>
    <p>Другое упрощение, используемое при выполнении алгебраических преобразований с помощью ЭВМ, известно как свертка констант. В выражении <strong>3*4+a</strong> константы 3 и 4 могут быть «свернуты», что дает в результате выражение <strong>12+а. </strong>Правила свертки констант могут быть добавлены <strong>в </strong>соответствующие места приведенной выше таблицы упрощений. Правило для сложения констант выглядит следующим образом:</p>
    <empty-line/>
    <p>s(+,X,Y,Z):- integer(X), integer(Y), Z is X+Y.</p>
    <empty-line/>
    <p>Соответствующие правила для других арифметических операций имеют аналогичный вид.</p>
    <p>В коммутативных операциях, таких как умножение и деление, указанные выше упрощения могут давать различный эффект на выражениях, которые записаны по-разному, но алгебраически эквивалентны. Например, если правило свертки констант задано для умножения, то предикат <strong>привести </strong>совершенно правильно преобразует <strong>2*3*а</strong> в <strong>6*а</strong>, но <strong>а*2*3</strong> или <strong>2*а*3</strong> будут преобразовываться в самих себя. Чтобы понять, почему это так, подумайте над тем, как выглядят деревья, представляющие эти выражения (см. рис. 7.4).</p>
    <p>В первом дереве самое нижнее умножение <strong>2*3</strong> можно свернуть, получив <strong>6</strong>, но во втором дереве нет поддеревьев, которые было бы можно свернуть. Однако, используя коммутативность умножения, можно добавить к таблице следующее правило, которое позволит справиться с данным конкретным случаем:</p>
    <empty-line/>
    <p>s(*,X*Y,W,X*Z):- integer(Y), integer(W), Z is Y*W.</p>
    <empty-line/>
    <p>Более общая алгебраическая система может быть построена путем простого добавления дополнительных s-утверждений вместо увеличения объема программы для <strong>привести.</strong></p>
    <image l:href="#pic_28.jpg"/>
    <p>Рис. 7.4</p>
   </section>
   <section>
    <title>
     <p><strong>7.13. Применение предикатов clause и retract</strong></p>
    </title>
    <p>В этой книге мы неоднократно сталкивались с применением встроенных предикатов. На самом деле многие из них можно определить на Прологе, используя более простые встроенные предикаты. В этом разделе мы рассмотрим несколько таких определений. Они могут найти практическое применение у тех программистов, которые используют неполную в каких-либо отношениях Пролог-систему, однако в любом случае они интересны, как примеры программирования на Прологе. Может быть, они наведут вас на мысль о разработке несколько отличающихся версий этих предикатов для своего собственного применения.</p>
    <p>Мы можем определить с помощью предиката <strong>clause </strong>некоторую версию процедуры <strong>listing. </strong>Определим предикат <strong>распеч1 </strong>такой, что при согласовании цели <strong>распеч1(Х) </strong>с базой данных из последней будут выводиться на печать утверждения, заголовки которых совпадают с <strong>X</strong>. Поскольку определение <strong>распеч1 </strong>включает использование предиката <strong>clause</strong>, у которого <strong>X</strong> задан как первый аргумент, то мы вынуждены поставить условие, что переменная <strong>X </strong>конкретизирована таким образом, что главный функтор утверждения известен. Рассмотрим определение <strong>распеч1</strong>:</p>
    <empty-line/>
    <p>распеч1(Х):-clause(Х,Y),выв_утвержд(Х,Y),write('.'),nl,fail. </p>
    <p>распеч1(Х).</p>
    <p>выв_утвержд(Х,true):-!, write(X). </p>
    <p>выв_утвержд(Х,Y):- write((X:- Y)).</p>
    <empty-line/>
    <p>При попытке согласовать с базой данных цель <strong>распеч1(Х) </strong>первое утверждение осуществляет поиск в базе данных такого утверждения, у которого заголовок совпадает с <strong>X</strong>. Если такое утверждение найдено, то оно выводится на печать и затем с помощью предиката <strong>fail </strong>инициируется механизм возврата. Возвратный ход опять приводит нас к предикату <strong>clause, </strong>который находит другое такое же утверждение, если оно имеется, и т. д. Когда таких утверждений больше нет, цель <strong>clause </strong>больше не удается согласовать с базой данных. В этом случае будет выбрано второе утверждение определения предиката <strong>распеч1, </strong>и потому цель будет согласована с базой данных. «Побочным эффектом» этих действий является печать соответствующих утверждений. Определение предиката <strong>выв_утвержд </strong>задает способ печати найденных утверждений. Выделяется специальный случай, когда тело утверждения есть <strong>true. </strong>В этом случае на печать выводится только заголовок утверждения. Иначе на печать выводится заголовок и тело утверждения, соединенные функтором ':-'. Отметим, что использование «отсечения» здесь имеет целью указать, что в случае, когда тело есть <strong>true, </strong>можно применять только первое правило. Поскольку данный пример построен на использовании механизма возврата, то задание отсечения здесь существенно.</p>
    <p>Встроенный предикат <strong>clause </strong>можно также применить при написании Пролог-интерпретатора на самом Прологе. Это означает, что мы можем определить действия, которые представляют собой выполнение Пролог-программы, причем исполнителем этих действий также является Пролог-программа. Ниже приводится определение предиката <strong>интерпрет </strong>такого, что цель <strong>интерпрет(Х) </strong>согласуется в том и только в том случае, когда <strong>X</strong>, рассматриваемая как цель, согласуется с базой данных.</p>
    <p>Предикат <strong>интерпрет </strong>напоминает встроенный предикат <strong>call, </strong>но является более ограниченным.</p>
    <empty-line/>
    <p>интерпрет(true):-!.</p>
    <p>интерпрет((Gl,G2)):-!, интерпрет(G1), интерпрет(G2).</p>
    <p>интерпрет(Цель):-clause(Цель,ЕщеЦели), интерпрет(ЕщеЦели).</p>
    <empty-line/>
    <p>Первые два утверждения рассчитаны на специальные случаи, когда цель есть <strong>true </strong>и когда цель представляет собой конъюнкцию целей. Последнее утверждение рассчитано на случай простой цели. Данная процедура находит утверждение, заголовок которого совпадает с заданной целью, и затем интерпретирует цели, входящие в тело этого утверждения. Заметим, что приведенное определение не рассчитано на программы, где используются встроенные предикаты, поскольку у таких предикатов нет определяющих их в обычном смысле утверждений.</p>
    <p>Рассмотрим определение предиката <strong>consult. </strong>Разумеется, предикат <strong>consult </strong>предусмотрен среди встроенных предикатов большинства Пролог-систем, однако интересно посмотреть, как он может быть определен на Прологе.</p>
    <empty-line/>
    <p>consult(Файл):-seeing(Input),sее(Файл),repeat,read(Tepм),обработать(Терм),seen,see(Input),!.</p>
    <p>обработать(Терм):- маркер_конца_файла(Терм),!. </p>
    <p>обработать((?- Q)):-!, call(Q),!, fail. </p>
    <p>обработать(Утвержд):- assertz(Утвержд), fail.</p>
    <empty-line/>
    <p>Это определение отличается рядом интересных особенностей. Во-первых, цель <strong>seeing(Input) </strong>и ее партнер <strong>see(Input) </strong>призваны гарантировать, что текущий файл ввода не будет «забыт» после применения предикат <strong>consult. </strong>Во-вторых, предикат <strong>маркер_конца_файла </strong>здесь использован без определения. По замыслу он должен быть истинным только в том случае, когда его аргумент конкретизирован термом, используемым для представления конца файла (который мог бы встретиться при выполнении <strong>read). В </strong>разных реализациях Пролога для представления «конца файла» используются разные термы, поэтому <strong>маркер_конца_файла </strong>в разных реализациях может быть определен по-разному. Одно из возможных определений выглядит так:</p>
    <empty-line/>
    <p>маркер_конца_файла(конец_файла).</p>
    <empty-line/>
    <p>В определении предиката <strong>обработать </strong>интересна организация выполнения соответствующих действий для каждого терма, считанного из входного файла. Целевое утверждение <strong>обработать </strong>доказуемо только, когда его аргументом является маркер конца файла. Иначе после соответствующего действия имитируется неудача доказательства и инициируется механизм возврата, который возвращает программу к предикату <strong>repeat. </strong>Отметим важность «отсечения» в конце определения предиката <strong>consult. </strong>Оно фиксирует выбор, сделанный предикатом <strong>repeat<a l:href="#n_13" type="note">[13]</a>. </strong>И последнее замечание. Если терм, считанный из файла, представляет собой вопрос (см. второе утверждение определения предиката <strong>обработать), </strong>то делается попытка немедленно согласовать соответствующую цель с помощью предиката <strong>call </strong>(см. разд. 6.7).</p>
    <p>В качестве примера использования предиката <strong>retract </strong>здесь приведено определение полезного предиката <strong>уберивсе. </strong>При согласовании с базой данных целевого утверждения <strong>уберивсе(Х) </strong>все утверждения, заголовки которых совпадают с <strong>X</strong>, удаляются из базы данных. Поскольку в данном определении используется предикат <strong>retract, </strong>то переменная <strong>X</strong> не может быть неконкретизированной, так как в противном случае не с чем будет сопоставлять утверждения из базы данных. Данное определение должно распознавать два вида утверждений с заголовками, совпадающими с <strong>X</strong>, - факты и правила. При обработке этих двух видов утверждений в вызове <strong>retract </strong>задаются разные аргументы. В определении используется то свойство, что <strong>retract </strong>будет срабатывать при возврате до тех пор, пока все утверждения, сопоставимые с его аргументами, не будут удалены из базы данных.</p>
    <empty-line/>
    <p>уберивсе(Х):- retract(X), fail. </p>
    <p>уберивсе(Х):- retract((X:- Y)), fail. уберивсе(_).</p>
    <empty-line/>
    <p>В качестве примера использования предиката <strong>убери </strong>все здесь приведено определение предиката <strong>reconsult </strong>на Прологе. Назначение предиката <strong>reconsult </strong>сходно с назначением предиката <strong>consult, </strong>с той лишь разницей, что при <strong>reconsult </strong>каждое считанное утверждение замещает существующее утверждение того же предиката, а не добавляется к нему (см. разд. 6.1).</p>
    <empty-line/>
    <p>reconsult(Файл):-уберивсе(сделано(_)),seeing(Старый),sее(Файл),repeat,read(Терм),проверить(Терм),seen,see(Старый),!.</p>
    <p>проверить(Х):- маркер_конца_файла(Х),!. </p>
    <p>проверить((?- Цели)):-!, call (Цели),!, fail.</p>
    <p>проверить(Утверждение):-заголовок(Утверждение, Заголовок), запись_сделана(3аголовок), assertz(Утверждение), fail.</p>
    <p>запись_сделана(3аголовок):- сделано(Заголовок),!. </p>
    <p>запись_сделана(3аголовок):- functor(Заголовок,Func,Arity), functor(Proc,Func,Arity), asserta(cдeлaнo(Proc)), уберивсе(Ргос),!.</p>
    <p>заголовок((А:- В), А):-!. </p>
    <p>заголовок (А, А).</p>
    <empty-line/>
    <p>Это определение похоже на определение <strong>consult, </strong>в котором вместо предиката <strong>обработать</strong> используется предикат <strong>проверить. </strong>Основное различие заключено в предикате <strong>запись_сделана</strong>. Когда в файле появляется первое утверждение для данного предиката, то, прежде чем к базе данных будет добавлено хотя бы одно новое утверждение, из нее должны быть удалены все старые утверждения для данного предиката. Удаление этих утверждений нельзя откладывать до момента, когда в базе данных появятся их новые версии, поскольку в этом случае мы удалили бы из базы данных те утверждения, которые только что были введены. Как же определить, что некоторое утверждение в файле является первым для соответствующего предиката? Ответ заключается в том, что мы регистрируем в базе данных предикаты, для которых уже нашлись утверждения в файле. Это делается с помощью предиката <strong>сделано</strong>. Когда из файла считывается первое утверждение например, для предиката <strong>foo </strong>с двумя переменными, то имеющиеся утверждения удаляются и новое утверждение добавляется к базе данных. Кроме того, к базе данных добавляется факт:</p>
    <empty-line/>
    <p>сделано(foo(_,_)).</p>
    <empty-line/>
    <p>В дальнейшем, при чтении остальных утверждений для предиката <strong>too, </strong>мы сможем проверить, что старые утверждения уже удалены из базы данных. Тем самым удается избежать ошибочного удаления новых утверждений. Для данного определения важно, что мы не добавляем в базу данных что-нибудь вроде:</p>
    <empty-line/>
    <p>сделано(foо(а,Х)).</p>
    <empty-line/>
    <p>поскольку в этом случае аргумент предиката <strong>сделано </strong>не обязательно совпадает с заголовком утверждения для <strong>foo. </strong>Пара запросов</p>
    <p>…,functor(Заголовок,Func,Arity),functor(Proc,Func,Arity),…</p>
    <p>конкретизирует <strong>Ргос </strong>структурой, имеющей тот же функтор, что и заголовок <strong>Заголовок</strong>, но с переменными в качестве аргументов (см. разд. 6.5).</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 8. ОТЛАДКА ПРОЛОГ-ПРОГРАММ</p>
   </title>
   <section>
    <p>На приведенных выше примерах вы уже приобрели опыт применения программ и научились их изменять, а также успели написать и свои собственные программы. Теперь самое время заняться вопросом: что делать, когда программа ведет себя не так, как ожидалось. Подобные неожиданности связаны с наличием ошибок в программе, а процесс устранения этих ошибок называется отладкой. По нашему убеждению самым разумным подходом к программированию является тот, который может быть охарактеризован как «программирование с предупреждением ошибок». Перефразируя старую поговорку, можно сказать, что <emphasis>грамм тщательного программирования стоит килограмма отладки. </emphasis>В этой главе мы расскажем о некоторых методах отладки, но начнем с того, как избежать проникновения ошибок в программы. Сознавая, что в общем виде эта проблема неразрешима, мы хотим просто поделиться некоторыми неформальными приемами, которые уже приносили пользу другим программистам, работающим на Прологе.</p>
    <p>Как и всякое творчество, будь то сочинение музыки, литература или архитектура, программирование располагает множеством способов <emphasis>представления </emphasis>объектов и <emphasis>обработки </emphasis>этих объектов и отношений между ними в конкретной программе. В общем случае для некоторого элемента данных в программе существует несколько возможных способов его представления или обработки. Всякий раз, когда программист решает использовать в данной программе один из них, мы говорим, что программист принял <emphasis>проектное решение.</emphasis></p>
    <p>Новички, впервые столкнувшиеся с задачей выбора проектных решений, часто испытывают трудности. Помочь им может знание возможных вариантов решений, и, кроме того, важно, чтобы руководитель разъяснил им методику программирования в целом, поскольку искусство принятия проектных решений в программировании – это самостоятельная дисциплина. Мы уже пытались затронуть эту проблему в разд. 1.1, где обсуждались различные способы интерпретации утверждений. Эти вопросы связаны с <emphasis>представлением </emphasis>объектов и отношений. В разд. 7.7 мы снова столкнулись с этой проблемой при описании трех различных способов упорядочения списка объектов. Эти вопросы связаны с разными способами <emphasis>обработки </emphasis>объектов и отношений.</p>
    <p>В данной книге мы старались оказать помощь в выборе проектных решений двумя путями. Во-первых, наличие в книге большого числа примеров программ должно способствовать усвоению идей некоторых решений, выработанных опытными программистами. Во-вторых, в данной главе можно найти некоторые советы и рекомендации, специфические для Пролога.</p>
   </section>
   <section>
    <title>
     <p>8.1. Расположение текстов программ</p>
    </title>
    <p>После того как программист принял решение о том, как представлять и обрабатывать объекты и отношения в программе, ему следует убедиться в том, что текст программы расположен удобно для чтения и ее синтаксические конструкции ясны. Набор утверждений для данного предиката называется <emphasis>процедурой. </emphasis>Возможно, вы уже обратили внимание на то, что в примерах данной книги каждое утверждение в процедуре начинается с новой строки, а между собой процедуры разделяются одной пустой строкой. Например, один из способов определения предиката эквивалентности для множеств (при представлении множеств в виде списков) состоит в использовании трех предикатов, каждый из которых определяется с помощью процедуры из двух строк:</p>
    <empty-line/>
    <p>равмнож(Х,Х):-!. </p>
    <p>равмнож(Х,Y):- равспис(Х,Y).</p>
    <p>равспис([],[]).</p>
    <p>равспис([Х|L1],L2):- удалить(Х,L2,LЗ), равспис(L1,LЗ).</p>
    <p>удалить(Х,[Х|Y],Y).</p>
    <p>удалить(Х,[Y|L1],[Y|L2]):- удалить(Х,L1,L2).</p>
    <empty-line/>
    <p>Данный пример, возможно, не является наилучшим определением эквивалентности множеств, однако он показывает, как нужно размещать тексты процедур. Заметим, что утверждения каждой процедуры сгруппированы вместе, а процедуры разделяются пустой строкой. Другое соглашение, которого придерживаются многие программисты на Прологе, - это писать каждое утверждение на отдельной строке, если оно на ней умещается. Если нет, то писать заголовок утверждения и знак ':-' на первой строке, а каждую цель в конъюнкции целей писать с новой строки со сдвигом. Для примера рассмотрим запись программы порождения всех перестановок списка:</p>
    <empty-line/>
    <p>перест([],[]). </p>
    <p>перест(L,[Н|Т]):-</p>
    <p> присоединить(Y,[Н|U],L), </p>
    <p> присоединить(V,U,W), </p>
    <p> перест(W,T).</p>
    <p>В этом определении перестановки элементов списка выполняет предикат <strong>присоединить, </strong>а механизм возврата при каждой попытке вновь согласовать целевое утверждение <strong>перест(Х, Y)</strong> обеспечивает порождение из <strong>X</strong> новой перестановки <strong>Y</strong>. Следует обратить внимание на способ размещения на странице конъюнктов второго утверждения.</p>
    <p>Главное – остановить свой выбор на каком-либо согласованном наборе правил оформления текста программы, а на каком – не так уж важно. Как правило, полезно добавлять комментарии, надлежащим образом группировать термы, в случае сомнений относительно приоритета выполнения операций – использовать круглые скобки, а также разумно распоряжаться пустым пространством (пробелами и пустыми строками). Комментарии должны подсказывать, как следует интерпретировать аргументы структур или утверждений: в каком порядке они поступают и каким структурам данных (константам или структурам) они должны соответствовать. Полезно также указывать в комментариях, как должны конкретизироваться переменные в результате согласования данного утверждения с базой данных.</p>
    <p>В плане общей организации программы полезно разделять текст программы на более или менее замкнутые части, например, желательно, чтобы все процедуры обработки списков оказались в одном и том же файле. Процедура Пролога, содержащая более пяти – десяти правил, может оказаться трудной для понимания, поэтому путем определения более мелких предикатов попытайтесь как можно более естественным образом разбить ее на части. Если в программе используется много фактов, таких как правила упрощения из разд. 7.12, то все эти факты должны содержаться в одном файле. Большое количество фактов легче читается, чем большое количество правил, и хотя даже несколько правил могут быть трудны для понимания, многие страницы описания конкретного факта могут не вызвать затруднений, поскольку сама семантика фактов более проста.</p>
    <p>Еще один момент, который влияет на легкость чтения Пролог-программ, - это использование точки с запятой («или») и восклицательного знака («отсечение»). С проблемами, связанными с чрезмерно широким использованием «отсечения», мы познакомились в гл. 4. Всегда следует пытаться обойтись без ';', возможно за счет дополнительных утверждений. Например, следующая программа:</p>
    <empty-line/>
    <p>nospy(X):- </p>
    <p> проверить(Х,Функтор,ЧисАрг,А), !, </p>
    <p> (контрточка(_,Функтор,А), !,</p>
    <p>  (отказ(контрточка(Заголовок, Функтор, ЧисАрг),_), </p>
    <p>  устконтрточку(Заголовок, Тело), </p>
    <p>  отказ(3аголовок, Тело), </p>
    <p>  write('контр.точка с терма'), печтерм(Функтор, ЧисАрг),</p>
    <p>  write(' удалена.'),nl, </p>
    <p>  fail</p>
    <p>   ; true</p>
    <p> )</p>
    <p> ; write('Heт контр.точек на терме'), </p>
    <p>  write(X), put(46), nl</p>
    <p>),</p>
    <p>!.</p>
    <empty-line/>
    <p>гораздо труднее для понимания, нежели:</p>
    <p>nospy(X):-проверить(Х,Функтор,ЧисАрг,А),!,</p>
    <p>попыт_убр(Х,Функтор,ЧисАрг,А). </p>
    <p>попыт_убр(_,Функтор, ЧисАрг,А):- контрточка(_,Функтор,А),!,убрконтрточку(Функтор, ЧисАрг, А).</p>
    <p>попыт_убр(Х,_,_,_):- write('Heт контр.точек на терме '), write(X), put(46), nl,!. </p>
    <p>убрконтрточку(Функтор, ЧисАрг, А):- </p>
    <p> отказ(контрточка(Заголовок,Функтор, ЧисАрг), _), устконтрточку(Заголовок,Тело), отказ(3аголовок, Тело), </p>
    <p> write('Koнтp.точка с терма'), печтерм(Функтор, ЧисАрг), write(' удалена.'), nl, fail.</p>
    <p>убрконтрточку (_,_,_).</p>
    <empty-line/>
    <p>которая делает в точности то же самое. Если же вам действительно необходимо использовать «или», то полезно так организовать текст конъюнкции целей, чтобы «или» не терялось среди целей. Полезно также заключить соответствующие цели в скобки, чтобы явно выделить область действия этого «или».</p>
    <p>На протяжении всей книги подчеркивалась важность умения учитывать при решении многих задач наряду с общим правилом и граничные условия. Всюду, где это возможно, мы старались разместить граничные условия перед всеми другими утверждениями процедуры. Это выделяет граничные условия и, кроме того, служит в какой-то мере защитой от циклических определений. Однако бывают случаи, когда желательно размещать граничные условия после всех утверждений процедуры. Очевидно, что правила-«ловушки», с которыми мы уже сталкивались несколько раз, нужно размещать в конце процедуры.</p>
    <p>Разбирая Пролог-процедуру <emphasis>всегда </emphasis>полезно обращать внимание на следующие важнейшие моменты ее записи:</p>
    <p>• Проверьте <emphasis>посимвольно, </emphasis>как записано имя каждого предиката и каждой переменной в процедуре. Ошибки в написании имен довольно распространены.</p>
    <p>• Проверьте <emphasis>число аргументов </emphasis>каждого функтора, используемого в процедуре. Убедитесь в том, что число аргументов (и порядок их следования) соответствуют вашим проектным решениям.</p>
    <p>• Выделите из утверждений все <emphasis>операторы </emphasis>и определите их приоритет, ассоциативность, а также то, где находятся их аргументы. Это можно сделать на основании определений операторов, и исходя из наличия скобок. Если есть сомнения, добавьте дополнительные скобки. Для проверки соответствия действия оператора вашим представлениям попробуйте распечатать некоторые простые термы, используя display.</p>
    <p>• Обратите внимание на <emphasis>область определения </emphasis>каждой переменной и выделите в этой области переменные, сходные с ней по имени. Проследите, какие переменные «сцепляются», когда одной из них будет присвоено значение. Проверьте, встречаются ли в теле утверждения переменные из его заголовка.</p>
    <p>• Постарайтесь определить, какие переменные конкретизированы, а какие нет в момент перед применением утверждения.</p>
    <p>• Выделите утверждения, составляющие граничные условия. Проверьте, учтены ли все возможные граничные условия.</p>
    <p>После того как подобным образом процедура будет разобрана «по косточкам», вы поймете ее гораздо лучше.</p>
   </section>
   <section>
    <title>
     <p>8.2. Типичные ошибки</p>
    </title>
    <p>В этом разделе мы рассмотрим те ошибки, которые допускают как начинающие, так и опытные программисты, использующие Пролог. Эти ошибки делятся на две группы: <emphasis>синтаксические </emphasis>ошибки и ошибки <emphasis>управления последовательностью </emphasis>обработки.</p>
    <p>После того, как программист решил, какую программу он будет писать и как разместит ее текст на странице печатающего устройства (или на экране видеотерминала), ему остается ввести текст программы, записав его в файл или непосредственно в базу данных Пролог-системы. Основная задача данного этапа – это обеспечить <emphasis>синтаксическую </emphasis>правильность программы. Ниже приводится список типичных синтаксических ошибок. Если программист сам не выявит эти ошибки, то при попытке выполнить предикат <strong>consult</strong> Пролог может выдать соответствующее сообщение.</p>
    <p>• Одной из типичных синтаксических ошибок является отсутствие точки '.' в конце утверждения. Точкой должен заканчиваться и любой терм, считываемый с помощью предиката <strong>read</strong>. После точки нужно оставлять хотя бы один пробел. Поэтому избегайте заканчивать файл вместе с вводом точки последнего утверждения – убедитесь в том, что в самом конце вы не забыли нажать клавишу <strikethrough>RETURN</strikethrough>.</p>
    <p>• Некоторые специальные литеры используются парами. К ним относятся круглые скобки '(' и ')', используемые для группирования термов, квадратные скобки '[' и ']', используемые для задания списков, и фигурные скобки '{' и '}', используемые для записи правил грамматики (см. гл. 9). Сюда же относятся двойные кавычки '"' используемые для ограничения строк и одиночная кавычка '", используемая для задания атомов. Составные скобки '/*' и '*/' используются для ограничения комментариев. Убедитесь, что скобок каждого вида задано не больше и не меньше чем необходимо.</p>
    <p>• Остерегайтесь неправильного написания слов, особенно имен встроенных предикатов. Это может привести к самым неожиданным ошибкам, поскольку неверно записанные имена предикатов вряд ли сопоставятся с каким-либо утверждением в базе данных. Или наоборот, они могут неожиданно сопоставиться с утверждениями, заголовок которых случайно совпадает с получившимся именем.</p>
    <p>• Еще одним источником возможных ошибок являются операторы. Когда вы не уверены в ассоциативных свойствах оператора, то используйте круглые скобки, чтобы задать нужные свойства явно. Проверяйте экспериментально действие введенных вами операторов с помощью предиката <strong>display</strong>.</p>
    <p>• Когда имеете дело с операциями над списками, проверяйте себя с помощью следующих вопросов и ответов:</p>
    <p>• Как сопоставляются <strong>[а,b,с]</strong> и <strong>[X|Y]</strong>? (<strong>X</strong> <emphasis>конкретизируется значением </emphasis><strong>a</strong>, a <strong>Y </strong>- <emphasis>значением </emphasis><strong>[b,с]</strong>).</p>
    <p>• Сопоставимы ли <strong>[а]</strong> и <strong>[X|Y]</strong>? <emphasis>(Да, причем </emphasis><strong>X </strong><emphasis>конкретизируется значением </emphasis><strong>a</strong>, <emphasis>a </emphasis><strong>Y</strong> – <emphasis>значением </emphasis><strong>[]</strong>).</p>
    <p>• Сопоставимы ли <strong>[]</strong> и <strong>[X|Y]</strong>? <emphasis>(Нет).</emphasis></p>
    <p>• Имеет ли смысл запись<strong>[X, Y|Z]</strong>? <emphasis>(Да).</emphasis></p>
    <p>• Имеет ли смысл запись <strong>[X|Y,Z]</strong>? <emphasis>(Нет).</emphasis></p>
    <p>• Имеет ли смысл запись <strong>[Х|[Y|Z]</strong>? <emphasis>(Да, это то же самое, что </emphasis><strong>[X,Y|Z]</strong>)</p>
    <p>• Как сопоставляются <strong>[a, b]</strong> и <strong>[А |В]</strong>? (<strong>А</strong> <emphasis>конкретизируется значением </emphasis><strong>а</strong>, а <strong>В </strong>- <emphasis>значением </emphasis><strong>[b]</strong><emphasis>).</emphasis></p>
    <p>• Существует ли более одного способа сопоставления приведенных выражений? <emphasis>(Нет, никогда).</emphasis></p>
    <p>Необходимо подчеркнуть, что когда приходится иметь дело со списками или другими структурами подобного рода, полезно прибегать к помощи «древовидных диаграмм», о которых говорилось в гл. 2.</p>
    <p>Даже в тех случаях, когда вы уверены, что в программе нет синтаксических ошибок, она все-таки при попытке согласования целевых утверждений может вести себя непредсказуемо; характерными признаками этого являются: впечатление, что программа никогда не остановится («бесконечный цикл»), неожиданные появления отрицательных ответов <strong>(нет)</strong>, или конкретизация переменных не теми значениями, какие ожидались. Приведем обычные причины подобных ошибок:</p>
    <p>• Циклические определения, о которых упоминалось в гл. 3.</p>
    <p>• Недостаточность граничных условий или какая-либо другая недоопределенность задачи.</p>
    <p>• Бесполезные процедуры, которые переопределяют встроенные предикаты.</p>
    <p>• Задание неверного количества аргументов для функтора. Это не рассматривается как синтаксическая ошибка, поскольку количество аргументов функтора может быть разным.</p>
    <p>• Неожиданный выход на конец файла при выполнении предиката чтения <strong>read</strong>.</p>
    <p>Остерегайтесь следующих заблуждений относительно принципов работы механизма возврата:</p>
    <p>•<emphasis> Заблуждение: </emphasis>Одна из причин использования возвратного хода состоит в том, что Пролог может вернуться к предыдущему сопоставлению и выполнить его снова некоторым другим способом. </p>
    <p><emphasis>На самом деле: </emphasis>Когда Пролог просматривает базу данных, пытаясь сопоставить цели что-либо из базы данных (какой-нибудь факт или заголовок правила), то сопоставление бывает либо успешным, либо неудачным. Пролог никогда не делает возвратный ход ни к какому сопоставлению, в попытке осуществить его по-другому, поскольку сопоставить конкретную цель с конкретным утверждением в базе данных можно только одним-единственным способом.</p>
    <p>•<emphasis> Заблуждение: </emphasis>Запись списка <strong>[X|Y]</strong> может быть сопоставлена с любым отрезком списка, и при этом разбиение списков на части может быть осуществлено несколькими разными способами. Именно этим объясняется действие предиката <strong>присоединить (X, Y, [a,b,c,d]).</strong></p>
    <p><emphasis>На самом деле: </emphasis>В записи списка <strong>[X|Y] X </strong>сопоставляется только с головой списка, a <strong>Y</strong> сопоставляется только с его хвостом. Цели с предикатом <strong>присоединить </strong>способны находить разные разбиения списков благодаря возможностям возвратного хода, а не возможностям сопоставления.</p>
   </section>
   <section>
    <title>
     <p>8.3. <strong>Модель трассировки</strong></p>
    </title>
    <p>Метод, используемый Прологом при попытках согласовать цели с базой данных, можно рассматривать с разных точек зрения. Мы уже познакомились с одной моделью описания этого метода, которую можно представить в виде «цепочки доказательств», проходящей через прямоугольники, изображающие цели. Теперь мы познакомимся с другой моделью описания работы Пролога, которая применяется во многих средствах отладки программ, таких как <strong>трассировка. </strong>Существованием этой модели мы обязаны главным образом нашему коллеге Лоренсу Бэрду. Вам следует изучить эту модель, прежде чем вы приступите к использованию средств отладки Пролога.</p>
    <p>При использовании трассировки Пролог-система выводит на печать информацию о последовательности отработки целей, чтобы показать, какой стадии выполнения достигла программа. При этом, для того чтобы разобраться в том, что происходит, важно понять, когда и почему определенные цели выводятся на печать. В обычных языках программирования особый интерес представляют моменты входа в подпрограммы и выхода из них. Однако Пролог допускает написание недетерминированных программ, а это вносит сложности, связанные с механизмом возврата. Дело не ограничивается последовательностью входов в утверждения и выходов из них. Механизм возврата может неожиданно вновь запустить выполнение каких-либо утверждений, чтобы построить альтернативное решение. Кроме того предикат отсечения 'Г указывает для каких целей нельзя искать другие решения. Наибольшие трудности, с которыми приходится сталкиваться начинающим программистам, связаны именно с пониманием принципов работы механизма возврата: что на самом деле происходит, когда попытка согласования цели завершается неудачей и система неожиданно начинает возвратный ход. Мы надеемся, что этот процесс достаточно подробно описан в предыдущих главах. Впрочем, в предыдущих главах рассматривалась не только последовательность обработки целей, но также и то, как происходит конкретизация переменных, как цели сопоставляются с заголовками утверждений из базы данных, и, наконец, как согласуются с базой данных подцели. В модели трассировки выполнение Пролог-программ описывается в терминах четырех видов происходящих событий: CALL(ВЫЗОВ), ЕХIT(ВЫХОД), REDО(ПЕРЕДЕЛКА), FAIL(HEУДАЧА).</p>
    <subtitle>CALL</subtitle>
    <p>Событие CALL фиксирует начало попытки Пролога согласовать цель с базой данных. На наших диаграммах это обозначено стрелкой, входящей в прямоугольник сверху.</p>
    <subtitle>EXIT</subtitle>
    <p>Событие EXIT фиксирует момент, когда некоторая цель только что согласована с базой данных. На наших диаграммах это обозначается стрелкой, выходящей снизу из прямоугольника.</p>
    <subtitle>REDO</subtitle>
    <p>Событие REDO фиксирует момент, когда система возвращается к цели, пытаясь повторно согласовать ее с базой данных. На наших диаграммах это обозначается стрелкой, которая возвращается в прямоугольник снизу.</p>
    <subtitle>FAIL</subtitle>
    <p>Событие FAIL фиксирует момент, когда попытка согласовать цель с базой данных заканчивается неудачно. На наших диаграммах это соответствует выходу стрелки вверх из прямоугольника.</p>
    <p>Средства отладки сообщают нам о моментах возникновения событий этих четырех видов в ходе выполнения наших программ. Эти события будут происходить со всеми целями, которые Пролог рассматривает во время выполнения программы. Чтобы можно было различать, к каким целям относятся происходящие события, каждой цели присваивается уникальный целочисленный идентификатор, который называется его <emphasis>номером обращения.</emphasis></p>
    <p>Обратимся к примеру. Рассмотрим следующее определение предиката <strong>потомок:</strong></p>
    <empty-line/>
    <p>потомок(Х,Y):- отпрыск(Х,Y). </p>
    <p>потомок(X,Z):- отпрыск(Х,Y), потомок(Y,Z).</p>
    <empty-line/>
    <p>Этот фрагмент программы находит прямых потомков некоторого лица по заданным в базе данных фактам <strong>отпрыск, </strong>например:</p>
    <empty-line/>
    <p>отпрыск(авраам,измаил).</p>
    <p>отпрыск(авраам,исаак).</p>
    <p>отпрыск(исаак,исав).</p>
    <p>. . .</p>
    <empty-line/>
    <p>Первое утверждение программы указывает, что <strong>Y</strong> является потомком <strong>X</strong> если <strong>Y</strong> есть отпрыск <strong>X</strong>, а второе утверждение указывает, что <strong>Z</strong> является потомком <strong>X</strong> если <strong>Y</strong> есть отпрыск <strong>X</strong> и если <strong>Z </strong>является потомком <strong>Y</strong>. Рассмотрим вопрос:</p>
    <empty-line/>
    <p>?- потомок(авраам,Ответ), fail.</p>
    <empty-line/>
    <p>и проследим за ходом выполнения программы чтобы увидеть, когда возникают разные события указанных видов. Важно, чтобы вы попытались проследить за процессом трассировки, мысленно воссоздавая поведение цепочки доказательств, которая входит в прямоугольники, обозначающие цели и выходит из них. Время от времени мы будем представлять текущее состояние в виде диаграмм.</p>
    <p>В заданном вопросе после первой цели следует <strong>fail</strong>. Это сделано для того, чтобы инициировать механизм возврата и тем самым, получить все возможные решения для цели потомок. Таким образом, в целом вопрос никак не может иметь положительного ответа. Однако цель нашей трассировки состоит в том, чтобы наглядно представить себе ход выполнения программы, вызванный несогласуемостью второй цели <strong>(fail).</strong></p>
    <p>В начале мы имеем прямоугольники, обозначающие две цели, в которые пока не входила стрелка, представляющая цепочку доказательств (см. рис. 8.1). Первое событие состоит в ВЫЗОВе (CALL) цели <strong>потомок. </strong>Это - обращение номер 1.</p>
    <image l:href="#pic_29.jpg"/>
    <p>Риc. 8.1</p>
    <p>(1) CALL: потомок(авраам,Ответ)</p>
    <p>(2) CALL: отпрыск(авраам,Ответ)</p>
    <p>Мы сопоставили с целью первое утверждение процедуры потомок и это привело к ВЫЗОВ цели <strong>отпрыск. </strong>В результате возникла ситуация, где стрелка движется вниз (см. рис. 8.2). Мы продолжаем:</p>
    <image l:href="#pic_30.jpg"/>
    <empty-line/>
    <p>Рис. 8.2.</p>
    <p>(2) EXIT: отпрыск (авраам,измаил)</p>
    <p>Сразу успешно согласуется первое утверждение и следует ВЫХОД <strong>(EXIT) </strong>из цели.</p>
    <p>(1) EXIT<strong>: </strong>потомок(авраам,измаил)</p>
    <p>Таким образом, мы согласовали первое утверждение процедуры <strong>потомок.</strong></p>
    <p>(3) CALL: fail</p>
    <p>(3) FAIL: fail</p>
    <p>(1) REDO: потомок(авраам,измаил)</p>
    <p>Затем мы пытаемся согласовать <strong>fail, </strong>и, как и следовало ожидать, эта попытка завершается НЕУДАЧЕЙ (FAIL). Стрелка возвращается из прямоугольника <strong>fail </strong>назад выше в прямоугольник <strong>потомок. </strong>Изображение этой ситуации приведено на рис. 8.3. Стрелка движется вверх. Продолжаем:</p>
    <image l:href="#pic_31.jpg"/>
    <empty-line/>
    <p>Рис. 8.3.</p>
    <p>(2) REDO: отпрыск(авраам,измаил) </p>
    <p>(2) EXIT: отпрыск(авраам,исаак)</p>
    <p>Для цели <strong>отпрыск </strong>выбрано альтернативное утверждение. Поэтому стрелка может снова выйти вниз из этого прямоугольника.</p>
    <p>(1) EXIT: потомок(авраам,исаак)</p>
    <p>(4) CALL: fail</p>
    <p>(4) FAIL: fail</p>
    <p>(1) REDO: потомок(авраам,исаак)</p>
    <p>И снова <strong>fail </strong>заставляет нас отвергнуть это решение и начать возвратный ход. Заметим, что это было совершенно новое обращение к <strong>fail </strong>(мы вошли в него заново «сверху»).</p>
    <p>(2) REDO: отпрыск(авраам,исаак) </p>
    <p>(2) FAIL: отпрыск(авраам,Ответ)</p>
    <p>На этот раз мы не можем предложить другое сопоставление для цели <strong>отпрыск, </strong>и потому продолжаем возвратный ход, стрелка отступает вверх, покидая прямоугольник <strong>отпрыск.</strong></p>
    <p>(5) CALL: отпрыск(авраам,Y)</p>
    <p>Здесь произошло следующее: мы выбрали второе утверждение процедуры <strong>потомок </strong>и выполнили совершенно новое обращение <strong>к отпрыск, </strong>соответствующее первой подцели (рис. 8.4). Стрелка теперь снова движется вниз. Продолжаем:</p>
    <image l:href="#pic_32.jpg"/>
    <empty-line/>
    <p>Рис. 8.4.</p>
    <p>(5) EXIT: отпрыск(авраам,измаил)</p>
    <p>(6) CALL: потомок(измаил,Ответ)</p>
    <p>Это дает решение, с которым мы теперь уже рекурсивно вызываем <strong>потомок. </strong>Следует новое обращение к <strong>потомок.</strong></p>
    <p>(7) CALL: отпрыск(измаил,Ответ)</p>
    <p>(7) FAIL<strong>: </strong>отпрыск(измаил,Ответ)</p>
    <p>(8) CALL<strong>: </strong>отпрыск(измаил, Y2)</p>
    <p>(8) FAIL<strong>: </strong>отпрыск(измаил,Y2) </p>
    <p>(6) FAIL<strong>: </strong>потомок(измаил,Ответ)</p>
    <p>У Измаила нет детей (в данном примере) поэтому в обоих утверждениях процедуры <strong>потомок </strong>подцель <strong>отпрыск </strong>завершается неудачей, что приводит к неудаче всей цели потомок. </p>
    <p>(5) REDO: отпрыск(авраам,измаил)</p>
    <p>Мы возвращаемся назад для выбора новой альтернативы.</p>
    <p>(5) EXIT: отпрыск(авраам.исаак)</p>
    <p>(9) CALL: потомок(исаак,Ответ)</p>
    <p>(10) CALL: отпрыск(исаак,Ответ) </p>
    <p>(10) EXIT: отпрыск(исаак,исав)</p>
    <p>Запускаем новое обращение <strong>к потомок </strong>и попытка согласовать подцель <strong>отпрыск </strong>завершается удачно (рис. 8.5). Продолжаем:</p>
    <image l:href="#pic_33.jpg"/>
    <p>(9) EXIT: потомок(исаак,исав)</p>
    <p>(1) EXIT: потомок(авраам,исав)</p>
    <p>(11) CALL: fail</p>
    <p>(11) FAIL: fail</p>
    <p>(1) REDO: потомок(исаак,исав)</p>
    <p>(9) REDO: потомок(исаак,исав)</p>
    <p>Это дает окончательное решение исходного вопроса, однако fail вновь вынуждает включиться механизм возврата, поэтому мы возвращаемся назад по событиям REDO:</p>
    <p>(10) REDO: отпрыск(исаак,исав) </p>
    <p>(10) EXIT: отпрыск(исаак,иаков) </p>
    <p>(9) EXIT: потомок(исаак,иаков) </p>
    <p>(1) EXIT: потомок(авраам,иаков)</p>
    <p>Для подцели <strong>отпрыск </strong>найдено другое сопоставление, которое порождает другой результат для исходной цели <strong>потомок. </strong>Уже сейчас можно заметить, что это последний потомок Авраама, однако еще остается выполнить определенный объем работы. Проследим далее за последовательностью событий по мере того, как механизм возврата заставляет нас отступать к началу.</p>
    <p>(12) CALL: fail</p>
    <p>(12) FAIL: fail</p>
    <p>(1) REDO: потомок(авраам,иаков)</p>
    <p>(9) REDO: потомок(исаак,иаков)</p>
    <p>(10) REDO: отпрыск(исаак,иаков) </p>
    <p>(10) FAIL: отпрыск(исаак,Ответ)</p>
    <p>(13) CALL: отпрыск(исаак,YЗ)</p>
    <p>Теперь мы пытаемся применить второе утверждение процедуры <strong>потомок.</strong></p>
    <p>(13) EXIT: отпрыск(исаак,исав)</p>
    <p>(14) CALL; потомок(исав, Ответ)</p>
    <p>Еще одна рекурсия</p>
    <p>(15) CALL: отпрыск(исав,Ответ)</p>
    <p>(15) FAIL: отпрыск(исав,Ответ)</p>
    <p>(16) CALL: отпрыск(исав,Y4)</p>
    <p>(16) FAIL: отпрыск(исав,Y4) </p>
    <p>(14) FAIL: потомок(исав,Ответ) </p>
    <p>(13) REDO: отпрыск(исаак,исав) </p>
    <p>(13) EXIT: отпрыск(исаак,иаков)</p>
    <p>(17) CALL: потомок(иаков,Ответ)</p>
    <p>Пытаемся использовать Иакова.</p>
    <p>(18) CALL: отпрыск (иаков,Ответ)</p>
    <p>(18) FAIL: отпрыск (иаков, Ответ)</p>
    <p>(19) CALL: отпрыск(иаков,Y5) </p>
    <p>(19) FAIL: отпрыск (иаков, Y5) </p>
    <p>(17) FAIL: потомок(иаков,Ответ) </p>
    <p>(13) REDO: отпрыск(исаак,иаков) </p>
    <p>(13) FAIL: отпрыск(исаак,YЗ)</p>
    <p>(9) FAIL: потомок(исаак,Ответ) </p>
    <p>(1) FAIL: потомок(авраам,Ответ) нет</p>
    <p>Наконец мы закончили. Надеемся, что этот утомительный пример дал вам возможность понять последовательность событий, происходящих при выполнении Пролог-программы. Вы, вероятно, уже заметили, что для любой цели всегда бывает только один ВЫЗОВ (событие CALL) и одна НЕУДАЧА (событие FAIL), хотя может быть сколько угодно ПЕРЕДЕЛОК (событие REDO) и соответствующих ВЫХОДов (событие EXIT). В следующем разделе мы рассмотрим процесс трассировки для более сложного примера – предиката <strong>присоединить</strong>.</p>
    <p><strong>Упражнение 8.1.</strong> В приведенной выше модели ничего не говорится о том, как обрабатывается цель – отсечение '!'. Расширьте эту модель, включив туда учет действия отсечения.</p>
   </section>
   <section>
    <title>
     <p>8.4. Трассировка и контрольные точки</p>
    </title>
    <p>Обнаружив, что программа не работает (порождает сообщения об ошибках, просто отвечает <strong>'нет'</strong> или выдает неверный ответ) вы, наверное, захотите побыстрее найти ошибки с тем, чтобы исправить их. В этом разделе описывается набор встроенных предикатов, позволяющих «проследить» за выполнением программы. С их помощью вы можете вновь запустить программу на той же задаче и проследить за ее выполнением, чтобы найти место, с которого она начинает работать неверно. При этом вы увидите, когда происходят разные события трассировочной модели, подобно тому, как это было в предыдущем разделе, где мы наблюдали за процедурой <strong>потомок</strong>. Точный набор возможностей, предоставляемых предикатами отладки, зависит от конкретной реализации Пролога, однако то, что мы собираемся сообщить вам, даст представление об имеющихся средствах, так что вы сможете разобраться в том, что предлагает вам ваша система. В любом случае мы настоятельно советуем ознакомиться с документацией по вашей Пролог-системе, прежде чем начать использование средств отладки.</p>
    <p>Основное назначение трассировки и контрольных точек состоит в том, чтобы программист получил информацию о попытках согласования определенных целей, возникающих в ходе выполнения его программы. Программист может принять решения относительно интересующих его целей и относительно уровня своего вмешательства в процесс их согласования. Первое решение сводится к выбору определенной комбинации <emphasis>полной трассировки </emphasis>и трассировки по <emphasis>контрольным точкам. </emphasis>Вообще говоря, полная трассировка означает выдачу информации обо <emphasis>всех </emphasis>целях, а контрольные точки позволяют программисту получить информацию лишь о тех предикатах, которые он задал. Однако эти возможности могут различными способами комбинироваться. Используемые при этом встроенные предикаты рассмотрены в разд. 6.13. Контрольная точка для какого-либо предиката устанавливается с помощью предиката <strong>spy</strong> (отмена контрольной точки выполняется предикатом <strong>nospy</strong>). Установка режима полной трассировки осуществляется предикатом <strong>trace</strong> (а ее отмена – предикатом <strong>notrace</strong>).</p>
    <p>Второе решение заключается в выборе уровня управления процессом трассировки. При неуправляемой трассировке информация о целях выдается на терминал и программа продолжает выполнение. При управляемой трассировке, выдав информацию о цели, система каждый раз спрашивает у программиста, что бы он хотел сделать. Он может изменить уровень трассировки, изменить нормальный ход выполнения программы и дать ряд других указаний. Ваша Пролог-система может обеспечивать раздельный выбор уровня управления трассировкой для каждого из четырех видов событий:</p>
    <p>• Когда впервые делается попытка согласовать некоторую цель с базой данных, когда данная цель встречается впервые (событие CALL);</p>
    <p>• Когда цель успешно согласована (событие EXIT);</p>
    <p>• Когда готовится попытка повторного согласования цели (событие REDO), и</p>
    <p>• Когда устанавливается несогласуемость цели с базой данных, поскольку все попытки вновь согласовать ее оказались безуспешными (событие FAIL).</p>
    <p>Например, разумным представляется такой выбор: задать трассировку событий CALL и REDO как управляемую, а трассировку событий EXIT и FAIL – как неуправляемую. Более подробное описание этих четырех событий, происходящих при согласовании целей с базой данных, приведено в разд. 8.3,</p>
    <p>Рассмотрим теперь, что за информация выдается пользователю, когда происходит некоторое событие с интересующей его целью. Прежде всего выдается название цели с указанием вида произошедшего события и, возможно, номера обращения. Если для данного события задана неуправляемая трассировка, то это все. Если же задана управляемая трассировка, то Пролог потребует указаний относительно того, что ему делать дальше. Протокол полной неуправляемой трассировки мог бы выглядеть следующим образом:</p>
    <empty-line/>
    <p>?- [user].</p>
    <p>присоединить([],Y,Y).</p>
    <p>присоединить([А|В],С,[А|D]):- присоединить(В,С,D).</p>
    <p>/* введите здесь литеру – признак конца файла */</p>
    <p>да</p>
    <p>?- присоединить ([а][b],Х).</p>
    <p>CALL присоединить([a],[b],_43) </p>
    <p>CALL присоединить([],[b],_103) </p>
    <p>EXIT присоединить([],[b],[b]) </p>
    <p>EXIT присоединить([a],[b],[a,b])</p>
    <p>X = [a,b];</p>
    <p>REDO присоединить([a],[b],[a,b])</p>
    <p>REDO присоединить([],[b],[b])</p>
    <p>FAIL присоединить([],[b],_103)</p>
    <p>FAIL присоединить ([a], [b],_43)</p>
    <p>нет</p>
    <p>?- присоединить(Х,Y,[а])</p>
    <p>CALL присоединить(_37,_38,[а])</p>
    <p>EXIT присоединить([],[а],[а])</p>
    <p>X = [], Y = [a];</p>
    <p>REDO присоединить([],[a],[a])</p>
    <p>CALL присоединить(_93,_38,[])</p>
    <p>EXIT присоединить([],[],[])</p>
    <p>EXIT присоединить([а],[],[a])</p>
    <p>X = [a], Y = [];</p>
    <p>REDO присоединить([a],[],[a])</p>
    <p>REDO присоединить([],[],[])</p>
    <p>FAIL присоединить (_93,_38,[])</p>
    <p>FAIL присоединить(_37,_38,[])</p>
    <p>нет</p>
    <empty-line/>
    <p>Здесь на терминал выведены сведения обо всех четырех событиях для всех целей. Однако программист не может приостановить выполнение программы в какой-либо точке, изменить по ходу выполнения объем трассировочной информации, или как-либо еще повлиять на ход выполнения трассировки. Эти возможности предоставляются при управляемой трассировке.</p>
    <p>Прежде чем перейти к рассмотрению управляемой трассировки, следует сделать несколько замечаний о том, как Пролог выдает сведения о целях во время трассировки. На самом деле, способ выдачи сведений о целях средствами трассировки не обязательно совпадает с тем, который используется предикатом <strong>write. </strong>Это происходит потому, что для выдачи сведений о целях пользователю разрешается задавать свои собственные определения. Вы можете воспользоваться этой возможностью для того, чтобы вывести какие-либо общие структуры, используемые в вашей программе, особым способом, который обеспечивает большую наглядность и выразительность, чем обычный вывод с помощью предиката <strong>write. </strong>Эта возможность осуществляется следующим образом. Стандартный способ выдачи сведений о целях опирается на использование встроенного предиката <strong>print </strong>с единственным аргументом. Предикат <strong>print </strong>действует, как если бы он был определён следующим образом:</p>
    <empty-line/>
    <p>print(X):- portray(X),!. </p>
    <p>print(X):- write(X).</p>
    <empty-line/>
    <p>Предикат <strong>portray </strong>уже не является встроенным, поэтому вы можете сами задать утверждения для его определения. Если эти утверждения таковы, что они позволяют согласовать с базой данных цель <strong>portray(X) </strong>для одной из ваших целей Х,то считается, что выдачу всех необходимых сведений сделают эти утверждения. В противном же случае данные об этой цели X будут выданы с помощью предиката <strong>write. </strong>Например, если по каким-то причинам вы не хотите выдавать значение третьего аргумента цели <strong>присоединить, </strong>то это может быть обеспечено с помощью следующего утверждения:</p>
    <empty-line/>
    <p>portray(присоединить(А,В,С)):- writе('присоединить('), write(A), write(','), write(B), write(','), write('‹foo›)').</p>
    <empty-line/>
    <p>Каждый раз когда встретится цель X, содержащая предикат <strong>присоединить, </strong>приведенное утверждение будет обеспечивать успешное согласование цели <strong>portray(X), </strong>и вывод трассировочной информации будет полностью возложен на данное утверждение. В случае цели, содержащей любой другой предикат, цель <strong>port-гау(Х) </strong>не согласуется с базой данных и потому сведения об X будут выданы с помощью предиката <strong>write(X). </strong>Если бы приведенное выше утверждение присутствовало в базе данных, то соответствующая часть приведенного выше протокола трассировки выглядела бы следующим образом:</p>
    <empty-line/>
    <p>?- присоединить ([a],[b],X). </p>
    <p>CALL присоединить([а],[b],‹fоо›)</p>
    <p>CALL присоединить ([],[b],‹foo›) </p>
    <p>EXIT присоединить([],[b],‹fоо›) </p>
    <p>EXIT присоединить([a],[b],‹foo›)</p>
    <p>X = [a,b];</p>
    <p>REDO присоединить([a],[b],‹foo›) </p>
    <p>REDO присоединить([],[b],‹foо›) </p>
    <p>FAIL присоединить([],[b],‹foo›) </p>
    <p>FAIL присоединить ([a],[b],‹foo›) нет</p>
    <p>Т</p>
    <p>еперь рассмотрим управляемую трассировку. Если вы задали управляемую трассировку для событий некоторого типа, то Пролог спросит у вас, что нужно сделать после того, как наступит событие заданного типа. На терминале это может выглядеть примерно так:</p>
    <empty-line/>
    <p>?- присоединить ([а],[b],Х). </p>
    <p>CALL присоединить([а],[b],_43)?</p>
    <p>После вывода литеры '?' программа останавливается. Теперь от вас требуется ответ – команда, которой вы зададите одно из возможных действий. Если затребованное вами действие означает продолжение обычного выполнения программы, то она продолжит выполнение до тех пор, пока трассировка не дойдет до следующего управляемого события для прослеживаемого предиката. И опять вам будет задан вопрос вида:</p>
    <empty-line/>
    <p>CALL присоединить([],[b],_103)?</p>
    <empty-line/>
    <p>Одной из команд может быть выдача списка допустимых команд на терминал. Рассмотрим некоторые из них.</p>
    <subtitle>Выдача информации о цели</subtitle>
    <p>Первая группа команд предназначена для выдачи информации о цели в различных форматах. Как мы уже знаем, стандартным средством выдачи сведений о цели является предикат <strong>print, </strong>в рамках которого с помощью определяемого пользователем предиката <strong>portray </strong>можно выводить нужные сведения в нужном формате. Однако у пользователя могут возникнуть сомнения в правильности утверждений, определяющих <strong>portray, </strong>или он может пожелать увидеть цель в обычной форме. Поэтому Пролог предоставляет команду, дающую вам возможность вывести сведения о текущей цело с помощью предиката <strong>write </strong>или <strong>display. В </strong>этом случае программа не продолжает выполняться, а пользователя просят задать еще одну команду, которая укажет как следует продолжать выполнение программы. Как правило, этот диалог имеет следующий вид:</p>
    <empty-line/>
    <p>?- присоединить([a],[b],X).</p>
    <p>CALL присоединить([а],[b],‹fоо›)? write</p>
    <p>CALL присоединить([а],[b],_103)?</p>
    <empty-line/>
    <p>Обычно в качестве альтернативного способа вывода сведений о цели используют <strong>write. </strong>Предикат <strong>display </strong>может понадобиться в том случае, когда цель содержит много операторов, и вы забыли приоритеты их выполнения. В этом случае <strong>display </strong>поможет вам однозначно определить вложенность функторов.</p>
    <subtitle>Выдача информации о предшественниках</subtitle>
    <p>Предшественниками данной цели называются те цели, согласованность которых зависит от согласованности данной цели. На наших диаграммах с прямоугольниками это те цели, прямоугольники которых включают данную цель. Так, каждая цель имеет предшественника, который в свою очередь является одной из целей исходного вопроса – той целью, согласованию которой помогает текущая цель. Аналогично, когда речь идет о правиле, каждая цель, порожденная телом правила, имеет в качестве предшественника ту цель, которая сопоставлена с заголовком правила. Рассмотрим некоторые примеры предшественников. Обратимся к следующей простой программе обращения списка (которая рассматривалась в разд. 7.5):</p>
    <empty-line/>
    <p>обр([],[]).</p>
    <p>oбp([H|T],L):- oбp(T,Z), присоединить(Z,[H],L).</p>
    <p>присоединить([],X,Х).</p>
    <p>присоединить([А|В],С,[А|D]):- присоединить(В,С,D).</p>
    <empty-line/>
    <p>Пусть мы задали исходный вопрос:</p>
    <empty-line/>
    <p>?- oбp([a,b,c,d],X). <emphasis>(A)</emphasis></p>
    <empty-line/>
    <p>Тогда, вследствие второго утверждения, возникают две подцели, каждая из которых в качестве своего непосредственного предшественника имеет цель, составляющую содержание исходного вопроса. Вот эти подцели:</p>
    <empty-line/>
    <p>oбp([b,c,d],Z) <emphasis>(B)</emphasis></p>
    <p>присоединить(Z,[a],X) <emphasis>(C)</emphasis></p>
    <empty-line/>
    <p>Поскольку второе утверждение будет снова использовано при согласовании <emphasis>(B), </emphasis>снова возникают две подцели:</p>
    <empty-line/>
    <p>oбp([c,d],Z1) <emphasis>(D)</emphasis></p>
    <p>присоединить(Z1,[a],Z) <emphasis>(E)</emphasis></p>
    <empty-line/>
    <p>Их предшественниками являются цели <emphasis>(A) </emphasis>и <emphasis>(B). </emphasis>Заметим, что цель <emphasis>(C) </emphasis>не является их предшественником, поскольку от них непосредственно зависит только согласованность <emphasis>(B)</emphasis>, от которой, в свою очередь, зависит согласованность <emphasis>(А). </emphasis>Цели <emphasis>(D) </emphasis>и <emphasis>(E)</emphasis> никак не влияют на согласованность <emphasis>(C)</emphasis>. Когда процесс согласования исходного вопроса заходит уже достаточно далеко, возникает цель вида:</p>
    <empty-line/>
    <p>присоединить([с],[b],Y)</p>
    <empty-line/>
    <p>На этом этапе текущая цель и ее предшественники могут быть представлены в следующем виде:</p>
    <empty-line/>
    <p>oбp([a,b,c,d],_46) (цель <emphasis>A)</emphasis></p>
    <p>oбp([b,c,d],[d|_50]) (цель <emphasis>B)</emphasis></p>
    <p>присоединить([d,с],[b],[d|_51]) </p>
    <p>присоединить([с],[b],_52)</p>
    <empty-line/>
    <p>Прежде чем читать дальше, вам следует убедиться в том, что вы понимаете, почему это предшественники данной цели, а также почему у нее нет никаких других предшественников. С приведенным здесь изображением предшественников связана одна особенность, которая может проявиться и в вашей Пролог-системе. Существуют два способа выдачи информации о предшественнике на печать – при первом способе информация соответствует состоянию предшественника при первой попытке согласовать его, при втором – текущему состоянию, с теми значениями переменных, которые они получили в результате конкретизации. Здесь у нас принят второй способ. Когда выполнение впервые дошло до цели <emphasis>(B), </emphasis>второй аргумент предиката <strong>обр </strong>не был конкретизирован. Тем не менее, в списке предшественников этот аргумент показан как имеющий значение. Это объясняется тем, что теперь переменная, которая задана в этой позиции, оказалась конкретизированной, а именно, теперь мы выяснили, что для <strong>[b, с, d]</strong> первым элементом обращенного списка является <strong>d</strong>.</p>
    <p>Глядя на предшественников текущей цели можно получить ясное представление о том, что происходит с программой и почему она делает то, что наблюдается. Одной из команд, которые пользователю разрешается вводить при наступлении управляемого события для некоторой цели может быть выдача сведений о каких-либо из ее предшественников. Таким образом, если вы чувствуете, что ваша программа тратит где-то много времени и подозреваете, что это может быть результатом зацикливания, то верная стратегия состоит в том, чтобы прервать выполнение, включить полную трассировку, а затем посмотреть на предшественников, чтобы понять, где вы находитесь.</p>
    <subtitle>Изменение уровня трассировки</subtitle>
    <p>Другой набор команд, которыми можно воспользоваться при наступлении управляемого события, связан с изменением желаемого объема трассировки. Некоторые из более грубых управляющих воздействий состоят в следующем.</p>
    <p>• Удаление всех контрольных точек. Это имеет тот же эффект, что и вызов цели <strong>nodebug </strong>(см. разд. 6.13).</p>
    <p>• Отключение полной трассировки. Это имеет тот же эффект, что и вызов цели <strong>notrace </strong>(см. разд. 6.13).</p>
    <p>• Включение полной трассировки. Это имеет тот же эффект, что и вызов цели <strong>trace </strong>(см. разд. 6.13).</p>
    <p>При задании любой из этих команд ваша программа продолжит затем выполнение в указанном режиме до тех пор, пока не дойдет до цели, которую вы намеревались прослеживать. В некоторых версиях Пролога могут быть предусмотрены более тонкие средства управления трассировкой. Эти средства помогут вам быстро пройти через те участки выполнения программы, которые не представляют интереса с тем, чтобы сосредоточиться на участках, где, вероятно, имеются ошибки. Здесь возможны следующие команды:</p>
    <p>• «creep» (ползти): Продолжить выполнение программы с полной трассировкой до тех пор, пока не поступит новое указание (при наступлении следующего управляемого события).</p>
    <p>• «skip» (пропустить): Продолжить выполнение программы без выдачи какой-бы то ни было трассировочной информации до тех пор, пока не наступит какое-либо событие, относящееся к текущей цели.</p>
    <p>• «leap» (перескочить); Продолжить выполнение программы без выдачи трассировочной информации до тех пор, пока либо не будет достигнута контрольная точка, либо не наступит событие, относящееся к текущей цели.</p>
    <p>Первая из этих команд соответствует случаю, когда вы хотите, начиная с данного момента, тщательно проследить за ходом выполнения программы. Вторая команда соответствует случаю, когда вас не интересует ход согласования какой-либо цели, а нужно побыстрее перейти к тому, что происходит дальше. Третья команда относится к случаю, когда в ходе согласования некоторой цели выполняется большой объем не интересующей вас деятельности, но где-то в середине возникает интересующая вас цель (имеющая контрольную точку). Поэтому вам желательно пропускать все до тех пор, пока не будет достигнута нужная контрольная точка или (если программа ошибочна) пока текущая цель не окажется согласованной или несогласованной не достигнув контрольной точки. Ниже приводится пример использования команд «creep» и «skip». Предположим, что в простой программе сортировки, приведенной в разд. 7.7, есть ошибка, но при этом мы уверены, что наша программа порождения перестановок работает правильно. Если вы помните, определение программы <strong>наивсорт</strong> начинается так:</p>
    <empty-line/>
    <p>наивсорт(Х,Y):- перестановка(Х,Y), отсортировано(Y),!.</p>
    <empty-line/>
    <p>Чтобы избежать необходимости просматривать массу детальных сведений о том, как работает программа перестановка, можно воспользоваться командой «skip» и получить трассировку, которая начинается так:</p>
    <empty-line/>
    <p>CALL наивсорт([3,6,2,9,20],_45)? creep</p>
    <p>CALL перестановка([3,6,2,9,20],_45)? skip</p>
    <p>EXIT перестановка([3,6,2,9,20],[3,6,2,9,20])? creep</p>
    <p>CALL упорядочено(ЕЗ,6,2,9,20])? creep</p>
    <p>CALL упорядочено(0,[3,6,2,9,20])? creep</p>
    <p>CALL 0‹3?</p>
    <p>. . .</p>
    <empty-line/>
    <subtitle>Вмешательство в процесс согласования цели</subtitle>
    <p>Здесь рассматриваются команды, которые позволяют изменять порядок работы программы. С их помощью можно повторить некоторые фрагменты, которые желательно изучить более подробно, обойти случаи про которые известно, что они не относятся к делу и наоборот, заставить программу рассмотреть случаи, которые иначе она могла бы и не обнаружить. Все это способно значительно ускорить отладку, поскольку позволяет подвергнуть многократной проверке особо сложные части программы не повторяя заново весь ее запуск с самого начала.</p>
    <p>• «retry» (повторить): Если вы задали команду «retry» после какого-либо события для некоторой цели, то Пролог вернется к тому месту, где он первоначально осуществил ВЫЗОВ (событие CALL) этой цели. Все будет в точности так же, как и в момент первоначального появления этой цели (кроме каких-либо добавлений к базе данных, которые могли быть сделаны). Это означает, что вы можете еще раз проследить за тем, что происходит при согласовании данной цели. На практике обычно сочетают использование команд «retry» и «skip». Если вы сомневаетесь в том, что ошибка возникает при согласовании некоторой цели, вы можете сперва пропустить (с помощью команды «skip») трассировку процесса ее согласования. Это означает, что вы не намерены пробираться через массу трассировочных данных, относящихся к цели, процесс согласования которой выполняется совершенно правильно. Если же возникла ошибка, и цель либо не согласуется с базой данных, либо дает неверный результат, то у вас сохраняется возможность после всего этого (с помощью команды «retry») вернуться назад и проследить за всем более внимательно.</p>
    <p>• «or» (или): Эта команда, в точности как ';', означает просьбу о выборе альтернативного решения некоторого вопроса. Если вы находитесь в точке ВЫХОДа из цели (событие EXIT), вы также можете попросить о выборе альтернативы. Таким образом, если известно, что первый найденный ответ не позволяет успешно завершить остальную часть программы, можно тут же попросить о поиске другого решения. Это означает, что вы сможете быстрее добраться до той части программы, где содержится ошибка. Без такого режима вам пришлось бы «караулить» возможную неудачу процесса согласования после того, как была найдена первая альтернатива.</p>
    <p>• «fail» (неудача): Эта команда в основном используется при наступлении события CALL. Если вы знаете, что данная цель в конце концов окажется несогласованной с базой данных, и что эта цель для вас не представляет интереса, то вы можете тут же принудительно завершить процесс согласования неудачно, задав эту команду.</p>
    <p>Ниже приводится пример использования различных рассмотренных команд при изменении порядка согласования одного вопроса:</p>
    <empty-line/>
    <p>?- принадлежит(Х,[а,b,с]), принадлежит(Х,[b,d,е]).</p>
    <p>CALL принадлежит(_ 44,[a, b,с])? creep</p>
    <p>EXIT принадлежит(a, [а,b,с])? or</p>
    <p>REDO принадлежит(a, [а,b,с])? creep</p>
    <p>CALL принадлежит(_44,[b,с])? fail</p>
    <p>FAIL принадлежит(_44,[b,с])? creep</p>
    <p>FAIL принадлежит(_44,[a,b,с])? retry</p>
    <p>CALL принадлежит(_44,[а,b,с])? creep</p>
    <p>EXIT принадлежит(а,[а,b,с])? creep</p>
    <p>CALL принадлежит(а,[d,с,е])? fail</p>
    <p>FAIL принадлежит(a,[d,c,e])? creep</p>
    <p>REDO принадлежит(а,[а,b,с])? creep</p>
    <p>CALL принадлежит(_44,[b,с])? creep</p>
    <p>EXIT принадлежит(b,[b,с])? or</p>
    <p>REDO принадлежит(b,[b,с])? creep</p>
    <p>CALL принадлежит(_ 44,[с])? fail</p>
    <p>FAIL принадлежит(_44,[с])? retry</p>
    <p>CALL принадлежит(_44,[с])? creep E</p>
    <p>XIT принадлежит(с,[с])? creep </p>
    <p>EXIT принадлежит(с,[b,c])? creep </p>
    <p>EXIT принадлежит(c,[a,b,с])? creep </p>
    <p>CALL принадлежит(c,[d,c,e])? creep </p>
    <p>CALL принадлежит(c,[c,e])? creep </p>
    <p>EXIT принадлежит(c,[c,e])? creep </p>
    <p>EXIT принадлежит(c,[d,c,e])? or </p>
    <p>REDO принадлежит(c,[d,c,e])? creep </p>
    <p>REDO принадлежит(c,[c,e])? creep </p>
    <p>CALL принадлежит(c,[e])? creep </p>
    <p>CALL принадлежит(c,[])? creep </p>
    <p>FAIL принадлежит(c,[])? creep </p>
    <p>FAIL принадлежит(c,[е])? creep </p>
    <p>FAIL принадлежит(c,[с,е])? retry </p>
    <p>CALL принадлежит(c,[с,e])? creep </p>
    <p>EXIT принадлежит(c,[c,e])? creep </p>
    <p>EXIT принадлежит(с,[d,с,е])? creep</p>
    <subtitle>Другие команды</subtitle>
    <p>Рассмотрим другие возможные команды, которые могут быть доступны вам при наступлении управляемого события;</p>
    <p>• «break» (пауза): Эта команда вызывает приостановку выполнения текущей программы, причем вам предоставляется новая копия Пролог-интерпретатора, Вы можете воспользоваться этим для задания вопросов относящихся к утверждениям, которыми вы располагаете, для расстановки контрольных точек или для чего-нибудь еще. Когда вы выйдете из этой копии интерпретатора (путем ввода литеры, являющейся признаком конца файла), то выполнение вашей прежней программы будет продолжено.</p>
    <p>• «abort» (аварийное завершение): Эта команда вызывает прекращение выполнения всех ваших текущих программ, и вы «проваливаетесь» в Пролог-интерпретатор, который готов к вашему новому вопросу.</p>
    <p>• «halt» (стоп): Эта команда вызывает полный выход из Пролога. Она может потребоваться вам, когда вы обнаружите ошибку и захотите для ее исправления отредактировать файл с той программой, где находится ошибка.</p>
    <subtitle>Заключение</subtitle>
    <p>В заключение хочется обратить внимание на три вопроса, ответы на которые следует продумать, прежде чем приступать к трассировке выполнения программы:</p>
    <p>1. За какими целями вы собираетесь следить? Если вы хотите следить за всем (задав полную трассировку с помощью предиката <strong>trace</strong>), то вы можете захлебнуться тем потоком информации, который будет поступать на ваш терминал. С другой стороны, если прослеживать только то, что происходит с небольшим числом предикатов (расставляя контрольные точки с помощью предиката <strong>spy</strong>), то можно пропустить момент, когда программа начинает работать неверно. Вероятно, лучшим решением является компромисс между аккуратным использованием контрольных точек, позволяющих сузить район поиска, и полной трассировкой на заключительном этапе, что позволяет точно обнаружить место ошибки.</p>
    <p>2. Какой уровень управления выполнением программы вы намерены осуществить через терминал? Если задать все типы событий как неуправляемые, то вы не сможете оказать никакого влияния на ход выполнения программы, которая быстро проскочит через место ошибки прежде чем вы сможете это заметить, а тем более – внимательно рассмотреть. С другой стороны, если вы зададите все события как управляемые, то вам придется постоянно подталкивать программу, сообщая ей, что нужно продолжить выполнение при каждом новом событии.</p>
    <p>3. Намерены ли вы задать специальные средства вывода информации о прослеживаемых целях? Это может оказаться полезным в тех случаях, когда некоторые из целей содержат в качестве аргументов чрезмерно большие структуры, которые не представляют особого, интереса, и только отвлекают внимание от действительно интересных аргументов. В этом случае для подавления выдачи ненужной информации можно воспользоваться возможностями предиката <strong>portray</strong>.</p>
   </section>
   <section>
    <title>
     <p>8.5. Фиксация ошибок</p>
    </title>
    <p>Если вы проследили за ходом выполнения программы и обнаружили, что она работает неверно, то вам захочется зафиксировать ошибку и запустить программу снова. Предположим, что ваша программа имеет разумные размеры, тогда она скорее всего уже хранится в файле на диске. Чтобы изменить эти файлы, вам придется использовать программу редактирования файлов. Здесь имеются две возможности:</p>
    <p>• Ваша Пролог-система позволяет использовать редактор, а затем вернуться в Пролог с той же базой данных, что и прежде. Может быть, существует возможность сделать это прямо, с помощью соответствующего встроенного предиката. Возможен и другой вариант, когда Пролог позволяет вам сохранить текущее состояние базы данных в специальном файле, а позднее снова восстановить его. Тогда вы сохраняете ваше текущее состояние, выходите из Пролога, изменяете программу, запускаете Пролог снова и восстанавливаете предыдущее состояние базы данных. Вернувшись туда же, где вы были раньше, но с изменениями в одном или нескольких программных файлах, вам необходимо лишь выполнить предикат <strong>reconsult</strong> для этих файлов, чтобы заменить старые определения измененных программ новыми.</p>
    <p>• Если ваша Пролог-система не позволяет вернуться к прежнему состоянию после использования редактора и изменения ваших программных файлов, то вам придется запустить Пролог и применить предикат <strong>consult</strong> ко всем вашим программным файлам, находящимся на внешней памяти.</p>
    <p>Этот процесс можно упростить, если завести отдельный файл, состоящий из команд для Пролога, предписывающих применить предикат <strong>consult</strong> ко всем файлам вашей программы. Тогда для того, чтобы считать в память всю программу, достаточно предложить Прологу применить <strong>consult</strong> к этому отдельному файлу. Например, если вы предложите Прологу применить <strong>consult</strong> к файлу, содержащему:</p>
    <empty-line/>
    <p>?- [filel,file2,file3].</p>
    <p>?- [file4,file5,fileб].</p>
    <empty-line/>
    <p>то в результате будут считаны в память все файлы <strong>file1</strong>, <strong>file2</strong>, <strong>file3</strong>, <strong>file4</strong>, <strong>file5, file6</strong>.</p>
    <p>Иногда изменения в программе кажутся столь незначительными, что их можно ввести с терминала с помощью предикатов <strong>consult(user)</strong> или <strong>reconsult(user)</strong>. Однако не следует пользоваться этим способом слишком часто. По невнимательности можно легко забыть какие-либо мелкие изменения, которые вносились таким способом, и при выполнении программы вновь столкнуться с теми же ошибками, которые встречались при прошлом запуске программы. Кроме того, поскольку в конечном итоге вы намерены внести исправления в ваши программные файлы, то нерационально повторять их прямой ввод с терминала. Итак, не поддавайтесь искушению вводить утверждения прямо с терминала в надежде поскорее заставить программу работать.</p>
    <p>Ниже приводится небольшой пример того, как можно использовать предикаты <strong>consult</strong> и <strong>reconsult</strong>, чтобы внести изменения в программу с терминала. Этот сеанс работы начинается, когда в базе данных программиста нет ни одного утверждения.</p>
    <empty-line/>
    <p>?- присоединить([а,b,с,d],[е],Х).</p>
    <p>нет</p>
    <p>?- consult (user).</p>
    <p>присоединить([А|В],С,[А|D]):- присоединить(А,С,D).</p>
    <p>присоединить([],Х,Х).</p>
    <p>обр([],[]).</p>
    <p>обр([А|В],С):- o6p(B,D), присоединить(D,[А],С).</p>
    <p>/* ввод литеры – признак конца файла */</p>
    <p>да</p>
    <p>?- обр([a,b,c,d,e],X).</p>
    <p>нет</p>
    <p>?- присоединить([а,b,с,d,е], [f],Х).</p>
    <p>нет</p>
    <p>?- присоединить([],[а,b,-],Х).</p>
    <p>X = [а,b,с]</p>
    <p>да</p>
    <p>?- reconsult(user)</p>
    <p>присоединить([А|В],С,[А|D]):- присоединить(В,С,D).</p>
    <p>/* ввод литеры – признак конца файла */</p>
    <p>да</p>
    <p>?- oбp([a,b,c,d],X).</p>
    <p>нет</p>
    <p>?- consult (user).</p>
    <p>присоединить([],Х,Х).</p>
    <p>/* ввод литеры – признак конца файла */</p>
    <p>да</p>
    <p>?- oбp([a,b,c,d,e],X). X = [e,d,c,b,a].</p>
    <p>да</p>
    <empty-line/>
    <p>В приведенном сеансе работы наш беспечный программист начинает с ввода через терминал утверждений для предикатов <strong>присоединить </strong>и <strong>обр. </strong>Конечно, он мог бы сначала ввести их в файл, а затем предложить Прологу применить к этому файлу предикат <strong>consult. </strong>Впрочем, для такого маленького примера этого, может быть, и не стоило делать. К несчастью, в первом утверждении для <strong>присоединить </strong>допущена ошибка – в цели задано <strong>А</strong>, хотя на этом месте должно быть <strong>В</strong>. Эта ошибка обнаруживается, когда система не может ответить на вопросы, содержащие <strong>присоединить </strong>и <strong>обр. </strong>Каким-то образом программист догадывается, что <emphasis>его </emphasis>определение <strong>присоединить </strong>неверно (в реальном сеансе для этого, вероятно, потребовалось бы использовать средства отладки). Так или иначе, он решает заменить имеющееся определение новым, используя для этого предикат <strong>reconsult. </strong>К сожалению, в своем новом определении он забывает задать граничное условие (случай []). Поэтому программа по-прежнему не работает. К этому моменту исходное определение для <strong>присоединить, </strong>состоящее из двух утверждений, заменено новым определением из одного утверждения, которое оказалось неполным. Наш программист замечает, что он допустил ошибку и что ситуацию можно исправить, просто добавив к уже имеющемуся определению одно утверждение. Это делается также с помощью предиката <strong>consult. </strong>На этот раз программа заработала.</p>
    <p>В заключение дадим еще один совет: при внесении изменений в программу ответьте на те же контрольные вопросы, на которые вы отвечали при написании первоначальной версии программы. Убедитесь, что ваши добавления согласуются с вашим прежним замыслом о том, какие переменные должны быть конкретизированы, когда и какие аргументы используются и для каких целей. Наконец, попытайтесь взглянуть еще раз на программу в целом – в ней могут быть и какие-либо другие ошибки.</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 9. <strong>ИСПОЛЬЗОВАНИЕ ГРАММАТИЧЕСКИХ ПРАВИЛ В ПРОЛОГЕ</strong></p>
   </title>
   <section>
    <title>
     <p>9.1. Проблема синтаксического анализа</p>
    </title>
    <p>Предложения на естественном языке, таком как английский представляют собой нечто большее, чем просто произвольные последовательности слов. Мы не можем соединить вместе произвольное множество слов и получить при этом предложение, имеющее смысл. По крайней мере результат должен соответствовать тому, что мы называем грамматически правильным предложением.</p>
    <p>Грамматика языка – это множество правил, позволяющих определить, какие последовательности слов приемлемы в качестве предложений этого языка. Она определяет, как из слов образуются словосочетания и какие последовательности этих словосочетаний допустимы. Если задана грамматика некоторого языка, то для любой последовательности слов мы можем сказать, является ли она допустимым предложением. И в случае, когда это предложение действительно является допустимым, в результате проверки мы определим, какие естественные группы слов имеются и как они связаны друг с другом. То есть будет определена внутренняя структура предложения.</p>
    <p>Очень простой класс грамматик составляют так называемые контекстно-свободные грамматики. Вместо того, чтобы давать формальное определение понятия контекстно-свободной грамматики, мы проиллюстрируем его на одном простом примере. Приведенные ниже правила можно рассматривать как начальную часть грамматики предложений английского языка:</p>
    <p>предложение--› группа_существительного, группа_глагола.</p>
    <p>группа_существительного--› определитель, существительное.</p>
    <p>группа_глагола--› глагол, группа_существительного.</p>
    <p>группа_глагола--› глагол.</p>
    <p>определитель--› [the].</p>
    <p>существительное--› [apple].</p>
    <p>существительное--› [man].</p>
    <p>глагол--<emphasis>› </emphasis>[eats].</p>
    <p>глагол--› [sings].</p>
    <image l:href="#pic_34.jpg"/>
    <empty-line/>
    <p>Рис. 9.1.</p>
    <p>Эта грамматика состоит из множества правил, каждое из которых записано в отдельной строке. Каждое правило определяет форму словосочетания определенного вида. Первое правило показывает, что предложение состоит из словосочетания, называемого <strong>группа_существительного, </strong>за которым следует словосочетание, называемое <strong>группа_глагола. </strong>Эти два словосочетания есть не что иное, как <emphasis>подлежащее </emphasis>и <emphasis>сказуемое </emphasis>предложения (см. рис. 9.1).</p>
    <p>Чтобы представлять, что значит правило в контекстно-свободной грамматике, их следует читать следующим образом: <strong>X--›Y</strong> как «<strong>X</strong> <emphasis>может иметь вид </emphasis><strong>Y</strong>», а '<strong>X</strong>, <strong>Y</strong>' как «<strong>X</strong>, <emphasis>за которым следует </emphasis><strong>Y</strong>». Так первое правило может быть прочитано: </p>
    <p><strong>предложение</strong> <emphasis>может иметь вид: </emphasis><strong>группа_существительного</strong>, за <emphasis>которой следует </emphasis><strong>группа_ глагола</strong>.</p>
    <p>Все это очень хорошо, но что представляют собой <strong>группа_существительного</strong> и <strong>группа_глагола</strong>? Как мы должны распознавать подобные объекты и как узнать их грамматическую структуру? Ответы на эти вопросы следуют из второго, третьего и четвертого правил грамматики. Например,</p>
    <p><strong>группа_существительног</strong>о <emphasis>может иметь вид: </emphasis><strong>определитель</strong>, <emphasis>за которым следует </emphasis><strong>существительное</strong>.</p>
    <p>Неформально, группа существительного – это группа слов, служащая для обозначения некоторого объекта (или объектов). Такая группа содержит слово – существительное, которое определяет главный класс, которому принадлежит этот объект. Так «<strong>the man</strong>» (человек) обозначает человека, «<strong>the program</strong>» (программа) обозначает программу и так далее. Кроме того, в соответствии с приведенной грамматикой, существительному должна предшествовать группа слов, названная «определитель» (см. рис. 9.2). Аналогично, внутренняя структура словосочетания <strong>группа_глагола </strong>описывается соответствующими правилами. Заметим, что для этого словосочетания существуют два правила. Это вызвано тем, что оно может принимать два вида. Словосочетание <strong>группа_глагола </strong>может содержать словосочетание <strong>группа_существительного, </strong>как в предложении <strong>«the man eats the apple» </strong>(человек ест яблоко), или <strong>группа_существительного </strong>может отсутствовать, как в предложении <strong>«the man sings» </strong>(человек поет).</p>
    <p>Для чего нужны остальные правила грамматики? Эти правила показывают, как некоторые словосочетания могут быть построены из настоящих слов, а не сводят их к совокупности более мелких словосочетаний. Слова английского языка записываются в квадратных скобках, так что правило:</p>
    <p>определитель--› [the].</p>
    <p>можно читать так:</p>
    <p>определитель <emphasis>может иметь вид: слово </emphasis>the.</p>
    <p>Теперь, когда мы получили достаточно полное представление о грамматике, мы можем поговорить о том, какие последовательности слов являются грамматически правильными предложениями в соответствии с приведенной грамматикой. Наша грамматика очень проста и нуждается в целом ряде расширений. Основной недостаток заключается в том, что она допускает предложения, составленные лишь из пяти различных слов. Если мы хотим определить, является ли заданная последовательность слов предложением, в соответствии с тем, как оно определяется грамматикой, то необходимо применить первое правило, чтобы получить ответ на следующий вопрос: </p>
    <p><emphasis>можно ли разбить заданную последовательность на два словосочетания таким образом, чтобы первое из них было </emphasis><strong>группа_существительного, </strong><emphasis>а второе </emphasis><strong>группа_глагола?</strong></p>
    <p>Затем, чтобы проверить, является ли первое словосочетание группой существительного, необходимо применить второе правило, которое можно интерпретировать как вопрос: <emphasis>можно ли разбить словосочетание на определитель и существительное, следующее за определителем?</emphasis></p>
    <image l:href="#pic_35.jpg"/>
    <p>Рис. 9.2. </p>
    <p>И так далее. В результате этой процедуры, если она завершится успешно, мы выделим все словосочетания и их части, входящие в заданное предложение, в соответствии с тем, как они определены грамматикой, и получим структуру, подобную приведенной на рис. 9.3. Эта диаграмма, показывающая структуру разбиения предложения на словосочетания, называется <emphasis>деревом (синтаксического) разбора </emphasis>предложения.</p>
    <p>Мы увидели, как, имея грамматику языка, можно построить деревья разбора для предложений этого языка, чтобы показать их структуру. Задача построения дерева разбора предложения по заданной грамматике называется <emphasis>задачей синтаксического разбора (анализа). </emphasis>Программа для ЭВМ, которая строит деревья разбора для предложений языка, называется <emphasis>синтаксическим анализатором.</emphasis></p>
    <p>В этой главе будет показано, как задача синтаксического анализа может быть сформулирована в рамках языка Пролог. Будет введен используемый в Прологе формализм грамматических правил, значительно облегчающий создание синтаксических анализаторов на Прологе. Область применения вводимых далее идей не ограничивается синтаксисом естественных языков. Действительно, те же самые методы применимы к любой задаче, объектом рассмотрения которой является упорядоченная последовательность элементов, которая некоторым естественным образом может быть разбита на группы, а порядок этих групп может быть определен множеством правил. Однако, ради простоты, в оставшейся части этой главы будет рассматриваться задача синтаксического анализа предложений на английском языке, а обобщение изложенных далее идей и методов на другие области предоставляется читателю.</p>
    <p><strong>предложение</strong></p>
    <image l:href="#pic_36.jpg"/>
    <p>Рис. 9.3.</p>
   </section>
   <section>
    <title>
     <p>9.2. Описание синтаксического анализа на языке Пролог</p>
    </title>
    <p>Основная структура данных, о которой идет речь при обсуждении задачи синтаксического анализа, представляет последовательность слов. Предполагается, что можно выделить подпоследовательности этой структуры, представляющие различные словосочетания, допустимые грамматикой, и, основываясь на этом, показать, что последовательность в целом допустима в качестве словосочетания типа <strong>предложение</strong>. Так как стандартным способом представления последовательности является список, то входные данные для синтаксического анализатора будут представлены как список языка Пролог. А какое же представление имеют сами слова? Для решаемой здесь задачи знание внутренней структуры слов представляется несущественным, так как все, что необходимо делать,- это сравнивать слова друг с другом. Поэтому естественно представлять слова как атомы языка Пролог,</p>
    <p>Давайте разработаем программу, позволяющую определять, является ли заданная последовательность слов предложением в соответствии с приведенной выше грамматикой. Для того чтобы сделать это, программа будет должна выявить внутреннюю структуру заданных ей предложений. Далее будет показано, как разрабатывать программу, которая запоминает эту структуру и делает ее доступной для обозрения, но здесь этот вопрос не будет рассматриваться, чтобы не усложнять программу. Так как программа проверяет, является ли некоторая последовательность слов предложением, то давайте определим предикат предложение. Этот предикат использует лишь один аргумент и соответствует следующему утверждению:</p>
    <p><strong>предложение(Х)</strong> <emphasis>означает, что </emphasis><strong>X</strong> <emphasis>является последовательностью слов, образующей грамматически правильное предложение.</emphasis></p>
    <p>Таким образом, предполагается, что можно задавать вопросы, подобные следующему:</p>
    <empty-line/>
    <p>?- предложение ([the, man, eats, the apple]).</p>
    <empty-line/>
    <p>Ответом на этот вопрос будет «да», если «the man eats the apple» является предложением, и «нет» в противном случае.</p>
    <p>Представляется довольно неудачным, что мы должны задавать предложения искусственным способом, используя для этого списки атомов языка Пролог. Для более серьезных применений было бы желательно иметь возможность печатать английские предложения на терминале в их естественном виде. В главе 5 было показано, как может быть определен предикат <strong>ввести</strong> для того, чтобы преобразовывать напечатанное предложение в список атомов языка Пролог. Очевидно, что мы могли бы использовать этот предикат в нашем синтаксическом анализаторе, чтобы обеспечить естественный способ общения с пользователем программы. Однако здесь мы не будем прибегать к таким «косметическим» средствам, а сконцентрируем внимание на реальных проблемах собственно синтаксического анализа.</p>
    <p>В чем состоит проверка последовательности слов на принадлежность множеству правильных предложений? В соответствии с первым правилом грамматики, исходная задача сводится к нахождению словосочетания <strong>группа_существительного</strong> в начале заданной последовательности слов, а затем словосочетания <strong>груп</strong>-<strong>па_глагола</strong> в оставшейся части последовательности. К концу этого процесса мы должны использовать в точности все слова последовательности, ни одним словом больше и ни одним словом меньше. Введем предикаты <strong>группа_существительного</strong> и <strong>группа_глагола</strong>, чтобы выразить свойства принадлежности группе существительного и группе глагола:</p>
    <p><strong>группа_существительного(Х)</strong> <emphasis>означает, что последовательность </emphasis><strong>X</strong> <emphasis>является группой существительного. Аналогично, </emphasis><strong>группа_глагола(Х)</strong> <emphasis>значит, что последовательность </emphasis><strong>X</strong> <emphasis>является группой глагола.</emphasis></p>
    <p>Используя эти предикаты, мы можем дать определение предиката предложение. Последовательность X является предложением, если ее можно разбить на две подпоследовательности <strong>Y</strong> и <strong>Z</strong>, где <strong>Y</strong> – это <strong>группа_существительного</strong>, <strong>Z</strong> – <strong>группа_глагола</strong>. Так как мы представляем последовательности как списки, то у нас уже есть предикат <strong>присоединить</strong>, выполняющий разбиение списка на два других. Таким образом, можно записать:</p>
    <empty-line/>
    <p>предложение(Х):-присоединить(Y,Z,Х), группа_существительного(Y), группа_глагола(Z).</p>
    <empty-line/>
    <p>Аналогично</p>
    <empty-line/>
    <p>группа_существительного(Х):- присоединить(Y,Z,Х), определитель(Y), существительное(Z).</p>
    <p>группа_глагола(Х):- присоединить(Y,Z,Х), глагол(Y), группа_существительного(Z). </p>
    <p>группа_глагола(Х):- глагол(Х).</p>
    <empty-line/>
    <p>Отметим, что два правила для предиката <strong>группа_ глагола</strong> превращаются в два утверждения для нашего предиката, что соответствует двум возможным способам проверки последовательности на принадлежность классу <strong>группа_глагола</strong>. И наконец, не составляет труда написать утверждения, соответствующие правилам, вводящим слова:</p>
    <p>определитель([the]). </p>
    <p>существительное([аррlе]). </p>
    <p>существительное([man]).</p>
    <p>глагол([eats]). </p>
    <p>глагол([sings]).</p>
    <empty-line/>
    <p>Теперь наша программа завершена. Действительно, эта программа успешно идентифицирует последовательности слов, являющиеся предложениями для приведенной грамматики. Однако, прежде чем считать задачу решенной, следует посмотреть, что в действительности произойдет, когда мы зададим вопрос о некоторой последовательности слов. Рассмотрим утверждение для предиката <strong>предложение</strong>:</p>
    <empty-line/>
    <p>предложение(Х):- присоединить(Y,Z,Х), группа_существительного(Y), группа_глагола(Z).</p>
    <empty-line/>
    <p>и следующий вопрос:</p>
    <empty-line/>
    <p>?- предложение([the, man, eats, the, apple]).</p>
    <empty-line/>
    <p>Переменная <strong>X</strong> в правиле конкретизируется значением <strong>[the, man, eats, the, apple]</strong>, а переменные <strong>Y</strong>и <strong>Z</strong> не будут конкретизированы, так что данная цель будет порождать возможные пары значений для <strong>Y</strong> и <strong>Z</strong> такие, что результат присоединения списка <strong>Z</strong> к списку <strong>Y</strong> равен <strong>X</strong>. С помощью механизма возврата будут порождены все возможные пары, по одной при каждом возврате. Цель <strong>группа_ существительного</strong> будет выполняться лишь при условии, что <strong>Y </strong>действительно приемлем как <strong>группа_существительного</strong>. Иначе она не выполняется и присоединить будет вынужден найти другое значение для <strong>Y</strong>. Так что последовательность выполнения первой части предиката <strong>предложение</strong> будет следующей:</p>
    <p>1. Целью является <strong>предложение(thе, man, eats, the, apple])</strong>.</p>
    <p>2. Разбиение исходного списка на два списка <strong>Y</strong> и <strong>Z</strong>. Возможны следующие варианты разбиения;</p>
    <p>Y = [], Z = [the,man,eats,the,apple] Y = [the], Z = [man,eats,the,apple]</p>
    <p>Y= [the,man], Z = [eats,the,apple]</p>
    <p>Y= [the,man,eats], Z = [the,apple]</p>
    <p>Y= [the,man,eats,the], Z = [apple]</p>
    <p>Y= [the, man, eats, the, apple], Z = []</p>
    <p>3. Выбор варианта значений для <strong>Y</strong> и <strong>Z</strong> из приведенного выше списка вариантов и проверка принадлежности <strong>Y</strong> классу <strong>группа_существительного. </strong>То есть, попытка согласования подцели <strong>группа_существительного(Y).</strong></p>
    <p>4. Если <strong>группа_существительного </strong>выполняется для <strong>Y</strong>, то перейти к <strong>группа_глагола. </strong>Иначе возвратиться к шагу 3 и попробовать другой вариант.</p>
    <p>Очевидно, что при таком подходе выполняется совершенно ненужный поиск. Цель <strong>присоединить(Y,Z,X) </strong>порождает множество решений, большая часть которых бесполезна и не может быть идентифицирована как группа существительного. Должен существовать более прямой путь получения решения. Как следует из нашей грамматики, <strong>группа_существительного </strong>должна содержать в точности два слова. Этим можно было бы воспользоваться, чтобы не прибегать к поиску среди возможных вариантов разбиения исходной последовательности слов. Опасность заключается в том, что это не всегда так, если мы изменяем грамматику. Даже небольшое изменение в правиле для определитель могло бы повлиять на возможную длину группы существительного, а значит и на способ идентификации группы существительного. При разработке программы было бы хорошо сохранять некоторую модульность. Если мы хотим изменить одно утверждение, то это не должно вызывать изменение программы в целом.</p>
    <p>Таким образом, эвристика относительно длины группы существительного имеет слишком частный характер, чтобы ее использовать в программе. Тем не менее, ее можно рассматривать как частный случай некоторого общего принципа. Если мы хотим выделить подпоследовательность, которая является группой существительного, то мы можем использовать свойства этой группы, чтобы ограничить набор подходящих для этого последовательностей. Если определение группы существительного подвержено изменениям, то это можно сделать, только передав всю ответственность по проверке соответствующих свойств утверждению <strong>группа_существительного. </strong>Так как именно утверждение <strong>группа</strong>_ <strong>существительного </strong>выражает свойства, которыми обладает группа существительного, то почему не предположить, что этот предикат сам может решить, на что должна быть похожа соответствующая последовательность? Давайте потребуем, чтобы предикат <strong>группа_существительного </strong>сам решил, какая часть последовательности ему необходима и что необходимо оставить для последующей обработки предикатом <strong>группа_глагола.</strong></p>
    <p>Это обсуждение приводит нас к новому определению предиката <strong>группа_существительного, </strong>который теперь имеет уже два аргумента:</p>
    <p><strong>группа_существительного(Х, Y) </strong><emphasis>истинно, если начальная часть последовательности </emphasis><strong>X</strong> <emphasis>является группой существительного, а остальная часть последовательности есть </emphasis><strong>Y</strong>.</p>
    <p>Таким образом, можно было бы ожидать, что следующие вопросы:</p>
    <empty-line/>
    <p>?- группа_существительного([the,man,eats,the,apple], [eats, the,apple]).</p>
    <p>?- группа_существительного([thе,аррlе,sings], [sings]).</p>
    <empty-line/>
    <p>должны иметь ответ «да». Теперь, чтобы отразить это изменение, мы должны пересмотреть определение предиката <strong>группа_существительного. </strong>Для этого надо решить, как последовательность, выбранная в качестве группы существительного, разбивается на последовательность, представляющую определитель, за которой следует последовательность, являющаяся существительным. Мы можем вновь предоставить решение задачи о том, какую часть последовательности следует выбрать, непосредственно тем утверждениям, которые обрабатывают соответствующие группы слов, положив:</p>
    <empty-line/>
    <p>группа_существительного(Х,Y):- определитель(Х,Z), существительное(Z, Y).</p>
    <empty-line/>
    <p>Таким образом, в начале последовательности <strong>X</strong> имеется <strong>группа, существительного, </strong>если мы можем выделить определитель в начале <strong>X</strong>, обозначив оставшуюся часть <strong>Z</strong>, а затем можем выделить существительное в начале <strong>Z</strong>. Часть последовательности, остающаяся после выделения группы существительного, совпадает с последовательностью, следующей за существительным. На диаграмме это выглядит так:</p>
    <p>[the, man, eats, the, apple]</p>
    <p>|--------------X--------------|</p>
    <p>       |-----------Z-----------|</p>
    <p>                |-------Y-------|</p>
    <p>Для того чтобы все происходило так, как здесь описано, мы должны будем принять относительно предикатов <strong>определитель </strong>и <strong>существительное </strong>соглашение, подобное тому, какое мы приняли для предиката <strong>группа_существительного.</strong></p>
    <p>Приведенное утверждение для предиката <strong>группа_существи-тельного </strong>говорит о том, как задачу выделения группы существительного свести к задаче выделения определителя и следующего за ним существительного. Это аналогично сведению задачи разбора предложения к выделению группы существительного, за которой следует группа глагола. Все это очень абстрактно. Ничто из сказанного не говорит нам о том, как много слов входят в состав определителя, группы существительного или предложения. Эта информация должна извлекаться, исходя из нашей версии правил, которые фактически вводят английские слова. Мы вновь можем представить их в виде утверждений языка Пролог, но на этот раз мы должны добавить дополнительный аргумент, как например:</p>
    <empty-line/>
    <p>определитель([the|Х],Х).</p>
    <empty-line/>
    <p>Это правило (грамматики) выражает тот факт, что определитель стоит в начале последовательности, начинающейся со слова <strong>the</strong>. Более того, определитель занимает лишь первое слово этой последовательности и оставляет все следующие за ним.</p>
    <p>В действительности, для того чтобы показать, как в этой группе слов «используются» слова из последовательности и какая часть последовательности остается необработанной, к каждому предикату, распознающему группу слов некоторого вида, можно добавить дополнительный аргумент. В частности, для единообразия было бы разумно сделать то же самое и с предикатом <strong>предложение</strong>. Как теперь выглядит исходная цель, с которой мы обращаемся к программе? Необходимо решить, какие два аргумента задавать в вопросе для предиката <strong>предложение</strong>. Эти аргументы обозначают последовательность, с которой начинается обработка, и последовательность, оставшуюся после ее завершения. Очевидно, что первый из аргументов – тот же самый, что мы задавали ранее в предикате <strong>предложение</strong>. Кроме того, так как мы хотим выделить предложение, которое включает в себя всю последовательность целиком, то нам надо, чтобы после того, как предложение выделено, ничего не осталось, т. е. чтобы осталась лишь пустая последовательность. Поэтому мы должны обратиться к программе следующим образом:</p>
    <empty-line/>
    <p>?- предложение(the,man,eats,the,аррlе],[]).</p>
    <empty-line/>
    <p>Посмотрим теперь, как выглядит грамматика в целом после того, как мы переписали ее с учетом обсуждавшихся выше изменений:</p>
    <empty-line/>
    <p>предложение(S0,S):- группа_существительного(S0,S1), группа_глагола(S1,S).</p>
    <p>группа_существительного(S0,S):- определитель(S0,S1), существительное(S1,S).</p>
    <p>группа_глагола(S0,S):- глагол(S0,S). </p>
    <p>группа_глагола(S0,S):- глагол(S0,S1), группа_существительного(S1,S).</p>
    <p>определитель([the|S],S).</p>
    <p>существительное([man|S],S). </p>
    <p>существительное([аррle|S],S).</p>
    <p>глагол([eats|S],S). </p>
    <p>глагол([sings|S],S).</p>
    <p>Таким образом, теперь мы получили эффективную версию программы для распознавания предложений, допустимых грамматикой. Однако, к сожалению, последняя запись программы выглядит несколько беспорядочной по сравнению с предыдущей версией. Все дополнительные аргументы засоряют ее и их необходимость не очевидна. Теперь мы рассмотрим, как преодолеть эту проблему.</p>
   </section>
   <section>
    <title>
     <p>9.3. Запись грамматических правил в Прологе</p>
    </title>
    <p>Специальная форма записи грамматических правил в языке Пролог была разработана, чтобы помочь программисту в написании синтаксических анализаторов, использующих описанные только что методы. Такая форма записи облегчает чтение программы, так как скрывается вся информация, не представляющая интереса. В силу того, что эта форма записи является более краткой, чем обычная для Пролога, вероятность сделать глупую опечатку также меньше, если для написания синтаксических анализаторов используются грамматические правила.</p>
    <p>Хотя форма записи грамматических правил, о которой здесь идет речь, вводится сама по себе, важно помнить, что это лишь сокращенная запись обычных Пролог-программ. Вы можете воспользоваться грамматическими правилами либо потому, что ваша Пролог-система уже знает, как их обрабатывать, либо потому, что имеется библиотечный пакет программ, позволяющий использовать специальную форму предиката <strong>consult. </strong>В любом случае, способ обработки грамматических правил системой заключается в распознавании их при вводе и трансляции на обычный Пролог. Таким образом, грамматические правила превращаются в обычные утверждения Пролога, хотя, естественно, выглядят несколько по-иному по сравнению с тем, что программист обычно вводит в систему.</p>
    <p>Рассматриваемая форма записи основывается на форме записи, использованной в начале этой главы для контекстно-свободных грамматик. Действительно, если бы грамматика, представленная в разд. 9.1 (она воспроизведена ниже), была введена в Пролог-систему, то она (грамматика) была бы оттранслирована в точности в те же самые утверждения, которые составляют последнюю версию программы синтаксического анализатора, приведенной в конце предыдущего раздела.</p>
    <empty-line/>
    <p>предложение--› группа_существительного, группа_глагола.</p>
    <p>группа_существительного--› определитель, существительное. </p>
    <p>группа_глагола--› глагол.</p>
    <p>группа_глагола -› глагол, группа_существительного, определитель--› [the].</p>
    <p>существительное--› [man].</p>
    <p>существительное--› [apple].</p>
    <p>глагол--› [eats].</p>
    <p>глагол--› [sings].</p>
    <empty-line/>
    <p>На самом деле грамматические правила представляют структуры языка Пролог с главным функтором '--›' который объявлен как инфиксный оператор. Все, что должна сделать Пролог-система,- это проверить, имеет ли вводимый терм (при использовании предиката <strong>consult </strong>и ему подобных) указанный функтор и, если это так, оттранслировать его в соответствующее утверждение.</p>
    <p>Как происходит эта трансляция? Прежде всего, каждый атом, обозначающий класс словосочетания, должен быть оттранслирован в предикат с двумя аргументами – для входной последовательности и последовательности, остающейся после обработки, как в нашей программе. Затем, всякий раз, когда в правиле встречаются идущие одно за другим имена словосочетаний, соответствующие предикаты должны быть расположены так, чтобы аргументы показывали, что последовательность, которая остается после обработки одного словосочетания, образует входную последовательность для следующего словосочетания. И наконец, всякий раз, когда в правиле указывается, что словосочетание может быть реализовано как последовательность более мелких словосочетаний, аргументы должны говорить о том, что число слов, входящих в словосочетание, равно суммарному числу слов, входящих в более мелкие словосочетания, упоминаемые в правой части правила. Эти критерии гарантируют, например, что правило:</p>
    <empty-line/>
    <p>предложение-› группа_существительного, группа_глагола.</p>
    <empty-line/>
    <p>транслируется в утверждение:</p>
    <empty-line/>
    <p>предложение (S0, S):- группа_существительного(S0,S1), группа_глагола(S1,S).</p>
    <empty-line/>
    <p>или</p>
    <p><emphasis>Между началом </emphasis><strong>S0</strong><emphasis> и </emphasis><strong>S </strong><emphasis>имеется предложение, если между началом </emphasis><strong>S0</strong> <emphasis>и </emphasis><strong>S1</strong> <emphasis>имеется группа существительного, и если между началом </emphasis><strong>S1</strong> <emphasis>и </emphasis><strong>S </strong><emphasis>имеется группа глагола.</emphasis></p>
    <p>Наконец, система должна знать, как транслировать правила, вводящие реальные слова. Трансляция таких правил производится путем включения слов в списки, образующие аргументы соответствующих предикатов, так что, например, правило</p>
    <empty-line/>
    <p>определитель--› [the].</p>
    <empty-line/>
    <p>транслируется в утверждение:</p>
    <empty-line/>
    <p>определитель(the|S],S).</p>
    <empty-line/>
    <p>Если программа синтаксического анализатора представлена в виде совокупности грамматических правил, то каким образом надо задать целевые утверждения, чтобы можно было обработать их программой? Так как известно, как грамматические правила транслируются в утверждения обычного Пролога, то можно выразить целевые утверждения обычным образом, добавив при этом дополнительные аргументы. Первый добавляемый аргумент представляет обрабатываемый список слов, а второй аргумент соответствует списку слов, оставшемуся после обработки, который как правило является пустым списком []. Таким образом, целевое утверждение можно задать так:</p>
    <empty-line/>
    <p>?- предложение([thе, man, eats,the,apple],[]).</p>
    <p>?- группа_существительного([the,man,sings],X).</p>
    <empty-line/>
    <p>В некоторых реализациях Пролога в качестве альтернативы имеется встроенный предикат <strong>phrase, </strong>который просто добавляет дополнительные аргументы. Предикат определен следующим образом:</p>
    <empty-line/>
    <p><strong>phrase (P,L)</strong> <emphasis>истинно, если список </emphasis><strong>L</strong> <emphasis>является допустимым словосочетанием типа </emphasis><strong>Р</strong>.</p>
    <empty-line/>
    <p>Таким образом, можно было бы заменить первое из приведенных выше целевых утверждений следующим:</p>
    <empty-line/>
    <p>?- phrase(прeдложeниe, [the,man,eats,the,apple]).</p>
    <empty-line/>
    <p>Заметим, что определение предиката <strong>phrase </strong>предполагает, что обрабатывается весь список целиком, а список, оставшийся после обработки должен быть пустым. Поэтому второе целевое утверждение нельзя изменить, используя предикат <strong>phrase. </strong>Если в реализации Пролога нет встроенного предиката <strong>phrase, </strong>то его можно легко определить следующим образом:</p>
    <empty-line/>
    <p>phrase(P,L):- Goal =.. [P,L,[]], call(Goal).</p>
    <empty-line/>
    <p>Отметим однако, что данное определение будет не приемлемо, если используются более общие грамматические правила, о которых мы скажем в следующем разделе.</p>
    <p><strong>Упражнение 9.1. </strong>Может быть вы захотите определить на <strong>Прологе </strong>процедуру <strong>translate </strong>таким образом, что <strong>translate(X,Y) </strong>истинно, если <strong>X</strong> – грамматическое правило (подобное тем, с какими мы сталкивались в этом разделе), a <strong>Y</strong> – терм, представляющий соответствующее утверждение Пролога. Это упражнение довольно трудное. Процедуры подобные <strong>translate </strong>имеются в Пролог-системе либо как встроенные, либо в виде библиотечных программ. Но если вы действительно напишите процедуру <strong>translate, </strong>то это поможет вам понять, что представляет собой процесс трансляции.</p>
   </section>
   <section>
    <title>
     <p>9.4. Присоединение дополнительных аргументов</p>
    </title>
    <p>До сих пор рассматривался лишь довольно ограниченный класс грамматических правил. В этом разделе мы введем одно полезное расширение, позволяющее использовать в грамматических правилах дополнительные аргументы. Это «расширение» не выходит за рамки стандартных средств, предоставляемых в Прологе для записи грамматических правил.</p>
    <p>Уже было показано, как имя некоторого класса словосочетаний, встретившееся в грамматическом правиле, транслируется в предикат, имеющий два дополнительных аргумента. Таким образом, грамматические правила приводят к множеству предикатов с двумя аргументами. Иногда при написании синтаксических анализаторов, помимо аргументов, служащих для представления обрабатываемой последовательности, могут потребоваться дополнительные аргументы, тем более, что предикаты в Прологе могут иметь произвольное число аргументов. Предлагаемая здесь форма представления грамматических правил обеспечивает такую возможность.</p>
    <p>Давайте рассмотрим пример, показывающий, когда такие дополнительные аргументы полезны. Разберем задачу «согласования числа» между подлежащим и сказуемым предложения. Последовательности слов подобные</p>
    <p>*The boys eats the apple. </p>
    <p>*The boy eat the apple.</p>
    <p>не являются грамматически правильными предложениями, даже если бы они и допускались грамматикой после незначительного ее расширения ('*' используется для обозначения грамматически неправильных предложений). Причина, по которой они не могут считаться грамматически правильными, состоит в том, что, если подлежащее в предложении употребляется в единственном числе, то и сказуемое в этом предложении должно быть глаголом в единственном числе. Аналогично, если подлежащее употребляется во множественном числе, то и сказуемое должно быть в форме множественного числа. Это можно было бы выразить в грамматических правилах, указав, что существуют два типа предложений: предложения с подлежащим в единственном числе и предложения с подлежащим во множественном числе. Предложение первого типа должно начинаться с группы существительного в единственном числе, в которую должно входить существительное, стоящее в форме единственного числа, и так далее. Это привело бы к следующему множеству правил:</p>
    <empty-line/>
    <p>предложение--› предложение_едч.</p>
    <p>предложение--› предложение_мнч.</p>
    <p>группа_существительного--<emphasis>› </emphasis>группа_существительного_едч.</p>
    <p>группа_существительного--› группа_существительного_мнч.</p>
    <p>предложение_едч--› группа_существительного_едч, группа_глагола_едч.</p>
    <p>группа_существительного_едч--› определитель_едч, существительное_едч.</p>
    <p>группа_глагола_едч--› глагол_едч, группа_существительного.</p>
    <p>группа_глагола_едч--› глагол_едч.</p>
    <p>определитель_едч--› [the].</p>
    <p>существительное_едч--› [boy].</p>
    <p>глагол_едч--› [eats].</p>
    <p>Аналогичное множество правил можно написать и на случай множественного числа. Такой способ согласования числа не очень изящен и скрывает тот факт, что структура предложений для единственного и множественного числа во многом совпадает. Более удачный способ состоит в том, чтобы связать с классами словосочетаний дополнительный аргумент, указывающий на использование единственного или множественного числа. Так <strong>предложение(едч) </strong>обозначает словосочетание <strong>предложение, </strong>употребленное в форме единственного числа. В общем случае, <strong>предложение (X)</strong> обозначает предложение, форма числа которого равна <strong>X</strong>. При этом правила согласования числа сводятся к условиям согласованности значений этих аргументов. Форма числа подлежащего в группе существительного должна совпадать с формой числа группы глагола и так далее. Переписав соответствующим образом грамматические правила, получаем:</p>
    <empty-line/>
    <p>предложение--› предложение(Х).</p>
    <p>предложение(Х)--<emphasis>› </emphasis>группа_существительного(Х), группа _глагола(Х).</p>
    <p>группа_существительного(Х)--› определитель(Х), существительное(Х). </p>
    <p>группа_глагола(Х)--› глагол(Х).</p>
    <p>группа_глагола(X)--› глагол(Х), группа_существительного(Y).</p>
    <p>существительное(едч)--› [boy].</p>
    <p>существительное(мнч) -› [boys].</p>
    <p>определитель(_)--› [the].</p>
    <p>глагол(едч)--› [eats].</p>
    <p>глагол(мнч)--›[eat].</p>
    <empty-line/>
    <p>Обратим внимание на способ, каким можно определить форму числа для <strong>the. </strong>С этого слова могло бы начинаться словосочетание, употребленное в форме как единственного, так и множественного числа, и поэтому форма числа этого слова может быть сопоставлена с чем угодно. Отметим также, что во втором правиле для предиката <strong>группа_глагола </strong>имена переменных выражают факт, что форма числа группы глагола (которая должна быть согласована с формой числа подлежащего) определяется по форме числа глагола, а не по форме числа объекта, если таковой имеется.</p>
    <p>Можно ввести аргументы, выражающие другую важную информацию помимо согласования числа подлежащего и сказуемого. Например, их можно использовать для хранения перечня элементов, составляющих предложения, встретившихся не на своем обычном месте, и тем самым обрабатывать ситуации, называемые лингвистами «смещением». Или же они могут быть использованы для отражения <emphasis>семантических </emphasis>характеристик, указывающих, каким образом значение <emphasis>(смысл) </emphasis>словосочетания составляется из значений более мелких словосочетаний, входящих в исходное. Эти вопросы далее не будут обсуждаться, хотя в разд. 9.6 приведен простой пример использования семантической информации в синтаксическом анализаторе. Однако существует один момент, который здесь необходимо отметить. Лингвистам, возможно, интересно знать, что если в грамматические правила введены дополнительные аргументы, то нельзя гарантировать, что язык, определяемый этой грамматикой, по-прежнему остается контекстно-свободным языком, хотя довольно часто он будет таковым.</p>
    <p>Представляется важной возможность использования дополнительных аргументов для возврата дерева разбора, являющегося результатом синтаксического анализа. В главе 3 было показано, как можно представить деревья в виде структур Пролога. Здесь это будет использовано при расширении синтаксического анализатора с целью включить в него построение дерева разбора. Польза деревьев синтаксического разбора в том, что они дают структурное представление предложения. Удобно писать программы, которые обрабатывают эти структурные представления подобно тому, как обрабатывались арифметические формулы и списки в гл. 7. Новая программа для грамматически правильного предложения, такого например, как</p>
    <p>The man eats the apple.</p>
    <p>строит в качестве результата структуру вида:</p>
    <p>предложение(</p>
    <p> группа_существительного(</p>
    <p>  определитель(thе), существительное(man)),</p>
    <p> группа_глагола(</p>
    <p>  глагол(eats), группа_существительного(определитель(the),существительное(аррlе))</p>
    <p> )</p>
    <p>)</p>
    <p>Чтобы добиться этого, необходимо лишь добавить дополнительные аргументы к каждому предикату, указывая, каким образом дерево, соответствующее всему словосочетанию в целом, конструируется из деревьев для частей этого словосочетания. Так первое правило можно изменить следующим образом:</p>
    <empty-line/>
    <p>предложение(Х,предложение(NP,VP))--› группа_существительного(X,NP), группа_глагола(X,VP).</p>
    <empty-line/>
    <p>Это правило указывает, что, если можно найти последовательность, составляющую группу существительного с деревом разбора <strong>NP, </strong>за которой следует последовательность, составляющая группу глагола, с деревом разбора <strong>VP </strong>то можно найти последовательность, составляющую полное предложение, и деревом разбора для этого предложения является <strong>предложениe(NP,VP). </strong>Или, в более процедурной формулировке: для того, чтобы выполнить разбор предложения необходимо найти группу существительного, за которой следует группа глагола, и затем объединить деревья разбора этих двух составляющих, используя функтор <strong>предложение </strong>для построения дерева разбора предложения. Отметим, что аргументы <strong>X</strong> – это аргументы, использовавшиеся ранее для согласования формы числа, и решение поставить аргументы для построения дерева разбора после, а не перед ними является совершенно произвольным. Если вам трудно понять это расширение возможностей грамматических правил, то полезно напомнить, что последнее правило представляет собою всего лишь краткую запись следующего утверждения на языке Пролог:</p>
    <empty-line/>
    <p>предложение(Х,предложение(NР,VP),S0,S):-группа_существительного(Х,NР,S0,S1),</p>
    <p>группа_глагола(Х,VР,S1,S).</p>
    <empty-line/>
    <p>где <strong>S0</strong>, <strong>S1</strong> и <strong>S</strong> – части входной последовательности слов. Аргументы, предназначенные для построения дерева разбора, можно ввести в правила грамматики обычным образом. Здесь приведен получившийся после этого фрагмент грамматики (аргумент, используемый для согласования формы числа, для ясности опущен):</p>
    <empty-line/>
    <p>предложение(предложение(NР,VP))--›группа _существительного (NP), группа _ глагола (VP).</p>
    <p>группа_глагола(группа_глагола(V))--› глагол(V).</p>
    <p>существительное(существительное(man)) – › [man]. </p>
    <p>глагол(глагол(eats))--› [eats].</p>
    <empty-line/>
    <p>Механизм трансляции, необходимый для перевода грамматических правил с дополнительными аргументами в утверждения Пролога, представляет простое расширение описанного ранее механизма. Ранее, для каждого класса словосочетаний создавался новый предикат с двумя аргументами, представляющими входную последовательность и последовательность, оставшуюся после обработки. Теперь надо создать предикат, имеющий на два аргумента больше, чем имеет соответствующее ему грамматическое правило. По соглашению, эти два дополнительных аргумента записываются в конце списка аргументов предиката (хотя в других Пролог-системах может использоваться иное соглашение). Таким образом, грамматическое правило</p>
    <p>предложение(Х)--› группа_существительного(Х),группа_глагола(Х).</p>
    <p>транслируется в утверждение</p>
    <empty-line/>
    <p>предложение(Х,S0,S):- группа_существительного(Х,S0,S1),группа_глагола(Х,S1,S).</p>
    <empty-line/>
    <p>При вызове целевых утверждений, содержащих грамматические правила, с самого верхнего уровня интерпретатора (т. е. из вопросов, задаваемых программистом.- <emphasis>Ред.) </emphasis>или из обычных правил Пролога, необходимо явным образом указать дополнительные аргументы, добавив их в конец списка аргументов. Таким образом, правильное целевое утверждение, содержащее обращение к функтору <strong>предложение, </strong>должно быть таким:</p>
    <empty-line/>
    <p>?- предложение(Х,[a,clergyman,eats,a, cake],[]).</p>
    <p>?- предложение(Х, [every, bird, sings,and,pigs,can,fly],L).</p>
    <empty-line/>
    <p><strong>Упражнение 9.2. </strong>Напишите новый вариант предиката <strong>phrase, </strong>допускающий использование грамматических правил с дополнительными аргументами. Этот предикат должен допускать целевые утверждения вида:</p>
    <empty-line/>
    <p>?- phrase(предложение(Х),[the, man,sings]).</p>
   </section>
   <section>
    <title>
     <p>9.5. Введение дополнительных условий</p>
    </title>
    <p>Рассматривавшиеся до сих пор грамматические правила, входящие в программу синтаксического анализатора, содержали информацию лишь о том, какая часть входной последовательности обрабатывается каждым из правил. Каждый элемент описания правил должен содержать указание о том, как обрабатывать два дополнительных аргумента, добавленных транслятором грамматических правил. Так что каждое целевое утверждение в результирующем утверждении Пролога обрабатывало определенную часть входной последовательности. Иногда может возникнуть желание определить целевые утверждения иного типа, не связанные непосредственно с обработкой входной последовательности, и рассматриваемый формализм грамматических правил позволяет сделать это. В языке принято следующее соглашение: каждое целевое утверждение, заключенное в фигурные скобки {}, при трансляции не меняется.</p>
    <p>Рассмотрим несколько примеров ситуаций, в которых было бы полезно использовать эту возможность. Мы покажем, как можно улучшить «словарь» синтаксического анализатора, т. е. его «знания» о словах обрабатываемого языка.</p>
    <p>Прежде всего рассмотрим накладные расходы, связанные с введением нового слова в программу, в которой используются оба множества дополнительных аргументов (для согласования формы числа и для построения дерева разбора). Если нужно добавить новое слово, например <strong>banana</strong>, то для этого необходимо добавить хотя бы правило</p>
    <empty-line/>
    <p>существительное(едч, существительное(banana))--› [banana].</p>
    <empty-line/>
    <p>которое сводится к следующему факту на Прологе:</p>
    <empty-line/>
    <p>существительное(едч, существительное(banana),[banana|S],S).</p>
    <empty-line/>
    <p>Это слишком большой объем информации для определения каждого существительного, особенно когда мы знаем, что каждое существительное представляется лишь одним элементом входного списка и порождает небольшое дерево с функтором <strong>существительное. </strong>Значительно более экономичный способ представления основывается на разделении информации. Информация, общая для всех существительных, помещается в одном месте, а информация о конкретных словах в другом месте. Это можно сделать, если одновременно использовать возможности грамматических правил и обычного Пролога. Общая информация о том, каким образом существительные входят в другие словосочетания, представляется с помощью грамматического правила, а информация о том, какие слова являются существительными, представляется с помощью обычных утверждений Пролога. Этот подход можно применить к последнему примеру следующим образом:</p>
    <empty-line/>
    <p>существительное(S,существительное(N)) --› [N], {является_существительным(N,S)}.</p>
    <empty-line/>
    <p>где обычный предикат <strong>является_существительным</strong> указывает, какие слова являются существительными и в какой форме - единственного или множественного числа – они употребляются.</p>
    <empty-line/>
    <p>является_существительным(banana,едч). </p>
    <p>является_существительным(bananas,мнч). </p>
    <p>является_существительным(man,едч).</p>
    <p><strong>. . .</strong></p>
    <empty-line/>
    <p>Давайте подробно разберем, что означает это грамматическое правило. Оно указывает, что словосочетание класса <strong>существительное </strong>может состоять из единственного слова <strong>N</strong> (переменная, определенная в списке), удовлетворяющего некоторому ограничению. Это ограничение заключается в том, что <strong>N</strong> должно входить в число слов, представленных предикатом <strong>является_существительным, </strong>с указанием конкретной формы числа <strong>S</strong>. В этом случае, форма числа словосочетания также <strong>S</strong>, а порождаемое дерево разбора состоит из двух вершин: вершины <strong>существительное </strong>и расположенной под ней вершины <strong>N</strong>. Почему целевое утверждение <strong>является_существительным (N,S) </strong>должно быть заключено в фигурные скобки? Потому, что оно выражает отношение, не имеющее ничего общего с обработкой входной последовательности. Если убрать фигурные скобки, то результат трансляции будет выглядеть примерно так:</p>
    <empty-line/>
    <p>является_существительным(N,S,S1,S2)</p>
    <empty-line/>
    <p>и это целевое утверждение никогда не было бы сопоставлено с утверждениями для <strong>является_существительным</strong>. Заключив целевое утверждение в фигурные скобки, мы тем самым предотвращаем какие-либо его изменения при трансляции. Так что правило будет правильно оттранслировано в следующее утверждение</p>
    <empty-line/>
    <p>существительное(S,существительное(N),[N|Посл],Посл):- является_существительным(N,S).</p>
    <empty-line/>
    <p>Несмотря на внесенное изменение, используемый способ обработки отдельных слов по-прежнему остается недостаточно изящным. Неудобство этого способа состоит в том, что для каждого вновь вводимого слова надо записывать два утверждения <strong>является_существительным</strong> – одно для формы единственного числа, а другое для формы множественного числа. Но в этом нет необходимости, поскольку для большинства существительных формы единственного и множественного числа связаны простым правилом:</p>
    <p><emphasis>Если </emphasis><strong>X</strong> – <emphasis>существительное в форме единственного числа, то слово, получаемое в результате прибавления </emphasis><strong>'s'</strong> <emphasis>к концу слова </emphasis><strong>X</strong>, <emphasis>является формой множественного числа этого существительного</emphasis>.</p>
    <p>Это правило можно использовать для пересмотра определения для <strong>существительное</strong>. В результате будет получено новое множество условий, которым должно удовлетворять слово <strong>N</strong>, для того, чтобы быть существительным. Так как эти условия связаны с внутренней структурой слова и не имеют никакого отношения к обработке входной последовательности, то они будут записаны с использованием фигурных скобок. Слова английского языка представляются как атомы Пролога и поэтому обсуждение вопроса разбиения слов на буквы сводится к рассмотрению литер, составляющих соответствующие атомы. Следовательно, в новом определении необходимо будет использовать предикат <strong>name</strong>. Улучшенный вариант правила выглядит следующим образом:</p>
    <empty-line/>
    <p>существительное(мнч,существительное(КореньN))--›</p>
    <p> [N], {(name(М,Мнимя), присоединить(Едимя,"s",Мнимя), name(КореньN,Едимя), является_существительным(КореньN,едч))}.</p>
    <p>Конечно, представленное здесь общее правило о форме множественного числа существительных справедливо не во всех случаях (например, множественное число для «fly» не совпадает с «flys»), И по-прежнему необходимо исчерпывающим образом описывать все исключения. Обратите внимание на использование двойных кавычек для представления списка, содержащего литеру <strong>'s'.</strong> Теперь необходимо определять утверждения для предиката <strong>является_существительным </strong>лишь для существительных в единственном числе, если форма множественного числа для них образуется по указанному выше правилу. Заметьте, что в соответствии с приведенным определением в дерево разбора вставляется существительное в форме единственного, а не множественного числа. Это может оказаться полезным при последующей обработке дерева разбора. Обратите также внимание на то, как использованы фигурные скобки. В различных реализациях Пролога некоторые детали синтаксиса могут немного отличаться, но наиболее безопасно заключать содержимое фигурных скобок в дополнительные круглые скобки, если оно состоит более чем из одного целевого утверждения, и оставлять пропуск между фигурной скобкой и точкой, завершающей правило.</p>
    <p>Большинство трансляторов синтаксических правил, помимо целевых утверждений, заключенных в фигурные скобки, оставляют неизменными и некоторые другие целевые утверждения. Так, обычно нет необходимости заключать в фигурные скобки '!' или дизъюнкции (;) целевых утверждений.</p>
   </section>
   <section>
    <title>
     <p>9.6. Заключение</p>
    </title>
    <p>В этом разделе мы подведем итог тем сведениям, которые мы получили о синтаксисе грамматических правил. Затем будут указаны некоторые из возможных расширений и показаны некоторые интересные способы использования грамматических правил. Лучший способ описать синтаксис грамматических правил – сделать это с помощью самих же грамматических правил. Таким образом, здесь приводится некоторое неформальное описание синтаксиса. Отметим, что оно не является абсолютно строгим, так как в нем не учитывается влияние приоритета операторов на синтаксис.</p>
    <empty-line/>
    <p>грамматическое правило--› заголовок, ['--›'], тело.</p>
    <p>заголовок--› нетерминальный_символ.</p>
    <p>заголовок--› нетерминальный_символ, [','], терминальный_символ</p>
    <p>тело--› тело, [','], тело.</p>
    <p>тело--› тело, [';'], тело.</p>
    <p>тело--› элемент_тела.</p>
    <p>элемент_тела--› ['!'].</p>
    <p>элемент_тела--› ['{'], целевые_утверждения_пролога, ['}'].</p>
    <p>элемент_тела--› нетерминальный_символ.</p>
    <p>элемент_тела--› терминальный_символ.</p>
    <empty-line/>
    <p>Ряд элементов описания неопределен. Здесь приведены их определения на естественном языке.</p>
    <p><strong>нетерминальный_символ</strong> <emphasis>обозначает класс словосочетаний, которые могут входить во входную последовательность. Он имеет вид структуры языка Пролог, функтор которой обозначает категорию словосочетаний, а аргументы дают дополнительную информацию (форму числа, значение и так далее).</emphasis></p>
    <p><strong>терминальный_символ</strong> <emphasis>указывает ряд слов, которые могут быть частью входной последовательности. Он имеет вид списка языка Пролог и может быть либо пустым списком [], либо списком некоторой фиксированной длины. Элементы этого списка должны быть сопоставимы со словами последовательности в соответствии с заданным порядком.</emphasis></p>
    <p><strong>целевые_утверждения_пролога </strong>- <emphasis>это любые целевые утверждения языка Пролог. Они могут быть использованы для записи дополнительных условий и действий, ограничивая возможные пути анализа и указывая, как сложные результаты строятся из простых.</emphasis></p>
    <p>При трансляции на Пролог, <strong>целевые_утверждения_пролога </strong>остаются неизменными, а <strong>нетерминальный_символ </strong>получает два дополнительных аргумента, которые вставляются после явно указанных аргументов. Дополнительные аргументы соответствуют последовательности, в которой выделяется словосочетание, и последовательности, которая остается после выделения словосочетания. Терминальные символы появляются среди дополнительных аргументов нетерминальных символов. При вызове предиката, определенного грамматическими правилами, с верхнего уровня интерпретатора или из обычного правила Пролога необходимо явно указать два дополнительных аргумента.</p>
    <p>Во втором правиле для предиката <strong>заголовок </strong>описывается класс грамматических правил, с которыми нам еще не приходилось сталкиваться. До сих пор определения терминальных и нетерминальных символов содержали информацию лишь о том, как они обрабатывают входную последовательность. Иногда может возникнуть желание определить правила таким образом, чтобы они вставляли элементы во входную последовательность (для обработки другими правилами). Например, предложение в повелительном наклонении можно было бы анализировать следующим образом. В исходное предложение</p>
    <p>Eat your supper.</p>
    <p>вставляется дополнительное слово: </p>
    <p>You eat your supper.</p>
    <p>Получившееся предложение имеет правильную структуру, согласующуюся с нашими представлениями о структуре предложений. Это можно сделать, используя грамматическое правило вида:</p>
    <empty-line/>
    <p>предложение--› императив, группа_существительного, группа_глагола. </p>
    <p>императив,[you]--› [].</p>
    <p>императив--› [].</p>
    <empty-line/>
    <p>Из приведенных здесь правил лишь одно заслуживает внимания. Это первое правило для <strong>императив</strong>, которое транслируется в утверждение</p>
    <empty-line/>
    <p>императив(L,[уоu|L]).</p>
    <empty-line/>
    <p>То есть, последовательность, возвращаемая после обработки, длиннее исходной последовательности. В общем случае, левая часть грамматического правила может включать нетерминальный символ, за которым, через запятую, следует список слов. Смысл такого правила состоит в том, что в процессе разбора предложения слова, указанные в списке, вставляются во входную последовательность после того, как завершится обработка целевыми утверждениями в правой части правила.</p>
    <p><strong>Упражнение 9.3.</strong> Приведенное определение для грамматических правил, даже если бы оно было полным, не сможет выполнить функции синтаксического анализатора, если на вход ему подавать последовательность знаков. Почему?</p>
    <p>В заключение рассмотрим пример грамматических правил, используемых для непосредственного извлечения «смысла» предложений, минуя этап построения дерева разбора. Этот пример взят из статьи Pereira, Warren, Artificial Intelligence, v. 13. Представленные далее правила транслируют предложения из ограниченного подмножества предложений английского языка в некоторое представление на языке исчисления предикатов, отражающее смысл этих предложений. Описание исчисления предикатов и используемой формы записи даны в гл. 10. В качестве примера работы программы мы приведем предложение «every man loves a woman» и соответствующую структуру, отражающую его смысл:<a l:href="#n_14" type="note">[14]</a></p>
    <p>all(X,(man(X)&#8594;exists(Y,(woman(Y)&amp; loves(X,Y))))) </p>
    <p>Здесь представлены грамматические правила программы:</p>
    <empty-line/>
    <p>?- op(100,xfy,&amp;)</p>
    <p>?- op(150,xfy,&#8594;)</p>
    <p>предложение(Р)--› группа_существительного(Х,Р1,Р),группа_глагола(Х,Р1).</p>
    <p>группа_существительного(Х,Р1,Р)--›определитель(Х,Р2,Р1,Р),существительное(Х,Р3), отн_утверждение(Х,Р3,Р2).</p>
    <p>группа_существительного(Х,Р,Р)--› наст_существительное(Х).</p>
    <p>группа_глагола(Х,Р)--› перех_глагол(Х,Y,Р1),группа_существительного(Y,Р1,Р). </p>
    <p>группа_глагола(Х,Р)--› неперех_глагол(Х,Р).</p>
    <p>отн_утверждение(Х,Р1,(Р1&amp;Р2))--› [that], группа_глагола(Х,Р2). </p>
    <p>отн_утверждение(_,Р,Р)--› [].</p>
    <p>определитель(Х,Р1,Р2,аll(Х,(Р1&gt;Р2)))--› [every].</p>
    <p>определитель(Х,Р1,Р2,ехists(Х,(Р1&amp;Р2)))--› [а].</p>
    <p>существительное(Х,man(Х))--› [man].</p>
    <p>существительное(Х, woman (X))--› [woman].</p>
    <p>наст_существительное(john)--› [john].</p>
    <p>пepex_глагол(X,Y,loves(X,Y))--› [loves].</p>
    <p>неперех_глагол(Х,lives(Х)))--› [lives].</p>
    <empty-line/>
    <p>В этой программе аргументы используются для построения структур, представляющих смысл словосочетаний. Смысл каждого словосочетания определяет последний аргумент соответствующего правила. Однако смысл словосочетания может зависеть от некоторых других факторов, представленных другими аргументами. Например, глагол <strong>lives </strong>(живет) порождает высказывание вида <strong>lives(X), </strong>где <strong>X</strong> – это объект, обозначающий человека, который живет. Смысл слова <strong>lives </strong>не позволяет заранее определить, чем будет являться <strong>X</strong>. Чтобы быть полезным, понятие подобное <strong>lives </strong>должно быть применимо к некоторому конкретному классу объектов. Что представляет этот объект, будет определено из контекста, в котором используется глагол <strong>lives. </strong>Таким образом, имеем следующее определение: для любого <strong>X</strong>, применение глагола <strong>lives </strong>к <strong>X </strong>имеет смысл <strong>lives(X). </strong>Слово, подобное <strong>every </strong>(каждый), является значительно более сложным. В этом случае понятие, соответствующее слову, должно применяться к некоторой переменной и к двум высказываниям, содержащим эту переменную. Результат можно сформулировать так: если подстановка некоторого объекта вместо переменной в первом утверждении делает что-то истинным, то подстановка того же объекта вместо переменной во втором утверждении также сделает что-то истинным.</p>
    <p><strong>Упражнение 9.4. </strong>Разберитесь в приведенной программе. Попробуйте проследить выполнение программы при обращении к ней с вопросами типа</p>
    <empty-line/>
    <p>?- предложение(Х, [every, man, loves, a, woman],[]).</p>
    <empty-line/>
    <p>Во что транслируются программой предложения «Every man that lives loves a woman» и «Every man that loves a woman lives». Предложение «Every man loves a woman» является в действительности двусмысленным - может существовать либо единственная женщина, которая нравится каждому мужчине, либо несколько женщин, каждая из которых нравится мужчине. Может ли программа породить альтернативные решения, описывающие смысл каждой из двух указанных интерпретаций предложения? Если нет, то почему? Какое простое предположение о построении структуры, отражающей смысл предложения, было сделано при написании программы?</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 10. ПРОЛОГ И МАТЕМАТИЧЕСКАЯ ЛОГИКА</p>
   </title>
   <section>
    <p>Язык программирования Пролог был разработан коллективом во главе с Колмерауэром приблизительно в 1970 году. Это была первая попытка в разработке языка, который позволял бы программисту описывать свои задачи средствами математической логики, а не с помощью традиционных для программирования конструкций, указывающих <emphasis>что </emphasis>и <emphasis>когда </emphasis>должна делать вычислительная машина. Эта идея нашла отражение в названии языка программирования «Пролог» (английское название «Prolog» является сокращением для Programming in <emphasis>Logic.</emphasis>- <emphasis>Перев.).</emphasis></p>
    <p>В этой книге основное внимание было уделено вопросам, связанным с использованием Пролога в качестве инструментального средства для решения практических задач. При этом ничего не говорилось о путях достижения конечной цели – создании системы логического программирования, шагом к которой является Пролог. В этой главе мы намереваемся отчасти исправить это несоответствие, рассмотрев вкратце связь Пролога с математической логикой и вопрос о том, в какой степени программирование на Прологе соответствует идее логического программирования.</p>
   </section>
   <section>
    <title>
     <p>10.1. Краткое введение в исчисление предикатов</p>
    </title>
    <p>Если мы намерены обсуждать связь Пролога с математической логикой, то прежде всего необходимо установить, что мы понимаем под логикой. Первоначально логика развивалась как некоторый способ представления определенного класса высказываний, так чтобы можно было, используя формальную процедуру, проверить, справедливы они или нет. Таким образом, логика может быть использована для выражения высказываний, отношений между высказываниями и <emphasis>правил вывода </emphasis>одних высказываний из других. Логическое исчисление специального вида, о котором будет идти речь в этой главе, называется <emphasis>исчисление предикатов. </emphasis>Здесь мы лишь затронем некоторые вопросы исчисления предикатов. Хорошим введением в математическую логику является книга Hodges W. <emphasis>Logic, </emphasis>Penguin Books, 1977. Более подробное обсуждение предмета дано в книге Mendelson E. <emphasis>Intro ductiontoMathematicalLogic, </emphasis>VanNostrandReinhold.<a l:href="#n_15" type="note">[15]</a> Вы так же можете обратиться к любой книге по математической логике. Другая книга, представляющая интерес, написана Chin L. С, Lee R. С.-Т. <emphasis>Symbolic Logic and Mechanical Theorem Proving, </emphasis>Academic Press, 1973.<sup><a l:href="#n_16" type="note">[16]</a></sup></p>
    <p>Для того чтобы делать высказывания о мире, необходимо уметь описывать объекты этого мира. В исчислении предикатов объекты представляются с помощью <emphasis>термов. </emphasis>Существуют термы трех типов:</p>
    <p>• <emphasis>Константа. </emphasis>Это символ, обозначающий индивидуальный объект или понятие. Константы можно рассматривать как атомы языка Пролог и далее будет использоваться соответствующая форма записи. Так, <strong>грек</strong>, <strong>агата</strong> и <strong>мир</strong> являются константами.</p>
    <p>• <emphasis>Переменная. </emphasis>Это символ, используемый в разное время для обозначения разных индивидуальных объектов. Переменные вводятся лишь одновременно с кванторами, о которых будет сказано далее. Термы, являющиеся переменными, можно рассматривать как переменные языка Пролог и далее для их обозначения будет использоваться синтаксис, принятый в Прологе. Таким образом, <strong>X</strong>, <strong>Человек</strong> и <strong>Грек</strong> являются переменными.</p>
    <p>• <emphasis>Составной терм. </emphasis>Составной терм состоит из<emphasis> функционального символа </emphasis>и упорядоченного множества термов, являющихся его <emphasis>аргументами. </emphasis>Идея состоит в том, что составной терм обозначает тот или иной индивидуальный объект, зависящий от других индивидуальных объектов, представленных его аргументами. Функциональный символ описывает характер зависимости. Например, можно было бы иметь функциональный символ, обозначающий «расстояние» и имеющий два аргумента. В этом случае составной терм обозначает расстояние между объектами, представленными его аргументами. Составной терм можно рассматривать как структуру языка Пролог, имеющую в качестве функтора функциональный символ. Составные термы будут записываться по правилам синтаксиса Пролога так, что, например, <strong>жена(генри)</strong> может обозначать жену Генри, <strong>расстояние(точка1, X)</strong> может обозначать расстояние между некоторой заданной точкой и каким-то другим объектом, который будет указан, а <strong>классы(мэри, на_следующий_ день_после(Х)) </strong>может обозначать классы, в которых преподавала Мэри на следующий после <strong>X</strong> (необходимо указать день).</p>
    <p>Таким образом, способы, используемые для представления объектов в исчислении предикатов, в точности соответствуют способам, имеющимся для этого в Прологе.</p>
    <p>Для того чтобы делать высказывания об объектах, необходимо иметь возможность описывать отношения между объектами. Это делается с помощью <emphasis>предикатов. Атомарное высказывание </emphasis>(атомарная формула) состоит из предикатного символа и соответствующего ему упорядоченного множества термов, являющихся его аргументами. Это полностью аналогично целевому утверждению Пролога. Так, например, <strong>человек(мэри), владеет(Х,осел(Х)) </strong>и <strong>нравится (Мужчина, вино) </strong>являются атомарными высказываниями (атомарными формулами). В языке Пролог структура может быть использована как в качестве целевого утверждения, так и в качестве аргумента для другой структуры. В исчислении предикатов дело обстоит иначе. Там имеется строгое разделение между функциональными символами, используемыми в качестве функторов для построения аргументов, и предикатными символами, используемыми в качестве функторов для построения высказываний (формул).</p>
    <p>Используя атомарные высказывания, можно различными способами создавать составные высказывания. Именно здесь начинают появляться понятия не имеющие непосредственных аналогов в языке Пролог. Существует несколько способов построения более сложных высказываний из более простых. Прежде всего, можно использовать <emphasis>логические связки. </emphasis>Таким способом можно выразить понятия 'не', 'и', 'или', 'влечет' и 'является эквивалентным'. Далее приведено краткое описание этих связок и вкладываемых в них значений. Здесь ? и ? используются для обозначения произвольных высказываний (формул). В следующей таблице приводятся традиционная форма записи высказываний, используемая в исчислении предикатов, и форма записи, используемая в этой главе.</p>
    <table>
     <tr align="left">
      <th align="left" valign="top">Логическая связка</th>
      <th align="left" valign="top">Исчисление предикатов</th>
      <th align="left" valign="top">Обозначение в книге </th>
      <th align="left" valign="top">Значение</th>
     </tr>
     <tr align="left">
      <td align="left" valign="top">Отрицание</td>
      <td align="left" valign="top">&#8969;&#945;</td>
      <td align="left" valign="top">~&#945;</td>
      <td align="left" valign="top">«не &#945;»</td>
     </tr>
     <tr align="left">
      <td align="left" valign="top">Конъюнкция</td>
      <td align="left" valign="top">&#945;&#8743;&#946; </td>
      <td align="left" valign="top">&#945;&amp;&#946; </td>
      <td align="left" valign="top">«&#945; и &#946;» </td>
     </tr>
     <tr align="left">
      <td align="left" valign="top">Дизъюнкция </td>
      <td align="left" valign="top">&#945;&#8744;&#946; </td>
      <td align="left" valign="top">&#945;#&#946; </td>
      <td align="left" valign="top">«&#945; или &#946;» </td>
     </tr>
     <tr align="left">
      <td align="left" valign="top">Импликация </td>
      <td align="left" valign="top">&#945;&#8835;&#946; </td>
      <td align="left" valign="top">&#945;-›&#946; </td>
      <td align="left" valign="top">«&#945; влечет &#946;» </td>
     </tr>
     <tr align="left">
      <td align="left" valign="top">Эквивалентность </td>
      <td align="left" valign="top">&#945;&#8801;&#946; </td>
      <td align="left" valign="top">&#945;‹-›&#946; </td>
      <td align="left" valign="top">«&#945; эквивалентна &#946;» </td>
     </tr>
    </table>
    <p>Так, например, конструкция</p>
    <p>мужчина(фред) # женщина (фред)</p>
    <p>могла бы быть использована для представления высказывания о том, что Фред является мужчиной <emphasis>или </emphasis>Фред является женщиной. Конструкция</p>
    <p>мужчина(джон) -› человек (джон)</p>
    <p>могла бы представлять высказывание: то, что Джон является мужчиной, <emphasis>влечет </emphasis>то, что он является человеком <emphasis>(если </emphasis>Джон мужчина, то он – человек). Понятия импликации и эквивалентности иногда при первом знакомстве с ними представляются несколько сложными. Мы говорим, что &#945; влечет &#946;, если всякий раз, когда &#945; истинно, то &#946; также истинно. Мы говорим, что &#945; эквивалентно &#946;, если &#945; истинно в точности в тех же случаях, что и &#946;. В действительности, эти понятия могут быть определены через понятия 'и', 'или', 'не'. А именно:</p>
    <p>&#945;-›&#946; значит то же самое, что (~&#945;)#&#946;</p>
    <p>&#945;‹-›&#946; значит то же самое, что и (&#945;&amp;&#946;)#(~&#945;&amp;~&#946;)</p>
    <p>&#945;‹-›&#946; также значит то же самое, что и (&#945;-›&#946;)&amp;(&#945;-›&#946;)</p>
    <p>До сих пор ничего не было сказано о том, что значат переменные, входящие в состав высказывания. В действительности, использование переменных имеет смысл лишь в случае, когда они вводятся с помощью <emphasis>кванторов. </emphasis>Кванторы позволяют делать высказывания о множествах объектов и формулировать утверждения, истинные для этих множеств. В исчислении предикатов имеются два квантора. Если &#957; обозначает переменную, а &#961; – это произвольное высказывание, то коротко значение кванторов можно выразить так:</p>
    <table>
     <tr align="left">
      <th align="left" valign="top">Исчисление предикатов</th>
      <th align="left" valign="top">Обозначение в книге </th>
      <th align="left" valign="top">Значение</th>
     </tr>
     <tr align="left">
      <td align="left" valign="top">&#8704;&#957;. &#961;</td>
      <td align="left" valign="top">all(&#957;, &#961;) </td>
      <td align="left" valign="top">«&#961; истинно для всех значений переменной &#957;» </td>
     </tr>
     <tr align="left">
      <td align="left" valign="top">&#8707;&#957;.&#961; </td>
      <td align="left" valign="top">exists(&#957;, &#961;) </td>
      <td align="left" valign="top">«существует такое значение переменной &#961;, для которого &#957; истинно» </td>
     </tr>
    </table>
    <p>Первый из кванторов называется <emphasis>квантором общности, </emphasis>так как он указывает на все объекты, существующие во вселенной («для всех &#957;,…»). Второй квантор называется <emphasis>квантором существования, </emphasis>так как он указывает на существование некоторого объекта (или объектов) («существует &#957; такой что…»). В качестве примера приведем формулу</p>
    <p>all(X, мужчина(Х) -› человек(Х))</p>
    <p>которая значит, что какое бы значение <strong>X</strong> мы не выбрали, если <strong>X</strong> является мужчиной, то тогда <strong>X</strong> – человек. Эту формулу можно прочитать так: <emphasis>для любого </emphasis><strong>X</strong>, <emphasis>если </emphasis><strong>X</strong> <emphasis>является мужчиной, то </emphasis><strong>X</strong> <emphasis>является человеком. </emphasis>Или в более простой формулировке: <emphasis>каждый мужчина является человеком. </emphasis>Аналогично</p>
    <p>exists(Z, отец(джон,2)&amp; женщина(Z)))</p>
    <p>значит, что существует объект, обозначаемый <strong>Z</strong> такой, что Джон является отцом <strong>Z</strong> и <strong>Z</strong> – женщина. Эту формулу можно прочитать так: <emphasis>существует </emphasis><strong>Z</strong> <emphasis>такой, что Джон является отцом </emphasis><strong>Z</strong> и <strong>Z</strong> – <emphasis>женщина. </emphasis>Или в более естественной формулировке: <emphasis>Джон имеет дочь. </emphasis>Ниже приведены две более сложные формулы исчисления предикатов:</p>
    <p>all(X, животное(Х) -› exists(Y,мать(X,Y))) </p>
    <p>all(X, формула_исчисления_предикатов(Х) ‹-› атомарная_формула(Х) # составная_формула(Х))</p>
   </section>
   <section>
    <title>
     <p>10.2. Приведение формул к стандартной форме</p>
    </title>
    <p>Как было показано в предыдущем разделе, формулы исчисления предикатов, записанные с использованием связок -› (импликация) и ‹-› (эквивалентность), могут быть переписаны лишь с использованием связок&amp; (конъюнкция), # (дизъюнкция) и ~ (отрицание). В действительности, существует множество разных форм записи формул, и мы ни в коей мере не принесли бы в жертву выразительность формул, если бы должны были полностью отказаться от использования, например, <strong>#</strong>, <strong>-›</strong>, <strong>‹-› </strong>и <strong>exists(X, P)</strong>. Как следствие этой избыточности, существуют много различных способов записи одного и того же высказывания. При необходимости выполнять формальные преобразования формул исчисления предикатов это оказывается очень неудобным. Было бы значительно лучше, если бы все, что мы хотим сказать, можно было выразить единственным способом. Поэтому здесь будет рассмотрен способ преобразования формул исчисления предикатов к специальному виду – <emphasis>стандартной форме, </emphasis>- обладающему тем свойством, что число различных способов записи одного и того же утверждения меньше по сравнению с использованием других форм. В действительности будет показано, что высказывание исчисления предикатов, представленное в стандартной форме, очень похоже на некоторое множество утверждений языка Пролог. Так что исследование стандартной формы имеет существенное значение для понимания связи между Прологом и математической логикой. В приложении В будет коротко описана программа на Прологе, автоматически транслирующая формулы исчисления предикатов в стандартную форму.</p>
    <p>Процесс приведения формулы исчисления предикатов к стандартной форме состоит из шести основных этапов.</p>
    <subtitle>Этап 1 - исключение импликаций и зквивалентностей</subtitle>
    <p>Процедура начинается с замены всех вхождений -› и ‹-<emphasis>› </emphasis>в соответствии с их определениями, данными в разд. 10.1. Так, например, формула</p>
    <p>аll(Х,мужчина(Х) -› человек(Х))</p>
    <p>будет преобразована в формулу</p>
    <p>аll(Х,~мужчина(Х) # человек(Х))</p>
    <subtitle>Этап 2 - перенос отрицания внутрь формулы</subtitle>
    <p>На этом этапе обрабатываются случаи применения отрицания к формулам, не являющимся атомарными. Если такой случай имеет место, то формула переписывается по соответствующим правилам. Так, например, формула</p>
    <p>~(человек (цезарь)&amp; существующий (цезарь))</p>
    <p>преобразуется в</p>
    <p>~человек(цезарь) # существующий (цезарь) </p>
    <p>а</p>
    <p>~аll(Х, человек (X))</p>
    <p>преобразуется в</p>
    <p>exists(Х,~человек(Х))</p>
    <p>Преобразования, выполняемые на втором этапе, основаны на следующих фактах:</p>
    <p><strong>~(&#945;&amp;&#946;)</strong> значит то же самое, что и <strong>(~&#945;) # (~&#946;)</strong></p>
    <p><strong>~exists(&#957;,&#961;)</strong> значит то же самое, что и <strong>all(&#957;,~&#961;) </strong></p>
    <p><strong>~all(&#957;,&#961;)</strong> значит то же самое, что и <strong>exists(&#957;,~&#961;)</strong></p>
    <p>После завершения второго этапа каждое вхождение отрицания в формулу будет относиться лишь к атомарным подформулам. Атомарная формула или ее отрицание называется <emphasis>литералом. </emphasis>На всех последующих этапах литералы обрабатываются как единый элемент, а то, какие литералы представлены отрицанием, будет существенным лишь в самом конце.</p>
    <subtitle>Этап 3 - сколемизация</subtitle>
    <p>На следующем этапе удаляются кванторы существования. Это делается путем введения новых констант – <emphasis>сколемовских констант </emphasis>- вместо переменных связанных (введенных) квантором существования. Вместо того чтобы говорить, что существует объект, обладающий некоторым множеством свойств, можно ввести имя для такого объекта и просто сказать, что он обладает данными свойствами. Это соображение лежит в основе введения сколемовских констант. Сколемизация более существенно изменяет логические свойства формулы, чем все обсуждавшиеся ранее преобразования. Тем не менее, она обладает следующим важным свойством. Если имеется формула, то интерпретация, в которой эта формула истинна, существует тогда и только тогда, когда существует интерпретация, в которой истинна формула, полученная из первой в результате сколемизации. Такая форма эквивалентности формул вполне достаточна для наших целей. Так, например, формула</p>
    <p>exists(X,женщина(X)&amp; мать(Х,ева))</p>
    <p>в результате сколемизации преобразуется в формулу </p>
    <p>женщина(g1)&amp; мать(g1, ева)</p>
    <p>где <strong>g1</strong> – некоторая новая константа, не использовавшаяся ранее. Константа <strong>g1</strong> представляет некоторую женщину, мать которой есть Ева. То, что для обозначения константы использован символ» отличный от использовавшихся ранее, существенно, так как в высказывании ничего не говорится о том, что какой-то конкретный человек является дочерью Евы. В утверждении говорится лишь о том, что такой человек существует. Может оказаться, что <strong>g1</strong> будет соответствовать тот же самый человек, который соответствует другой константе, но это уже дополнительная информация, никак не выраженная в высказывании.</p>
    <p>Если формула содержит кванторы общности, то процедура сколемизации уже не столь проста. Например, если в формуле <sup><a l:href="#n_17" type="note">[17]</a></sup></p>
    <p>аll(Х, человек(Х) -› exists(Y,мать(X,Y)))</p>
    <p>(«каждый человек имеет мать») заменить каждое вхождение переменной V, связанной квантором существования, на константу <strong>g2</strong> и удалить квантор существования, то получится:</p>
    <p>all(X, человек(Х) -› мать(X,g2))</p>
    <p>Последнее высказывание говорит о том, что все люди имеют <emphasis>одну и ту </emphasis>же мать, обозначенную в формуле константой <strong>g2</strong>. Если в формуле есть переменные, введенные посредством кванторов общности, то при сколемизации необходимо вводить не константы, а <emphasis>составные термы </emphasis>(функциональные символы с множеством переменных аргументов) для того, чтобы отразить, как объект, о существовании которого идет речь, <emphasis>зависит </emphasis>от того, что обозначают переменные. Таким образом, при сколемизации предыдущего примера должно получиться</p>
    <p>all(X, человек(Х) -› мать(Х, g2(Х)))</p>
    <p>В этом случае функциональный символ <strong>g2</strong> соответствует функции, которая каждому конкретному человеку ставит в соответствие его мать.</p>
    <subtitle>Этап 4 - вынесение кванторов общности в начало формулы</subtitle>
    <p>Этот этап очень прост. Каждый квантор общности просто выносится в начало формулы. Это не влияет на значение формулы. Так, например, формула</p>
    <p>all(X, мужчина(Х) -› аll(Y,женщина(Y) -› нравится (X,Y)))</p>
    <p>преобразуется в</p>
    <p>аll(Х, аll(Y,мужчина(Х) -› (женщина(Y) -› нравится (X,Y))))</p>
    <p>Так как теперь каждая переменная в этой формуле вводится посредством квантора общности, находящегося в начале формулы, то кванторы сами по себе не несут больше какой-либо дополнительной информации. Поэтому можно сократить формулу, опустив кванторы. Необходимо лишь помнить, что каждая переменная вводится посредством не указанного явно квантора, который опущен при записи формулы. Таким образом, формулу</p>
    <p>аll(Х,живой(Х) # мертвый(Х)&amp; аll(Y,нравится(мэри,Y) #грязный(Y))</p>
    <p>теперь можно представить так:</p>
    <p>(живой(Х) # мертвый(Х))&amp; (нравится(мэри,Y) # грязный (Y))</p>
    <p>Эта формула значит, что, какие бы <strong>X</strong> и <strong>Y</strong> ни были выбраны, либо <strong>X</strong> живой, либо <strong>X</strong> мертвый, и либо Мэри нравится <strong>Y</strong>, либо <strong>Y</strong> – грязный.</p>
    <subtitle>Этап 5 - использование дистрибутивных законов для &amp; и #</subtitle>
    <p>На этом этапе исходная формула исчисления предикатов претерпела довольно много изменений. Формула больше не содержит в явном виде кванторов, а из логических связок в ней остались лишь &amp; и # (помимо отрицания, входящего в состав литералов). Теперь формула преобразуется к специальному виду <emphasis>- конъюнктивной нормальной форме, </emphasis>характерной тем, что дизъюнктивные члены формулы не содержат внутри себя конъюнкцию. Таким образом, формулу можно преобразовать к такому виду, когда она будет представлять последовательность элементов, соединенных друг с другом конъюнкциями, а каждый элемент является либо литералом, либо состоит из нескольких литералов, соединенных дизъюнкцией. Чтобы привести формулу к такому виду, необходимо использовать следующие два тождества:</p>
    <p><strong>(А&amp;В) # С</strong> эквивалентно <strong>(А # С)&amp;(В # С) </strong></p>
    <p><strong>А # (В&amp;С)</strong> эквивалентно (<strong>А # В)&amp;(А # С)</strong></p>
    <p>Так, например, формула:</p>
    <p>выходной(Х) # (работает(крис, X) &amp; (сердитый (крис) # унылый(крис)))</p>
    <p>(Для каждого <strong>X</strong> либо <strong>X</strong> – выходной день, либо Крис работает в день <strong>X</strong> и при этом он либо сердитый, либо унылый) эквивалентна следующей:</p>
    <p>выходной(Х) # (работает(крис,Х)) &amp; (выходной(Х) # (сердитый(крис) # унылый(крис)))</p>
    <p>(Для каждого <strong>X</strong>, во-первых, <strong>X</strong> является выходным днем или Крис работает в день <strong>X</strong>; во-вторых, либо <strong>X</strong> – выходной день, либо Крис сердитый или унылый).</p>
    <subtitle>Этап 6 - выделение множества дизъюнктов</subtitle>
    <p>Формула, имеющаяся к началу этого этапа, в общем случае представляет совокупность конъюнктивных членов, являющихся литералами или состоящих из литералов, соединенных дизъюнкцией. Давайте сначала рассмотрим структуру формулы на верхнем уровне, не вникая в детали организации конъюнктивных членов. Формула могла бы иметь, например, следующий вид:</p>
    <p>(А &amp; В) &amp; (С &amp; (D &amp; Е))</p>
    <p>где переменные обозначают, возможно, сложные высказывания (формулы), но при этом они не содержат внутри конъюнкций. На данном этапе нет никакой необходимости знать структуру вложенности, представляемую использованием скобок, так как все высказывания</p>
    <p>(А &amp; В) &amp; (С &amp; (D <emphasis>&amp; </emphasis>Е)) А <emphasis>&amp; </emphasis>(( В&amp; С) &amp; (D <emphasis>&amp; </emphasis>Е)) (А &amp; В) &amp; ((С <emphasis>&amp; </emphasis>D) <emphasis>&amp; </emphasis>Е<emphasis>)</emphasis></p>
    <p>обозначают одно и то же. И хотя <emphasis>структурно </emphasis>эти формулы различны, они имеют один и тот же смысл. Это объясняется тем, что если установлена истинность <emphasis>всех </emphasis>высказываний из некоторого множества, то не имеет значения каким образом они группируются в сложное конъюнктивное высказывание. Не имеет значения, например, как сказать «<strong>А</strong> истинно и <strong>В</strong> и <strong>С</strong> также истинны» или «<strong>А</strong> и <strong>В</strong> истинны и <strong>С</strong> тоже истинно». Следовательно, скобки никак не влияют на смысл формулы. Можно просто написать (неформально):</p>
    <p>A &amp; B &amp; C &amp; D &amp; E</p>
    <p>Далее, порядок записи этих формул также не имеет значения. Безразлично, как сказать: «<strong>А</strong> и <strong>В</strong> истинны» или «<strong>В</strong> и <strong>А</strong> истинны», так как оба эти высказывания имеют одно и то же значение. И наконец, нет необходимости указывать знак конъюнкции (&amp;) между формулами, так как заранее известно, что на верхнем уровне формула является конъюнкцией составляющих ее частей. Поэтому, в действительности, значение представленной формулы можно выразить значительно короче, представив ее в виде <emphasis>совокупности </emphasis><strong>{А, В, С, D, Е}</strong>. Название «совокупность» подчеркивает, что порядок элементов не имеет значения. Совокупность <strong>{А, В, С, D, Е}</strong> в точности то же самое, что и <strong>{В, А, С, Е, D}</strong>, <strong>{Е, D, В, С, А} </strong>и так далее. Формулы, являющиеся элементами совокупности, полученной в результате преобразования некоторой формулы исчисления предикатов, называются дизъюнктами. Таким образом, каждая формула исчисления предикатов эквивалентна (в некотором смысле) совокупности дизъюнктов.</p>
    <p>Давайте рассмотрим несколько подробнее, что представляют собой эти дизъюнкты. Как уже было сказано, они состоят из литералов, соединенных друг с другом с помощью дизъюнкции. В общем случае, дизъюнкт выглядит примерно так:</p>
    <p>((V # W) # X) # (Y # Z)</p>
    <p>где переменные являются литералами. Теперь те же самые рассуждения, которые были сделаны о структуре формулы на верхнем уровне, можно применить к дизъюнктам. Как и выше, скобки не влияют на значение дизъюнкта. Точно так же несуществен и порядок литералов. Таким образом, можно просто сказать, что дизъюнкт – это <emphasis>совокупность </emphasis>литералов (неявно соединенных дизъюнкцией). В последнем примере это будет <strong>{V, W, X, Y, Z}</strong></p>
    <p>Теперь исходная формула представлена в стандартной форме. Более того, использовавшиеся для преобразования правила не зависят от того, существует или нет интерпретация, при которой формула истинна. Стандартная форма состоит из совокупности дизъюнктов, каждый из которых представляет совокупность литералов. Литерал – это либо атомарная формула, либо отрицание атомарной формулы. Эта форма является достаточно лаконичной, так как в ней опущены логические связки конъюнкций, дизъюнкций и кванторы всеобщности. Но при этом, очевидно, следует помнить о принятых соглашениях. И каждый раз, имея дело со стандартной формой, понимать, где и что в ней опущено. Рассмотрим, что представляет собой стандартная форма некоторых формул (предполагается, что уже выполнены первые пять этапов преобразования). Прежде всего вернемся к уже рассматривавшемуся примеру:</p>
    <p>(выходной(Х) # работает(крис,Х)) &amp; (выходной(Х) # (сердитый(крис) # унылый(крис)))</p>
    <p>Эта формула порождает два дизъюнкта. Первый дизъюнкт содержит литералы:</p>
    <p>выходной(Х), работает(крис,Х)</p>
    <p>а второй литералы:</p>
    <p>выходной(Х), сердитый(крис), унылый(крис)</p>
    <p>Другой пример. Формула</p>
    <p>(человек(адам)&amp; человек(ева))&amp;</p>
    <p>((человек(Х) # ~мать(Х,Y)) # ~человек(#))</p>
    <p>дает три дизъюнкта. Два из них содержат по одному литералу каждый</p>
    <p>человек (адам)</p>
    <p>и</p>
    <p>человек (ева)</p>
    <p>Другой содержит три литерала:</p>
    <p>человек(Х), ~мать(Х,Y), ~человек(Y)</p>
    <p>В заключении этого раздела рассмотрим еще один пример, демонстрирующий все этапы приведения формулы к стандартному виду. Начнем с формулы</p>
    <p>all(X, аll(Y,человек(Y) -› почитает(Y,Х) -› король(Х))</p>
    <p>утверждающей, что, если все люди относятся с почтением к некоторому человеку, то этот человек является королем. (Для каждого <strong>X</strong>, если каждый <strong>Y</strong> является человеком, почитающим <strong>X</strong>, то <strong>X</strong> – это король). После устранения импликации (этап 1) получаем:</p>
    <p>аll(Х,~(аll(Y,~человек(Y) # почитает(Y,Х))) # король(Х))</p>
    <p>Перенос отрицания внутрь формулы (этап 2) приводит к следующему:</p>
    <p>аll(Х,ехists(Y,человек(Y) &amp; ~почитает(Y,Х)) # король(Х))</p>
    <p>Затем, в результате сколемизации (этап 3) формула преобразуется к виду:</p>
    <p>аll(Х,(человек(f1(Х)) &amp; ~почитает(f1Х),Х)) # король(Х))</p>
    <p>где f1 -сколемовская функция. Теперь производится удаление кванторов всеобщности (этап 4), что приводит к формуле;</p>
    <p>(человек(f1(X)) &amp; ~почитает(f1(Х),X)) # король(Х)</p>
    <p>Затем формула преобразуется к конъюнктивной нормальной форме (этап 5), в которой конъюнкция не появляется внутри дизъюнктов:</p>
    <p>(человек(f1(Х) # король(Х)) &amp; (~почитает(f1(Х), X) # король(Х))</p>
    <p>Эта формула содержит два дизъюнкта (этап 6). Первый дизъюнкт имеет два литерала:</p>
    <p>человек(f1(Х)), король(Х)</p>
    <p>а второй дизъюнкт имеет литералы: </p>
    <p>почитает(f1(Х),Х), король(Х)</p>
   </section>
   <section>
    <title>
     <p>10.3. Форма записи дизъюнктов</p>
    </title>
    <p>Очевидно, что для записи формул, представленных в стандартной форме, необходим соответствующий способ. Рассмотрим его. Прежде всего, стандартная форма представляет совокупность дизъюнктов. Договоримся записывать дизъюнкты последовательно один за другим, помня при этом, что порядок записи не имеет значения. В свою очередь, дизъюнкт является совокупностью литералов, часть из которых содержит отрицание, а часть не содержат его. Примем соглашение записывать сначала литералы без отрицания, а затем литералы с отрицанием. Эти две группы литералов будем разделять знаком ':-'. Литералы без отрицания при записи будем отделять друг от друга точкой с запятой (;) (помня, конечно, при этом, что порядок записи литералов в каждой группе неважен), а литералы с отрицанием будем записывать без знака отрицания (~), разделяя литералы запятыми. Запись каждого дизъюнкта будет заканчиваться точкой. При такой форме записи дизъюнкт, содержащий отрицания литералов <strong>K</strong>, <strong>L</strong>,… и литералы <strong>А</strong>, <strong>В</strong>,… мог бы быть представлен так:</p>
    <p>A; B;…:- K, L,…</p>
    <p>Хотя принятые предположения о форме записи дизъюнктов представляются произвольными, в них заложен некоторый мнемонический смысл. Если записать дизъюнкт, явно указав все знаки дизъюнкций и отрицаний и отделив литералы с отрицаниями от литералов без отрицаний, то получится примерно следующее;</p>
    <p>(А # В #…) # (~К # -L #…)</p>
    <p>что эквивалентно</p>
    <p>(A # B # …) # ~(K &amp; L &amp; …)</p>
    <p>Это в свою очередь эквивалентно (К &amp; L &amp;…) -› (А # В #…)</p>
    <p>Если записать ',' вместо 'и', ';' вместо 'или' и ':-' вместо 'является следствием', то дизъюнкт естественным образом примет следующий вид:</p>
    <p>A; B;…:- K, L,…</p>
    <p>С учетом этих соглашений формула</p>
    <p>(человек(адам) &amp; человек(ева)) &amp;((человек(Х) # ~мать(Х,Y)) # ~человек(Y))</p>
    <p>записывается так:</p>
    <empty-line/>
    <p>человек(адам):-. </p>
    <p>человек(ева):-. </p>
    <p>человек(Х):- мать(Х,Y), человек(Y).</p>
    <empty-line/>
    <p>Это выглядит уже довольно знакомо. В действительности, это выглядит в точности как определение на Прологе того, что значит быть человеком. Однако другие формулы дают более загадочный результат. Так, для примера о выходном дне имеем:</p>
    <empty-line/>
    <p>выходной(Х); работает(крис,X):-. </p>
    <p>выходной(Х); сердитый(крис); унылый(крис):-.</p>
    <empty-line/>
    <p>Сразу не так очевидно, чему это может соответствовать в Прологе. Этот вопрос будет подробнее рассмотрен в следующем разделе.</p>
    <p>В приложении В представлена программа на Прологе, печатающая дизъюнкты в рассмотренном здесь виде. Так, дизъюнкты, приведенные в конце предыдущего раздела, в соответствии с принятыми соглашениями печатаются программой в следующем виде:</p>
    <empty-line/>
    <p>человек(f1(X)); король(Х):-. </p>
    <p>король(Х):- почитает(f1(Х),Х).</p>
   </section>
   <section>
    <title>
     <p>10.4. Принцип резолюций и доказательство теорем</p>
    </title>
    <p>Теперь, когда мы имеем способ, позволяющий представлять формулы исчисления предикатов в такой аккуратной и привлекательной форме, рассмотрим, что можно делать с ними далее. Очевидно, можно исследовать вопрос о том, <emphasis>следует ли </emphasis>что-либо интересное из некоторой заданной совокупности высказываний. То есть интересно исследовать, к каким <emphasis>следствиям </emphasis>они приводят. Высказывания, которые исходно считаются истинными, называются <emphasis>аксиомами </emphasis>или <emphasis>гипотезами, </emphasis>а высказывания, которые следуют из них, называются <emphasis>теоремами. </emphasis>Введенные понятия согласуются с терминологией, используемой при описании такого подхода к математике, когда работа математика представляется как процесс получения все новых и новых интересных теорем из таких хорошо аксиоматизированных областей, какими являются теория множеств и теория чисел. В этом разделе будут кратко рассмотрены вопросы получения интересных следствий для заданного множества высказываний, то есть вопросы доказательства теорем.</p>
    <p>В 60-х годах в этой области наблюдалась большая активность, связанная с возможностью использования вычислительных машин для автоматического доказательства теорем. Именно эта область научной деятельности, по-прежнему остающаяся источником новых идей и методов, дала жизнь идеям, легшим в основу Пролога. Одним из фундаментальных достижений того времени явилось открытие Дж. А. Робинсоном <emphasis>принципа резолюций </emphasis>и его применение к автоматическому доказательству теорем. Резолюция – это <emphasis>правило вывода, </emphasis>говорящее о том, как одно высказывание может быть получено из других. Используя принцип резолюций, можно полностью автоматически доказывать теоремы, выводя их из аксиом. Необходимо лишь решать, к каким из высказываний следует применять правило вывода, а правильные следствия из них будут строиться автоматически.</p>
    <p>Правило резолюций разрабатывалось применительно к формулам, представленным в стандартной форме. Если заданы два дизъюнкта, связанных между собой определенным образом, то это правило породит новый дизъюнкт, являющийся следствием двух первых. Главная идея состоит в том, что, если одна и та же атомарная формула появляется как в левой части одного дизъюнкта, так и в правой части другого дизъюнкта, то дизъюнкт, получаемый в результате соединения этих двух дизъюнктов, из которых вычеркнута упоминавшаяся повторяющаяся формула, является следствием указанных дизъюнктов. Например,</p>
    <p><emphasis>Из</emphasis></p>
    <p>унылый(крист); сердитый(крис):- рабочий_день(сегодня), идет_дождь(сегодня).</p>
    <p><emphasis>и</emphasis></p>
    <p>неприятный(крис):- сердитый(крис), усталый(крис).</p>
    <p><emphasis>следует</emphasis></p>
    <p>унылый(крис); неприятный(крис):- рабочий_день(сегодня), идет_дождь(сегодня), усталый(крис).</p>
    <p>На естественном языке это звучит так. Если сегодня рабочий день и идет дождь, то Крис – унылый или сердитый. Кроме того, если Крис сердитый и усталый, то он неприятен. Поэтому, если сегодня рабочий день, идет дождь и Крис усталый, то Крис является унылым или неприятным.</p>
    <p>В действительности, мы сильно упростили ситуацию, опустив два момента. Прежде всего, ситуация усложняется, когда дизъюнкты содержат переменные. В такой ситуации две атомарные формулы не обязательно должны быть идентичными – они должны быть лишь «сопоставимы». Кроме того, дизъюнкт, являющийся следствием двух других дизъюнктов, получается в результате их соединения (с удалением повторяющейся формулы) с помощью некоторой дополнительной операции. Эта операция включает в <emphasis>себя </emphasis>«конкретизацию» переменных до такой степени, чтобы две сопоставляемые формулы стали идентичными. Используя терминологию Пролога, можно сказать, что, если имелось два дизъюнкта, представленных в виде структур, и было выполнено сопоставление соответствующих подструктур, то результат соединения этих структур и был бы представлением нового дизъюнкта. Второе упрощение состоит в том, что в общем случае, правило резолюций допускает сопоставление нескольких литералов в правой части одного дизъюнкта с <emphasis>несколькими </emphasis>литералами в левой части другого дизъюнкта. Здесь будут рассматриваться лишь примеры, когда из каждого дизъюнкта выбирается один литерал.</p>
    <p>Рассмотрим один пример применения правила резолюций при наличии переменных:</p>
    <p>человек(f1(Х)); король(Х):-. (1)</p>
    <p>король(Y):- почитает(f1(Y),Y). (2)</p>
    <p>почитает(Z,артур):- человек(Y). (3)</p>
    <p>Два первых дизъюнкта представляют стандартную форму формулы, которую можно выразить так: «если каждый человек почитает кого-то, то этот кто-то – король». Переменные переименованы для удобства объяснения. Третий дизъюнкт выражает высказывание о том, что каждый человек почитает Артура. Применяя правило резолюций к (2) и (3) (сопоставляя два соответствующих литерала), получаем:</p>
    <p>король(артур):- человек(f1(артур)). (4)</p>
    <p>(<strong>Y</strong> в (2) сопоставлен с <strong>артур</strong> в (3), a <strong>Z</strong> в (3) сопоставлен с <strong>fl(Y) </strong>в (2)). Теперь можно применить правило резолюций к (1) и (4), что дает:</p>
    <p>король(артур); король(артур):-.</p>
    <p>Это эквивалентно факту, гласящему, что Артур является королем.</p>
    <p>В формальном определении метода резолюций процедура «сопоставления», на которую мы неформально ссылались, называется <emphasis>унификацией. </emphasis>Интуитивно, множество атомарных формул <emphasis>унифицируемо, </emphasis>если эти формулы могут быть сопоставлены друг с другом как структуры языка Пролог. В действительности, как это будет показано в одном из следующих разделов, процедура сопоставления, используемая в большинстве реализаций языка Пролог, не совпадает в точности с унификацией.</p>
    <p>Как можно использовать метод резолюций для доказательства конкретных утверждений? Один из возможных способов состоит в том, чтобы последовательно, шаг за шагом, применять правило резолюций к имеющимся гипотезам и посмотреть, не появилось ли при этом то, что мы хотим доказать. К сожалению, нельзя гарантировать, что это в конце концов произойдет, даже если интересующее нас высказывание действительно следует из имеющихся гипотез. Так, например, в последнем примере нельзя вывести простой дизъюнкт <strong>король(артур)</strong>, исходя из данного множества дизъюнктов и используя лишь указанный метод, несмотря даже на то, что это очевидное следствие. Следует ли отсюда, что метод резолюций не является достаточно мощным средством для наших целей? К счастью, ответом на этот вопрос является «нет», так как можно переформулировать постановку задачи таким образом, что метод резолюций гарантированно сможет решить ее, если это в принципе возможно.</p>
    <p>Метод резолюций имеет одно важное формальное свойство – он является <emphasis>полным для доказательства несовместности множества дизъюнктов. </emphasis>Это значит, что если множество дизъюнктов <emphasis>несовместно, </emphasis>то используя метод резолюций всегда можно вывести из данного множества дизъюнктов пустой дизъюнкт:</p>
    <p>:-.</p>
    <p>Кроме того, так как метод резолюций является <emphasis>корректным, </emphasis>то единственное, что он может вывести в такой ситуации – это пустой дизъюнкт. Множество формул несовместно, если не существует интерпретации предикатов, констант и функциональных символов, делающей истинными одновременно все эти формулы. Пустой дизъюнкт является логическим выражением <emphasis>ложности </emphasis>- он представляет высказывание, которое ни при каких условиях не может быть истинным. Таким образом, метод резолюций наверняка определит, когда заданное множество формул является несовместным, выведя пустой дизъюнкт, являющийся выражением противоречия.</p>
    <p>Каким образом это свойство метода резолюций может помочь нам? Имеет место следующий факт:</p>
    <p>Если множество формул {<emphasis>А<sub>1</sub>, A<sub>2</sub>,…, А<sub>n</sub></emphasis>} совместно, то формула <strong>В</strong> является следствием формул {<emphasis>A<sub>l</sub><sub>,</sub> A<sub>2</sub>,…, A<sub>n</sub></emphasis>} тогда и только тогда, когда множество формул {<emphasis>А<sub>1</sub>, A<sub>2</sub>,…, А<sub>n</sub> </emphasis>&#8969;<emphasis>В</emphasis>} - несовместно.</p>
    <p>Таким образом, если множество гипотез совместно, то необходимо лишь добавить к нему дизъюнкты, соответствующие отрицанию высказывания, которое следует доказать. Резолюция даст пустой дизъюнкт в точности тогда, когда доказываемое высказывание следует из данных гипотез. Дизъюнкты, добавляемые к множеству гипотез, называются <emphasis>целевыми дизъюнктами. </emphasis>Отметим, что целевые дизъюнкты ничем не отличаются от гипотез – и те и другие являются дизъюнктами. Так что, если задано множество дизъюнктов {<emphasis>А<sub>1</sub>, А<sub>2</sub>, </emphasis>…, <emphasis>А<sub>п</sub></emphasis>} и требуется проверить несовместность этого множества дизъюнктов, то в действительности невозможно определить, идет ли речь о доказательстве того, что &#8969;<emphasis>А<sub>1</sub> </emphasis>следует из <emphasis>A</emphasis><sub>2</sub>, <emphasis>А<sub>3</sub>, </emphasis>…, <emphasis>А<sub>п</sub> </emphasis>или что &#8969;<emphasis>А</emphasis><sub>2</sub> следует из <emphasis>A<sub>1</sub>, A<sub>3</sub>, <strong>…</strong></emphasis>, <emphasis>А<sub>n</sub>, </emphasis>или что &#8969;<emphasis>А<sub>3</sub> </emphasis>следует из <emphasis>А<sub>1</sub>, А<sub>2</sub>, A</emphasis><sub>4</sub>,…, <emphasis>А<sub>n</sub> и так далее. </emphasis>Именно это является причиной того, что необходимо указывать какие дизъюнкты в действительности являются целевыми дизъюнктами. Для системы, использующей метод резолюций, все перечисленные задачи эквивалентны.</p>
    <p>Легко увидеть, как можно получить пустой дизъюнкт в примере с королем Артуром, если добавить целевой дизъюнкт:</p>
    <p>:- король(артур). (5)</p>
    <p>(это дизъюнкт для <strong>~король(артур)</strong>). Ранее уже было показано, как дизъюнкт</p>
    <p>король(артур); король(артур):-. (6)</p>
    <p>может быть выведен из гипотез. Применяя правило резолюций к (5) и (6) (сопоставляя любую из атомарных формул в (5)), получаем:</p>
    <p>король(артур):-. (7)</p>
    <p>И наконец, резолюция дизъюнктов (6) и (7) дает</p>
    <p>:-.</p>
    <p>Таким образом, использование метода резолюций позволило доказать следствие, что Артур является королем.</p>
    <p>Полнота метода резолюций является полезным математическим свойством. Это свойство означает, что, если некоторый факт следует из гипотез, то имеется возможность доказать его истинность (показав несовместность множества дизъюнктов, содержащего гипотезы и отрицание доказываемого факта)» используя для этого метод резолюций. Однако, когда мы говорим, что методом резолюций можно вывести пустой дизъюнкт, это значит, что существует последовательность шагов, на каждом из которых правило резолюций применяется к аксиомам или к дизъюнктам выведенным на предыдущих шагах, и эта последовательность заканчивается выводом дизъюнкта, не содержащего литералов. Единственная проблема – найти соответствующую последовательность шагов. Так как, хотя метод резолюций и говорит о том, как получить следствие двух дизъюнктов, он не сообщает, какие дизъюнкты выбрать для очередного шага и какие литералы в этих дизъюнкциях необходимо «сопоставить». Обычно, если имеется большое количество гипотез, то существует и много вариантов выбора среди них. Более того, на каждом шаге выводится новый дизъюнкт и он тоже становится кандидатом на участие в последующей обработке. Большинство из имеющихся возможностей выбора дизъюнктов и литералов в них не имеют отношения к решаемой задаче и, если не производить тщательного отбора среди кандидатов, то можно потратить слишком много времени на бесплодные поиски, а путь, ведущий к решению, так и не найти.</p>
    <p>На решение этих вопросов направлено много различных улучшений исходного принципа резолюций. В следующем разделе рассматриваются некоторые из них.</p>
    <p><strong>10.5. Хорновские дизъюнкты</strong></p>
    <p>Рассмотрим теперь модификацию метода резолюций, разработанную для случая, когда все дизъюнкты имеют некоторый определенный вид – когда они являются <emphasis>хорновскими дизъюнктами, </emphasis>Хорновский дизъюнкт – это дизъюнкт, содержащий не более одного литерала без отрицания. Оказывается, что если процедура доказательства теорем используется для определения значений вычислимых функций, то вполне достаточно использовать для этого лишь хорновские дизъюнкты. Так как метод резолюций в случае хорновских дизъюнктов также является относительно простым, то естественно выбрать хорновские дизъюнкты в качестве основы для процедуры доказательства теорем, применяемой в практической системе программирования, Рассмотрим коротко, что представляет метод резолюций, если ограничиться хорновскими дизъюнктами.</p>
    <p>Прежде всего, очевидно, что существуют два вида хорнов-ских дизъюнктов – дизъюнкты, содержащие один литерал без отрицания и дизъюнкты, не содержащие таких литералов. Будем называть эти два типа хорновских дизъюнктов соответственно дизъюнктами с <emphasis>заголовком </emphasis>и дизъюнктами <emphasis>без заголовка. </emphasis>Следующие примеры иллюстрируют указанные типы дизъюнктов (необходимо помнить, что литералы без отрицания записываются слева от знака ':-'):</p>
    <p>холостяк(Х):- мужчина(Х), неженат(Х).</p>
    <p>:- холостяк(Х).</p>
    <p>В действительности, рассматривая множества хорновских дизъюнктов (включая целевые утверждения), необходимо выделять лишь такие множества, в которых все дизъюнкты за исключением одного имеют заголовки. Это значит, что каждая разрешимая задача (задача доказательства теоремы), которая может быть выражена с помощью хорновских дизъюнктов, может быть представлена в таком виде, что:</p>
    <p><emphasis>• </emphasis>Имеется только один дизъюнкт без заголовка. Все остальные дизъюнкты имеют заголовки.</p>
    <p>Так как совершенно не имеет значения, какие дизъюнкты считать целевыми, то можно принять решение рассматривать дизъюнкт без заголовка как целевой, а все остальные дизъюнкты – как гипотезы. Такое решение выглядит довольно естественно.</p>
    <p>Почему мы должны рассматривать лишь такие совокупности хорновских дизъюнктов, которые вписываются в эту схему? Во-первых, легко видеть, что для того, чтобы задача была разрешима, необходимо наличие по крайней мере одного дизъюнкта без заголовка. Это объясняется тем, что в результате применения правила резолюций к двум хорновским дизъюнктам с заголовками вновь получается хорновский дизъюнкт с заголовком. Поэтому, если все дизъюнкты имеют заголовки, то единственное что можно делать – это выводить другие дизъюнкты с заголовками. Так как пустой дизъюнкт не имеет заголовка, то он никогда не будет выведен. Второе требование – это необходим лишь один дизъюнкт без заголовка – обосновать несколько труднее. Од-нако оказывается, что, если среди аксиом имеют несколько дизъюнктов без заголовка, то каждое доказательство нового дизъюнкта методом резолюций может быть преобразовано в доказательство, в котором используется не более чем один из них. Поэтому, если пустой дизъюнкт следует из данного множества аксиом, то он следует и из его подмножества, содержащего все дизъюнкты с заголовками и не более одного дизъюнкта без заголовка.</p>
   </section>
   <section>
    <title>
     <p>10.6. Пролог</p>
    </title>
    <p>Давайте подведем итог и посмотрим, как Пролог вписывается в рассмотренную выше схему. Как было показано, некоторые формулы, представленные в виде совокупности дизъюнктов, выглядят в точности так же, как и утверждения в Прологе, в то время как другие формулы имеют несколько отличный вид. Формулы, имевшие вид утверждений Пролога, есть в действительности не что иное, как формулы, представимые в виде хорновских дизъюнктов. При записи хорновского дизъюнкта в соответствии с принятыми соглашениями, количество атомарных формул слева от знака ';-' не может превышать одну. В общем случае, дизъюнкты могут иметь несколько таких формул (они соответствуют литералам, представляющим атомарные формулы без отрицания). В Прологе непосредственно можно представить только хорновские дизъюнкты. Утверждения программы на Прологе соответствуют хорновским дизъюнктам с заголовком (в рамках определенной процедуры доказательства теорем). А что в Прологе соответствует целевому дизъюнкту? Очень просто, вопрос в Прологе</p>
    <p>?- <emphasis>A<sub>1</sub>, A<sub>2</sub>,…, A<sub>n</sub></emphasis></p>
    <p>в точности соответствует хорновскому дизъюнкту без заголовка:- <emphasis>A<sub>1</sub>, A<sub>2</sub>,</emphasis>…, <emphasis>А<sub>п</sub></emphasis></p>
    <p>В предыдущем разделе уже говорилось о том, что для решения любой задачи, представленной с помощью хорновских дизъюнктов, достаточно иметь в точности один дизъюнкт без заголовка. В Прологе это соответствует ситуации, когда все утверждения «программы» имеют заголовки и в каждый момент времени рассматривается лишь одно целевое утверждение (не имеющее заголовка).</p>
    <p>Пролог-система основывается на процедуре доказательства теорем методом резолюций для хорновских дизъюнктов. Конкретная стратегия, используемая при этом, является разновидностью <emphasis>линейной входной резолюции. </emphasis>При использовании этой стратегии, выбор дизъюнктов для резолюции на каждом шаге ограничен следующими условиями. Процедура начинается с применения правила резолюций к целевому дизъюнкту и к одной из гипотез, что дает новый дизъюнкт. Затем производится резолюция этого дизъюнкта и одной из гипотез, что дает еще один новый дизъюнкт. Затем правило резолюций применяется к последнему полученному дизъюнкту и к одной из гипотез и так далее. На каждом этапе правило резолюций применяется к последнему из вновь полученных дизъюнктов и к одной из исходных гипотез. Правило резолюций никогда не применяется, если оба дизъюнкта были выведены на предыдущих этапах или являются исходными гипотезами. С точки зрения Пролога, последний выведенный дизъюнкт можно рассматривать как конъюнкцию целевых утверждений, которые еще надо доказать (согласовать с базой данных). В начальный момент это вопрос, а в конце процесса, при благоприятных условиях,- это пустое утверждение. На каждом этапе ищется утверждение, заголовок которого сопоставим с одним из целевых утверждений. Если необходимо, происходит конкретизация переменных. Удаляется целевое утверждение, с которым произошло сопоставление, а затем к целевым утверждениям, которые необходимо согласовать, добавляется тело найденного утверждения, в котором произведена конкретизация переменных. Так, например, начав с вопроса</p>
    <empty-line/>
    <p>:- мать(джон,Х), мать(Х,Y).</p>
    <empty-line/>
    <p>и утверждения</p>
    <empty-line/>
    <p>мать(U,V):- родитель(U,V), женщина(V). </p>
    <empty-line/>
    <p>получаем</p>
    <empty-line/>
    <p>:- родитель(джон,Х), женщина(Х), мать(Х,Y).</p>
    <empty-line/>
    <p>В действительности, используемая в Прологе стратегия является более ограниченной по сравнению с общей линейной входной резолюцией. В этом примере для сопоставления был выбран первый литерал целевого дизъюнкта, но с таким же успехом можно было бы сопоставить и второй литерал. В Прологе выбор литерала для сопоставления всегда происходит одним и тем же способом – всегда выбирается первый литерал в целевом дизъюнкте. Кроме того, новые целевые утверждения, полученные при использовании некоторого утверждения помещаются в начале целевого дизъюнкта. Это значит, что Пролог завершит доказательство согласованности всех подцелей прежде чем перейдет к обработке следующих целей.</p>
    <p>Все сказанное относится к событиям, происходящим после того, как Пролог выбрал утверждение для сопоставления с первой целью. Но как организуется исследование альтернативных утверждений для удовлетворения той же самой цели? В Прологе используется стратегия <emphasis>поиска вглубь, </emphasis>а <emphasis>не поиска вширь. </emphasis>Это значит, что Пролог в каждый момент времени рассматривает лишь одну альтернативу, упорно следуя подразумеваемому предположению о правильности сделанного выбора. Выбор утверждений для каждой цели производится в строго фиксированном порядке, а пересмотр выбранных ранее утверждений происходит лишь в случае, когда все последующие попытки не привели к решению. В качестве альтернативы можно было бы предложить стратегию, при которой система запоминает одновременно все альтернативные пути решения. При этом система переходила бы по кругу от одной альтернативы к другой, прослеживая каждую альтернативу на небольшую глубину, а затем переходя к следующей. Такая стратегия поиска вширь имеет одно преимущество – если решение существует, то оно обязательно будет найдено. Используемая в Прологе стратегия поиска вглубь может привести к «зацикливанию» и, следовательно, никогда не будут исследованы некоторые альтернативы. С другой стороны такая стратегия намного проще и требует меньших затрат памяти при реализации на вычислительных машинах с традиционной архитектурой.</p>
    <p>И наконец, небольшое замечание о возможных различиях между процедурой сопоставления, используемой в Прологе, и процедурой унификации, используемой в методе резолюций. Большинство Пролог-систем допускают обращение с вопросами, подобными следующему:</p>
    <empty-line/>
    <p>равны(X,X).</p>
    <p>?- равны(foo(Y),Y).</p>
    <empty-line/>
    <p>Это возможно по той причине, что в Прологе разрешается сопоставлять некоторый терм с его собственным подтермом. В этом примере <strong>foo(Y)</strong> сопоставляется с <strong>Y</strong>, который сам является частью этого терма. В результате этого <strong>Y</strong> становится равным <strong>foo(Y)</strong> что в свою очередь равно <strong>foo(foo(Y))</strong> (учитывая значение <strong>Y</strong>), что равно <strong>foo(foo(foo(Y)))</strong> и так далее. Так что в результате <strong>Y</strong> обозначает некоторую бесконечную структуру. Заметим, что хотя Пролог-системы могут допускать использование подобных конструкций, большинство из них будут не в состоянии напечатать окончательный результат сопоставления. В соответствии с формальным определением унификации, подобного вида «бесконечные термы» никогда не должны появляться. Так что, Пролог выполняет эту процедуру неправильно в сравнении с тем, как это делается при доказательстве теорем методом резолюций. Для того чтобы сделать процедуру корректной, необходимо добавить проверку условия, заключающегося в том, что переменная не может быть конкретизирована некоторым значением, содержащим эту переменную. Такая проверка, <emphasis>проверка на вхождение, </emphasis>не представляла бы труда для ее реализации, но значительно замедляла бы выполнение программы на Прологе. Так как число программ, в которых может встретиться такая конструкция, невелико, то в большинстве реализаций такая проверка просто не делается.</p>
   </section>
   <section>
    <title>
     <p>10.7. Пролог и логическое программирование</p>
    </title>
    <p>В нескольких последних разделах было показано, как используются в Прологе идеи доказательства теорем. Можно видеть, что наши программы довольно похожи на гипотезы о проблемной области, а вопросы очень похожи на теоремы, которые нам хотелось бы доказать. Таким образом, программирование на Прологе имеет мало общего с процессом выдачи машине указаний о том, что и когда следует делать. Оно скорее состоит в передаче машине информации, которая предполагается истинной, и обращении к ней с вопросами о возможных следствиях из этой информации. Идея о том, что программирование должно выглядеть именно так, привлекательна и она привела многих специалистов к исследованию концепции <emphasis>логического программирования, </emphasis>то есть <emphasis>программирования на языке логики, </emphasis>как практической альтернативы обычному. Такой подход резко отличается от использования традиционных языков программирования подобных Фортрану или Лиспу, при программировании на которых необходимо как можно более подробно описать что и когда должна делать вычислительная машина. Преимущества логического программирования должны проявиться в том, что программы станут более понятными. Они не будут содержать затрудняющие понимание детали относительно того <emphasis>как </emphasis>решать задачу, а скорее будут напоминать описание того, <emphasis>что </emphasis>собой представляет результат решения. Кроме этого, если программа выглядит как описание (спецификация) того, что предполагается получить, то и относительно проще проверить (вручную или, возможно, используя какие-то автоматические средства), делает ли она в действительности то, что требуется. Подводя итог, можно сказать: преимущества языка логического программирования были бы следствием того, что программы обладают как <emphasis>декларативной </emphasis>семантикой, так и <emphasis>процедурной. </emphasis>Мы бы знали <emphasis>что </emphasis>программа вычисляет, а не <emphasis>как </emphasis>она это делает. Мы не будем здесь рассматривать логическое программирование вообще. Интересующемуся этим вопросом читателю рекомендуем обратиться к книге Ко-walski R. <emphasis>Logic for Problem Solving, </emphasis>North Holland, 1979.</p>
    <p>Давайте рассмотрим Пролог как кандидата на место языка логического программирования и посмотрим, насколько хорошо он для этого подходит. Прежде всего, ясно, что некоторые программы на Прологе действительно представляют описание проблемной области на языке логики. Запись:</p>
    <empty-line/>
    <p>мать(Х,Y):- родитель(Х,Y), женщина(Y).</p>
    <empty-line/>
    <p>можно рассматривать как описание того, что значит быть матерью (это значит быть женщиной и быть одним из родителей). Это утверждение выражает высказывание, которое, как мы предполагаем, должно быть истинным, и, кроме того, указывает, как показать, что кто-то является матерью. Аналогично, утверждения;</p>
    <empty-line/>
    <p>присоединить([], X, X).</p>
    <p>присоединить([А|В],С[А|D]):- присоединить (B,C,D).</p>
    <empty-line/>
    <p>говорят о том, что собой представляет добавление одного списка в начало другого списка. Если пустой список помещается в начало некоторого списка <strong>X</strong>, то результатом будет <strong>X</strong>. С другой стороны, если непустой список присоединяется в начало некоторого списка, <emphasis>то </emphasis>головой списка-результата будет голова присоединяемого списка. Кроме того, хвостом списка-результата будет список, получаемый в результате присоединения хвоста первого списка ко второму списку. Можно считать, что эти утверждения описывают отношение присоединить, так же как и (возможно) то, как в действительности присоединить один список к другому. </p>
    <p>Это все верно лишь для некоторых программ на Прологе. А какое возможное логическое значение можно приписать утверждениям подобным следующим?</p>
    <empty-line/>
    <p>memberl(X, List):- var(List),!,fail.</p>
    <p>memberl(X,[X|_]).</p>
    <p>memberl(X,[_|List]):- memberl(X,List).</p>
    <p>print(0):-!.</p>
    <p>print(N):- write(N), N1 is N-1, print(N1).</p>
    <p>noun(N):- name(N,Name1), append(Name2, [ll5],Namel), name(RootN,Name2), noun(RootN).</p>
    <p>implies(Assum,Concl):-asserta(Assum), call(Concl), retract(Concl).</p>
    <empty-line/>
    <p>Эта проблема имеет место для всех «встроенных» предикатов, используемых в программах на Прологе. Предикат подобный <strong>Var(List) </strong>ничего не говорит о принадлежности элемента списку, а проверяет состояние переменной (является ли указанная переменная неконкретизированной), возникающее в процессе доказательства. Аналогично, «отсечение» говорит кое-что о доказательстве высказывания (выбор каких альтернатив можно игнорировать), а не о самом этом высказывании. Два указанных «предиката» можно рассматривать как способ выражения <emphasis>управляющей информации о </emphasis>том, как должно выполняться доказательство. Точно так же, предикаты подобные <strong>write(N) </strong>не имеют каких-либо интересных логических свойств, но заранее предполагают, что в ходе доказательства будет достигнуто определенное состояние (<strong>N</strong> конкретизируется) и начинают обмен информацией с программистом, сидящим за терминалом. Целевое утверждение <strong>name(N, Name1) </strong>говорит кое-что о внутренней структуре объекта, который в исчислении предикатов был бы неделимым символом. В Прологе можно преобразовывать символы в строки литер, структуры в списки и в утверждения. Эти операции нарушают замкнутость высказываний исчисления предикатов. В последнем примере, использование предиката <strong>asserta</strong> означает, что правило, о котором идет речь, добавляет что-то к множеству аксиом. В логике каждое правило или факт сохраняет истинность независимо от того, существуют ли какие либо другие факты или правила. В данном случае мы имеем дело с правилом, которое грубо нарушает этот принцип. Кроме того, если мы используем это правило, то окажемся в ситуации, когда на разных этапах доказательства имеется различное множество аксиом. Наконец, то что в одном из правил предполагается использовать терм <strong>Concl</strong> в качестве целевого утверждения, означает, что допускается, чтобы переменная обозначала высказывание, встречающееся в некоторой аксиоме. Такая конструкция не относится к числу тех, которые могут быть выражены на языке исчисления предикатов, но напоминает возможности, которые могут быть представлены <emphasis>логикой более высокого порядка.</emphasis></p>
    <p>На приведенном примере можно видеть, что некоторые программы на Прологе, можно понять <emphasis>лишь </emphasis>в терминах, описывающих что и когда может произойти при выполнении программ и каким образом программы сообщают системе о том, что нужно делать. В качестве крайнего случая, можно привести программу для генатом представленную в <emphasis>гл. </emphasis>7. Вряд ли вообще может быть дана какая-либо декларативная интерпретация этой программы. Имеет ли тогда смысл рассматривать Пролог как язык логического программирования? Можем ли мы реально надеяться на какие-то преимущества логического программирования применительно к нашим программам на Прологе? На оба этих вопроса можно дать положительный ответ и основанием для этого служит то, что приняв соответствующий стиль программирования, мы все же можем получить некоторые преимущества благодаря связи Пролога с логикой. Ключевым моментом является использование разбиения программ на части, ограничивающие использование нелогических операций небольшим множеством утверждений. В качестве примера в гл. 4 было показано, как в некоторых случаях «отсечение» может быть заменено предикатом <strong>not. </strong>В результате таких замен, программу, содержавшую целый ряд «отсечений» можно свести к программе, в которой «отсечение» используется лишь однажды (в определении <strong>not). </strong>Использование предиката <strong>not </strong>даже если он не совсем точно соответствует логическому '~' позволяет восстановить часть логической основы программы. Аналогично, ограничивая область применения предикатов <strong>asserta </strong>и <strong>retract </strong>определениями небольшого числа предикатов (таких как <strong>генатом </strong>и <strong>найтивсе), </strong>можно добиться того, что в целом программа становится более понятной по сравнению с программой, в которой эти предикаты свободно используются где угодно.</p>
    <p>Таким образом, с появлением Пролога конечная цель, состоящая в создании языка логического программирования, не была достигнута. Тем не менее, Пролог дал практическую систему программирования, обладающую в некоторой степени свойствами, которыми должен обладать язык логического программирования – ясностью и декларативностью. Между тем ведутся работы по разработке улучшенных версий Пролога, которые более близки к логике чем имеющиеся в настоящее время. К числу наиболее важных работ в этой области относятся работы по созданию практической системы программирования, в которой нет необходимости использовать «отсечение» и которая имеет вариант предиката <strong>not </strong>точно соответствующий логическому понятию отрицания.</p>
   </section>
  </section>
  <section>
   <title>
    <p>ГЛАВА 11. ПРОГРАММНЫЕ ПРОЕКТЫ НА ПРОЛОГЕ</p>
   </title>
   <section>
    <p>В этой главе рассматривается перечень программных проектов, которые вы могли бы попытаться осуществить для развития навыков программирования на Прологе. Некоторые из этих проектов довольно просты, зато другие вполне могут быть предложены в качестве «курсовой работы» в рамках учебного курса по Прологу. Более простые проекты следует использовать как дополнение к упражнениям, приведенным в предыдущих главах. В целом при перечислении проектов мы не придерживались какого-то определенного порядка, хотя те из них, что содержатся в разд. 11.2, в большей мере допускают расширения, содержат вызов честолюбию, но и требуют некоторой подготовки или знакомства с литературой по различным вопросам искусственного интеллекта и информатики. Небольшая часть проектов требует знаний из определенных разделов науки, поэтому если вы не специалист в области математической физики, то не отчаивайтесь, если не сможете написать программу дифференцирования трехмерных векторных полей.</p>
    <p>Целая подборка Пролог-программ опубликована в отчете Coehlo H., Cotta J. С, Pereira L. M. <emphasis>How to solve it with Prolog, </emphasis>Laboratorio Nacional de Engenharia Civil, Lisbon, Portugal. В нем содержится свыше ста небольших примеров, задач и упражнений из таких областей как вывод умозаключений на основе базы данных, естественный язык, символьное решение уравнений, и т. д. Этот отчет по своему характеру не рассчитан на использование для обучения, поэтому приведенные в нем Пролог-программы снабжены лишь краткими пояснениями.</p>
   </section>
   <section>
    <title>
     <p>11.1. Простые проекты</p>
    </title>
    <p><emphasis>1.</emphasis>Определить предикат <strong>лин </strong>для «линеаризации» списка путем построения нового списка, не содержащего списков в качестве элементов, но включающего все атомы исходного списка. Например, следующее целевое утверждение будет согласовано с базой данных:</p>
    <empty-line/>
    <p>?- лин([а,[b,с],[[d],[],е]], [a,b,c,d,e]).</p>
    <empty-line/>
    <p>Существует по меньшей мере шесть различных способов написания этой программы.</p>
    <p><emphasis>2. </emphasis>Составить программу для вычисления интервала (в днях) между двумя датами, заданными в формате День-Месяц, считая что обе они относятся к одному и тому же невисокосному году. Заметим, что '-' это просто инфиксная форма задания 2-х местного функтора. Например, следующее целевое утверждение будет <emphasis>согласовано </emphasis>с базой данных:</p>
    <empty-line/>
    <p>интервал(3-март, 7-апрель, 35).</p>
    <empty-line/>
    <p><emphasis>3. </emphasis>В главе 7 приведены сведения, достаточные для составления программ дифференцирования и упрощения арифметических выражений. Усовершенствуйте эти программы так, чтобы они могли обрабатывать выражения с тригонометрическими функциями и, если есть желание, с операциями дифференциальной геометрии, такими как div, grad и rot.</p>
    <p><emphasis>4. </emphasis>Написать программу, осуществляющую символическое отрицание выражения исчисления высказываний. Это выражение строится из атомов, одноместного функтора <strong>not </strong>и двухместных функторов <strong>and </strong>(и), <strong>or</strong> (или) и <strong>implies</strong> (импликация). Задать соответствующие описания операторов для этих функторов. Выражение, являющееся результатом отрицания, должно быть представлено в простейшей форме, когда <strong>not </strong>применяется только к атомам. Например, отрицание выражения</p>
    <empty-line/>
    <p>р implies (q and not r)</p>
    <empty-line/>
    <p>должно выглядеть следующим образом: р and (not q or r)</p>
    <p><emphasis>5. </emphasis>Частотный словарь – это перечень слов, встречающихся в данном тексте, выписанный в алфавитном порядке с указанием числа вхождений каждого слова в тексте. Написать программу составления частотного словаря по списку слов, представленных в виде строк Пролога. Учтите, что строки – это списки кодов ASCII.</p>
    <p><emphasis>6. </emphasis>Написать программу, воспринимающую простые английские предложения, имеющие следующий формат</p>
    <image l:href="#pic_37.jpg"/>
    <p>На основе ранее введенных предложений программа должна выдавать соответствующий ответ (yes (да), no (нет), ok (принято), unknown (неизвестно)). Например,</p>
    <p>John is a man.</p>
    <p>ok</p>
    <p>A man is a person.</p>
    <p>ok</p>
    <p>Is John a person?</p>
    <p>yes</p>
    <p>Is Mary a person?</p>
    <p>unknown</p>
    <p>Каждое предложение должно транслироваться в утверждение Пролога, которое затем в зависимости от его характера, либо помещается в базу данных, либо выполняется как целевое. Так, результаты трансляции предложений приведенного выше примера выглядят следующим образом:</p>
    <empty-line/>
    <p>man(john).</p>
    <p>person(X):- man(X).?- person (john).?- person(mary).</p>
    <empty-line/>
    <p>Если это окажется удобным, используйте правила грамматики. Головное утверждение <emphasis>для </emphasis>управления диалогом может иметь вид:</p>
    <empty-line/>
    <p>беседа:- repeat, read (Предложение), анализ(Предложение, Утверждение), ответ(Утверждение), Утверждение = stop.</p>
    <empty-line/>
    <p>7. Альфа-бета (&#945;-&#946;) алгоритм – это один из методов обхода дерева игры, который упоминается во многих книгах по искусственному интеллекту. Реализуйте альфа-бета алгоритм на Прологе.</p>
    <p><emphasis>8. </emphasis>Задача об N-ферзях также широко распространена в литературе по программированию. Реализовать программу нахождения всех способов размещения 4 ферзей на шахматной доске размером 4?4, причем так, чтобы ни один ферзь не угрожал другому. Один из возможных подходов состоит в создании генератора перестановок, который затем проверяет каждую перестановку, чтобы убедиться, что все ферзи размещены правильно.</p>
    <p><emphasis>9. </emphasis>Написать программу, которая переписывает выражение исчисления высказываний (см. задачу 4), заменяя все вхождения <strong>and</strong>, <strong>or</strong>, <strong>implies</strong> и <strong>not</strong> единственной связкой <strong>nand</strong>. Определение связки nand задается следующим тождеством</p>
    <p><strong>(&#945; nand &#946;)&#8969;&#8801;(&#945;&#8743;&#946;)</strong></p>
    <p><emphasis>10. </emphasis>Один из способов представления целых положительных чисел состоит в том, чтобы представлять их в виде термов Пролога с использованием целого числа 0 и функтора <emphasis>S </emphasis>с одним аргументом. Так, число 0 представляет само себя, 1 представляется как <strong>S(0)</strong>, 2 как <strong>S(S(0))</strong> и т. д. (каждое число представляется в виде функтора S примененного к представлению числа, на единицу меньшего, чем данное). Написать определение стандартных арифметических операций: сложение, умножение и вычитание, использующих указанное представление чисел. Например, нужно определить предикат <strong>plus</strong> который действует следующим образом:</p>
    <p>?- plus(s(s(0)),s(s(s(0))),X) </p>
    <p>X=s(s(s(s(s(0)))))</p>
    <p>(2+3=5). Для вычитания нужно ввести соглашение о том, что делать, когда результат операции не является положительным целым числом. Определите также предикат «меньше чем». Какие аргументы нужно конкретизировать, чтобы ваши определения работали правильно? Что произойдет, если этого не сделать? Как это соотносится со стандартными арифметическими операциями Пролога? Попытайтесь определить более сложные арифметические операции, такие как деление нацело и извлечение квадратного корня.</p>
   </section>
   <section>
    <title>
     <p>11.2. Более сложные проекты</p>
    </title>
    <p>Может показаться, что некоторые проекты данного раздела невозможно выполнить до конца, однако все они были реализованы на Прологе. Некоторые из них просто являются усложнениями программ, которые рассматривались ранее, а другие – совершенно новые и требуют знакомства с литературой по искусственному интеллекту или по информатике.</p>
    <p><emphasis>1. </emphasis>Дана карта, которая описывает дороги, соединяющие города. Написать программу планирования поездки между двумя городами, которая выдает расписание предполагаемой поездки. Данные, описывающие карту, могут включать расстояния, состояние дороги, уклон дороги, возможность заправки топливом вдоль разных дорог.</p>
    <p><emphasis>2. </emphasis>В существующих Пролог-системах встроенные арифметические операции предусмотрены только для целых чисел. Разработайте пакет программ, поддерживающий арифметические операции над рациональными числами, представленными в виде целой и дробной частей или в виде мантиссы и порядка.</p>
    <p><emphasis>3. </emphasis>Написать процедуры обращения и умножения матриц.</p>
    <p><emphasis>4. </emphasis>Компиляцию с языка высокого уровня на язык низкого уровня можно представить себе как последовательное преобразование синтаксических деревьев. Написать такой компилятор сначала для компиляции арифметических выражений. Затем добавить управляющие структуры (типа <strong>if</strong>-<strong>then-else). </strong>Точное соблюдение синтаксиса ассемблера в данном случае не столь существенно. Например, арифметическое выражение <emphasis>х</emphasis>+1 может быть «упрощено» до ассемблерной операции <strong>inc x</strong>, где <strong>inc </strong>определена как одноместная операция. Проблема распределения регистров может быть отложена на потом за счет предположения, что объектный код предназначен для выполнения на машине с магазинной (стековой) памятью (безадресная машина),</p>
    <p>5. Разработать представление для сложной настольной игры, такой как шахматы или го, и разобраться в том, как возможности Пролога в части сопоставления образцов могут быть использованы при реализации стратегий для этих игр.</p>
    <p><emphasis>6. </emphasis>Разработать формализм для описания набора аксиом, например, из теории групп, евклидовой геометрии, денотационной семантики, и исследовать проблему создания программы доказательства теорем для этих областей.</p>
    <p>7. Интерпретатор утверждений Пролога может быть написан на самом Прологе. Напишите интерпретатор, реализующий иные семантики выполнения Пролога, такие как более гибкий порядок выполнения (вместо жесткого слева-направо), возможно, с использованием какого-нибудь «расписания» или планировщика.</p>
    <p><emphasis>8. </emphasis>Ознакомиться по литературе по искусственному интеллекту с вопросом построения планов решения задач, и реализовать генератор планов.</p>
    <p><emphasis>9. </emphasis>Решить с помощью средств Пролога задачу интерпретации контурного рисунка в терминах некоторой лежащей в его основе сцены. Характеристики рисунка могут быть помечены переменными, представляющими соответствующие характеристики сцены. Тогда рисунок соответствует набору ограничений, которым должны удовлетворять эти переменные.</p>
    <p><emphasis>10. </emphasis>Написать программу, которая, используя правила грамматики, осуществляет разбор предложений вида;</p>
    <p>Fred saw John.</p>
    <p>Магу was seen by John.</p>
    <p>Fred told Mary to see John.</p>
    <p>John was believed to have been seen by Fred.</p>
    <p>Was John believed to have told Mary to see Fred?</p>
    <p>11. В исследованиях по искусственному интеллекту используется система специальных правил (продукций), которая представляет собой последовательность правил вида «<strong>Если</strong> ситуация, <strong>то</strong> действие». Как оказалось, в задачах искусственного интеллекта с помощью таких правил удобно описывать «экспертные знания». Например, для реальных экспертных систем, использующих такие правила, типичны следующие предложения, содержащие «экспертные знания»:</p>
    <p>Фармакология: Если агент X есть четырехвалентная соль аммония и противоаритмическое средство, а агент Y есть салицилат, то X и Y будут реагировать, порождая повышенную абсорбцию за счет образования ионной пары.</p>
    <p>Игра в шахматы; Если белый король может быть придвинут к черному слону и при этом расстояние от белого короля до этого слона более одной клетки, то тогда этот слон в безопасности.</p>
    <p>Медицина: Если культура высевается из крови и граммреакция организма отрицательна и морфологически организм есть палочка, и пациент является «хозяином» организма, то имеется 60% шансов на то, что этот организм есть <emphasis>Pseudomonas aeruqinosa.</emphasis></p>
    <p>Напишите Пролог-программу интерпретации набора продукционных правил. Рассмотрите такие области как определение растений или животных по характерным признакам. Например, подобное правило из ботаники могло бы выглядеть так:</p>
    <p>Если растение имеет стебель квадратного сечения, парные листья, двухгубчатые закрытые цветы, а его плод состоит из четырех маленьких орешков, заключенных в кожуру, то это растение принадлежит семейству <emphasis>Labiatae.</emphasis></p>
    <p>Таким образом, если программа спросит нас: «у цветка квадратный стебель?», то ответив «нет» мы тем самым исключаем возможность того, что он принадлежит семейству <emphasis>Labiatae.</emphasis></p>
    <p><emphasis>12. </emphasis>Написать программу переводящую определенный класс предложений на английском языке на язык исчисления предикатов.</p>
    <p><emphasis>13. </emphasis>Написать программу доказательства теорем в исчислении предикатов.</p>
    <p><emphasis>14. </emphasis>Написать программу-«психиатр», которая выдает ответы, основанные на ключевых словах, имеющихся во вводимой информации. Эта программа напоминает ту, что рассматривалась в гл. 3, и которая заменяла ключевые слова в предложении на другие слова. Типичный диалог такой программы мог выглядеть следующим образом (ответы программы выделены курсивом):</p>
    <p><emphasis>What is your problem? На что жалуетесь?</emphasis></p>
    <p>This is too much work. Очень много работы.</p>
    <p><emphasis>What else do you regard as too much work? Что еще вы имеете в виду, говоря, что очень много работы?</emphasis></p>
    <p>Writing letters. Написание писем.</p>
    <p><emphasis>I see. Please continue.Понятно, продолжайте.</emphasis></p>
    <p>Also washing my mother's car. А также мытье машины моей матери.</p>
    <p><emphasis>Tell me more about your family. Расскажите подробнее о вашей семье.</emphasis></p>
    <p>Why should I? Зачем это?</p>
    <p><emphasis>Why should you what? Что зачем?</emphasis></p>
    <p>Здесь ключевыми словами были <strong>this is, mother </strong>и <strong>why. </strong>Недостаток подходящих ключевых слов вызывал ответ <strong>I see. Please continue.</strong></p>
    <p><emphasis>15. </emphasis>Написать программу, разбирающую предложения с сообщениями о событиях в некотором учреждении, такие как <emphasis>«Smith will be in his office at 3 pm for a meeting.» </emphasis>(Смит будет в своем учреждении в 3 часа дня для участия в собрании). Программа должна выдавать на печать «суть» предложения, сообщая кто, где и когда, следующим образом:</p>
    <p>who: smith Кто: Смит</p>
    <p>where: office Где: контора</p>
    <p>when: 3 pm Когда: 3 часа дня</p>
    <p>what: meeting Что: собрание</p>
    <p>Эта «суть» должна быть занесена в базу данных в виде утверждений, с тем чтобы можно было получить ответ на такие вопросы:</p>
    <p>Where is Smith at 3 pm? Где Смит в 3 часа? </p>
    <p>where: office Где: контора</p>
    <p>what: meeting Что: собрание</p>
    <p><emphasis>16. </emphasis>Написать интерфейс для общения на естественном (английском) языке с файловой системой вашей ЭВМ, чтобы можно было получать ответы на такие вопросы:</p>
    <p>How many files David own? Сколько файлов принадлежат Дейвиду?</p>
    <p>Does Chris share PROG.MAC with David?  Использует ли Крис файл PROG.MAC совместно с Дейвидом?</p>
    <p>When did Bill change file Когда Билл изменил свой VIDEO.C? файл VIDEO.C?</p>
    <p>Программа должна уметь опрашивать различные характеристики файловой системы, такие как принадлежность файлов и даты.</p>
   </section>
  </section>
  <section>
   <title>
    <p>ПРИЛОЖЕНИЕ А. ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ</p>
   </title>
   <p>Сюда вошли предлагаемые авторами ответы на некоторые из упражнений, встречающихся в тексте. Для большинства упражнений по программированию редко существует единственный правильный ответ, и, вполне возможно, что у вас получится другой верный ответ, который несколько отличается от предложенного нами. В любом случае следует обязательно опробовать вашу программу на Пролог-системе, имеющейся в вашем распоряжении, чтобы практически проверить, работает она или нет. Но даже в том случае, если вы написали правильную, но отличающуюся от нашей программу, может оказаться поучительным потратить немного времени на изучение альтернативного подхода к решению той же самой задачи.</p>
   <p><strong>Упражнение 1.2.</strong> Здесь представлены возможные определения семейных отношений.</p>
   <empty-line/>
   <p>явл_матерью(М):- мать(М,Ребенок).</p>
   <p>явл_отцом(О):- отец(О, Ребенок). </p>
   <p>явл_сыном(Сын):- родитель(Род,Сын), Мужчина(Сын). </p>
   <p>явл_сестрой(Сес,Ч):- родитель(Род,Сес), родитель(Род,Ч), женщина(Сес), различ(Сес,Ч).</p>
   <p>дедушка, (Дед,X):- родитель(Род,Х), отец(Дед,Род). </p>
   <p>брат_или_сестра (S1,S2):- родитель(Род,Б1), родитель(Род, S2), различ(S1,S2).</p>
   <empty-line/>
   <p>Заметим, что нам приходится использовать предикат <strong>различ </strong>в определении предикатов <strong>явл_сестрой</strong> и <strong>брат_или_сестра</strong>. Это гарантирует нам, что система не будет считать, что кто-то может быть сестрой или братом самому себе. Дать определение предиката <strong>различ </strong>на этом этапе вы не сможете.</p>
   <p><strong>Упражнение 5.2. </strong>Следующая программа циклически считывает символы (из текущего файла ввода) и печатает их, заменяя при этом все строчные буквы 'а' на 'b'.</p>
   <empty-line/>
   <p>go:- repeat, get0(C), deal_with(C), fail. </p>
   <p>deal_with(97):-!, put(98). </p>
   <p>deal_with(X):- put(X).</p>
   <empty-line/>
   <p>Наличие «отсечения» в первом правиле предиката <strong>deal_with </strong>существенно (почему?). Числа 97 и 98 есть значения кодов ASCII для символов '<strong>а</strong>' и '<strong>b</strong>' соответственно.</p>
   <p><strong>Упражнение 6.2. </strong>Почему следующее определение предиката <strong>get</strong> не работает, если целевое утверждение <strong>get </strong>задано с конкретизированным аргументом?</p>
   <empty-line/>
   <p>get(X):- new_get(X), X›32. </p>
   <p>new_get(X):- repeat, getO(X).</p>
   <empty-line/>
   <p>Предположим, мы задали Пролог-системе целевое утверждение get(97) (проверить, является ли следующий печатаемый символ строчной буквой 'а'?), тогда как на самом деле этот следующий символ есть '<strong>b</strong>'. Чтобы согласовать <strong>get(97), </strong>делается попытка согласовать <strong>new_get(97). </strong>Цель <strong>repeat </strong>успешно согласуется, но затем цель <strong>get0(97) </strong>оказывается несогласуемой (так как следующий символ не 'а'). Тогда начинается возвратный ход. Цель <strong>get0</strong> не может быть повторно согласована, а цель <strong>repeat </strong>- может. Итак, целевое утверждение <strong>repeat </strong>снова согласуется с базой данных, и вновь делается попытка согласовать <strong>get0(97)</strong>. На этот раз, конечно, следующим символом будет тот, что следует за '<strong>b</strong>'. Если это не '<strong>а</strong>', то цель оказывается несогласуемой, a <strong>repeat </strong>снова завершается успешно. Теперь будет проверяться следующий символ и так далее. Фактически происходит следующее: программа считывает новые и новые символы до тех пор пока она, наконец, не находит тот, что совпадает с аргументом. Но это не то, что должен делать предикат <strong>get. </strong>Правильное определение предиката <strong>get, </strong>которое обходит эту проблему, а также содержит «отсечение», устраняющее возможность повторного согласования <strong>repeat </strong>выглядит следующим образом:</p>
   <empty-line/>
   <p>get(X):- repeat, get0(Y), 32‹Y,!, X-Y.</p>
   <empty-line/>
   <p><strong>Упражнение 7.10. </strong>Вот программа, которая порождает пифагоровы тройки.</p>
   <p>pythag(X,Y,Z):-  intriple(X,Y,Z), Sumsq is Х*Х + Y*Y, Sumsq is Z*Z.</p>
   <p>intriple(X,Y,Z):- is_integer(Sum), minus(Sum,X,Sum1), minus(Sum1,Y,Z).</p>
   <p>minus(Sum,Sum,0). </p>
   <p>minus(Sum,Dl,D2):- Sum›0, Suml is Sum-1, minus(Suml,Dl,D3), D2 is D3+1.</p>
   <p>is_integer(0).</p>
   <p>is_integer(N):- is_integer(N1), N is N1 + 1.</p>
   <p>С помощью предиката <strong>intriple </strong>программа порождает все возможные тройки чисел <strong>X</strong>, <strong>Y</strong>, <strong>Z</strong>, а затем проверяет, является ли данная тройка чисел пифагоровой тройкой. Определение <strong>intriple </strong>гарантирует, что рано или поздно все возможные тройки чисел будут порождены. Прежде всего порождается целое число, являющееся суммой <strong>X</strong>, <strong>Y</strong> и <strong>Z</strong>. Затем с помощью недетерминированного предиката вычитания <strong>minus </strong>из него порождаются значения <strong>X</strong>, <strong>Y</strong> и <strong>Z</strong>.</p>
   <p><strong>Упражнение 9.1.</strong> Здесь приведена программа, транслирующая простое правило грамматики в процедуру на языке Пролог. При этом предполагается, что это правило не содержит; классов словосочетаний с дополнительными аргументами, целевых утверждений внутри фигурных скобок, а также дизъюнкций и отсечений.</p>
   <empty-line/>
   <p>?- op(255,xfx,--›).</p>
   <p>трансляция ((P1--›P2), (Gl:-G2)):- левая_часть(Р1,S0,S,G1), правая_частъ(Р2,S0,S,G2).</p>
   <p>левая_часть(Р0,S0,S,G):- nonvar(PO), tag(P0,S0,S,G).</p>
   <p>правая_часть((Pl,P2),S0,S,G):-!, правая_часть(Р1,S0,S1,G1), правая_чacть(P2,S1,S,G2), и(G1, G2,G).</p>
   <p>правая_часть(P,S0,S,true):- явл_списком(Р),!, присоединить(Р,S,S0).</p>
   <p>правая_часть(P,S0,S,G):- tag(P,S0,S,G). </p>
   <p>tag(P,S0,S,G):- atom(P), G =.. [P,S0,S]. </p>
   <p>и(true,G,G):-!. </p>
   <p>и(G,true,G):-!. </p>
   <p>и(G1,G2, (G1,G2)). </p>
   <p>явл_списком([]):-!. </p>
   <p>явл_списком([_ |_]).</p>
   <p>присоединить([А|В],C,[A|D]):- присоединить(В,С,D). </p>
   <p>присоединить([], Х,Х).</p>
   <empty-line/>
   <p>В этой программе переменные, начинающиеся с латинской буквы Р, используются для обозначения описаний словосочетаний (в виде атомов или списков слов) в правилах грамматики. Переменные, начинающиеся с G, обозначают целевые утверждения Пролога. Переменные, начинающиеся с S, обозначают аргументы целевых утверждений Пролога (которые представляют последовательности слов). Для тех, кто заинтересуется, ниже приведена программа, которая способна обрабатывать более общие случаи трансляции правил грамматики. Один из приемов приспособления Пролог-системы к обработке правил грамматики состоит в использовании измененной версии предиката <strong>consult</strong>, где предложение вида <strong>А--›B</strong> транслируется перед занесением его в базу данных.</p>
   <empty-line/>
   <p>?- op(251,fx,{).</p>
   <p>?- op(250,fx,}).</p>
   <p>?- op(255,XFX,&gt;).</p>
   <p>трансляция((Р0--›Q0), (P:- Q)):- левая_часть(P0,S0,S,P), правая_часть(Q0, S0,S,Q1), лин(Q1, Q).</p>
   <p>левая_часть((NT,Ts),S0,S,P):- !, nonvar(NT), явл_списком(Тs), tag(NT,S0,Sl,P), присоединить(Ts, S0,S1). </p>
   <p>левая_часть (NT,S0,S,P):- nonvar(NT), tag(NT,SO,S,P).</p>
   <p>правая_часть((Х1,Х2),S0,S,Р):- правая_часть(Х1,S0,S1,Р1), правая_часть(X2,Sl,S,P2), и(Р1,Р2,Р).</p>
   <p>правая_часть((Xl;X2),S0,S,(P1;P2)):-!, или(Xl,S0,S,P1), или(Х2,S0,S,Р2). </p>
   <p>правая_часть(Р,S,S,Р):-!. </p>
   <p>правая_часть(!,S,S,!):-!. </p>
   <p>правая_часть(Ts,SO,S,true):- явл_списком(Тs),!, присоединить(Ts, S,S0). </p>
   <p>правая_часть(Х,S0,S,P):- tag(X,S0,S,P). </p>
   <p>или(Х,S0,S,Р):- правая_часть(X,S0a,S,Pa), (var(S0a), S0a=S,!, S0=S0a, P=Pa; P=(S0=S0a,Pa)). </p>
   <p>tag(X,S0,S,P):- X =..[F|A], присоединить(А,[S0,S],АХ), P =.. [F|AX]. </p>
   <p>и(true,P,P):-!. </p>
   <p>и(P,true,P):-!.</p>
   <p>и(P,Q,(P,Q)). </p>
   <p>лин(А,А):- var(A),!.</p>
   <p>лин((А,В),С):-!, лин1(А,С,R), лин(В,R).</p>
   <p>лин(А,А).</p>
   <p>лин1(А,(А,R),R):- VAR(A),!.</p>
   <p>лин1((А,В),С,R):-!, лин1(А,С,R1), лин1(В,R1,R).</p>
   <p>лин1(A,(A,R),R)<emphasis>.</emphasis></p>
   <p>явл_списком([]):-!. </p>
   <p>явл_списком([_|_]).</p>
   <p>присоединить([А|В],С,[А|D]):- присоединить(В,С,D). </p>
   <p>присоединить([], X, X).</p>
   <empty-line/>
   <p><strong>Упражнение 9.2. </strong>Определение универсальной версии предиката <strong>phrase (словосочетание) </strong>выглядит следующим образом:</p>
   <p>phrase(Cтип,Слова):- Стип =.. [Pred|Args], присоединить(Args,[Слова,[]],Newargs), Цель =.. [Pred|Newargs], call (Цель).</p>
   <p>где <strong>присоеднить </strong>определен так же как в разд. 3.6.</p>
  </section>
  <section>
   <title>
    <p>ПРИЛОЖЕНИЕ В. ПРОГРАММА ПРИВЕДЕНИЯ ФОРМУЛ ИСЧИСЛЕНИЯ ПРЕДИКАТОВ К СТАНДАРТНОЙ ФОРМЕ</p>
   </title>
   <p>Как было обещано в гл. 10, мы проиллюстрируем процесс преобразования формулы исчисления предикатов в стандартную форму, представив фрагменты программы на Прологе, выполняющей это преобразование. Верхний уровень программы выглядит следующим образом:</p>
   <empty-line/>
   <p>translate(X):-</p>
   <p> implout(X,Xl), /* Этап 1 */</p>
   <p> negin(Xl,X2), /* Этап 2 */</p>
   <p> skolem(X2,X3,[]), /* Этап 3 */</p>
   <p> univout(X3,X4), /* Этап 4 */</p>
   <p> conjn(X4,X5), /* Этап 5 */ </p>
   <p> clausify(X5,Clauses, []), /* Этап 6 */</p>
   <p> pclauses(Clauses). /* Печать дизъюнктов */</p>
   <empty-line/>
   <p>Здесь приведено определение предиката <strong>translate</strong>, действующего таким образом, что, если выполнить целевое утверждение <strong>translate(X</strong>), где <strong>X</strong> – это формула исчисления предикатов, то программа напечатает эту формулу в стандартной форме в виде последовательности дизъюнктов. В этой программе формулы исчисления предикатов представляются в виде структур языка Пролог, как на это указывалось ранее (в гл. 10). Однако мы сделаем некоторое отступление от предыдущего описания и будем представлять переменные, входящие в формулы исчисления предикатов, атомами языка Пролог, с целью облегчить их обработку. Предполагается, что можно отличить переменные в формулах исчисления предикатов от констант, используя некоторое соглашение относительно формы записи имен. Например, можно считать, что имена переменных всегда начинаются с одной из букв х, у, z. В действительности, переменные всегда вводятся в формулу посредством кванторов и, следовательно, их легко можно опознать. Лишь при чтении результата, печатаемого программой, программисту необходимо помнить, какие имена соответствуют переменным формул исчисления предикатов, а какие константам.</p>
   <p>Прежде всего, необходимо объявить операторы для логических связок, используемых в формулах:</p>
   <empty-line/>
   <p>?- op(30,fx,~).</p>
   <p>?- op(100,xfy,#).</p>
   <p>?- op(100,xfy,&amp;).</p>
   <p>?- op(150,xfy,-›).</p>
   <p>?- op(150,xfy,‹-›).</p>
   <empty-line/>
   <p>Следует обратить внимание на то, как определены операторы. В частности ~ имеет более низкий приоритет чем # и &amp;. Для начала, необходимо сделать одно важное предположение. Предполагается, что переменные переименованы таким образом, что в обрабатываемой формуле одна и та же переменная никогда не вводится более чем одним квантором. Это необходимо, чтобы предотвратить возможные конфликты в употреблении имен в дальнейшем.</p>
   <p>Для преобразования формул к стандартной форме мы используем метод преобразования дерева, обсуждавшийся в разд. 7.11 и 7.12. При представлении логических связок как функторов, формулы исчисления предикатов превращаются в структуры, которые могут быть изображены в виде деревьев. Каждый из шести основных этапов перевода в стандартную форму представляет некоторое преобразование дерева, которое отображает входное дерево в выходное.</p>
   <subtitle>Этап 1 - исключение импликаций</subtitle>
   <p>Определим предикат <strong>implout</strong> так, что <strong>implout(X, Y)</strong> означает, что формула <strong>Y</strong> получается из формулы <strong>X</strong> путем исключения всех импликаций.</p>
   <empty-line/>
   <p>implout((P ‹-› Q), (P1 &amp; Q1) # (~Р1 &amp; ~Q1))):- !, implout(P,Pl), implout(Q,Ql).</p>
   <p>implout((P -› Q),(~P1 # Q1)):-!, implout(P,P1), implout(Q,Q1).</p>
   <p>implout(all(X,P),all(X,P1)):- !.</p>
   <p>implout(exists(X,P),exists(X,P1)):-!, implout(P, P1).</p>
   <p>implout((P &amp; Q),(P1 &amp; Q1)):- !, implout(P,P1), implout(Q,Q1). </p>
   <p>implout((P # Q),(P1 # Q1)):-!, implout(P,P1), implout(Q,Q1).</p>
   <p>implout((-P),(~Pl)):-!, implout(P,P1). </p>
   <p>implout(P,P).</p>
   <subtitle>Этап 2 - перенос отрицания внутрь формулы</subtitle>
   <p>Здесь необходимо определить два предиката – <strong>negin </strong>и <strong>neg. </strong>Целевое утверждение <strong>negin(X, Y) </strong>означает, что формула <strong>Y</strong> получена из <strong>X</strong> в результате применения к ней преобразования «перенос отрицания». Этот предикат является основным и именно к нему производится обращение из программы. Целевое утверждение <strong>neg(X, Y)</strong> означает, что формула <strong>Y</strong> получена из формулы <strong>~X </strong><emphasis>с </emphasis>помощью того же преобразования, что и в <strong>negin. </strong>В обоих случаях предполагается, что формула прошла обработку на первом этапе и, следовательно, не содержит -› и ‹-›</p>
   <empty-line/>
   <p>negin((~P),P1):-!, neg(P,P1). </p>
   <p>negin(all(X,P),all(X,P1)):-!, negin(P,P1). </p>
   <p>negin(exists(X,P),exists(X,P1)):-!, negin(P,P1). </p>
   <p>negin((P &amp; Q),(P1 &amp; Q1)):-!, negin(P,P1), negin(Q,Q1). </p>
   <p>negin((P # Q),(P1 # Q1)):-!, negin(P,P1), negin(Q,Q1). </p>
   <p>negin(P,P).</p>
   <p>neg((~P),P1):-!, negin(P,P1).</p>
   <p>neg(all(X,P), exists(X,P1)):-!, neg(P,P1).</p>
   <p>neg(exists(X,P),all(X,P1)):-!, neg(P,P1).</p>
   <p>neg((P <emphasis>&amp; </emphasis>Q),(P1 # Q1)):-!, neg(P,P1), neg(Q, Q1).</p>
   <p>neg((P # Q),(P1 &amp; Q1)):~!, neg(P,P1), neg(Q, Q1).</p>
   <p>neg(P,(~P)).</p>
   <subtitle>Этап 3 - сколемизация</subtitle>
   <p>Предикат <strong>skolem </strong>имеет три аргумента, соответствующих: исходной формуле, преобразованной формуле и списку переменных, которые на текущий момент были введены посредством кванторов общности.</p>
   <empty-line/>
   <p>skolem(all(X,P),all(X,P1),Vars):-!, scolem(P,Pl,[X|Vars]). </p>
   <p>skolem(exists(X,P),P2,Vars):-!, gensym(f,F), Sk =..[F|Vars], subst(X,Sk,P,P1), skolem(P1,P2,Vars). </p>
   <p>skolem((P # Q),(P1 # Q1),Vars):-!, skolem(P,P1,Vars), skolem(Q,Q1,Vars). </p>
   <p>skolem((P &amp; Q),(P1 &amp; Q1), Vars):-!, skoIem(P,P1,Vars), skolem(Q,Q1,Vars). </p>
   <p>skolem(P,P,_).</p>
   <empty-line/>
   <p>В этом определении используются два новых предиката. Предикат <strong>gensym </strong>должен быть определен таким образом, что целевое утверждение <strong>gensym(X, Y) </strong>вызывает конкретизацию переменной <strong>Y</strong> значением, представляющим новый атом, построенный из атома <strong>X</strong> и некоторого числа. Он используется для порождения сколемовских констант, не использовавшихся ранее. Предикат <strong>gensym </strong>определен в разд. 7.8 как <strong>генатом. </strong>Второй новый предикат, о котором уже упоминалось, это <strong>subst. </strong>Мы требуем, чтобы <strong>subst(Vl,V2,F1,F2) </strong>было истинно, если формула <strong>F2</strong> получается на <strong>F1 </strong>в результате замены всех вхождений <strong>V1</strong> на <strong>V2. </strong>Определение этого предиката оставлено в качестве упражнения для читателя. Оно аналогично определениям, приведенным в разд. 7.5 и 6.5.</p>
   <subtitle>Этап 4 - вынесение кванторов общности в начало формулы</subtitle>
   <p>После выполнения этого этапа, естественно, будет необходимо иметь возможность указывать, какие атомы Пролога представляют переменные формулы исчисления предикатов, а какие атомы представляют константы. Мы больше не сможем воспользоваться удобным правилом, согласно которому переменными являются в точности те символы, которые вводятся с помощью кванторов. Здесь представлена программа, выполняющая операции вынесения и удаления кванторов общности.</p>
   <empty-line/>
   <p>univout(all(X,P), P1):- !, univout(P,P1). </p>
   <p>univout((P &amp; Q),(P1 &amp; Q1)):-!, univout(P,P1), univout(Q,Q1). </p>
   <p>univout((P # Q),(P1 # Q1)):- !, univout(P,P1), univout(Q,Q1). </p>
   <p>univout(P,P).</p>
   <empty-line/>
   <p>Эти правила определяют предикат <strong>univout </strong>таким образом, что <strong>univout(X, Y) </strong>означает, что <strong>Y</strong> получается из <strong>X</strong> в результате вынесения и удаления кванторов общности.</p>
   <p>Необходимо отметить, что данное определение <strong>univout </strong>предполагает, что указанные операции будут применяться лишь после того, как полностью будут завершены первые три этапа преобразования. Следовательно, формула не должна содержать импликаций и кванторов существования.</p>
   <subtitle>Этап 5 - использование дистрибутивных законов для. &amp; и #</subtitle>
   <p>Реальная программа для преобразования формулы в конъюнктивную нормальную форму является значительно более сложной по сравнению с последней программой. При обработке формулы вида <strong>(Р # Q),</strong> где <strong>Р</strong> и <strong>Q</strong> – произвольные формулы, прежде всего, необходимо преобразовать <strong>Р</strong> и <strong>Q</strong> в конъюнктивную нормальную</p>
   <p>форму, скажем <strong>P1</strong> и <strong>Q1</strong>. И только после этого можно применять одно из преобразований, дающих эквивалентную формулу. Процесс обработки должен происходить именно в таком порядке, так как может оказаться, что ни <strong>Р</strong> ни <strong>Q</strong> не содержат&amp; на верхнем уровне, а <strong>Р1</strong> и <strong>Q1</strong> содержат. Программа имеет вид:</p>
   <empty-line/>
   <p>conjn((P # Q),R):-!, conjn(P,P1), conjn(Q,Q1), conjn1((P1 # Q1),R). </p>
   <p>conjn((P&amp; Q),(P1&amp; Q1)):-!, conjn(P,P1), conjn(Q,Q1). </p>
   <p>conjn(P,P). </p>
   <p>conjn1(((P &amp; Q) # R), (P1 &amp; Q1)):- !, conjn((P # Q), P1), conjn((Q # R), Q1). </p>
   <p>conjn1((P # (Q &amp; R)),(P1 &amp; Q1)):-!, conjn((P # Q), P1), conjn((P # R), Q1). </p>
   <p>conjn1(P,P).</p>
   <subtitle>Этап 6 - выделение множества дизъюнктов</subtitle>
   <p>Здесь представлена последняя часть программы приведения формулы к стандартной форме. Прежде всего, определим предикат <strong>clausify</strong>, который осуществляет построение внутреннего представления совокупности дизъюнктов. Эта совокупность представлена в виде списка, каждый элемент которого является структурой вида <strong>cl(A, В)</strong>. В этой структуре <strong>А</strong> – это список литералов без отрицания, а <strong>В</strong> – список литералов с отрицанием (знак отрицания ~ явно не содержится). Предикат <strong>clausify</strong> имеет три аргумента. Первый аргумент для формулы, передаваемой с пятого этапа обработки, Второй и третий аргументы используются для представления списков дизъюнктов. Предикат <strong>clausify </strong>создает список, заканчивающийся переменной, а не пустым списком (<strong>[]</strong>) как обычно, и возвращает эту переменную посредством третьего аргумента. Это позволяет другим правилам добавлять элементы в конец этого списка, конкретизируя соответствующим образом указанную переменную. В программе выполняется проверка с целью выявления ситуаций, когда одна и та же атомарная формула входит в дизъюнкт как с отрицанием, так и без него. Если такая ситуация имеет место, то соответствующий дизъюнкт не добавляется к списку, так как подобные дизъюнкты являются тривиально истинными и не дают ничего нового. Выполняется также проверка неоднократного вхождения литерала в дизъюнкт.</p>
   <empty-line/>
   <p>clausify((P&amp; Q),C1,C2):-!, clausify(P,C1,C3), clausify(Q,C3,C2).</p>
   <p>clausify(P,[cl(A,B)|Cs],Cs):- inclause(P,A,[],B,[]),!. </p>
   <p>clausify(_,C,C).</p>
   <p>inclause((P # Q), A, A1, B, B1):-!, inclause(P,A2,A1,B2,B1),inclause(Q,A,A2,B,B2). </p>
   <p>inclause((~P),A,A,B1,B):-!, notin(P,A), putin(P,B,B1). </p>
   <p>inclause(P,A1,A,B,B):- notin(P,B), putin(P,A,A1).</p>
   <p>notin(X,[X|_]):-!, fail. </p>
   <p>notin(X,[_|L]):-!, notin(X,L). </p>
   <p>notin(X,[]).</p>
   <p>putin(X,[],[X]):-!. </p>
   <p>putin(X,[X|L],L):-!. </p>
   <p>putin(X,[Y|L], [Y|L1]):- putin(X,L,L1).</p>
   <empty-line/>
   <subtitle>Печать утверждений</subtitle>
   <p>Теперь будет определен предикат <strong>pclauses</strong> печатающий формулу, представленную указанным способом, в соответствии с принятой формой записи.</p>
   <p>pclauses([]):-!, nl, nl.</p>
   <p>pclauses([cl(A,B)|Cs]):- pclause(A,B), nl, pclauses(Cs).</p>
   <p>pclause(L,[]):-!, pdisj(L), write('.').</p>
   <p>pclause([],L):-!, write(':-'), pconj(L), write('.').</p>
   <p>pclause(L1,L2):- pdisj(L1), write(':-'), pconj(L2), write('.').</p>
   <p>pdisj([L]):-!, write(L).</p>
   <p>pdisj([L|Ls]):- write(L), write(';'), pdisj(Ls).</p>
   <p>pconj([Lj):-!, write(L).</p>
   <p>pconj([L|Ls]):- write(L), write(','), pconj(Ls).</p>
  </section>
  <section>
   <title>
    <p>ПРИЛОЖЕНИЕ С. РАЗЛИЧНЫЕ ВЕРСИИ ЯЗЫКА ПРОЛОГ</p>
   </title>
   <p>В настоящее время существует много различных версий Пролога, которые можно встретить во многих организациях. Разнообразие версий отчасти объясняется разнообразием имеющихся ЭВМ. Нет двух ЭВМ, для которых с одинаковой легкостью писались бы все возможные программы. Это нашло отражение в том, что различные реализации Пролога отличаются друг от друга по своим возможностям. Но даже две ЭВМ одного и того же типа могут работать с разными операционными системами. Операционная система – это программа, осуществляющая общее управление работой ЭВМ, в том числе контроль за эффективным распределением ресурсов между пользователями ЭВМ. Одни операционные системы разрешают программисту использовать широкий набор возможностей, обеспечиваемых ЭВМ. Набор допустимых средств других более скромен. Отсюда и различия между Пролог-системами. Наконец, создатели Пролог-систем часто расходятся в представлениях о том, какие возможности являются лишь эстетически приятными, а какие действительно необходимы. В результате никакие две Пролог-системы не совпадают полностью по возможностям, и не похоже, что эта ситуация вскоре изменится, поскольку относительно реализаций Пролога постоянно возникают новые идеи и усовершенствования.</p>
   <p>В этой книге описана версия Пролога, которая не соответствует в точности никакой существующей системе. Скорее наоборот, она была задумана как описание «базового» Пролога, который похож на все системы сразу. Если вы усвоили идеи, изложенные в этой книге, то вам не составит большого труда приспособиться к какой-либо конкретной Пролог-системе, с которой вам придется работать. Синтаксис языка и некоторые встроенные предикаты могут отличаться, но в остальном это будет все тот же базовый Пролог, который описан здесь.</p>
   <p>Лучший способ изучения Пролог-системы, которой вы располагаете,- это чтение руководства пользователя, входящего в комплект ее документации. Правда, изложение там может быть сжатым, однако, имея общее представление о языке, вы без особого труда сможете разобраться, чем данная система отличается от того, с чем вы знакомы. В данном приложении отмечается несколько моментов, на которые стоит обратить внимание, а также сообщаются подробные сведения о двух конкретных Пролог-системах, которые довольно широко распространены. При этом мы хотели бы еще раз подчеркнуть, что многие существующие Пролог-системы постепенно меняются, и поэтому ничто не заменит вам изучения свежей версии руководства по Пролог-системе для вашей ЭВМ. Ниже рассматриваются характеристики Пролог-систем, различия в которых наиболее вероятны для разных реализаций Пролога.</p>
   <subtitle>Синтаксис</subtitle>
   <p>У каждого имеются свои представления о том, какая форма синтаксиса наиболее естественна и наглядна. К счастью, синтаксис Пролога довольно прост и не дает большого простора для вариаций. Один из спорных вопросов – как следует отличать переменные от атомов. Здесь для обозначения переменных используются имена, начинающиеся с прописной буквы, а для обозначения атомов – со строчной. Кроме того, мы допускаем атомы, составленные из последовательностей знаков, таких как '*', '.' и '='. Некоторые Пролог-системы придерживаются в отношении использования прописных и строчных букв обратного соглашения (когда имена переменных начинаются со строчной буквы). Другие различают имена переменных за счет того, что начинают их со специальной литеры, как, например, <strong>'_PERSON' </strong>или <strong>'*PERSON'. </strong>Это удобно для систем, где прописные и строчные буквы не различаются. Другим моментом, где возможны расхождения, является способ записи утверждений – как заголовок утверждения отделяется от тела, как разделяются отдельные цели в теле и как обозначаются вопросы к системе. Для этого вполне могут употребляться атомы, отличные от ':-', '.' и '?-', или использоваться более сложные методы. В одной из ранних систем заголовок и цели утверждения размещались одно за другим, причем перед заголовком утверждения ставили знак '+', а перед каждой из подцелей – знак '-'. Короче говоря, вам могут встретиться способы записи утверждений, приведенные ниже, а также и отличные от них.</p>
   <empty-line/>
   <p>uncle(X,Z):- parent(X,Y), brother(Y,Z). </p>
   <p>Uncle(x,z) ‹- Parent(x,y) &amp; Brother(y,z). </p>
   <p>UNCLE(_X,_Z):- PARENT(_X,_Y), BROTHER(_Y,_Z). </p>
   <p>+UNCLE(*X,*Z) -PARENT(*X,*Y) -BROTHER(*Y,*Z).</p>
   <p>((UNCLE X1 ХЗ) (PARENT X1 Х2) (BROTHER X2 ХЗ)) </p>
   <p>uncle(X,Z): parent(X,Y); brother(Y,Z).</p>
   <subtitle>Различные ограничения</subtitle>
   <p>Поскольку на разных ЭВМ управление памятью организовано по-разному, то создатели Пролог-систем не всегда могут позволить неограниченный рост некоторых объектов. Среди характеристик, которые подвержены изменениям при переходе от одной ЭВМ к другой, можно указать максимальную величину целого числа в Прологе, возможность использования чисел с плавающей точкой, максимально допустимое число аргументов функтора, максимальное количество литер в атоме, максимальное число утверждений в определении предиката и т. д.</p>
   <subtitle>Возможности окружения</subtitle>
   <p>Из-за различий в возможностях отдельных операционных систем в некоторых Пролог-системах можно прервать программу в ходе ее выполнения, отредактировать файл на диске без потери текущего состояния сеанса работы с Пролог-системой, одновременно выполнять несколько Пролог-программ, получать входные и передавать выходные данные через специальные устройства, Однако нельзя ожидать, чтобы какая-то из этих возможностей обеспечивалась на всех системах, поэтому здесь также могут встретиться различия. Как и в вопросе допустимого набора указанных возможностей, конкретная операционная система на вашей ЭВМ может отличаться тем, что некоторым вводимым литерам она будет придавать специальное значение. Например, литера, которая вводится для обозначения «конец файла» в конце предиката <strong>consult(user)</strong> в разных ЭВМ различна. Другие литеры могут рассматриваться как запросы на выдачу информации о состоянии ЭВМ или как запросы на изменение последней введенной литеры. Подобные возможности не являются частью Пролог-системы, но тем не менее, важны для того, кто решил практически использовать эту систему.</p>
   <subtitle>Компиляция</subtitle>
   <p>Большинство Пролог-систем работает с представлением утверждений, которое близко к их исходному тексту. Когда какое-либо утверждение в такой системе начинает выполняться система должна проанализировать утверждение и предпринять соответствующие действия. Такая система называется <emphasis>интерпретатором. </emphasis>Другая возможность состоит в том, что система транслирует ваши предложения в последовательности инструкций, которые могут непосредственно исполняться ЭВМ. Такая система называется <emphasis>компилятором. </emphasis>Использование компилятора дает то преимущество, что ваша программа выполняется непосредственно, а не проходит процесс интерпретации. Это означает, что вы вправе ожидать, что ваша программа будет выполняться быстрее. Но, с другой стороны, поскольку при использовании компилятора текст программы не сохраняется в исходном виде, не следует надеяться на получение той же информации при ее отладке (например, вам нельзя будет запросить выдачу текстов ваших предложений). В некоторых системах имеется возможность выбора между компиляцией и интерпретацией утверждений. В этом случае следует тщательно взвесить преимущества каждого подхода.</p>
   <subtitle>Специальные встроенные предикаты</subtitle>
   <p>Хотя основные средства механизма выполнения программ в большинстве Пролог-систем действуют одинаково, специальные встроенные предикаты могут все-таки различаться. Иногда это выражается в том, что для тех возможностей, которые легко обеспечить на данной ЭВМ, вводятся дополнительные предикаты. Иногда одни и те же основные возможности реализуются с помощью предикатов, которые дают несколько отличающиеся результаты. Например, для любой Пролог-системы было бы достаточно располагать предикатами <strong>functor</strong> и <strong>arg</strong> или предикатом '=..'. Действительно, первые два могут быть выражены через третий и обратно. Вам, возможно, придется приспособиться к использованию имеющихся средств с тем, чтобы имитировать действие тех средств, к которым вы привыкли. Некоторые Пролог-системы могут предоставлять библиотеки полезных программ, обеспечивающих дополнительные возможности сверх тех, что дают встроенные предикаты. Например, грамматические правила могут быть предоставлены как часть базовой системы или может иметься возможность загрузить из библиотеки Пролог-программу, обеспечивающую такие возможности.</p>
   <subtitle>Средства отладки</subtitle>
   <p>Вопрос о том, какие средства отладки лучше всего подходят для Пролога, окончательно еще не решен. Тем временем разные системы предлагают свои подходы к выбору необходимых средств отладки. Остается надеяться, что общее введение в этот вопрос, приведенное в гл. 8, вооружит читателя всем необходимым для работы с любыми подобными средствами.</p>
  </section>
  <section>
   <title>
    <p>ПРИЛОЖЕНИЕ D. ПРОЛОГ ДЛЯ ЭВМ DEC SYSTEM-10</p>
   </title>
   <p>В этом приложении кратко описывается Пролог-система для ЭВМ DECsystem-10<sup><a l:href="#n_18" type="note">[18]</a></sup>, которую реализовали Дейвид Уоррен, Фернандо Перейра и Льюис Перейра. Эта реализация стала фактическим стандартом, и реализации, сделанные по этому образцу, имеются теперь на многих других ЭВМ от микро-ЭВМ 2-80 до ЭВМ семейства VAX фирмы DEC. Описанный в этой книге «базовый» Пролог также в основном совпадает с Прологом-10. В данном приложении рассматриваются только те его особенности, которые существенно отличаются от базового Пролога. В начале мы покажем, как выглядит сеанс работы с Прологом-10, а затем перейдем к более подробному изучению отличий этой системы от нашего базового Пролога. В конце приводится список Пролог-систем, сделанных по образцу Пролога-10, которые можно использовать на других ЭВМ.</p>
   <subtitle>Пример сеанса работы</subtitle>
   <p>Здесь приводится пример сеанса работы с Прологом-10. В нем в точности воспроизводится все, что происходит на терминале во время такого сеанса. Кроме того, здесь даются пояснения к тому, что происходит.</p>
   <p>Сначала мы находимся на уровне монитора операционной системы TOPS-10 и просим запустить Пролог.</p>
   <empty-line/>
   <p>.r prolog</p>
   <p>Prolog-10 version 3.3</p>
   <p>Copyright (С) 1981 by D. Warren, F. Pereira and L. Byrd</p>
   <p>|?- likes(X,Y).</p>
   <p>no</p>
   <empty-line/>
   <p>Содержимое заголовка, конечно, может несколько меняться от одной версии системы к другой. Литеры «|?-» выданы Прологом как «приглашение». Тем самым он сообщает нам, что ждет вопроса. Мы задали вопрос и получили ответ <strong>no (нет)</strong>. Это неудивительно, поскольку сейчас в базе данных еще нет никаких фактов. Теперь мы полагаем, что существует файл, <strong>test.pl</strong>, и мы заполняем базу данных его содержимым.</p>
   <empty-line/>
   <p>|?- ['test.pl'].</p>
   <p>test.pl consulted 58 words 0.01 sec.</p>
   <p>yes</p>
   <empty-line/>
   <p>Чтобы заставить Пролог считывать утверждения из файла, мы задаем вопрос, состоящий из имени файла, заключенного (в виде атома Пролога) в квадратные скобки. В данном случае это файл, состоящий из утверждений об отношении «нравится» (likes) между людьми.</p>
   <empty-line/>
   <p>|?- likes(john,bertrand).</p>
   <p>no</p>
   <p>|?- likes(john,albert).</p>
   <p>no</p>
   <empty-line/>
   <p>Это просто ряд вопросов о том, кто кому нравится. Пролог не может найти в базе данных сопоставимых фактов.</p>
   <empty-line/>
   <p>|?- listing(likes).</p>
   <p>likes(john,alfred).</p>
   <p>likes(alfred,john).</p>
   <p>likes(bertrand,john).</p>
   <p>likes(david,bertrand).</p>
   <p>likes(john,_l):- likes(_l,bertrand). </p>
   <p>yes</p>
   <empty-line/>
   <p>Чтобы узнать, какие утверждения с заданным предикатом имеются в базе данных, мы задаем вопрос с помощью специального встроенного предиката <strong>listing</strong>. Этот специальный вопрос заставляет Пролог выдать все утверждения, содержащие предикат <strong>likes</strong>. Заметим, что неконкретизированные переменные Пролог выводит в виде литеры подчеркивания, за которой следует число. Последнее утверждение в базе данных было записано в файле в виде:</p>
   <empty-line/>
   <p>likes(john,X):- likes(X,bertrand). </p>
   <empty-line/>
   <p>Продолжим наш пример:</p>
   <empty-line/>
   <p>|?- likes(john,X). </p>
   <p>X = alfred; </p>
   <p>X = david; </p>
   <p>no</p>
   <empty-line/>
   <p>Здесь, с помощью нажатия клавиш «;» и «RETURN» мы запрашиваем альтернативные ответы на заданный вопрос. Было выдано два возможных ответа; больше Пролог ничего не смог найти.</p>
   <empty-line/>
   <p>|?- likes(X,Y). </p>
   <p>X = john, </p>
   <p>Y = alfred; </p>
   <p>X = alfred, </p>
   <p>Y = john;</p>
   <p>X = bertrand, </p>
   <p>Y = john; </p>
   <p>X = david, </p>
   <p>Y = bertrand; </p>
   <p>X = john, </p>
   <p>Y = david; </p>
   <p>no</p>
   <empty-line/>
   <p>На этот раз ответ системы состоит из значений, которыми конкретизированы обе переменные. И опять для получения альтернативных ответов мы вводим «;» и «RETURN» до тех пор, пока новых ответов не окажется.</p>
   <empty-line/>
   <p>|?- [user].</p>
   <empty-line/>
   <p>Теперь мы просим Пролог читать утверждения из файла user. Это означает, что утверждения следует читать с терминала. Прочитанные утверждения будут дописаны в конец базы данных. Перед вводом утверждений (в отличие от ввода вопросов) в качестве приглашения Пролог выдает символ «|» вместо «|?-».</p>
   <p>[likes(timothy,bertrand).</p>
   <p><strong>|</strong></p>
   <p>user consulted 10 words 0.03 sec.</p>
   <p>yes</p>
   <empty-line/>
   <p>После ввода первого утверждения мы сообщаем Прологу, что хотим прекратить чтение утверждений. Это делается путем одновременного нажатия клавиш «CONTROL» и «Z». При этом перед вводом комбинации «CONTROL Z» мы могли бы ввести не один, а несколько фактов и правил. Теперь Пролог завершил обработку предыдущего вопроса и ждет ввода нового.</p>
   <empty-line/>
   <p>|?- likes(john,X). </p>
   <p>X = alfred; </p>
   <p>X = david; </p>
   <p>X = timothy; </p>
   <p>no</p>
   <empty-line/>
   <p>Здесь мы снова просим выдать альтернативные ответы. Заметим, что ввод нового утверждения привел к появлению нового ответа, который ранее при том же вопросе не выдавался.</p>
   <empty-line/>
   <p>|?- likes(bertrand,Y).</p>
   <p>Y = john</p>
   <p>yes</p>
   <empty-line/>
   <p>Здесь показан другой способ работы с альтернативами. После первого ответа мы ввели «RETURN». Это привело к тому, что весь вопрос завершился успешно, и Пролог перешел к ожиданию следующего вопроса.</p>
   <empty-line/>
   <p>|?- core 36864 (7680 lo-seg + 29184 hi-seg)</p>
   <p>heap 2560 = 1573 in use + 987 free</p>
   <p>global 1177 = 16 in use + 1161 free</p>
   <p>local 1024 = 16 in use + 1008 free</p>
   <p>trail 511 = 0 in use + 511 free</p>
   <p>0.36 sec. runtime</p>
   <empty-line/>
   <p>В ответ на последнее приглашение «|?-» мы ввели комбинацию «CONTROL Z», чтобы показать, что мы закончили работу с системой. В ответ Пролог выдал нам некоторую статистическую информацию, и мы снова вернулись в монитор TOPS-10. Полный протокол этого сеанса работы был записан в файл <strong>prolog.log</strong>.</p>
   <subtitle>Синтаксис</subtitle>
   <p>Синтаксис Пролога-10 в основном совпадает с нашим описанием, Правда, он несколько менее строг в отношении того, что считать правильными атомами и переменными, чем те правила, которые приведены в книге. Каждый пример из этой книги удовлетворяет требованиям синтаксиса Пролога-10. Приведем одно важное замечание относительно операторов с высоким приоритетом: поскольку ',' является оператором, то настоятельно рекомендуется во избежание двусмысленности заключать в скобки все термы, записанные с использованием операторов одинакового или более высокого приоритета. Это гарантирует, например, что конструкция</p>
   <empty-line/>
   <p>foo(a,b,c)</p>
   <empty-line/>
   <p>может быть истолкована только как структура с функтором too от трех аргументов, а не, например, что-нибудь типа</p>
   <empty-line/>
   <p>foo(a,','(b,c))</p>
   <empty-line/>
   <p>или</p>
   <empty-line/>
   <p>foo(','(a,','(b,c)))</p>
   <empty-line/>
   <p>Если бы мы хотели записать именно этот последний терм, то это следовало бы сделать так</p>
   <empty-line/>
   <p>foo((a,b,c))</p>
   <empty-line/>
   <p>Правило относительно операторов высокого приоритета касается только нескольких операторов, таких как ':-' и ';'. Оно означает, что запись вида:</p>
   <empty-line/>
   <p>?- retract(parent(A,B):- father(A,B)).</p>
   <empty-line/>
   <p>является синтаксически неправильной в смысле Пролога-10. Чтобы сделать ее правильной, нужно добавить пару скобок.</p>
   <p>В том случае, если вы работаете с терминалом или с операционной системой, в которых не предусмотрено одновременного использования прописных и строчных букв, можно использовать имеющийся в Прологе-10 альтернативный вариант синтаксиса. В этом синтаксисе отличие переменных от атомов состоит в том, что имена переменных начинаются с литеры подчеркивания «_». Для перехода на этот вариант синтаксиса предусмотрен встроенный предикат <strong>nolc </strong>(нет строчных букв). Другой встроенный предикат, <strong>lс</strong> (строчные буквы), позволяет снова переключиться на нормальный синтаксис.</p>
   <p>И еще одно маленькое замечание. Функтор '.' (с двумя аргументами) в Прологе-10 не является заранее определенным оператором. При желании вы можете определить его сами, хотя в этом нет необходимости, если при работе со списками вы всегда пользуетесь специальным способом задания списков.</p>
   <subtitle>Различные ограничения</subtitle>
   <p>В Прологе-10 предусмотрены ограничения, с которыми пользователь вряд ли столкнется на практике. Приоритеты операторов должны быть в диапазоне от 1 до 1200. Целые числа должны находиться в диапазоне от -131 072 до 131 071, однако в ходе вычислений целых выражений промежуточные результаты могут выходить за эти границы. Вещественные числа (с плавающей точкой) не предусмотрены.</p>
   <subtitle>Возможности окружения</subtitle>
   <p>В Прологе-10 предусмотрена очень полезная возможность протоколирования сеанса работы. При обычной работе с Прологом система фиксирует в файле <strong>plolog.log </strong>на диске почти все, что появляется на терминале. После того как работа закончена, вы можете просмотреть этот файл и точно определить, что происходило во время сеанса работы. Файл <strong>prolog.log </strong>содержит полезную информацию о том, что и когда делала ваша программа, и какие изменения вы в ней делали. На тот случай, если вы не хотите протоколировать все подряд, предусмотрены встроенные предикаты, обеспечивающие включение и выключение протоколирования.</p>
   <p>В Прологе-10 можно прервать выполнение программы путем одновременного ввода комбинации символов «CONTROL С». Система отвечает приглашением и ждет от вас указаний о том, какое действие нужно выполнить далее. Набор допустимых команд включает <strong>break</strong>, <strong>continue</strong> (продолжить выполнение программы), <strong>exit</strong> (выход из Пролога), <strong>trace</strong> и <strong>notrace</strong>. Последние две команды вызывают продолжение выполнения программы после изменения вида или объема трассировки. Команда <strong>break</strong> позволяет приостановить выполнение текущей программы и предоставляет вам возможность работы с новой «копией» Пролог-системы. После выхода из команды <strong>break</strong> приостановленная программа продолжит свое выполнение.</p>
   <p>В Прологе-10 в качестве литеры, играющей роль признака конца файла используется комбинация «CONTROL Z» (клавиша CONTROL одновременно с Z). Ее ввод, в зависимости от ситуации, в которой вы находитесь, приводит к выходу из Пролога, к завершению режима <strong>break</strong> или к завершению выполнения предиката <strong>consult</strong>. Встроенный предикат <strong>read</strong> в случае выхода на конец файла сравнивает свой аргумент с атомом <strong>end of file</strong>.</p>
   <p>В Прологе-10 предусмотрены разнообразные средства, помогающие экономить время при повторном считывании программы. Можно сохранить «состояние» Пролог-системы, включая текущее состояние ее базы данных, в файле на диске, причем таким образом, что восстановление этого состояния происходит значительно быстрее, нежели чтение программы и приведение ее в то же самое состояние. Кроме того, в начале каждого сеанса работы, прежде чем начать ввод с терминала, Пролог-10 автоматически читает любую информацию, которая записана в файле <strong>plolog.ini</strong>.</p>
   <p>Если во время выполнения Пролога-10 фиксируется ошибка, то система выводит сообщение, говорящее о том, что произошло. Большинство ошибок вызывают просто неудачу в согласовании тех целей, которые их породили, так что ваша программа может продолжать выполнение. Однако некоторые ошибки более серьезны. В этих случаях система прекращает выполнение всех имеющихся в данный момент программ и просит ввести очередной вопрос.</p>
   <subtitle>Компиляция</subtitle>
   <p>В Прологе-10 предусмотрена возможность выборочной компиляции некоторых из ваших утверждений, что позволяет значительно увеличить эффективность программ по времени выполнения и занимаемой памяти. Для этого имеется встроенный предикат, который действует подобно предикату <strong>consult</strong>, с той лишь разницей, что утверждения из файла не интерпретируются, а компилируются. Эффективность выполнения откомпилированных утверждений может быть увеличена за счет использования так называемых описаний режима, которые позволяют указать, как будут использованы данные утверждения (какие аргументы будут конкретизированы в различных ситуациях). Существуют определенные ограничения на пригодность утверждений для компиляции. Кроме того, системе необходимо задать некоторые другие описания, чтобы она смогла должным образом выполнять смесь интерпретируемых и откомпилированных утверждений.</p>
   <subtitle>Различия во встроенных предикатах</subtitle>
   <p>В Прологе-10 предусмотрены все встроенные предикаты, о которых говорилось в этой книге. Кроме того, он нормально обрабатывает грамматические правила, когда они встречаются в обычном <strong>consult</strong>. В данном разделе рассматриваются некоторые отличия от приведенных описаний.</p>
   <p>Действие предиката <strong>display</strong> всегда состоит в выдаче аргументов этого предиката на терминал, а не в текущий файл вывода, как было описано.</p>
   <p>При рассмотрении арифметических выражений мы говорили, что арифметическое выражение вычисляется только тогда, когда оно задано в качестве второго аргумента предиката <strong>is</strong>. Во всех других случаях структура вида '24-3' просто обозначает саму себя. В Прологе-10 это не так. Там вычисляются и арифметические выражения, заданные как аргументы других предикатов. Примером этого служат операторы отношения '‹', '=‹' и т. д., а также предикат <strong>put</strong>. Это означает, что приводимый ниже пример в Прологе-10 будет работать, а в нашем базовом Прологе выдаст ошибку или приведет к неудаче в согласовании цели.</p>
   <empty-line/>
   <p>?- 2+4‹12*(2+8).</p>
   <p>yes</p>
   <empty-line/>
   <p>Еще одна особенность. Структура, представляющая собой список, состоящий из одного числа, рассматривается как арифметическое выражение, значением которого является число. Иными словами в Прологе-10 имеем:</p>
   <empty-line/>
   <p>?- X is [25]. </p>
   <p>X = 25</p>
   <p>yes</p>
   <empty-line/>
   <p>Благодаря такой комбинации возможностей, вывод одиночных литер может быть задан в мнемоническом виде, например:</p>
   <empty-line/>
   <p>?- put("a"), put("b").</p>
   <p>ab</p>
   <p>yes</p>
   <empty-line/>
   <p>(не забывайте, что "а" – это список, состоящий из одного числового кода, соответствующего первой строчной букве алфавита).</p>
   <p>Синтаксис отрицания. Предикат с именем <strong>not </strong>не предусмотрен, но вместо него используется инфиксный оператор '\+' Отсутствует оператор «не равно» ('\=').</p>
   <p>Переменные как целевые утверждения. На самом деле это скорее вопрос синтаксиса, чем чего бы то ни было другого. Мы уже видели, как с помощью предиката <strong>call </strong>можно вызвать целевое утверждение, соответствующее текущему значению переменной Пролога. В Прологе-10 предусмотрен другой способ осуществления этого. Вместо того чтобы вставлять утверждение-цель вида</p>
   <p>…, call(X),…</p>
   <p>достаточно поставить на место цели саму эту переменную:</p>
   <p>…, X,…</p>
   <p>При этом использование варианта с <strong>call </strong>также возможно. Более того, при применении к такому утверждению <strong>asserta </strong>или <strong>assertz </strong>система преобразует цель X в цель <strong>call(X).</strong></p>
   <p>Задание аргументов для <strong>retract. </strong>Из-за трудностей, связанных с использованием переменных в качестве целей, в Прологе-10 существуют отличия в том, как должны задаваться тела утверждений в предикате <strong>retract. </strong>Трудность заключается в том, что когда мы задаем вопрос</p>
   <empty-line/>
   <p>?- retract((mother(A,B):- С)).</p>
   <empty-line/>
   <p>это может быть истолковано или как просьба об удалении утверждения, имеющего конкретный вид:</p>
   <empty-line/>
   <p>mother(A,B):- С.</p>
   <empty-line/>
   <p>где в теле утверждения переменная обозначает цель или как просьба об удалении утверждения для предиката <strong>mother </strong>с любым телом, как, например:</p>
   <empty-line/>
   <p>mother(X,Y):- parent(X,Y), female(Y).</p>
   <empty-line/>
   <p>Для устранения возможной двусмысленности, в подобных случаях Пролог-10 всегда начинает с замены неконкретизированных переменных, обозначающих одиночные или множественные целевые утверждения в аргументах для <strong>retract </strong>соответствующими структурами с функтором <strong>call. </strong>Таким образом, вопрос</p>
   <empty-line/>
   <p>?- retract((mother(A,B):-С)).</p>
   <empty-line/>
   <p>фактически рассматривается как</p>
   <empty-line/>
   <p>?- retract((mother(A,B):-call(C))).</p>
   <empty-line/>
   <p>Если мы хотим удалить первое утверждение для предиката <strong>mother </strong>независимо от его тела, то для этого можно было бы задать:</p>
   <empty-line/>
   <p>?- clause(mother(A,B),C), retract((mother(A,B):-С)).</p>
   <empty-line/>
   <p>В этом случае первая цель с <strong>clause </strong>делает С достаточно конкретизированной, чтобы избежать преобразования.</p>
   <subtitle>Дополнительные встроенные предикаты</subtitle>
   <p>Помимо встроенных предикатов, описанных нами, в Прологе-10 предусмотрено много других возможностей.</p>
   <p>«Условная» форма задания целей, которая позволяет задавать цели в следующем виде:</p>
   <p>…, (likes(john,X) --› wooden(X); plastic(X)),…</p>
   <p>Идея такой составной цели состоит в следующем. Если цель - «условие», которая задается перед стрелкой --›, согласуется с базой данных, то осуществляется вызов второй цели, заданной непосредственно после --›, иначе осуществляется вызов третьей цели. Любая из этих целей может представлять собой последовательность целей Пролога. Указанные условные цели действуют точно так же, как если бы они были определены в Прологе-10 следующим образом: </p>
   <empty-line/>
   <p>?- op(1050,xfy,-›).</p>
   <p>?- op(1100,xfy,';').</p>
   <p>(X -› Y; Z):- call(X),!, call(Y).</p>
   <p>(X -› Y; Z):- call(Z).</p>
   <empty-line/>
   <p>Индексированная база данных. Это средство позволяет сопоставлять элементы информации в базе данных с конкретными значениями и обходить стандартный механизм доступа к базе данных, имеющийся в Прологе. Например, если бы вы захотели хранить информацию о возрастах сотен людей, то стандартный подход потребовал бы завести сотни утверждений для некоторого предиката age (возраст). И когда затем вы бы пожелали выяснить возраст конкретного человека, Пролог должен был бы осуществить просмотр всех утверждений, пока не нашел бы нужный. Беда в том, что при обычном подходе информация сопоставляется с предикатом и, когда предикат содержит много утверждений, объем поиска может быть большим. Индексированная база данных позволяет сопоставлять информацию с конкретным именем более прямым способом.</p>
   <p>Возможность доступа к предшественникам. В главе о средствах отладки мы рассматривали понятие целей-предшественников. В Прологе-10 предусмотрены встроенные предикаты, обеспечивающие доступ к предшественникам из Пролог-программы.</p>
   <p>Статистическая информация. В Прологе-10 предусмотрены встроенные предикаты, позволяющие получить данные о скорости выполнения вашей программы и объеме памяти, необходимой для ее выполнения.</p>
   <subtitle>Средства отладки</subtitle>
   <p>В Прологе-10 предусмотрены средства отладки, соответствующие тому, что было нами рассмотрено. В дополнение к встроенным предикатам отладки, описанным в гл. 8, предусмотрен предикат, позволяющий указать, какие события являются управляемыми во время трассировки.</p>
   <subtitle>Литература</subtitle>
   <p><emphasis>DECsystem-10 Prolog User's Manual, </emphasis>Department of Artificial Intelligence, University of Edinburg, Scotland.- Представляет собой руководство пользователя Пролога-10.</p>
   <p><emphasis>C-Prolog User's Manual, </emphasis>CAAD Studio, Department of Architecture, University of Edinburg, Scotland.- Описывается система, работающая под управлением операционной системы UNIX,</p>
   <p><emphasis>Prolog-1 User's Manual, </emphasis>Expert Systems Ltd, 9 West Way, Oxford, England.- Описывает систему, работающую на многих ЭВМ, от Z-80 под управлением операционной системы СР/М до VAX 11 под управлением операционной системы VMS.</p>
  </section>
  <section>
   <title>
    <p>ПРИЛОЖЕНИЕ Е. МИКРО-ПРОЛОГ</p>
   </title>
   <p>В этом приложении рассматриваются некоторые возможности системы микро-Пролог, разработанной для микро-ЭВМ на базе микропроцессора Z-80, работающих под управлением операционной системы СР/М.</p>
   <subtitle>Пример сеанса работы</subtitle>
   <p>Все приводимые примеры соответствуют «базовому» синтаксису. При желании можно воспользоваться другими формами синтаксиса, включая тот, что совместим с Прологом для ЭВМ DECsystem-10.</p>
   <p>Ниже приводится последовательность сообщений, которая может появиться на вашем терминале в ходе обычного сеанса работы с микро-Прологом. Прежде всего мы задаем для СР/М команду запуска Пролога.</p>
   <empty-line/>
   <p>A›PROLOG</p>
   <p>Micro-Prolog 3.00 S/N</p>
   <p>(С) 1982 Logic Programming Associates Ltd.</p>
   <p>9999 Bytes Free</p>
   <p>&amp;.?((likes x y))</p>
   <p>Clause error at (likes x y)</p>
   <empty-line/>
   <p>В микро-Прологе литеры «&amp;» выдаются в качестве приглашения. Их появление означает, что система ожидает от нас ввода команды. Ввод литеры «?» означает, что мы хотим задать вопрос. Вслед за ним должна следовать последовательность целей, заключенная в круглые скобки (которую следует понимать как конъюнкцию этих целей). Каждая цель внутри скобок представляет собой последовательность из имени предиката и следующих за ним аргументов. Переменные обозначаются именами, начинающимися с х, у, z, X, Y, Z, за которыми могут следовать числа. В вопросе, приведенном выше, спрашивается о том, нравится ли кто-либо кому-либо. Но поскольку в базе данных нет утверждений для предиката <strong>likes (нравится), </strong>то микро-Пролог сообщает об ошибке.</p>
   <empty-line/>
   <p>&amp;.LOAD TEST</p>
   <empty-line/>
   <p>Другая важная команда – это <strong>LOAD. </strong>Далее следует имя файла. Ввод этой команды приводит к чтению содержимого файла <strong>TEST.LOG </strong>и дополнению этим содержимым базы данных, подобно тому, как это делалось при <strong>consult. </strong>Теперь можно задавать вопросы:</p>
   <empty-line/>
   <p>&amp;.?((likes john bertrand))</p>
   <p>?</p>
   <p>&amp;.?((likes john alfred))</p>
   <p>&amp;.</p>
   <empty-line/>
   <p>Заметим, что отрицательный ответ на вопрос обозначается в микро-Прологе литерой «?», а положительный ответ – повторной выдачей приглашения. Чтобы узнать, какие утверждения имеются для предиката <strong>likes, </strong>мы задаем команду <strong>LIST. </strong>Можно запросить выдачу текста всей программы или выдачу утверждений для некоторого набора предикатов. Посмотрим, какие утверждения существуют для предиката <strong>likes:</strong></p>
   <empty-line/>
   <p>&amp;. LIST(likes)</p>
   <p>((likes john alfred)) </p>
   <p>((likes alfred john)) </p>
   <p>((likes bertrand john)) </p>
   <p>((likes david bertrand)) </p>
   <p>((likes john x) (likes x bertrand))</p>
   <empty-line/>
   <p>В некоторых случаях для того, чтобы получить ответ на заданный вопрос, приходится прибегать к помощи встроенных предикатов. Предикат РР обеспечивает выдачу его аргументов на терминал, а предикат FAIL вызывает неудачное согласование целевого утверждения.</p>
   <empty-line/>
   <p>&amp;.?((likes john х) (РР х) (FAIL))</p>
   <p>alfred</p>
   <p>david</p>
   <p>?</p>
   <empty-line/>
   <p>Так мы получили два ответа на вопрос: «Кто нравится Джону?». Если мы хотим добавить к базе данных новые утверждения с терминала, нам не нужно прибегать к помощи специальных команд – мы можем просто ввести эти утверждения. Синтаксис утверждений микро-Пролога будет рассмотрен в следующем разделе.</p>
   <empty-line/>
   <p>&amp;.((likes timothy bertrand))</p>
   <p>&amp;.?((likes john x) (PP x) (FAIL))</p>
   <p>alfred</p>
   <p>david</p>
   <p>timothy</p>
   <p>?</p>
   <empty-line/>
   <p>Чтобы выйти из микро-Пролога и вернуться в СР/М, достаточно задать команду QT, за которой следует поставить точку:</p>
   <empty-line/>
   <p>&amp;. QT. </p>
   <p>А›</p>
   <subtitle>Синтаксис</subtitle>
   <p>Синтаксис микро-Пролога существенно отличается от синтаксиса, рассматриваемого в данной книге, однако освоить его можно довольно быстро. Основная идея заключается в том, что существует всего один вид терма – список. Если мы хотим построить терм с функтором <strong>f</strong> и четырьмя аргументами, то для этого используется список из пяти элементов, куда <strong>f</strong> входит в качестве головы, а остальные элементы соответствуют четырем аргументам в порядке их следования. Таким образом то, что в базовом синтаксисе было бы записано в виде:</p>
   <p>f(a,g(2,3),c)</p>
   <p>на микро-Прологе должно быть записано как: </p>
   <p>(f a (g 2 3) с)</p>
   <p>Здесь мы сталкиваемся также и с иным синтаксисом задания списков, где списки заключены в круглые скобки, а элементы списков разделяются пробелами.</p>
   <p>Утверждения представляются как списки термов, где первый терм – это заголовок утверждения, а остальные термы – цели, которые, будучи взятыми в конъюнкции, образуют тело утверждения. Рассмотрим более сложное утверждение:</p>
   <p>((alter (zl|z2) (x|y)) (change zl x) (alter z2 у)</p>
   <p>Это – второе утверждение для предиката <strong>alter</strong> (преобразовать) из разд. 3.4. Заметим, что вертикальная черта имеет здесь то же значение, что и в базовом синтаксисе.</p>
   <subtitle>Различные ограничения</subtitle>
   <p>Микро-Пролог может обрабатывать числа с плавающей точкой с точностью до восьми значащих цифр и с порядком (по основанию 10) в диапазоне от -127 до 127. Имена атомов (называемые в микро-Прологе «константами») могут содержать до 60 литер, а терм не может содержать более 64 переменных. Эти ограничения на практике не вызывают трудностей.</p>
   <subtitle>Возможности окружения</subtitle>
   <p>Микро-Пролог предоставляет множество средств, помогающих при разработке программ за терминалом. Предикаты <strong>LOAD </strong>и <strong>SAVE </strong>позволяют, соответственно, читать и записывать программы в файлы на диске. Мощный строчный редактор и структурный редактор позволяют вносить изменения в тексты программ, не выходя из Пролог-системы. Выполнение микро-Пролог-программы может быть прервано путем ввода комбинации «CONTROL С».</p>
   <subtitle>Специальные встроенные предикаты</subtitle>
   <p>Имена и назначение встроенных предикатов сильно отличаются от рассмотренных в данной книге. Ниже приводится краткое описание некоторых из предусмотренных средств.</p>
   <p>Тип терма можно проверить с помощью предикатов <strong>NUM, CON, VAR, </strong>которые согласуются с базой данных, соответственно, в случае чисел, констант (атомов) и переменных. Кроме того, предикат <strong>SYS </strong>проверяет, является ли константа именем встроенного предиката, предикат <strong>1NT </strong>обеспечивает проверку на целое число.</p>
   <p>Для работы с базой данных используются предикаты: <strong>ADDCL </strong>(аналогичен <strong>assert), CL </strong>(аналогичен <strong>clause) </strong>и <strong>DELCL </strong>(аналогичен <strong>retract) </strong>В этих предикатах можно задавать дополнительный целочисленный аргумент <strong>N</strong> с тем, чтобы можно было обрабатывать <strong>N</strong>-e утверждение процедуры.</p>
   <p>Поскольку единственным видом терма в микро-Прологе является список, то предикат вида ' =..' здесь не нужен. Предикат <strong>STRING </strong>позволяет программисту создавать новые атомы и осуществлять доступ к внутренней структуре имени атома аналогично тому, как это делается с помощью предиката <strong>name.</strong></p>
   <p>Составные цели в микро-Прологе можно конструировать с помощью встроенных предикатов <strong>OR, NOT </strong>и <strong>IF. </strong>Предикат <strong>FAIL </strong>вызывает немедленную неудачу в согласовании цели. Предусмотрено также и «отсечение», которое обозначается с помощью литеры '/'.</p>
   <p>Арифметические действия реализуются посредством нескольких предикатов, вместо одного is. Арифметические предикаты максимально «обратимы», поэтому, например, цель</p>
   <p>(SUM х у <emphasis>г)</emphasis></p>
   <p>вызывает сопоставление z с суммой х и у, если х и у конкретизированы. С другой стороны, если сначала конкретизированы у и r, а х – нет, то х будет конкретизирован разностью z-у.</p>
   <p>Операции с файлами в микро-Прологе аналогичны тем, что имеются в базовом Прологе, с той лишь оговоркой, что здесь нет понятия текущего потока ввода или текущего потока вывода. Вместо этого вывод в файл и ввод из файла осуществляются, соответственно, через предикаты <strong>WRITE</strong> и <strong>READ</strong> с указанием каждый раз имени файла. Предусмотрены специальные предикаты, обеспечивающие удобства при вводе-выводе через терминал пользователя.</p>
   <p>Микро-Пролог позволяет программисту разрабатывать программы по частям, которые называются модулями. Такая возможность сокращает вероятность случайных конфликтов имен в про-граммах и облегчает обмен программами между программистами.</p>
   <subtitle>Средства отладки</subtitle>
   <p>В микро-Прологе предусмотрена возможность трассировки программы, однако средства трассировки должны быть предварительно загружены с помощью предиката <strong>LOAD</strong>. При трассировке выдается информация о процессе согласования всех целей, не содержащих встроенных предикатов. В моменты возникновения событий <strong>CALL</strong>, <strong>EXIT</strong> и <strong>FAIL</strong>, которые именуются, соответственно, как <strong>ENTER</strong>, <strong>FINISH</strong> и <strong>FAIL</strong>, выдаются соответствующие сообщения. Пользователю разрешается в момент события <strong>CALL</strong> вмешиваться в ход трассировки и задавать команды <strong>CONTINUE</strong> (продолжить выполнение с трассировкой), <strong>SKIP </strong>(прервать трассировку до завершения текущей цели), <strong>FINISH </strong>(немедленное согласование текущей цели) и <strong>FAIL</strong> (немедленная неудача в согласовании текущей цели).</p>
   <subtitle>Литература</subtitle>
   <p>Clark K.L., Mc-Cabe F.G. <emphasis>Micro-PROLOG: Programming in Logic, </emphasis>Prentice-Hall, 1984. [Русский перевод: Клар К., Маккейб Ф. Введение в логическое программирование на микро-Прологе.- М,; Радио и Связь, 1987.]</p>
  </section>
  <section>
   <title>
    <p>ПРИЛОЖЕНИЕ F. СИСТЕМА МПРОЛОГ<sup><a l:href="#n_19" type="note">[19]</a></sup></p>
   </title>
   <p>В этом приложении описывается система МПролог, разработанная в Институте по координации вычислительной техники (SZKI), г. Будапешт. Название системы МПролог отражает тот факт, что в этой системе предусмотрены средства для модульной разработки программ. Кроме того, в ней поддерживается более 200 встроенных предикатов, рассчитанных на различные области применения.</p>
   <p>Синтаксис МПролога совместим с синтаксисом Пролога-10 (см. приложение D), и почти все встроенные предикаты Пролога-10 предусмотрены также и в МПрологе.</p>
   <p>Пролог доступен на следующих вычислительных комплексах:</p>
   <table>
    <tr align="left">
     <th align="left" valign="top">ЭВМ </th>
     <th align="left" valign="top">Операционные системы</th>
    </tr>
    <tr align="left">
     <td align="left" valign="top">VAX-11 </td>
     <td align="left" valign="top">VMS, UNIX</td>
    </tr>
    <tr align="left">
     <td align="left" valign="top">IBM </td>
     <td align="left" valign="top">VM/CMS, MVS</td>
    </tr>
    <tr align="left">
     <td align="left" valign="top">Siemens </td>
     <td align="left" valign="top">BS2000</td>
    </tr>
    <tr align="left">
     <td align="left" valign="top">M68000 </td>
     <td align="left" valign="top">UNOS, UNIX-подобные системы</td>
    </tr>
   </table>
   <p>Одна из версий МПролога (так называемый мини-МПролог) предназначена для микро- и мини-ЭВМ. Первая реализация этой системы применяется на ЭВМ IBM PC с ОС MSDOS.</p>
   <subtitle>Пример сеанса работы</subtitle>
   <p>Ниже приводится пример сеанса работы с подсистемой разработки программ (PDSS) системы МПролог,</p>
   <p>В системе МПролог средства диалоговой разработки программ отделены от интерпретатора и реализованы в подсистеме PDSS, которая исполняет команды первичного ввода, редактирования, выполнения, трассировки и другой обработки модулей МПролога. Подсистема PDSS также позволяет задавать значительное число глобальных параметров, определяющих режимы работы команд. Например, параметр <strong>line_length </strong>(длина_строки) задает длину выводимых строк при специально форматированном выводе утверждений.</p>
   <empty-line/>
   <p>DO $S.MPRO.PDSS</p>
   <p>MPROLOG (V1.4) Program Development Subsystem 1.4:4 (</p>
   <p>c) 1982 Institute for Coordination of Computer Techniques (SZKI), Budapest.</p>
   <p>По команде <strong>help </strong>выводится общая вспомогательная информация о возможностях PDSS (# означает приглашение системы)<a l:href="#n_20" type="note">[20]</a>;</p>
   <p>* help Команда; h[elp] [ТЕМА…]</p>
   <p>Выводит вспомогательную информацию по заданной теме или о возможностях самой команды <strong>help, </strong>если аргумент опущен.</p>
   <p>Можно получить информацию по следующим темам:</p>
   <p>all_global all_symbolic all_visible body bye coded consult declaration delete dynpart edit enter exception_handling execute export face focus global goal help hidden import insert interface list local match_order mode modify module move next nonprolog operator options previous query read rename replace reply reset rungoal savemod selectors set solutions status symbolic trace type untimed untrace visible =</p>
   <p>Сведения по конкретной теме, например по теме <strong>module, </strong>указанной в третьей колонке, можно получить следующим образом:</p>
   <p>*help module</p>
   <p>Команда: m[odule] <strong>[ИМЯ]</strong></p>
   <p>Делает модуль <strong>ИМЯ </strong>текущим модулем. Если <strong>ИМЯ </strong>опущено, то текущим модулем становится `неименованный_модуль'. После этой команды никакое утверждение не помещается в поле зрения.</p>
   <p>Возможности PDSS позволяют разрабатывать несколько модулей. Данный сеанс начинается с команды <strong>module, </strong>создающей модуль, в который затем будут помещаться определения предикатов.</p>
   <empty-line/>
   <p>* module first </p>
   <p>MODULE first</p>
   <p>* enter hates(ann,john). </p>
   <p>PREDICATE hates/2</p>
   <p>*?- hates(kate,X). </p>
   <p>NO</p>
   <empty-line/>
   <p>Команда <strong>enter </strong>используется здесь для дополнения модуля <strong>first </strong>новым утверждением. На основе одного этого утверждения ответ на вопрос <strong>hates(kate, X)</strong> получается отрицательным.</p>
   <p>В то же время, когда утверждений, относящихся к данному целевому утверждению, вообще нет, система ведет себя по-другому: такая ситуация рассматривается как особая, и она обрабатывается стандартным обработчиком особых ситуаций PDSS:</p>
   <empty-line/>
   <p>*?- likes(X,Y).</p>
   <p>Exception -505: undefined predicate In call of likes(_425,_426) Function (h for help)?</p>
   <p>* h</p>
   <p> p – enter new PDSS level </p>
   <p> b – backtrace </p>
   <p> a – abandon execution </p>
   <p> с – continue </p>
   <p> f – fail</p>
   <p> s – contents of the stack </p>
   <p> r - redo the broken call</p>
   <p> i – user handled interrupt</p>
   <p> h – help Function (h for help)'</p>
   <p>* f</p>
   <p>NO</p>
   <empty-line/>
   <p>Здесь <strong>enter new PDSS level </strong>означает выход на новый уровень команд PDSS (аналогично команде <strong>break </strong>в Прологе-10), <strong>backtrace </strong>означает вывод списка предшественников ошибочного вызова (аналогично команде <strong>backtrace </strong>в Прологе для PDP-11 с ОС UNIX).</p>
   <p>После завершения указанных выше действий пользователь может запросить другие действия. Предикаты <strong>continue </strong>и <strong>fail </strong>продолжают приостановленное выполнение программы так, как если бы вместо особой ситуации имела место согласованность или несогласованность цели с базой данных. В данном случае ввод <strong>f </strong>приводит к ответу <strong>NO</strong>.</p>
   <p>Однако систему МПролог можно заставить вести себя так, как Пролог-система, описанная в книге. Для этого достаточно в качестве обработчика особой ситуации для <strong>undefined predicate </strong>задать целевое утверждение <strong>fail:</strong></p>
   <empty-line/>
   <p>*?- newhandler("undefined predicate",fail).</p>
   <p>Yes</p>
   <p>*?- likes(X,Y). </p>
   <p>No</p>
   <empty-line/>
   <p>Будем считать, что файл <strong>test </strong>содержит ту же самую последовательность утверждений, что и в предыдущих приложениях. Тогда мы можем считать содержащиеся в нем утверждения в базу данных. При этом, если параметр <strong>auotostate </strong>не в состоянии «off» (выключено), то будет выводиться функтор (т. е. имя/число аргументов) читаемых из файла предикатов.</p>
   <empty-line/>
   <p>*?- [test]. likes/2</p>
   <p>Yes</p>
   <p>*?- listing(likes/2). </p>
   <p>likes(john,alfred). </p>
   <p>likes(alfredjohn). </p>
   <p>likes(bertrandjohn). </p>
   <p>likes(david,bertrand). </p>
   <p>likes(john,ANYBODY):<emphasis>- </emphasis>likes(ANYBODY,bertrand). </p>
   <p>Yes</p>
   <empty-line/>
   <p>Переменные (в данном случае <strong>ANYBODY) </strong>записаны прописными буквами как в Прологе-10. Однако в МПрологе предусмотрена особая возможность сохранения символьных имен переменных в пользовательской программе.</p>
   <p>Альтернативным способом вывода заданного предиката или некоторых из определяющих его утверждений является использование команды <strong>type:</strong></p>
   <empty-line/>
   <p>* type likes/2 </p>
   <p>likes(john,alfred). </p>
   <p>likes(alfred,john). </p>
   <p>likes(bertrand,john). </p>
   <p>likes(david,bertrand). </p>
   <p>likes(john,ANYBODY):- likes(ANYBODY,bertrand).</p>
   <empty-line/>
   <p>Второе и четвертое утверждения данного предиката можно просмотреть с помощью команды;</p>
   <empty-line/>
   <p>* type likes / 2 CL (2,4) </p>
   <p>likes(alfred, john). </p>
   <p>likes(david,bertrand).</p>
   <empty-line/>
   <p>А все утверждения, включающие <strong>bertrand </strong>выбираются следующим образом:</p>
   <empty-line/>
   <p>* type likes / 2 CL (bertrand) </p>
   <p>likes(bertrand, john). </p>
   <p>likes(david,bertrand). </p>
   <p>likes(john,ANYBODY):- likes(ANYBODY,bertrand).</p>
   <empty-line/>
   <p>Получение альтернативных решений для целевого утверждения осуществляется немного иначе, чем в Прологе-10:</p>
   <empty-line/>
   <p>*?- likes(john,Who).</p>
   <p>WHO = alfred Continue (y/n)?</p>
   <p>* y</p>
   <p>WHO = david Continue (y/n)?</p>
   <p>* у </p>
   <p>NO</p>
   <empty-line/>
   <p>Новые утверждения можно добавлять как с помощью команды <strong>enter, </strong>так и путем чтения псевдо-файла <strong>user </strong>(как в Прологе-10):</p>
   <empty-line/>
   <p>*?- [user]. </p>
   <p>likes(timothy,bertrand). </p>
   <p>likes/2+6</p>
   <p>* bye </p>
   <p>Yes</p>
   <empty-line/>
   <p>Команда ввода вопроса (?-) не выдает сведений о времени его выполнения. Эту информацию можно получить путем задания команды execute (в краткой форме ':'):</p>
   <empty-line/>
   <p>* :likes(john,X).</p>
   <p>(*** CPU time: 0.27 sec, 1 calls, 0 backtracks ***)</p>
   <empty-line/>
   <p>Подсистема PDSS гибко реагирует на синтаксические ошибки. В стандартном режиме при возникновении такой ошибки пользователю предоставляется выбор: отредактировать ошибочное утверждение или выполнить целевое утверждение:</p>
   <empty-line/>
   <p>*?- likes(john,ann)). full stop expected at) Enter the editor (y/n)?</p>
   <p>* y</p>
   <p>10: likes(john,ann))</p>
   <p>*** Enter editor commands</p>
   <p>* 10: likes(john,ann)</p>
   <p>*** Line 10 replaced ***</p>
   <p>* end NO</p>
   <empty-line/>
   <p>Команда <strong>end </strong>закрывает цикл редактирования. Затем делается попытка согласовать отредактированную цель, и в результате получается ответ <strong>NO</strong>.</p>
   <p>Тот же метод применим и в случае чтения файла в базу данных: ошибочные утверждения могут быть отредактированы, а затем процесс чтения файла продолжается.</p>
   <p>Сеанс работы с PDSS завершается по команде bye. При этом система предупреждает пользователя о возможности утраты модулей, которые не были записаны в файлы.</p>
   <empty-line/>
   <p>* bye</p>
   <p>*** The following module(s) have not been saved: ***</p>
   <p>first Do you want to exit (y/n)?</p>
   <p><strong>*</strong> y</p>
   <p>Normal exit from MPROLOG PDSS</p>
   <empty-line/>
   <subtitle>Синтаксис</subtitle>
   <p>Синтаксис МПролога в основном совместим с синтаксисом Пролога-10. Правда, позиции операторов, их приоритеты и ассоциативность в МПрологе отличаются, однако, для обеспечения совместимости с тем, что описано в данной книге, предусмотрен встроенный предикат <strong>ор</strong>. Списки можно задавать как с помощью точечной записи (используя для этого предварительно описанный оператор '.'), так и с помощью скобочной записи [].</p>
   <p>Строки в МПрологе не эквивалентны списку кодов, составляющих их литер. Это означает, что пример из гл. 5 (база данных исторических событий) с вопросом <strong>событие(1524,Х) </strong>будет работать и ответом будет 'Васко да Гама умер'.</p>
   <subtitle>Модульность</subtitle>
   <p>В самом языке и в системе разработки программ предусмотрены средства модульного построения программ. МПролог-программа может состоять из нескольких модулей, которые взаимодействуют между собой только через заданные интерфейсы модулей.</p>
   <p>Например, предикат <strong>найти </strong>для работы со словарем, имеющим вид упорядоченного дерева (см. разд. 7.1), может быть заключен в такой модуль:</p>
   <empty-line/>
   <p>module dictionary.</p>
   <p>export (найти / 3, печ_дерево / 3).</p>
   <p>import (меньше / 2). </p>
   <p>visible (таблица, подряд), body.</p>
   <p>найти(Н, b(H,G,_,_), G):-!. </p>
   <p>найти(Н, в(Н1,_,BEFORE,_),G):- меньше(Н,Н1)?найти(Н,ВЕFОRЕ,G). </p>
   <p>найти(Н,в(Н1,,_,AFTER),G):- not(меньше(Н,Н1)), найти (H,AFTER,G).</p>
   <p>печ_дерево(T,FORM,KEYWORD):- var(T),!. </p>
   <p>печ_дерево(в(H,W,L,G),F,K):- печ_дерево(L,F,K), печ_элемент(Н,W,F,K), печ_дерево(G,F,K).</p>
   <p>печ_элемент(Н,W,таблица,K):- !, outterm(H), outtab(15), outterm(K),outspaces(l), outterm(W), newline. </p>
   <p>печ_элемент(Н,W,подряд,K):- outterm(H), outspaces(l), outterm(K), outspaces(1), outterm(W), outterm(","). </p>
   <p>end mod /* dictionary */.</p>
   <empty-line/>
   <p>Этот модуль «экспортирует» (т. е. делает доступным для других модулей) предикаты <strong>найти/3 </strong>и <strong>печ_дерево/3, </strong>и только эти предикаты данного модуля могут быть использованы вне его. Предикат <strong>печ_дерево </strong>может выводить на печать заданное дерево в двух возможных форматах в соответствии с аргументом <strong>FORM, </strong>который может иметь значения <strong>таблица </strong>и <strong>подряд. </strong>Эти два имени описаны как видимые, что указывает на то, что они используются не только внутри данного модуля например, как конструктор в-структур. Видимость имени не обязательно обозначает сохранение его символьного представления в другом модуле, однако, если оно используется в другом модуле как видимое имя, то эти два вхождения унифицируются.</p>
   <p>Заметим, что конкретное представление дерева скрыто в данном модуле.</p>
   <p>Рассмотрим еще один модуль, использующий определенные выше предикаты. Предположим, что у нас есть список лошадей, участвующих в бегах, в порядке их финиширования, а нам нужно получить алфавитный перечень их кличек с указанием занятого места. Для этого можно воспользоваться предикатом <strong>печ_ индекс, </strong>который по списку кличек порождает дерево, а затем выводит его на печать.</p>
   <empty-line/>
   <p>module index. </p>
   <p>export(печ_индекс/0).</p>
   <p>import(найти/3, список_кличек/1, печ_дерево/3). </p>
   <p>visible(таблица).</p>
   <p>body.</p>
   <p>печ_индекс:- список_кличек(L),созд_дерево(L, 1, Т, печ_дерево(Т,таблица,": "). </p>
   <p>созд_дерево([],_,_):- !. </p>
   <p>созд_дерево([NАМЕ|L,N,Т):- найти(NAME,T,N), M is N+1, созд_дерево(L,М,T). </p>
   <p>endmod /* index */.</p>
   <empty-line/>
   <p>Здесь снова имя таблица задано как видимое, тогда как параметр <strong>KEYWORD </strong>предиката <strong>печ_дерево </strong>(здесь он имеет значение ".") заключен в двойные кавычки. Это означает, что символьное представление этого имени должно быть сохранено.</p>
   <subtitle>Компоненты системы МПролог</subtitle>
   <p>Ядром системы МПролог является интерпретатор. Другой основной компонентой системы является подсистема разработки программ <strong>PDSS, </strong>которая сама написана на МПрологе и работает под управлением интерпретатора. Подсистема <strong>PDSS </strong>обеспечивает возможности диалоговой разработки программ.</p>
   <p>После того как фаза разработки программ закончена, можно воспользоваться тремя другими компонентами системы, обеспечивающими эффективность выполнения программы.</p>
   <p>Претранслятор системы МПролог преобразует МПролог-модули во внутреннее представление, допускающее эффективное выполнение. Он обрабатывает элементы программы, осуществляя их оптимизацию, управляемую пользователем. Например, использование описаний вида <strong>match_order </strong>и <strong>mode </strong>позволяет значительно повысить эффективность поиска утверждений.</p>
   <p>Второй компонентой системы является консолидатор, который объединяет двоичные модули в выполняемую программу. Объединение может осуществляться по шагам. Это означает, что несколько двоичных модулей можно объединить в один новый двоичный модуль с внешним интерфейсом, заданным пользователем.</p>
   <p>Третьей из указанных выше компонент системы является компилятор, который преобразует двоичные модули (порождаемые претранслятором), заменяя представление программы, необходимое для интерпретатора, на непосредственно исполняемый машинный код. Система МПролог допускает объединение в готовую программу интерпретируемых и откомпилированных модулей.</p>
   <subtitle>Различные ограничения</subtitle>
   <p>Целые числа могут изменяться в диапазоне от -8 388 607 до 8 388 607. Действительные числа не предусмотрены. Приоритеты операторов могут изменяться от -3000 до 3000.</p>
   <subtitle>Дополнительные встроенные предикаты</subtitle>
   <p>В МПрологе предусмотрены некоторые дополнительные встроенные предикаты. Например, допускающие повторное согласование при возвратном ходе предикаты ввода, разнообразные предикаты вывода, работы со строками, с базой данных, а также предикаты обработки особых ситуаций.</p>
   <p>Два основных предиката ввода <strong>insymb(X) </strong>и <strong>interm(X) </strong>допускают повторное согласование при возврате. Это означает, что при возвратном ходе выполненные ими действия «отменяются». Например, если первый вводимый символ не совпадает с <strong>аааа</strong>, то вопрос</p>
   <empty-line/>
   <p>? insymb(aaaa).</p>
   <p>не согласуется, причем в этом случае <strong>аааа</strong> сохраняется во входном потоке и может быть считан последующими предикатами ввода<a l:href="#n_21" type="note">[21]</a>.</p>
   <empty-line/>
   <p>Эти предикаты обеспечивают дополнительные возможности для задания грамматических правил. Например, правила, приведенные в разд. 9.3, могут быть непосредственно преобразованы в следующие предикаты:</p>
   <empty-line/>
   <p>предложение:- группа_существительного, группа_глагола.</p>
   <p>группа_существительного:- определитель, существительное.</p>
   <p>группа_глагола:- глагол.</p>
   <p>группа_глагола:- глагол, группа_существительного.</p>
   <p>определитель:- insymb(the).</p>
   <p>существительное:- insymb(man).</p>
   <p>существительное:- insymb(apple).</p>
   <p>глагол:- insymb(eats).</p>
   <p>глагол:- insymb(sings).</p>
   <empty-line/>
   <p>Приведенный выше предикат <strong>предложение</strong> завершается успешно, если из входного потока поступает предложение, удовлетворяющее заданной грамматике. Заметим, что обработка синтаксических ошибок и команда '=' реализуются на основе предикатов ввода, допускающих повторное согласование при возврате. Предикаты для работы с базой данных в МПрологе также имеют версии, допускающие повторное согласование. Например,</p>
   <empty-line/>
   <p>fdelclause(EXPR)</p>
   <empty-line/>
   <p>исключает первое утверждение, заголовок которого может быть сопоставлен с <strong>EXPR, </strong>тогда как</p>
   <empty-line/>
   <p>fsupclause(EXPR)</p>
   <empty-line/>
   <p>только подавляет его. Это означает, что при возвратном ходе это утверждение возвращается на свое место. С помощью этого предиката можно, например, по-другому определить предикат <strong>перейти </strong>из разд. 7.2:</p>
   <empty-line/>
   <p>перейти(X,X).</p>
   <p>перейти(X,X):- в_след_комн(Х,Z), перейти(Z,Y).</p>
   <p>в_след_комн(Х,Z):- fsupclause(d(X,Z)); fsupclause(d(Z,X)).</p>
   <empty-line/>
   <p>Здесь нам уже не нужен вспомогательный третий аргумент (содержащий список комнат, где мы уже бывали). Вместо этого, чтобы быть уверенным в том, что в каждую дверь мы входим только один раз, мы просто подавляем на период поиска факты, соответствующие дверям, через которые мы уже прошли.</p>
   <p>Имеется большой набор предикатов вывода, позволяющий осуществлять разнообразные виды форматированного вывода. Например, можно задавать границы строк и предельную глубину вывода. Задание глубины вывода полезно при выводе очень сложных термов (или даже бесконечных термов поскольку в МПрологе соответствующих проверок не делается), когда нас интересует только их общая структура. Задание глубины вывода равной <strong>N</strong> означает, что фактически выводиться будут только первые <strong>N</strong> уровней терма, а подтермы уровня <strong>N+1</strong> будут представлены как <strong>(…)</strong>.</p>
   <p>Предикаты обработки особых ситуаций МПролога позволяют программисту самому программировать действия по восстановлению при ошибках. Например, ниже представлен простой вариант средства 'спроси у пользователя', позволяющего запросить у пользователя указания, как продолжать выполнение, если встретился неопределенный предикат.</p>
   <empty-line/>
   <p>ask_the_user:- broken _call(С), outterm("How to continue from: "), outterm(C), outterm("?"), nl, interm(C), ineot. </p>
   <empty-line/>
   <p>где <strong>broken_call(С) </strong>- это стандартный предикат, конкретизирующий переменную С ошибочным целевым утверждением. Выполнив целевое утверждение</p>
   <empty-line/>
   <p>newhandler("undefined predicate", ask_the_user)</p>
   <empty-line/>
   <p>система будет вызывать <strong>ask_the_user </strong>(спроси_у_пользователя) всякий раз, когда что-либо окажется неопределенным. Например, определив предикаты <strong>плотность </strong>и <strong>нас </strong>как в разд. 2.5, но оставив неопределенным предикат <strong>площадь:</strong></p>
   <empty-line/>
   <p>плотность(X,Y):- нас(X,Р), площадь(X,A), Y is P/A.</p>
   <p>нас(китай,800).</p>
   <p><strong>. . .</strong></p>
   <empty-line/>
   <p>мы можем наблюдать следующий диалог:</p>
   <empty-line/>
   <p>*? плотность(китай,D).</p>
   <p>How to continue from площадь(китай,_101)?</p>
   <p>* площадь(китай,4).</p>
   <p>D = 200</p>
   <p>Continue (y/n)?</p>
   <p>* y </p>
   <p>NO</p>
   <p>*? плотность(китай,D).</p>
   <p>How to continue from площадь(китай,_101)?</p>
   <p>* n. </p>
   <p>NO</p>
   <empty-line/>
   <p>Другой важный встроенный предикат – это <strong>error_protect (Call, Handler), </strong>который выполняет целевое утверждение <strong>Call </strong>в защищенном окружении: когда внутри <strong>Call </strong>возникает особая ситуация (не обрабатываемая текущим обработчиком особых ситуаций), выполняется <strong>Handler.</strong></p>
   <subtitle>Средства отладки</subtitle>
   <p>Средства трассировки МПролога аналогичны тем, что имеются в Прологе-10.</p>
   <subtitle>Литература</subtitle>
   <p>MPROLOG Language Reference Manual</p>
   <p>MPROLOG User's Guide /VAX/11-VMS/ MPROLOG User's Guide /VAX/11 – UNIX/ MPROLOG User's Guide /IBM – VM/CMS/ MPROLOG User's Guide /Siemens BS2000/</p>
   <p>Getting Started with MPROLOG</p>
   <p>Указанная литература может быть получена через институт по координации вычислительной техники (SZKI), г. Будапешт, ВНР<strong>.</strong></p>
  </section>
 </body>
 <body name="notes">
  <title>
   <p>Примечания</p>
  </title>
  <section id="n_1">
   <title>
    <p>1</p>
   </title>
   <p>В книге термин «Пролог» употребляется в трех значениях: 1) Пролог – язык программирования с совокупностью синтаксических и семантических правил записи программ; 2) Пролог – программная система (интерпретатор), реализующая язык; эта система и осуществляет диалог с пользователем; 3) Пролог – машина, на которой Пролог-система выполняет (интерпретирует) программы, написанные на языке Пролог. Как правило, из контекста всегда ясно, какое значение используется в каждом конкретном случае. При необходимости явного указания при переводе использовались термины: «язык Пролог», «Пролог-система», «Пролог-машина». - Прим. пepeв.</p>
  </section>
  <section id="n_2">
   <title>
    <p>2</p>
   </title>
   <p>Связь введенного понятия с математической логикой обсуждается в гл. 10. - Прим. ред.</p>
  </section>
  <section id="n_3">
   <title>
    <p>3</p>
   </title>
   <p>В записи программ на Прологе и в ответах Пролог-системы используются слова двух типов: 1) имена, определяемые пользователем (например, <strong>джон, книга, нравится</strong>)<strong>; </strong>2) имена и служебные слова, определенные в языке Пролог (например, <strong>is</strong>, <strong>get). </strong>Учитывая, что слова первого типа имеют некоторую смысловую нагрузку (для читателя, но не для Пролога), все они переведены на русский язык. Слова второго типа зарезервированы в языке Пролог. Поэтому в тексте они оставлены в исходном виде, за исключением переведенных на русский язык ответов Пролога на вопросы <strong>yes </strong>- да, <strong>no</strong> – нет.- <emphasis>Прим. перев.</emphasis> </p>
  </section>
  <section id="n_4">
   <title>
    <p>4</p>
   </title>
   <p>В оригинале – clause for a predicate – термин, определяющий конъюнкты предиката, переменные которых связаны квантором общности. Связь этого понятия с математической логикой обсуждается в гл. 10.- Прим. ред.</p>
  </section>
  <section id="n_5">
   <title>
    <p>5</p>
   </title>
   <p>В книге ничего не говорится о буквах русского алфавита. Мы будем считать, что в набор допустимых литер Пролога входят русские буквы – строчные и прописные. - Прим. ред.</p>
  </section>
  <section id="n_6">
   <title>
    <p>6</p>
   </title>
   <p>Код ASCII соответствует коду КОИ-7, широко распространенному на ЭВМ нашей страны. Различие имеет место лишь для кириллицы, отсутствующей в коде ASCII. - Прим. перев.</p>
  </section>
  <section id="n_7">
   <title>
    <p>7</p>
   </title>
   <p>Это могло бы привести к успеху при соответствующем определении предиката <strong>мать</strong>. - Прим. ред.</p>
  </section>
  <section id="n_8">
   <title>
    <p>8</p>
   </title>
   <p>В оригинале использован термин Пролога «cut», и при переводе точнее было бы применить термин «сокращение». Однако, следуя терминологии более ранних публикаций о Прологе, мы сохраним термин «отсечение». - Прим. ред.</p>
  </section>
  <section id="n_9">
   <title>
    <p>9</p>
   </title>
   <p>Модель, лежащая в основе трассировки, подробно описывается в гл. 8. - Прим. ред.</p>
  </section>
  <section id="n_10">
   <title>
    <p>10</p>
   </title>
   <p>Имеется перевод: Нильсон Н. Принципы искусственного интеллекта. - М.: Радио и связь, 1985. - Прим. перев.</p>
  </section>
  <section id="n_11">
   <title>
    <p>11</p>
   </title>
   <p>Имеется перевод 1-го издания: Уинстон П., Искусственный интеллект. - М.: Мир, 1980. - Прим. перев.</p>
  </section>
  <section id="n_12">
   <title>
    <p>12</p>
   </title>
   <p>Имеется в виду константа в смысле Пролога. - Прим. ред.</p>
  </section>
  <section id="n_13">
   <title>
    <p>13</p>
   </title>
   <p>Тем самым обеспечивает возможность вновь согласовать предикат consult. В противном случае механизм возврата никогда не смог бы миновать repeat, у которого всегда есть альтернативное решение. - Прим. ред.</p>
  </section>
  <section id="n_14">
   <title>
    <p>14</p>
   </title>
   <p>На «ломаном» русском языке этот пример можно представить следующим образом: «Каждый мужчина нравится некоторая женщина».</p>
   <p>все (X, мужчина (X)--› существует (Y, (женщина (Y) &amp; нравится (X))))<emphasis>. - </emphasis>Прим. ред.</p>
  </section>
  <section id="n_15">
   <title>
    <p>15</p>
   </title>
   <p>Имеется перевод: Мендельсон Э. Введение в математическую логику.- М.: Наука, 1971.- Прим. перев.</p>
  </section>
  <section id="n_16">
   <title>
    <p>16</p>
   </title>
   <p>Имеется перевод: Чень Ч., Ли Р. Математическая логика и автоматическое доказательство теорем.- М.: Наука, 1983.- Прим. перев.</p>
  </section>
  <section id="n_17">
   <title>
    <p>17</p>
   </title>
   <p>В некоторых последующих примерах допущена неточность: в формулах используется импликация, хотя все импликации должны быть удалены на первом этапе.- Прим. перев.</p>
  </section>
  <section id="n_18">
   <title>
    <p>18</p>
   </title>
   <p>В дальнейшем – Пролог-10.- Прим. перев.</p>
  </section>
  <section id="n_19">
   <title>
    <p>19</p>
   </title>
   <p>The MPROLOG System, SZKI, Budapest, 1986.</p>
   <p>© SZKI, Budapest, 1986</p>
   <p>© перевод на русский язык, «Мир», 1987 </p>
  </section>
  <section id="n_20">
   <title>
    <p>20</p>
   </title>
   <p>Вспомогательная информация, выдаваемая по команде help, переведена на русский язык.- Прим. ред.</p>
  </section>
  <section id="n_21">
   <title>
    <p>21</p>
   </title>
   <p>Здесь допущена неточность: во входном потоке при возвратном ходе сохраняется не <strong>аааа</strong>, а то, что прочитано из него до возврата. - Прим. ред.</p>
  </section>
 </body>
 <binary id="pic_1.jpg" content-type="image/jpeg">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
RRRRRRRRRRRX/9k=</binary>
 <binary id="pic_2.jpg" content-type="image/jpeg">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
KK//2Q==</binary>
 <binary id="pic_3.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8l
JCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/wAALCAIqAVIBAREA/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
AAA/APZqKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKZKzrC7RrvcKSq5xk9hXmSfErxdo8y/8ACTeC7iO3XIkntFLc
4JGOqkf8C/wrvdA8Qab4l0tNR0u4E0DHB7Mjdww7GtOiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiik615d5EfgL4vWsVkvlaX4jjKtDwsccoP8P444/wBvA7V6lRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRXmPxmne0Phq6h2iaHUQ6MVBwRgj9RXp1FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFVp9RsbaeO3nvbeKaTOyN5VVmwMnAJyeKRtTsEkSN762V5M7FMq
gtjk4Geaf9ttP+fqH/v4KPttp/z9Q/8AfwUfbbT/AJ+of+/grgvjJHbv4c0uaQAlNVhAcYJV
SGzj8hXoMcscq7o3V16ZU5FPooooooooooooooooooooooooooooooooooorzGbwfo3iz4qe
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
iiiiiiiiiiv/2Q==</binary>
 <binary id="pic_4.jpg" content-type="image/jpeg">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
rO1DQdO1DS77T2tYoo75HWVkjUElhjd06+/tTfDmiL4f8OWej+f9pW1j8vzCm3fyT0yfWs/w
j4QXwi2oxW9/JNZ3c/mwWzLhbYc5A5Oeo9OldJRSBVDFgoyepxXLWngw2vxFvfFRvFkju7UQ
/Z2j5Rsrzn0wg9+TXVUVheJ/C0Hif+zRPcPEtheJdAKufM25+U+n1rdrlPDfhi80fxj4j1ad
4WttUeJoAhO4bQ2QRjjrVP4m+HNX8S2ek22mJHJFDfLLcI5A46BunQAtn+tdnDbwW4YQQxxB
23NsULuPTJx34H5U4opYMVBI6EinU113xsm5l3AjKnBH0rD8JeE7Twlp01rbzy3MtxO001xM
cvIx9fw/qe9b1c58Qv8Akn+t/wDXm/8AKtTQv+Rf07/r1i/9AFX68+sgn/C+NRJzv/sdcccY
3Jn+leg15742/wCSn+CP+uk/8lr0KiiiiiiiiiiiiiiiuO+LP/JNtV/7Y/8Ao1K69PuL9KdR
RVF9a0yPWYtGe9iGoSxmVLfPzFR1P+fQ+lWnnhjljieVFklz5aMwBfHXA71DqWpWej6fNqF/
OILaAZkkIJ2jOOg56mpLW6gvbWK6tZkmgmUPHIhyGB6EVNRRRRRRRRRRRRRRRRXOfEL/AJJ/
rf8A15v/ACrT0Blfw9prKwYG0iwQcg/KK0K89sv+S96h/wBgZf8A0JK9Crz3xt/yU/wR/wBd
J/5LXoVFFFFFFFFFFFFFFFcd8Wf+Sbar/wBsf/RqV16fcH0p1FNY7ULegzXmHwjtY9cvNY8Z
31u39oXN28cTNkrGmASFz9cZ/wBnHrUfjxLwfGHwlJIo+yl1WJgD97f8wJ/Fa9NvrK21Kxms
ruJZYJ0KSIwyCDXA/Ci7vLKbXPCVyGaPRLnEEj/eKMzYGPT5c/8AAq9Goooooooooooooooo
rnPiF/yT/W/+vN/5Vp6Dt/4R7TduMfZYsY6fdFaFcBaxPH8eLx3UhZNFDIfUB0H8wa7+uH8a
WsZ8ceDLvLeYt5LGB2wUz/QV3FFFFFFFFFFFFFFFFcb8Wv8Akmuq/wDbL/0aldTprxvpdo8U
kkkbQIVeX77DaMFvf1qzRSEBgQeh4rzf4ZXI0DWNa8E3haOe2uXuLRWOQ8LY+6e/Y/j7Gr/j
/T9SufE/hC8sLCS7S0vnabYQAgO05JPThW/LHcV3DusaM7sFVQSxPQCvOfhfLLq/iPxV4kjj
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</binary>
 <binary id="pic_5.jpg" content-type="image/jpeg">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
w31HyN+QYy+04+XeM59q6zTv+QZa/wDXFP5CrNFFFFFFFFFFFFFMeKOXHmRq+Om4ZxTPslt/
z7xf98Cj7Jbf8+8X/fAo+yW3/PvF/wB8Cj7Jbf8APvF/3wK8t+FkdtaeNfF2jK0ckUNyXiRl
BOA7KTnHbKg16l9ktv8An3i/74FH2S2/594v++BR9ktv+feL/vgUfZLb/n3i/wC+BR9ktv8A
n3i/74FH2S2/594v++BR9ktv+feL/vgUfZLb/n3i/wC+BR9ktv8An3i/74FH2S2/594v++BR
9ktv+feL/vgUfZLb/n3i/wC+BUoAAwBgCloqI2tuTkwRkn/YFJ9ktv8An3i/74FH2S2/594v
++BUioqKFRQqjsBgU6vPV/5L4/8A2Bf/AGcV6FRRRRXGfFu3+0/DjUxv2+X5cn3Sc4cHHH86
6rTv+QZa/wDXFP5CrNFFFFFFFFFFFFFFFFFFeW/DD/kofjj/AK/D/wCjJK9Soooooooooooo
ooooooorz5FJ+PUjcYGijPIz9+vQaKKKK434tNKvw41PylDEhA2ey7xk11Onf8gy1/64p/IV
Zoooooooooooooooooory34Yf8lD8cf9fh/9GSV6lRRRRRRRRRRRRRRRRRRRXARyyL8eJolY
hH0YFh64fiu/oooorkfinIY/hzq2JY490ar+875YcD3Paul07/kGWv8A1xT+QqzRRRRRRRRR
RRRRRRRRRXl3w2dm+JPjb5i6/acFm4IIkcAY/Pn2969Rooooooooooooooooooorz1f+S+P/
ANgX/wBnFehUUUUVx/xX87/hXGq+ScHam7gH5d4z1/pzXT6d/wAgy1/64p/IVZoooooooooo
ooooooooryvwVCkXxt8VhEWEeUT5YOckshLenJ5/4FXqlFFFFFFFFFFFFFFFFFFFeer/AMl8
f/sC/wDs4r0KiiiiuJ+L3kf8K31Hz9+N0ezZj728YzntXW6d/wAgy1/64p/IVZoooooooooo
oooooooory7wl/yXXxT/ANe39Yq9Rooooooooooooooooooorz1f+S+P/wBgX/2cV6FRRRRX
C/GT/km19/10h/8ARi12Onf8gy1/64p/IVZooooooooooooorz7Xo/EXiHx7caJpniOXRrey
so5/3UW4yFmIOeR6Un/CBeMv+ij3n/gL/wDZ0f8ACBeMv+ij3n/gL/8AZ0f8IF4y/wCij3n/
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
UK7wxKhYDoDj61eooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooor//2Q==</binary>
 <binary id="pic_6.jpg" content-type="image/jpeg">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
0CksI4kCqCTk8D3rn/iLd2yeA9bje4iVzasoUuAcnoMetbeh/wDIB0//AK9Yv/QRV6iiiiii
iiiiiiiiiiiiiisrxJ4etPFGjSaVfSTRwSMrFoWCsCpBGCQe4rk/+FN6H/0Gdc/8C1/+Jo/4
U3of/QZ1z/wLX/4mj/hTeh/9BnXP/Atf/iaP+FN6H/0Gdc/8C1/+JrkrfwPZj4snw09/qzaf
HZ/aD5s5DSnA4DDHy5PXAOQR713n/CrPDH92/wD/AAPl/wDiqP8AhVnhj+7f/wDgfL/8VUMn
wg8HSyeZJaXTv/ea7kJ/PND/AAf8HSAh7S6bc247ruQ5Pr1608/CbwmVKmC8KsNpBvZcEenW
n/8ACq/DA/gv/wDwPl/+Ko/4VZ4Y/u3/AP4Hy/8AxVKPhZ4YB5S/Psb+X/4qg/CzwwSSEvh7
C/l4/wDHqB8LfC+0jy74k9/t0uR/49QPhb4XAOY745GOb6Xj/wAeqxF8N/C0X/LhLJkAfPdy
np3+91PepP8AhXnhX/oF/wDkxL/8VR/wrzwr/wBAv/yYl/8Aiqib4Z+DGYs2gwMx6lnck/8A
j1dPDDHbwpDEoSONQqKOwAwBT6KKKKKKKKKKKKKKKKKKKKKKKKK86Ejv8f2VoWjCaPtVm6SD
Ocj2ySPqDXotFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFeXWJJ/aJ1EEk408AZPT
5I69Rooooooooooooooooooooooooooooooooooooooooory6x/5OK1L/rwH/ouOvUaKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK8usf+TitS/68B/6Ljr1Giiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiorm6t7O3a4up44IU+9JK4VV+pPFZv/CWeGv+hh0v/wADI/8AGj/h
LfDX/Qw6X/4GR/40f8Jb4a/6GHS//AyP/Gj/AIS3w1/0MOl/+Bkf+Ned22r6PD8d7vUv7ZsG
tJtPH74TqEVtqrt3ZwT8uePWvRP+Et8Nf9DDpf8A4GR/40f8Jb4a/wChh0v/AMDI/wDGj/hL
fDX/AEMOl/8AgZH/AI0f8Jb4a/6GHS//AAMj/wAaP+Et8Nf9DDpf/gZH/jR/wlvhr/oYdL/8
DI/8aP8AhLfDX/Qw6X/4GR/41HL4z8LwjL+IdM+6W4ukPA69DVQfEfwaULf8JDZ4BA+8c/lj
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</binary>
 <binary id="pic_7.jpg" content-type="image/jpeg">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
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiuT+JFxq6eE5LPRbSae71CVbXdECfKV+Cxx0GOM9s1re
F9DTw34asdIQq32aIK7L0Zzyx/EkmtaiuWuPCMq/EG18VWFykQaFoL6J8/vVx8pXHGcgdfSu
pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooqtqF4mnabdX0qs0dtC8rKvUhQSQPyrzPS/ib4qutQ0e4vNBtYtI1i7NvbsjEykZwDktjg
nuBnBr1Wiiq2oy3kOnzy6fbJc3SpmKF5Ngc+hbBxXnWi/ETXvEPijUtM0nS1LxyQhYrsqq2y
KCJy7KSSd2AuAR39q9Oooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooorJ8U6XJrXhfUtNhYrLc27ohBx82OB+J4rxyO+8U6vp3h2DTvDF08
3hRwbgOmxXdSoVQM5J2gE9+Sele52kk01nDLcQ+RM8atJFu3bGI5XPfB4qaiorq2ivLWW1nB
aKZCjgMVJBGDyORXO6f4B0XTtYuNSghEbySxSQiEeWYNibNoZeSrckg8EnnNdPRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRXG+K
fE2pw+KtH8NaBsN3cv5127pvEMA659M8/kPWuwZtqliCcDOAMmsfwz4q07xXZz3Fgs0Zt5jD
LFcJskRh6jPH/wCv0raooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooqvf3sGm6fcX104SC3jaSRj2AGTXA/C61utYvdV8cX+BJq0hjt
k5zHCpxj6cAf8Br0avL7wN4G+L0F0n7rSfEnyygHgT56nP8AtEHt9816hRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRXnPxTv5tUm0
zwTp4ka61SZHnKDhYQec/ln6LXfafYW2l6fBYWcQit7eMRxoOygYFWK5X4j+GR4n8H3dtFCs
l5AvnWpxyHHJA+oyPxFT+AvEX/CT+ELO/cnz1XybjK4/eKAGP49fxro6KKKKKKKKKKKKKKKK
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
Oo79Kz/B/j3VLnwr4nW61G2v77RYpJLa4AGZ1AYhioxlQQOfcVoat421JvCfhbV9PliQaheQ
RX0oCsqZ4cZyQvII9RV34j6lrMM2h6Po2orpsmrXZhe5IGVAA6fn9ScDNQ/DnXNVfStbs9Zu
X1CfRLp4VcJ++lRRxkdSTg4zyfeuP03xv41fXNF13ULyGHQtWvvISH5SiJuwQccggdCTnivb
aKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK4H4vabqmpeHLR
bG3murWK7V7y3t9xlkTphQOvU/oexrC1a01Txf8ADXUbOz8JPpcVncxHTbTaUkYD75KnHZm+
uT3GSmi20Nr8JvE0cPh680cC1be14xMk7+X8x5AwB0H/AOusvw5/aPi+bwVYDQ7y0ttFImlv
ZIyI5AmCu1iO+0ce/tmq0/gXxVNrvibX9Lgu7O/ttRd7NlOwzozPv2+vyspz0OSOtdD4X8EX
HhT4haK0WmtJA+lMLm5K5WKfnccjgHOF78GsnUNB8Y6ZoOu+DrHw495ZXl61xHfLKOUyrAY7
nCD8c10WreGL/wAQX3geK70mVrC1gP2+GVhtjIRQAwzzyK1fA3hu58O+J/E0aaalppc80b2b
Lj5hg5A5zgZHHbJrt6KK8j1/4ZazqmseJNRgjjiu5rmCfTLkTbTgZEgyDleCDyOq8VrWfw9u
dP16ytbeKI6R/YUmn3sxYbpHdmZiBnOSSDn04rmdA8EeKPCN8IoPCOlarMbn9zqVxNkKoBwd
u75fXOM9ueK62PQNb1v4i3+salaJZ2lnZPZWLbgfNLDl+DyPmb06juDWePhnqN58KoPDd21t
FqNpcPNA4Yshy7HBOOMhj09qh8MfD3V7nXb7U9e06y0mG405rL7LZScPuUKWIUkYxnvnODWY
fhv45v8AQv8AhG7q7sYNO0x2ksnHJuWycZweByeo44611l74X8Sa/rXha71a4tY4tKRbi68r
kvcAjgcdDge3X2qKfwp4j06Xxpe6WbaW41ry/sYMhUgfMHz0wQGOOetZtz8Odat/hppOj2TQ
TajZXy3skbvhCfmyoPtuH5H2r1CLzPJTzgok2jeEOVz3xntT6KKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKz9f0v+3NAvtK83yftcDReZtztyMZx3o0LS10
TQbHS1kMgtIFi3n+LAxmtCiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiv/9k=</binary>
 <binary id="pic_8.jpg" content-type="image/jpeg">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</binary>
 <binary id="pic_9.jpg" content-type="image/jpeg">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
iiiiiiiiiv/Z</binary>
 <binary id="pic_10.jpg" content-type="image/jpeg">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
FFFFFFFFFFFFf//Z</binary>
 <binary id="pic_11.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8l
JCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/wAALCABJAI0BAREA/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
AAA/APT4vC+jQ+IH1+O0Yak4KtN5znIIwRtzjHtiteiiiiiiiiiiiiiiiiiiiiiiiisDxl4s
tvBuhnU7m3luMyCOOOPjcxBIyew461i/Dv4j/wDCcNc28umta3Fqod2Rt0ZBOAM9Qfb2ruaK
KKKKKKKKKKKKKKq6lptnq9hLY6hbpcW0ylXjfuP6H3FU9M0fQvCWnmGxt7fT7ZnAZi2NzE4G
WY5JycDJ74Fa1FFFFFFFFFFFFFFUNb1a30LRbvVLs4htYi5H949gPcnA/Gs7wZa6jHopvtWn
Mt7qcpu5E3ZWEMBtjX2VQB9c1D8QvD8niXwbeWNv/wAfKATwYPV05A/HkfjVX4Z+K28VeFY3
uNwvbIi3ud7ZZ2AHzn/e/mDXYUUUUUUUUUUUUUV5b4luW8f+P7LwxZmSTR9Mk8zUpoiTGzDn
y24x1XHXqT6V6iqqihVAVQMAAcAUteXLAngj4zRJb5i07xJGdyZ+UTZJ4/4FjH+/ivUaKKKK
KKKKKKKKK53wh4OtfCNtdpDcyXc97OZpriUDe57A/TJP4muiorM1nw/Ya69lJeI3mWFwtxA6
HaysD0z6HuKZfeKvD+mXpsr7WbO3uRjMUkwDDPTilbxRoKar/ZTavaC+3iP7OZRv3HoMetat
FFFFFFFFFYPjXxE/hXwpeaxFEk0sIURxucAszBRn88/hXAwfEXxvomo6X/wk+kWq2OqyJ5bx
DDKrdhhjyMg4NeuUUUV5f4P0PS9Z+IPjC61OxivJrW/j8hphv8vlugP+6PyqTx5pdha/ETwf
qEFrHFdXV+RPKowZNuzGfXGetemUUUUUUUUUVy/xG0S88QeB7/TrCJZbpwjxocDcVcMQCe+A
RXmviXUtb8URaLDZ+EdTB8P4lu0mjK7iNoKr3P3T059q9o028bUNNgvHtZrRpkDGCdcOnsR6
1aoorzzQRq3h74i6/Hc6Je3NrrFzG8N7bxgxRqAfvdMY3c9+O+aq+IZNd8Q/EPQYl8M3tvaa
RqDM14/McqZX5gcYAwuevf14r02iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiv
/9k=</binary>
 <binary id="pic_12.jpg" content-type="image/jpeg">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</binary>
 <binary id="pic_13.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8l
JCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/wAALCABLAOkBAREA/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
AAA/APZqKKKKKKKKKKKKKKKKKKKKKa7rGjO7BVUZZmOAB61j6Z4x8O6zPNDp2r29w8EZlkCk
4VAcFiTxjkU/RfFWheIpZ4tI1KK7e3AMgTIwD0PI5Fa9FFFFFFFFFVbnVNPs5RFdX9tBIRkL
LMqnHrgmof7f0b/oL2P/AIEp/jUT+KfD8dxHbvrdgJZQSi/aUycfjUv9v6N/0F7H/wACU/xp
H8RaJGjO+sWAVRkk3KcD86u29xDd28dxbypLDKoZJEOVYHoQaZdXtpZIHu7qG3VjgNLIEBP4
1W/t/Rv+gvY/+BKf40f2/o3/AEF7H/wJT/Gj+39G/wCgvY/+BKf40f2/o3/QXsf/AAJT/Grk
E8N1Cs1vMk0TfdeNgyn6EUssscETSzSLHGgyzucAD1Jql/b+jf8AQXsf/AlP8aRvEOiIpZtY
sAAMk/aU4/WqJ8d+ExIUPiLTtwOMfaF6/nU934u8OWIU3Ou6fHvztzcLzj8ai1u6t9b8DapN
pkyXsVxYzrE0J3BzsYYGOvPFcz8GtOsT8PoZzZwedcNLHNJ5Y3SLvIwx7j2NY3g2zGjfHLX9
Ntdkdq1u0giiQKoBMbKAO2NxFeuUUUUUUUUVxPxG1fxjpEdjL4W0/wC1Rlj9pKw+aw5G0Y64
OTkj8xS+KfhppXjW4t9S1GW6tb0QpG3ksMYGTjBB7sapwfBPwdEhV4ruYlNu57gjB45GAOeP
pzVuf4QeCJoWjXSWhJ6PHcSbh9Mkj9Kgtfgx4Lt5S72dxcDGNktw2Pr8uDVv/hUvgf8A6AY/
8CJf/iqf4vs/EGkeELey8CwKktu6IEBDMsQB+7vyDzjrzirPiHwfbeNPDtpZa6GhuYwkhkt3
BMcmPmAJGCDyOlc5a/AvwrDGVnnv7hichjKq4HpwKsL8EvBysCY71gDnBuOD+lPl+CvgyQIF
trqPYuCUuD83uc55+mKj/wCFI+Dv7l9/4Ef/AFq6SLSm8J+DZLDw5bG4ktIZGtYZnzvYktgn
6k/y4qjpVlf+MvAIsvF9o9rPdZE8cY8tsK+VPfGcCsK1+BfhWGMrPPf3DE5DNKq4HpwtaMfw
d8EpcNKdMkdSoXy2uH2j365z+NWYvhV4IhlWRdCjJXs80jD8i2KZ/wAKl8D/APQDH/gRL/8A
FV0EGj22l+H20rSIEt4o4XSGPkgE565OTyc9a4r4Vr4l0bT4/D2qeG5bW3gEkgvWmXDMWzt2
/j2Paqvg3TPEd38U9R8TatoUmlwXNp5YV5AwDDywAD3yEJ6V6jRRRRRRRRWRrHifS9DvtPsr
6Zln1CdYYVVSeTnBPoM4H4iteiiiis7XddsPDmky6pqUjR20RUMVUsckgDge5q/HIssayIco
4DKfUGnUUUVHPPHbW8k8rbY4kLsT2AGTUOm6jaavp0GoWMoltrhA8bjjIq1RRRRRRRRRRRRR
RRXmXxNMsnjrwTbK7+Wb3zCiqWyVePnH0zz2Ga9NoooorjPiuqv4EnRwGVrm3BB7jzVrsURY
0VEUKqjAA7CnUUUVz/jyTyvAmtt5ix/6HINzkgcjGOPXOPxqTwTFHD4H0RIkCL9ghbAHcoCT
+JJNblFFFFFFFFFFFFFFFecfEiK5Xxn4MvLWO53R32xpI48oqsyAgnsSM/hmvR6KKKK5D4ow
yzeCZkhhklf7RAdsaFmwJVJ4HNdcDuUEZ5GeRilooorl/iSrN8O9aCqWP2fOAM9xV3wW6yeC
dEZGyPsEIz9EANbdFFFFFFFFFFFFFFFRPc28bFHnjVh1DOAaloooorhNY1O6t/jJodn9tkis
5NOlaSHzMRsfn5I6Z+VfyrugQyhlIIPII70tFFFQXdxa2ts8t7NDDABh3mYKmPcnim2N7Y3t
uH0+6t7iEDAMEisoxxjjirNFFFFFFFFFFFFFFIxwpPoK+cr3RLTU/h/rXjK/kdtVm1HYiNKf
3Q3jKkHknBPXsBXuvhP7HH4Z0+2sr9b5ILeNTL5ocn5e5zx9K2aKKK8n8Y6do/if4x6fo2rM
6QppxGN23zHJYqAc8dfxIx3q58IJ7q3n8QaAZ5Lmw0u8MdtM/PGWGAfooOBxz716ZRRRXlXx
WlhvvF3hnQ9Una20eVzNcSM+2NyDjBPYgcZzxvrrfCfhPw3oF7fXnh6bIutokiS4EkaY5AA7
dT1Peuoooooooooooooooorg9R+EHhrU/ED6pMJ0ilO6S0ifbG74OW45Bzzwa2/CPgrSvBlr
cQab5rm4k3vJKQWI/hXgDgCuhooork/Evw28P+KtTOpagtyt0YhGHhl24weDjHXtWl4X8KaX
4Q0w2Glo+x3MjvI253bGOT+HStqiiisjxH4Y0rxXpv2DVbfzIw25HU4eM+qntVbwn4L0jwbb
Tw6WspNw+6SSZtzHHQdBwK6Ciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiv/Z
</binary>
 <binary id="pic_14.jpg" content-type="image/jpeg">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
ru7CxttMsILGziEVvboEjQfwgVYoooqhrejWfiHR7jSr9Wa2uFAcI208EEEH6gVNp2n22laf
BYWUfl29ugjjTJOFHTk81ZooopGAZSD0IxXP+EPBmn+DLS5t9PmuJRcy+Y5nfOOwAA4/Hqfy
roaKKiuYBc2ssDEhZUKEjqMjFcZ4D8G6/wCEJpLS412K70hQ3k2wiwysWznJ6d8jkZNLpfgz
XE8ff8JLrOtxXqQQyQ2yJCEZUYnAOBjgMffOK7eiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisP
xnr03hnwnfaxbwpNLbBCqSEhTl1XnH1raQ7kVvUZp1FFFFYPhTU7vVLfUpbwndFqU8KIwAKI
rYVeK3qKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK4/4sf8k01j/di/8ARqV1sX+qT/dF
PoooorlPh9MlzpeqTxp5aSavdMqf3Rvrq6KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKq
anpllrOny6fqNutxazY8yNiQGwQR09wKtAAAAdBS0UUUVVsNNs9MikisbdIEllaZ1ToXY5J/
GrVFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFcH4n8U6n4K8Ttf6m/n+H76ExwBRzbzqu
QDgZO8gj8vStzwNLrFz4UtbvXXZr66LTMrKB5asxKqAO23HXnmugooorlfHJ8S2lra6r4bke
VrOTdc2ICkXEXfGRnI9vWuci8a3vj/xFpVj4VM1tZWckd3qU75Q7Qf8AVe+eQR0PHYGvTaKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK8s8S203xL8bXPhbzJbPTtEjMs0gUEyzMMJz2A
3dO4Dfh0Pw6164vNPuNA1Uv/AGvojeRcsw4kXJ2MD34A/n3rsqKKKbJny2x1welec/BrQdb0
DS9Th1exa0WW4V4VcDex2/MTjt938c+9ekUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
xYo0d3SNVaQ5dgMFj059aFijSR5FjVXfG9gMFsdMnvT6KKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKK//9k=</binary>
 <binary id="pic_15.jpg" content-type="image/jpeg">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
iiiiiiiiiiiiiv/Z</binary>
 <binary id="pic_16.jpg" content-type="image/jpeg">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
2Q==</binary>
 <binary id="pic_17.jpg" content-type="image/jpeg">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
j/nhpn5x/wCNTLdfGNYkQ6fpLMr7i5dcsP7p+bGPpzU7aj8XSgA0TRlIfcSJeoznb9/049ab
dr8XdTtpPK/sbSmUcLG253PXgncB6c4qMQ/GNYk/0jRmPAOQMjryeMdh09R74ikf4zpIyrHp
bgEgMuzDe4yc1Yivvi+ghD6Ro8mzO8mQDzM9M4fjHtU/9q/Fj/oXdE/7/n/4uj+1fix/0Lui
f9/z/wDF0f2r8WP+hd0T/v8An/4upV1v4nJJH5vhPTJECEyCO8Clj2wSTjtxz0PNOPif4gBc
/wDCCxH92JMf2iufp06+1V/+Ey8f/wDRPW/8DV/wrnvHOv8AjrW/DMulT+CZ7SK6kRWkjfzz
wwIGFHGSBzXq2jQyW+h2EEyFJI7aNHU9QQoBFXaKKKKKKKKK87+MetGy8Lz6VJakQ6hD8lyX
4EiOjbMY6kZPXsaj+FfiOB9I0bw7bWytjT5LmWZJM+W4mK7WXsT97r9BivSKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK5D4paImt+A79RAJbi0X7RByflK
/eIA6nbuH415x8Alc+ItTYNhBajcM9fm4r3aiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiimyRrLG0bqGRwVZSMgg9q8d+DWlyaX4z8S2pBC2v7n5yA3DnHH0
H0r2SiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiqVvo+nWm
o3Oo29lDFd3QAmmVcNJjpk1doooooooooooooooooooooooooooooooooooooooooooooooo
ooor/9k=</binary>
 <binary id="pic_18.jpg" content-type="image/jpeg">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
k/UkmtGiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiivPPiii/214NfaNw1
iMA45xuWvQ6KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKK89+KH/IX8Hf9hmP+a16FRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRXnvxR/5C3g7/sMx/wA1r0Kiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiivOPi1bR3l54TtZgT
HNqyI+04OCQDg16PRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRVXUtRtNI0+fUL+YQW0C7pJDk4H4da5b/AIW54G/6DY/8Bpf/AImj/hbfgb/o
Nj/wGl/+Jq3F8SfBs0kka+ILQGI4JclQfoSMH8Kl/wCFg+D/APoYrD/v8K88+LnijQ9Yt9EG
matbXLQXu+TyZMlBgcmvQ/8AhYPg/wD6GKw/7/Cj/hYPg/8A6GKw/wC/wo/4WD4P/wChisP+
/wAKP+Fg+D/+hisP+/wo/wCFg+D/APoYrD/v8KP+Fg+D/wDoYrD/AL/Cmy/EXwdDE0jeIbIh
RkhH3E/QDk1R/wCFueBv+g2P/AaX/wCJo/4W54G/6DY/8Bpf/iaP+FueBv8AoNj/AMBpf/ia
mHxT8Em1Nx/b0WwNt2mN9+f93bnHvjFTQfEjwbcQrKniGzVW6CRijfiCARUn/CwfB/8A0MVh
/wB/hR/wsHwf/wBDFYf9/hR/wsHwf/0MVh/3+FH/AAsHwf8A9DFYf9/hSD4h+Dy5X/hIrHIA
P+s4/Onjx/4RYMR4i0/CjJ/fD1x/WrR8W+HBbrcHXdP8pgCG+0p36d/epf8AhI9C/wCg1p//
AIFJ/jWe3xA8IKxU+ItPyDg/vhSf8LB8H/8AQxWH/f4Uf8LB8H/9DFYf9/hR/wALB8H/APQx
WH/f4Uf8LB8H/wDQxWH/AH+FH/CwfB//AEMVh/3+FH/CwfB//QxWH/f4Uf8ACwfB/wD0MVh/
3+FH/CwfB/8A0MVh/wB/hR/wsHwf/wBDFYf9/hR/wsHwf/0MVh/3+FH/AAsHwf8A9DFYf9/h
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
WB3D5yj4BG0/U8Y61mfC21ns/h3pUVzEYpGV5Nh6hWkZl/Qiutoooooooooooooooooooooo
ooooooooooooooooooooorjPiL18L/8AYw2v/s1dnXAfF6RodE0aVQpZNZgYblDDOH6g8Gu/
orN8RusfhnVGdgqizlyT/uGqHgD/AJEHQ/8Aryj/AJV0NFFFFFFFFFFFFFFFedWFzBbfHPW3
uJ44VOlxgGRwoJ/d+tdz/a2m/wDQRtf+/wAv+NH9rab/ANBG1/7/AC/40f2tpv8A0EbX/v8A
L/jVCTQ9D1TxFaeIEZZNQs4yiSwz8FDuGCAcEZLVbm07Rrmc3dxaWU0k4EZlkjVi+M4XJ69+
PrWfeeG/DOoaEdIMFtHp0MomaGBgiKynPOO3rW6jxuCI2Vgh2nac4I7VDLqVjDIY5b23jdeq
tKoI/DNM/tbTf+gja/8Af5f8aiPiDRRdC1Or2QnZdwj+0JuI9cZqX+1tN/6CNr/3+X/Gj+1t
N/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3
+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1t
N/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3
+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1t
N/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gj+1tN/6CNr/3+X/Gmy63pMMTSy6n
ZoiAszNOoAHr1qj/AMJv4U/6GTS//AtP8aP+E38Kf9DJpf8A4Fp/jR/wm/hT/oZNL/8AAtP8
aP8AhN/Cn/QyaX/4Fp/jR/wm/hT/AKGTS/8AwLT/ABo/4Tfwp/0Mml/+Baf40f8ACb+FP+hk
0v8A8C0/xo/4Tfwp/wBDJpf/AIFp/jUlv4u8N3UvlQa/psjn+FbpCf51c/tbTf8AoI2v/f5f
8aP7W03/AKCNr/3+X/Gj+1tN/wCgja/9/l/xo/tfTP8AoI2v/f5f8agn8SaFbZ8/WbCLGc7r
lB2z6+hFJH4n0CW2a5j1vT2hQZaQXKYA9zmpo9a0mVA8ep2bqejLOpB/Wnf2tpv/AEEbX/v8
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
zTVghSV5UiRZHxvcKAW+p71JX//Z</binary>
 <binary id="pic_19.jpg" content-type="image/jpeg">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
mudvnJHPtSTbgDIx7D8q62KKOCFIYUWOONQqIowFA4AA9KfRUVxbW93H5VzBHPHkNtkQMMjo
cGpaKKKTaN27Az0zRgZzjn1paKKKKKq3mm2WoGA3lrFcG3lE0PmIG2OOjD0NWqKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK8++Mv/ACK2nf8AYVg/k9eg0V5X8K2V/HfjdlYM
pvMgg5B/eS16XqP/ACDLr/ri/wDI1z/wz/5J1ov/AFw/9mNdTRWJ4w1+Pwz4WvtVfJaKPEQH
dzwo/MiuH8Mz3XgX4XS+ILm1urzUtUc3LKG8zLOCUc46DGCe/NbPwgv73U/BP2u/vJrqaS7l
JaVskc9Ppkk/jWX4RvdR8KfEW88GalfSXNndq1zp7SHcwyS2M9uA2e2VyMZ59Ooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooorz74y/8itp3/YVg/k9eg0V
5V8D4YxH4hmCKJDehC2OcDJA/U16ZqP/ACDLr/ri/wDI1z/wz/5J1ov/AFw/9mNdTRXC/GUE
/De9wP8AlrD/AOhit/Tbi0u/BNvNYQma1fTx5UMLYYjZ9wEHg9uvBrnPgvFJH8PovMjZN1zK
y7hjIz1rHkkGs/tC272eHTSrQpcPnIztbP6yAfga9Woooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooorz74y/8itp3/YVg/k9eg0hIUEkgAckmvOvgtBGvh7V
LlMFpdTkBI7gBcfzNd7qP/IMuv8Ari/8jXP/AAz/AOSdaL/1w/8AZjXU0VFc20F5bSW1zEk0
MqlJI3GQwPUEVjeE/C8Hg/S5rC3vJ7i3ad5Y1l/5ZKf4R+p981W8HePNH8ZG7j0yK4iNoRlZ
owoZT0IIJHbp1rT0zw5pWj399fWNosVxqEnmXDjqx9vQZyceprUooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooorz74y/wDIrad/2FYP5PXoNVtR/wCQbdf9
cX/ka4P4GwtF4BZ2xiW9kdfphR/MGu81H/kGXX/XF/5Guf8Ahn/yTrRf+uH/ALMa6miikYgK
SegHNcn4I8WeF9elvrPw7bC2Fu+91W3EYkB/jGPU5688V1tFFFFFFFFFFFFFFFFFFFFFFFFF
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</binary>
 <binary id="pic_20.jpg" content-type="image/jpeg">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</binary>
 <binary id="pic_23.jpg" content-type="image/jpeg">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
01lIZLd3HMbEYyP89h6Vcoooor//2Q==</binary>
 <binary id="pic_24.jpg" content-type="image/jpeg">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
BsYzjv16GtClooooor//2Q==</binary>
 <binary id="pic_25.jpg" content-type="image/jpeg">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
FFFFFFFFFFFFFFFFFFFFFf/Z</binary>
 <binary id="pic_26.jpg" content-type="image/jpeg">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</binary>
 <binary id="pic_27.jpg" content-type="image/jpeg">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
8ZIAH48YPWu+oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooor/2Q==</binary>
 <binary id="pic_28.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8l
JCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/wAALCADuAJ4BAREA/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
AAA/APZq8b+Jek2EniLU7/V9Vl+1fZ4V0WztZt03mcZ+TsN30zk45Fej2l7qWneCIL7UESa+
t7JZbhXk8sMQoLZYjg4z171zHgbxlJ8QrfVNNu4444MSAnzws7RuzbQFUdFUqC3cmuUm8Oaf
4F+IehXJ026ttHt3ER1NpfM+0yspwWA4UAkjAA4Ga6fxj8RtV8O+LIdIttPgmj6tKZTswwG3
edvy7eWI9CDkVsePPEWoaZYaVa6NNHFd6xeR20dy0e9Ilb+L68jHXvWf4Q1jxRH45v8Awvru
o2+oLZWgmM6QiNiWKkdOOA2K7PWbxtP0e7vEkSNoIi4Z4mkUY9VX5j+Fef6V4w1y+1S1Y61B
LazXAQomiXKKckZUORxwep/GvTaKKKrahJ5Om3MuZxsiZs26b5BgfwjBy3oMHmvJvBl140n8
dT3N7bX7WZnjN2GSOGQlotsbSKOqheSB3xXsVFFFFePap8PvHB+Il/q+j39vBHdlmW9crlF4
wm3BIIwBkDoOtd54O0vxFa6JPa+Lb2HUZ5JW24AYeXjGDwM55P41r6fo2naVHMthaRwefI8k
jIvLMxyST9f6VwMPw18Rt9k0W+8Rx3Phu0uVmSIxkTsF5Ck46ZOOv+FehXGnwXN1b3Egbdbs
zKAcBiV2ncO/BrK8ZeHJvEujxwWl4bO8tLhLq1mxlVlTO3I9Of8A9fSuZ0bwH4rtvGMXifUf
Etu9zJhLyKC3wssYAAXsOgHbg16LRRRRRVW81Kx05oFvLuK3a5lEMIkcAyOeij1NWcAEnAye
ppaKKKKKKKKKKKKKKKKK4PafF3xQYmQf2f4XA+Tg+ZcuDz/wED8xXeVx3g7xHqVzr2teHNcZ
Te2Exkt32bTNAxOGx0wMqMj1FdjRRRRRRRRRRRRRRRWP4r12Lw14avdVlYAwxnyged0h4UY7
8kVn/D3Q30bwtC90pF/qDG7vGYYJkfnH4DA/Ouorz/4kWU+kXun+ObEgTaUwjuY9p/fQs2Dk
g9sn8/au6s7uG/soLy3bfDcRrLG2MZVhkH8jU1FFFFFFFFFFFFFFUNX0Ww122jttRg86KKZJ
lUkgblORn1HtV+iorm2gvLaS2uYkmhkXa6OMhhVDw3oMHhnRIdJtZppoYSxRpjlgCxOPoM4r
UooooooooooooorG8SeJ7HwxaLcX29VkV9j7TsDKuQGYA7cngcdal8Oa9aeJdEt9Us2GyVBv
UHPlvgFkzjnBOMj0rUoqOeZLeCSeTOyNSzY9AM15fB8Q/GEkmna1LotnF4f1C9W2iBLedtY4
DE5wPy7fjXqlFFFFFFFFFFFFFZfiHQoPEelPpt1NNHbyHMixNjzMdAe+M4OBjpVfwv4WtfCu
npZ2lxcSIIkVkeQmMMB8zKpJ2liSSB61uUVV1Swi1XSrvTpmZY7qF4XK9QGBBx+deN3fh74l
waXB4Zg0+3ubPR7hbm2uwVXzghyi8nnk9MZ7Zr1jwxd6xfaDb3Gu2KWV+wIkhVs4wcZ9s9cc
9eta1FFFFFFFFFFFFYPh3xMPEOo6vFBastpp9wIIrnPE7AfPj6Hj8RVnxB4gtfDdhHfXqSG3
adIXdBkRbjjc3oo71qUtFFFFFFFFFFFFFFFYPjXW38P+Fby9tz/pZURWqAZZ5XO1QB3OTnHt
UnhHRpNA8MWWnTyeZcIped+7SMSzHPfknn2q9q2nR6tpF3p02Nl1C0RJXOMjGce3Wua+HGpT
nSZ/D2oFzqWhSfZpi38aZPlsPYr/AC967GiiiiiiiiiiiiiiiuR1vRbnxB480oXNs39laRGb
ouyjbLOThVB/2cZP4etddRXHa/pV/Z+O9G8RaVaPKsubPUhEBkxMRtZuedp5z6D2rsaKKKKK
KKKKKKKKK53xX450TwasH9qyy+ZcZ8uKFNzEAjJ7AAZrV0nVrHXNMh1LTp1ntpxlHHH1BHYg
8Yq7RXFeIfinonh7VLjTZLTULq4tdvn/AGeEFI8gHkkjsc10Xh7XrPxLosGrWKyrBPnaJV2s
MEg5H1FadFFFFFFFFFFFFFcR47udD0C9h1+4tTfazLbtY2NptEglLHI+TrweCR/ex3FaXw+0
W70DwZZWF8qpc/PJJGvSMuxbb+GcV0tFc74og0vWoJfCsmoiyvdUhLr5agu6KRn6j8emcdDX
PfCPUbw2GqeH72ZJjod0baJ0jKgoCR178g+9eh0UUUUUUUUUUUUVy3jLwHZeMpbCae8ubOay
clJYD8209QPQ5CnPtUvhTwefC0l0RrWoaglxt2pdybvLwP5+/FdJRXM+LvAun+Lntria4ubK
8tMiK5tW2uAex9Rnn8/WrfhTwpp3hDSvsNhvcu2+aaQ5eVvU1t0UUUUUUUUUUUUUUUUUUUUU
UUVQ1DXNJ0l0TUtTtLNpBlFnnVCw9smprHUbHU4PtGn3kF3Fnb5kEgdc+mRThfWhvDZC6h+0
qoYw+YN4Bzg7evY/lXnmpfEjxBZaxqU0Ph+KfQdLvBaXM/mHzQe7denI7dxzXoc97bW1obue
ZYoAATI5wAD0/mKyfF2p63pOjpcaDpa6ldtOkZhYnhScE8e+PYZyelYfhLxtrWqeLL3w3rek
29vdWsXmvJazb1T7uFbk889QfwFdwSACScAdTWM3jPwsrFW8R6UCOCDeR/41q29xBd28dxbT
JNDKoZJI2DKwPQgjqKloooooooooryrxK2jf8LaYeM4ohpjacEsGuM+UW6sTzgHlh+XtUvwT
vtOksdbtrORFzqDzRQdGWIhQpx6dqpaJ4E1hfilNrV5YRLa2zpLFHJdPJtVsqNj45Kbc7TwA
QPSl1rV9I1XxNf6ANStPD2k2175upM7bZtQmzk4/2cqMk+30rc+JHhxvGfhmO/0WaOZkiMiP
CWdrhOoRcEKQTzyD0FbWkwz+CfArrqJW7GlwyPutlbdKgy2SGPDHnPOPwrzlovDF54l8O3/g
SWaPVLy+8y5QSM/lw9X8xSTt/ljNez3MTzWssUbqjuhVWZNwUkdSO/0rhtO+Hut2Vu9v/wAJ
VFFFI5ci10mCMhiR0ODgcdK7XT7ea0sYbee4+0yRrhpfLEe732jgfhVmiiiiiiiiiqWp6Npm
swrDqdhb3kanKrNGGwfbPSodM8NaHoszzaZpNpZyuu1nhiCkj0yK06yL/wAJ+HdVu2u7/RbK
5uHADSyQqWOOmTWhZ2Vtp9pHaWcEdvbxDCRRrhVHsKmIDKVYAgjBB71n2Hh7RtKuZbrT9LtL
Web78kUKqzfiK0aKKKKKKKKKKKKKKKKKKKKKKKKKK8t8b/EjVfDfiq0sUt4lSNpSyecjJcIy
gRlz96PDZJzjgZ5Fd94b1f8At3QbXUSgVpV+bapClhwSueq5HB7jmtSiiiiiiiiiiiiiiiii
sW58JaJda5BrT2UYvIS5LqoHm702Hf8A3vl45rXiijhiSKJFSNFCqqjAUDoBT6KKKKKKKKKK
KKKKKK5P4j+ItR8OeGhPo7Qf2hPOkMMcilnctx8i/wATdOvFdJYfajp1t9tKG68pfOKDCl8D
dgdhnNc4vii9tPiM/hzUYEW1vLcS6dMh6lQd6tnqSc/TA45rq6KKKKKKKKKKKKKKKK4C6WTx
b8U4bX5P7P8ADAE0ny5Mk7jKjOMcYB/D8u/ri/ibpU8uhR6/pzCLUtDf7VDIBklAPnXr0I5P
+7710mg6vBr2h2eqW5Gy5iV8A52nHK/gcj8K0KKKKKKKKKKKKKKKz9euLy10G+n06B57xIHM
EaDJZ8cY/GsvwF4fPh3wra28yH7bOPPvHc5ZpW5OT3x0/CukqO4ghureS3uI1lhlUo6OMhlI
wQRXM+BNG1bw7bahpF8A1jb3THTpfN3kwtyFx2x/MntiuqoooooooooooooprOiAF2CgkAZO
Mk9BUVveW92ZhbzLIYJDFKFP3HGMqffkfnU9FFeWaz8UPFfh0XD6p4OCwRXLQLcCZkR+SV25
U5yB1/l0r0TQ7661PRLS+vbI2NxPGHe3L7imenP0wfxq/RRRRRRRRRRRRWT4m07+1NDmtlsx
dy5V4ozOYcSKcq29eVwQDkc1w/w18HeIdE1y+1LXVEpkkkjRpLl2cEY/eAHhgwAGT83yivTq
KK82+INz4K8U6bfW15rKw6hoyyGNfMMbLJgcYYYfJCjjP1rZ+Fl/qWpeAbG51SVppWLqkrtu
Z0DEAk55PBH4V2FFFFFFFFFFFFFMMsayLGzqHfO1SeTjrgUSSJDE8srqkaKWZmOAoHUk05WV
1DKQykZBB4IpaK53VvAHhXXNQfUNR0eKe5cAPJvdS2OmQpAJ963ba2gs7dLe2hSGGMYSONQq
qPYCpaKKKKKKKKKKKK4Pw1HJ4n8fan4plAay0/dp+nZGDkf6x8fUkA+hrtNQsodS064sbgEw
3MTRPjrgjBrlPh5qM8cN94VvVxc6BILdZCcGaE58tsdvlx+nrXZ0UUUUUUUUUUUUUUVzXj7X
pNB8LTPa4a/u2W1tE3YLSOcce4GT+FXfCmgx+GfDNlpKEMYI/wB44/ic8sfzJ/CtiuE8cRHw
5rem+NrWJiIHFrqYQfft3/iP+6QPzFdxHIk0SSxuHR1DKwOQQehp9FFFFFFFFFFFFFFZGq+H
LLWdX0rUbsuz6XI8kUYI2MzADLD2wCK16Kiube3urZ4LuGKaBxh45VDKw9weKdDHFDCkUCIk
SKFRUACqo6AAdBT6KKKKKKKKKKKKKyfE/iC28L+H7rV7pWdIFG2NeC7E4A9sk1x+ifEDxLL4
o0vR9e8PQ2aasjS27xSEske1iNw554GemM9K9GorjvH3he/8WPpdhHcSQ6WJna/aKUI23b8v
B4PNc18KFlsPF3iPRbK7nvdGs9qRTSvuCuCRgdufm6D+EV6tRRRRRRRRRRRRRXM/ETS5NX8D
6jawy+XJsWRG3FRlWB5wDxxXiN78UtRvPE+k68bC2WbS42jVNzESBgQc++Ca+jLC6+3adbXe
zZ58Sybc527gDj9asV5n8c76/tPCVrHazmKC4udlwFJDONpIH0yOfoK4LQ/ijqOlw2mj+HNE
0vTlkkCMWDuZGJABY5z/ADr6FgEwt4xcFDMEHmFBhS2Oce2akoor/9k=</binary>
 <binary id="pic_29.jpg" content-type="image/jpeg">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
OOpOOp6V0FFFFFFFFFFFFFFFFFFFFFFFFFf/2Q==</binary>
 <binary id="pic_30.jpg" content-type="image/jpeg">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
G9ztAP5Yqc/CfwsZVcJfBVBBQXsmG9zznj2Peq83we8Ny42XerQ/MT8l4T16DkHgdv1zTY/g
54dR9zX2sSDBG1rzjp14UdOtRP8ABjQWQhNV1pWI4Jugcf8AjtTQfB7w5DMHkvNWnUdY5LzC
n/vkA/rUd98HNDubmOS21DU7OJQA8UdwWD89ctkjjikT4MaCAd2q603Jx/pQGB2H3aX/AIUz
4f8A+gnrX/gWP/iaP+FM+H/+gnrX/gWP/iac3wb8PNjGoayuBg4uxz7/AHakPwf8Nloj9p1U
CMDcBeHEv+9x/LFQyfBnQGD7NT1lCc7cXQIX/wAdqOX4L6I0DLFrGsxyEcObkMAfptqKP4J6
WsytJr2rtGFAKCUAk45Ocd/SrP8Awpnw/wD9BPWv/Asf/E0yL4L6GoPmatrLksSCLkDAzwPu
/rSj4MaFh86trJyfl/0ofLx/u81Q/wCFH23/AEM+p/p/jUg+CNgDJnxFqpBXCfOPlPHJ9e/H
HWrcfwY0JYlWTVtZdwAGYXQAJ9cbeKpn4I2XkhR4k1TzN2d+4Yx6Y/rmul8E+ArHwSl21tdT
3U94ymSWbA4GcDA9yefeuqoooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooornPE3jvQfCM8EGrzyxyTr
uQRxF+M4J4rH/wCFy+Cf+ghP/wCAr/4Vbtviv4KuYjJ/bSRYONssTqfyxUq/FDwUyhv7fgGR
nBVwR+lMm+KngmEKTrsT7iB8kbtj9KZP8WPBNvuzrKybVB/dwu2cnGBx1qr/AMLl8E/9BCf/
AMBX/wAKs2vxZ8FXYYjWRDtx/roXXP04q/ZfEHwnqV7DZWetwTXE7BI41DZYnt0ro6KKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK4nxfBDP8QfBaTRJIplu8h1BBxEC
PyPNdd9gs/8An0g/79iuS1TXrLTvG0Gh2nhMX0ssaTXF1BGmYVZim4jbk4x6jiupGm6bCzst
laxtIdzERKCxxjJ454AqLULdIdNuJ7DTbW5uUjZoom2orsBwC2OK57W73VLP4dTa1Fo1hBqs
cHmyQYEqIM8kEdfl59PrV/wZMuteD9M1K9trZri4gDSMsKgE9M4/CtiTSdNlZWk0+1dlBClo
VJGRg447ivPvGel6dp3j/wAFNY2FtatJeOHMMKoWxsxnA5xXplFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFcL43uTaePPBEoTfuup48Zx99FXP4bs13VeVaT4Nt9N+
M9yNO1C7t4I7Nb10SQneWfBjYnOVOM4PP86j1rQtP8YeMfFf9uX8qrottGLSJJQgjUx72fHp
nr+FXfAkUc/wMlSfzDGbe6LBH2sQGc4B7dKl02WRfgBJI26YnS5wAh3bVO8Ac9lGM+y10Hgr
UdIi8NaFpdrdwNO+npIIY33HhV3k+nzHv3rp68+8f/8AI++Bv+vyX/2SvQaKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK4H4hRk+MPBEm5fl1Jl2k/Mc7OQPTjn6iu+
rn/DXg3T/C93qN3aXF1cTag6vK9zJvPGcDOB3J/Oq3iL4d6D4l1H+0Lv7VBctH5Ur2s2zzk/
usMHIpPDvw80Xwy1+LN7qSC+QxvbzTFo1Q9VA/E8nJ5+uZ/DngXRPCxuhpyTsl0NrxzymRVX
+6AeMdeuTz1qXQPBXh/wze3N5pFj9nmuRtc+YzADOcAE4Az6egrerz7x/wD8j74G/wCvyX/2
SvQaKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK5/wAX+EYPF9jbW017
cWZtpxOktuQGBAI6n2JrmD8Hx8uPF+udt37/AK+uPTt9PepF+Gmt22IrHx/rEFsq8I5Lndkk
87hxjH45qKP4a+J4WcRfETU1V5Nx+VsnPU/f65qRPhr4hSSSRfiJqwaQgsdh5wMD+Om3Pwv1
u8h8u4+IOryc9wcY+m+qf/Cm9Q/6HrU/++W/+Lo/4Vb4qsONJ8fXqK/+s8zeOR0xhj71Lp/w
x8RPrdlqOueMZ7z7A/mW4Clircf38gDgZ45r02iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiv//Z</binary>
 <binary id="pic_31.jpg" content-type="image/jpeg">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</binary>
 <binary id="pic_32.jpg" content-type="image/jpeg">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
raRfjjpty+1Y30h1Qk/fIZsgfTcDXe0UVy3xM/5J1rX/AFw/9mFdBp3/ACDbX/rin8hVmiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiivPb/5/jzpqt8wTSGZQeQp3PyP
Q16FRRXDfGQkfDa+wSP3kX/owV2Gnf8AINtf+uKfyFWaKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKK4WW18/45xTb9v2bQ9+MfezKy4/Wu6oorhfjL/yTa+/66w/+jBX
Y6d/yDbX/rin8hVmiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiuFspJX
+OOorIyFY9FRYwpGQvmKcN75J/Aiu6oorlfiaAfh1rOQD+4H/oQrY8O4PhrSyHLg2cWGMnmb
vkHO7jd9e9aVFFFFFFFFFFFFFFFFFFFFFFFFJ0pA6tjDA554NOopqsrDKsD9DTqKa0iIcM6q
fc0uRnGeaWkZgoyxAHqaaZYxjMi89OaFkRjhXUn2NPpnnRA4Mif99Cjzov8Anqn/AH0KXzEy
BvXJ6DPWhnRPvMFz6nFJ50X/AD1T/voUebHjPmLj1zQJIyCQ6kDqc9KPOi/56p/30KPOi/56
p/30KVZEc4V1Y+xpDLGDgyKCPehZI2OFdSfQGuAuZcfHiyET/LJoxD7Tw3zv19egr0Kiis3x
BokHiLRLnSbmaaGG5UK7wkBsZB7gjtXGp8HLCKNY4/EuvoijCqt0oAHoBtp6/CWKBvNtfFvi
CKdfuOboHafXGBn86P8AhXPiP/oo2sfkf/i6T/hUFn38UeIf/Asf/E1DL8IZY545dP8AGetW
7Ic5kk3nPYggripV+G3iFCxX4i6wNxyeDyf++6lT4YXUxWXUPG/iC4nTIR45/LCj0wc/zpJP
h1r5b918Q9aUejEsev8AvDtim/8ACufEf/RRtY/I/wDxdMm+GOtXULQ3XxA1iWNh93kDPbPz
VWT4OSBl3+MtXZQRuCtgkd8cnHb1x71Yi+GWuwbvK+IWrpuxng84AA/j9AKk/wCFc+I/+ija
x+R/+Lob4SQTMZLjxZ4hklbl3+1Abj3PSk/4VBZ/9DR4h/8AAsf/ABNRy/Ca6RHhsPG2tW8E
oAlSSTfuI9wVqQfCy7uQF1Txvrl0qD92El8vb69S2e1Nb4P2pHyeKfEAORyboH+lLF8L9Us4
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
RRX/2Q==</binary>
 <binary id="pic_33.jpg" content-type="image/jpeg">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
N7Yy2BjJxUtFFFFFFFFFFFFFZ+s6FpniGyFlq1ol1AsgkCMSMMOh4PufzrFuPhl4LuVVX8P2
yhSSPLLIefUqRn8elQf8Km8D/wDQCX/wIl/+Kqc/DHwWYWi/4R+32t1O5t3bvnI6D9fU1L/w
rrwd9oE//CO2W4Ltxs+XGc/d6Z98ZqT/AIQDwh/0Lmnf9+FqC6+Gvgy7VVk8P2qhTkeUDGfx
2kZqt/wqbwP/ANAJf/AiX/4qj/hU3gf/AKAS/wDgRL/8VVqH4b+DYI0RPD1oQmcF1Lk59SSS
fxqb/hAPCH/Quad/34Wrlv4X8P2sIhg0SwSNegFsn+FSf8I/ov8A0B7D/wABk/wqSLRtKg3e
VplpHuxnZAozg5Hb1AP4VI+nWMrs8llbuzfeZolJP6U6CytbZStvbQwgnJEcYUH8qjudK068
cPdWFrO4GA0sKsQPTkVD/wAI/ov/AEB7D/wGT/Cj/hH9F/6A9h/4DJ/hSjQNFByNIsQR/wBO
yf4U+PR9LinE8em2iTA5EiwKGz65xVvYn9xfyo2J/cX8qNif3F/KgKoOQoH0FKAAMAYpaKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
yfE/iK08K6FNq97HLJDCVBSIAsSSAOpHrXCf8L50H/oEap/3yn/xVH/C+dB/6A+qf98p/wDF
Uf8AC+dB/wCgPqn/AHyn/wAVR/wvnQf+gPqn/fKf/FUf8L50H/oD6p/3yn/xVWLT45eGpmYT
2epWwA4LRK2fyarP/C6vCPrf/wDgMf8AGp7D4veFdR1K20+Brzz7qVYow1uQNzHA7+pruaKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK4X4y/8
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
UUUUUUUUUV//2Q==</binary>
 <binary id="pic_34.jpg" content-type="image/jpeg">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</binary>
 <binary id="pic_35.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8l
JCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/wAALCADNAUgBAREA/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
AAA/APZqKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKzLXxFpN9rdzo1rdia9tF3TxojER9BgtjbnnpnP5VPq2q2eiabLqOoSmK2hAMjhGfaCcZ
woJ707TNTs9Y06HUNPnE9rOu6OQAjI6dDyORVqiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iisnxRrsHhrw5eatcHiCM7Fz99zwq/iSK5v4S6JLp3hT+07x/MvdZf7XLJuySp5X8cEn8a7a
4gjuraW3mQPFKhR1IyCCMEV5d8OLiTwZ4q1DwHqUhIkk+0WEp6SAryPxAB+oavVaKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKK8w8dyt4v8d6V4LhjMltaut3qBVwPl9OvYH6/MMV6bHGk
UaxxoqIgwqqMAD0Ap1eb/GDQrl9NtfFWlkx6hozhy6jny85z77Tz9C1dn4a1628S6BaarauC
syDeoOSj/wASn3BrVooooooooooooooooooooooooooooooooooqjrWrW2h6NdandOqRW0Rc
7jjJA4H1J4rhfg/o9ydPvfFepSGW91qQsC4+ZUDHvjueeOMBa9IoqOeCK6t5LeeMSRSqUdG6
MpGCK8t+H1zL4M8b6j4Eux/o8ztcWMrN94YyAB0OVH5qa9Wooooooooooooooooooooooooo
ooooooooorzP4lzTeJfEWj+BLN9q3Li5vXUg7IxnA/IE4/3a9HtbaGytIrW3jEcMKCONB0VQ
MAVLRRXm/wAYdBnk0y18U6YWjv8AR3DF4zhjHnr/AMBPP0JrsfC/iG28UeH7XVrX5VmX50PV
HHDL+f6YrXooooooooooooooooooooooooooooooooqtqN/b6Xp1xf3bhILaNpJG9ABmvPvh
RpdzqFxqfjfU1BuNWlP2bdglIwSDg9um3HotelUUUVHPBFc28lvOgeKVCjow4ZSMEV5T8PZJ
/BXj/U/BF3Ji0uCbixLDlzgY590HPuletUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV5v8Vr+
bU5tL8E6e5+0avMpuNqglIQc5/ME/RTXeaTplto2k2um2abYLWMRoPXHc+561coooorzf4w6
HI+l2viiwDjUNIkDbo1zmPOeccgKefxNdl4X8QWvijw/a6taH5Zlw6d0ccMp+h/TBrWooooo
oooooooooooooooooooooooooqK5uIrS2luZm2xQoXdj2AGTXm3w0tLnxJ4h1Tx9frgXTtBY
xsPuRg4yD9Bt+u6vTqKKKKKjngiubeS3nQSRSqUdG6MCMEV5P8PJLjwT491HwReupt7jM9pI
wxvOMjH1UHj1U165RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRXn3xW1K6uLWw8IadEzXmuShSwx
hYlILdT16fgDXaaRpVpomk22mWUYjgt0CKAMZ9Sfcnk+5q7RRRRRRXm3xf8ADs01jZ+KNLty
2o6TKJHZFBJjB3ZPqFIB+hNdp4Z16DxL4es9XgXYtwmWQnlGBww/MGtWiiiiiiiiiiiiiiii
iiiiiiiiiiiiiuH0Twrqs3xE1HxVrqQqqoYNPiUhiqZ4Y88HH/oRruKKKKKKKKjuII7q2lt5
lDxyoUdSMggjBFcN8PPCWteDNT1TTppRcaLIRJaSGQbg3uvYkHn/AHfeu9oooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooorFvvFml6
f4ms/Ds7Si+vU3whY8qR83U9vumtqiiiiiiiiiiioL27i0+wuL2fIitomlk2jJ2qCTgfQVW0
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
pbXJUqGWRyAD1wCcc10NFFFFFFFFFf/Z</binary>
 <binary id="pic_36.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8l
JCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/wAALCAF1AjwBAREA/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
AAA/APZqKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK5zxZ4xtfCrafA1tJeXeoXCww20RAdgTgs
M8cZAx3JH1rogcgHBGexrA8ZeLI/B2lwajPZyXMMlykMmxseUpBO/oc4x0461t21xDeWsVzb
yLJDMgeN16MpGQR+FS0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUjMqKWZgqqMkk4AFeYeFEl8d/EG98V3WG03SXNtp0ZUFWPdvrzuz6kc8V6hV
HWdJtdd0i50y9QPBcxlGyM7fQj3B5H0rhPhhqt5pWo6h4D1eRPP0s5tHPDTREk8Z7YII9j7V
6TRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRXF/F
XVzp/g6Wwhgee61ZhZwIn95uv6Z/HFa/grQW8NeEdP0qTaZoo8zFQOXYlj064Jxn2rdorzr4
peGWFqvi/RYfL1nTXWVpUPLxqDnI6HH8hiuw8M69b+JfD1pq1uQBPGC6A/cfoyn6HNatFFFF
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</binary>
 <binary id="pic_37.jpg" content-type="image/jpeg">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</binary>
</FictionBook>
