КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Учебно-методический комплекс. вспомогательных предикатов языка Пролог
Список Список вспомогательных предикатов языка Пролог
var(X) Эта цель успешна, если Х в текущий момент - не конкретизированная переменная. nonvar(X) Эта цель успешна, если Х - терм, отличный от переменной, или если Х - уже конкретизированная переменная. atom(X) Эта цель истинна, если Х обозначает атом. integer(X) Цель истинна, если Х обозначает целое. atomic(X) Цель истинна, если Х обозначает целое или атом. fail - цель, которая всегда терпит неудачу. true - цель, которая всегда успешна. not(P) - вид отрицания, который всегда ведет себя в точном соответствии со следующим определением: not(P):- P,!, fail; true. саll(P) активизирует цель Р. Обращение к саll имеет успех, если имеет успех Р. вспомогательных функций языка ЛИСП.
1. ОПЕРАЦИИ НАД СПИСКАМИ --------------------------------
1.1. Функция COPY - создает в списочной памяти второй экземпляр произвольного выражения.
1.2. Функция APPEND - присоединяет к одному списку другой, сохраняя относительный порядок элементов.
1.3. Функция REVERSE - переставляет элементы списка в об- ратном порядке, не меняя самих элементов.
1.4. Функция REMOVE - из списка, заданного в качестве значения ее второго аргумента, исключает все элементы, совпадающие со зна- чением первого аргумента. Преобразованный список выдается в ка- честве значения функции.
1.5. Функция REVOVEF - из списка, являющегося значением ее второго аргумента, удаляет первый по порядку элемент, совпадающий со значением первого аргумента.
1.6. Функция LAST - выделяет последний элемент списка.
1.7. Функция LENGTH - вычисляет число элементов списка.
1.8. Функция ADDIFNONE - проверяет, содержится ли заданный элемент (значение 1-го аргумента) в заданном списке (значение 2-го аргумента), и если нет, то добавляет этот элемент к списку.
1.9. Функция COLLECT - перегруппировывает элементы заданного списка так, чтобы одинаковые элементы, если они есть в списке, стояли все подряд.
1.10. Функция PATTERN - устраняет в произвольном выражении все внутренние скобки, а в точечных выражениях - и точки, пре- вращая его в список атомов. Количество и относительный порядок атомов в выражении сохраняются.
2. ФУНКЦИИ С ПОБОЧНЫМ ЭФФЕКТОМ --------------------------------
2.1. Функция ATTACH - вырабатывает то же значение, что и CONS, но, в отличие от CONS, она заставляет обладать этим значением свой второй аргумент.
2.2. Функция DREVERSE - вырабатывает то же значение, что и REVERSE, но разрушает свой аргумент.
2.3. Функция NCONC - вырабатывает то же значение, что и APPEND, но одновременно она заставляет обладать этим значением свой первый аргумент.
2.4. Функция TCONC - помещает значение своего первого аргу- мента в конец очереди, представленной вторым аргументом. Если эта очередь пуста, то формируется очередь, состоящая из одного элемента. Под очередью понимается списочная структура, состоя- щая из некоторого списка и лисповской ячейки, содержащей указа- тели на первый и последний элементы этого списка.
2.5. Функция EFFACE - значением 2-го аргумента функции дол- жен быть список. Если этот список содержит хотя бы один элемент, совпадающий со значением первого аргумента, то первый по порядку из этих элементов исключается из списка, в противном случае спи- сок не меняется. Значением функции является преобразованный спи- сок. Если выброшенный элемент не был самым первым в списке, то значением 2-го аргумента также становится преобразованный список.
2.6. Функция DREMOVE - в отличие от EFFACE, выбрасывает из списка, являющегося значением ее 2-го аргумента, все элементы, совпадающие со значением 1-го аргумента функции.
2.7. Предикат LCYCLEP - вырабатывает значение Т, если в зна- чении аргумента есть цикл по цепочке d-указателей, и NIL в против- ном случае, т.е. если в результате многократного применения функ- ции CDR к значению аргумента можно получить атом.
2.8. Предикат CYCLEP - вырабатывает значение Т, если значение аргумента - циклическая списочная структура, и значение NIL, если в значении аргумента нет циклов.
3. ПРЕДИКАТЫ --------------------------------
3.1. Предикаты FORALL, FORSOME, FORODD - у этих предикатов по два аргумента. Значением первого аргумента должен быть неко- торый список L, а второго (функционального) аргумента - наимено- вание или определяющее выражение функции Р.
3.1.1. Предикат FORALL - принимает значение Т лишь в том слу- чае, если функция Р принимает значение "истина" (т.е. не NIL) на всех элементах списка L.
3.1.2. Предикат FORSOME - принимает значение Т, если функция Р принимает значение "истина" хотя бы на одном элементе списка L.
3.1.3. Предикат FORODD - принимает значение Т, если число элементов списка L, на которых функция P принимает значение "исти- на", нечетно.
3.2. Предикат ATOMLIST - проверяет, является ли его аргумент списком (возможно, пустым), составленным лишь из атомов.
3.3. Предикат LISTP - принимает значение NIL, если заданное выражение является атомом, отличным от NIL, или выражением, кото- рое может быть записано только в точечных обозначениях. В противном случае заданное выражение является списком, который можно записать, не прибегая к точечным обозначениям ни на одном из уровней, и пре- дикат принимает значение Т.
4. ПОРЯДОК И УПОРЯДОЧИВАНИЕ --------------------------------
4.1. Предикат ORDER - проверяет, в каком порядке два заданных элемента встречаются в данном списке. Список (упорядочивающая после- довательность) задается в качестве значения 3-го аргумента функции ORDER. Если при просмотре элементов этого списка слева направо встречается элемент, совпадающий со значением 1-го аргумента, а ни один из ранее просмотренных элементов не совпал со значением 2-го аргумента, то значение предиката равно Т, во всех остальных случаях оно равно NIL.
4.2. Предикат ORDER1 - вычисляется так же, как и ORDER, одна- ко, если ни один из заданных элементов не содержится в данном списке, то в качестве значения предиката выдается атом ORDERUNDEF.
4.3. Предикат LEXORDER - сравнивает - элемент за элементом - два списка, заданные как значения 1-го и 2-го аргументов. Если в какой-либо позиции обнаруживаются различные элементы, то они сравниваются между собой с помощью предиката ORDER1, причем в качестве 3-го аргумента (упорядочивающей последовательности) указывается 3-й аргумент обращения к LEXORDER. Результат сравнения (T,NIL,ORDERUNDEF) выдается в качестве значения предиката LEXORDER. Eсли раньше, чем встретятся различные эле- менты, исчерпается 1-й список, то выдается результат Т, если первым исчерпается 2-й список, то в качестве результата выдается NIL.
4.4. Предикат LEXORDER1 - отличается от LEXORDER тем, что значением 3-го аргумента для него должен быть список, каждая по- зиция которого в свою очередь является списком, который исполь- зуется в случае необходимости для сравнения соответствующих пози- ций списков, заданных в качестве значений первых двух аргументов.
4.5. Функция FIRST - среди элементов списка, заданного в ка- честве значения 1-го аргумента, выбирает тот, который раньше встречается в списке, заданном в качестве значения 2-го аргумен- та. Если ни один из элементов 1-го списка не содержится во 2-м, то выбирается 1-й элемент 1-го списка.
4.6. Функция RANK - упорядочивает список, заданный в качест- ве ее 1-го аргумента, переставляя его элементы в той последова- тельности, в какой они встречаются в списке, являющемся значением 2-го аргумента.
5. ПОИСК --------------------------------
В этом разделе собраны функции, выбирающие из списка элемент или элементы, обладающие заданным свойством. Список задается в виде значения аргумента, соответствующего связанной переменной L, свойство характеризуется предикатом, наименование или определяю- щее выражение которого дано в качестве значения аргумента, соответствующего связанной (функциональной) переменной Р.
5.1. Функция POSSESSING - образует список из всех элементов данного списка, обладающих заданным свойством.
5.2. Функция SUCHTHAT - выбирает из заданного списка первый элемент, обладающий заданным свойством. Если такого элемента нет, то вырабатывается значение NIL.
5.3. Функция SUCHTHAT1 - проверяет, содержится ли в данном списке хотя бы один элемент с заданным свойством. Если да, то в момент обнаружения такого элемента в качестве результата при- нимается значение 4-го аргумента функции SUCHTHAT1. Если нет, то результатом является значение 3-го аргумента.
5.3. Функция SUCHTHAT2 - проверяет, содержится ли в данном списке хотя бы один элемент с заданным свойством. Если да, то к хвосту заданного списка, начиная с найденного элемента, при- меняется функция, наименование или определяющее выражение кото- рой задано в качестве значения 3-го аргумента (функционального). Если нет, то вырабатывается значение NIL.
6. ОПЕРАЦИИ НАД МНОЖЕСТВАМИ --------------------------------
В этом разделе списки рассматриваются как множества своих элементов - порядку элементов в списке не придается значения, а два или более одинаковых элемента списка рассматриваются как один элемент множества.
6.1. Функция SETOF - для каждого повторяющегося элемента исключает из списка все вхождения, кроме одного.
6.2. Функция MAKESET - делает то же, что SETOF, но описана через PROG. Порядок элементов в результирующем списке оказыва- ется другим.
6.3. Функция DIFLIST - вычисляет разность множеств X\Y. Иначе говоря, она исключает из списка, заданного в качестве значения первого аргумента функции все элементы, встречающиеся в списке, представленном значением второго аргумента.
6.4. Фукция SUBSET - вычисляет предикат "множество X является подмножеством множества Y". Иначе говоря, она вырабатывает зна- чение Т, если каждый элемент списка, заданного в качестве первого аргумента функции, содержится в списке, представленном значением второго аргумента.
6.5. Функция UNION - вычисляет объединение двух множеств. Значение функции представляет собой список всех выражений, являющихся элементами хотя бы одного из заданных списков. Если каждый из заданных списков не содержал повторяющихся элементов, то в результирующий список каждый элемент войдет лишь один раз.
6.6. Функция LUNION - объединяет множества, заданные в ка- честве элементов списка, являющегося значением аргумента функции.
6.7. Функция INTERSECTION - вычисляет пересечение двух мно- жеств. Значением функции является список всех выражений, входящих элементами в оба заданных списка. Если каждый из заданных спис- ков не содержит повторяющихся элементов, то в результирующемся списке элементы не будут повторяться.
6.8. Предикат EQUALSET - проверяет, равны ли множества, представленные двумя заданными списками.
6.9. Функция CART - образует декартово произведение двух заданных множеств. Точнее говоря, она формирует лексикографически упорядоченный список, элементами которого являются всевозможные списки, содержащие по два элемента каждый, причем первый эле- мент берется из первого, а второй - из второго заданного спис- ка.
7. АССОЦИАТИВНЫЕ СПИСКИ --------------------------------
Ассоциативным списком или списком соответствия называется список вида (x1.y1)(x2.y2)...(xn.yn)), где xi и yi - для i=1,...,n - произвольные выражения. Говорят, что такой список ставит в соответствие выражение yi выражению xi.
7.1. Функция PAIR - объединяет элементы 2-х заданных списков в ассоциативный список, вырабатываемый в качестве значения функ- ции. Функция не определена, если 2-й из заданных списков короче первого.
7.2. Функция DPAIR - действует аналогично PAIR, но значение первого аргумента заменяется значением функции.
7.3. Функция ASSOC - вырабатывает в качестве значения первую по порядку пару из заданного ассоциативного списка, у которой первый элемент совпадает с заданным выражением. Если такой пары нет, то вырабатывается значение NIL.
7.4. Функция PAIRLIS - подобна функции PAIR и отличается от нее лишь тем, что она не создает ассоциативный список, а добав- ляет новые пары к существующему списку.
7.5. Функция SUBST - подставляет в заданное выражение z (в значение ее 3-го аргумента) выражение x (значение 1-го аргумен- та) вместо всех подвыражений, совпадающих со значением y 2-го аргумента (на какой бы глубине они не находились). Результат под- становки выдается в качестве значения функции.
7.6. Функция SUBLIS - в заданном выражении y (значение ее 2-го аргумента) заменяет все входящие в него атомы, которым в заданном ассоциативном списке (значение первого аргумента) поставлены в соответствия некоторые выражения, этими выражениями. Преобразо- ванное выражение выдается в качестве значения функции. Функция SUBLIS обращается к функции SUB2, которая для заданного атома (значения второго аргумента) выдает в качестве значения либо вы- ражение, поставленное ему в соответствие в заданном ассоциатив- ном списке, либо сам этот атом, если такого выражения нет.
7.7. Функция SASSOC - подобна функции ASSOC и отличается от нее тем, что, когда в заданном ассоциативном списке не най- дено никакого соответствия для заданного выражения, в качестве значения выдается результат обращения к функции (без аргументов), наименование или определяющее выражение которой задано в качест- ве третьего аргумента функции SASSOC.
8. ФУНКЦИОНАЛЫ --------------------------------
8.1. Функция MAPLIST - применяет функцию, заданную в ка- честве ее второго аргумента (функционального), последовательно ко всему списку, заданному в качестве значения первого аргумен- та, и ко всем спискам, поочередно получаемым отбрасыванием пер- вого элемента от предыдущего списка. Значением функции MAPLIST является список полученных результатов.
8.2. Функция MAPCAR - подобна функции MAPLIST и отличается от нее тем, что заданная функция применяется к первым элементам тех списков, к которым она применялась бы в случае обращения к MAPLIST.
8.3. Функция MAP - имеет смысл, если функция F, заданная в качестве ее второго аргумента, обладает каким-либо побочным эф- фектом. Эта функция последовательно применяется к тем же аргу- ментам, что и в случае функции MAPLIST, но выработанные значения никак не используются и не сохраняются. Значение функции MAP рав- но NIL (а если очередной аргумент, подготовленный для обращении к функции F, окажется атомом, то этому атому).
9. ОПЕРАТОРЫ --------------------------------
9.1. Функция PUCH - обращение к функции PUCH вида (PUCH e v), где e - некоторое выражение, а v - переменная, в точности экви- валентно выражению (SETQ v (CONS e v)).
9.2. Функция POPUP - обращение к функции POPUP вида (POPUP u v), где u, v - переменные, в точности эквивалентно последовательному выполнению двух операторов (SETQ u (CAR v)) (SETQ v (CDR v)).
9.3. Функция POP - обращение к функции POP вида (POP v), где v - переменная, в точности эквивалентно выражению (SETQ v (CDR v)).
10. СПИСКИ СВОЙСТВ --------------------------------
10.1. Функция PUTPROP - помещает в список свойств атома, ука- занного в качестве ее первого аргумента, свойство, представленное значением третьего аргумента, с индикатором, заданным в виде зна- чения второго аргумента. В качестве результата функция PUTPROP вырабатывает атом, список свойств которого подвергся изменению. Если в списке свойств этого атома уже было свойство с данным ин- дикатором, то это свойство замещается новым, индикатор не дубли- руется.
10.2. Функция DEFINE - предназначена для одновременного оп- ределения нескольких функций класса EXPR. Ее аргументом должен быть список вида ((f1 e1)... (fn,en)), где f1,..., fn - атомы, которые должны стать наименованиями функций, а e1,...,en - cоответствующие определяющие выражения. Одно такое обращение к функции DEFINE заменяет n обращений к DEFUN: (DEFUN f1 e1)...(DEFUN fn en), которые формируются и выполняются в результате данного обращения к DEFINE. Результатом обращения является список наименований фун- кций (f1,...,fn).
10.3. Функция DEFLIST - похожа на функцию DEFINE. Ее первый аргумент имеет такой же вид, как и аргумент DEFINE, а вторым ар- гументом должен быть некоторый атом (сам атом, а не выражение, имеющее этот атом своим значением, так как функция DEFLIST - специальная). Этот атом заносится в списки свойств атомов fi для i=1,...,n вместе с выражением ei в качестве соответствующе- го свойства. Одно обращение к DEFLIST вида (DEFLIST ((f1 e1)... (fn en)) ind) заменяет n обращений к PUTPROP вида (PUTPROP (QUOTE fi) (QUOTE ind) (QUOTE ei)) для i=1,...,n.
10.4. Функция GETPROP - извлекает из списка свойств данного атома (значения первого аргумента) свойство с данным индикатором (значением второго аргумента). Если такого индикатора в списке свойств нет, то вырабатывается значение NIL.
10.5. Функция PROP - отличается от функции GETPROP тем, что она выдает в качестве результата не свойство, связанное с данным индикатором (если оно есть в списке), а весь хвост списка свойств, следующий за найденным индикатором. Если же индикатор в списке свойств не обнаруживается, то производится обращение к функции без аргументов, наименование или определяющее выражение которой должно быть задано в качестве третьего аргумента PROP. Результат этого обращения выдается в этом случае в качестве результата об- ращения к PROP.
10.6. Функция REMPROP - удаляет из списка свойств данного ато- ма (значения первого аргумента в обращении к ней) свойство, снаб- женноет данным индикатором (значение второго аргумента), вместе с этим индикатором. Если такого индикатора не было, то список свойств не меняется. Значение функции совпадает со значением пер- вого аргумента.
10.7. Функция PUTFLAG - помещает в начало списка свойств атома, заданного в качестве значения ее первого аргумента, флаг, представ- ленный вторым аргументом. Если такой флаг уже был в списке свойств, то он дублируется.
10.8. Функция FLAGP - проверяет, содержится ли в списке свойств данного атома указанный флаг.
10.9. Функция FLAG - помещает данный флаг (значение второго аргумента) в списки свойств атомов, перечисленных в списке, яв- ляющемся значением первого аргумента обращения к функции.
10.10. Функция REMFLAG - удаяет из списков свойств всех ато- мов, являющихся элементами списка, заданного в виде значения первого аргумента обращения к REMFLAG, все вхождения флага, указанного в качестве значения второго аргумента. Специальность: 021100 – «юриспруденция»
Согласовано: Рекомендовано кафедрой:
Учебно-методическое управление Протокол № ____
«____» _____________ 2012г. «____» ______________ 2012г.
________________________ Зав. Кафедрой _________________
Пермь 2012 Автор-составитель: О.А. Кузнецова, д.ю.н., профессор кафедры гражданского права и процесса ПГНИУ
Вспомогательные нормы в гражданском праве: Учеб.-метод. комплекс / авт.- сост. О.А. Кузнецова; Перм. ун-т; Пермь.
Комплекс содержит программу спецкурса, методические указания к каждому разделу программы перечень основных и дополнительных источников специальной литературы (учебников, монографий, статей), вопросы для проведения семинарских занятий, практические задачи, а также контрольные вопросы для итоговой аттестации по спецкурсу по специальности 021100 «юриспруденция», направление 030900.62 «Юриспруденция». Издание предназначено для студентов гражданско-правовой специализации юридического факультета Пермского университета, изучающих спецкурс «Вспомогательные нормы в гражданском праве».
Согласования со смежными кафедрами:
Директор библиотеки ______________
СОДЕРЖАНИЕ
1. Цели и задачи изучения дисциплины 2. Требования к уровню освоения содержания дисциплины 3. Объем дисциплины, формы текущего и промежуточного контроля 3.1.Объем дисциплины и виды учебной работы 3.2.Распределение часов по темам и видам учебной работы 4. Содержание курса 5. Темы семинарских занятий 6. Тематика курсовых работ, рефератов и докладов 7. Учебно-методическое обеспечение 7.1 Литература 7.2 Методические указания студентам 7.3 Методические рекомендации для преподавателя II. Материалы, устанавливающие содержание и порядок проведения входящего, промежуточного и итогового контроля 1. Материалы для входящего контроля. 2. Материалы для промежуточного контроля 3. Материалы для итогового контроля (Примерный перечень вопросов к экзамену (зачёту))
Дата добавления: 2015-06-27; Просмотров: 450; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |