Студопедия

КАТЕГОРИИ:


Архитектура-(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 «Юриспруденция».

Издание предназначено для студентов гражданско-правовой специализации юридического факультета Пермского университета, изучающих спецкурс «Вспомогательные нормы в гражданском праве».

 

Согласования со смежными кафедрами:

 

 

Директор библиотеки ______________

 

 


СОДЕРЖАНИЕ


I. Рабочая программа дисциплины

1. Цели и задачи изучения дисциплины

2. Требования к уровню освоения содержания дисциплины

3. Объем дисциплины, формы текущего и промежуточного контроля

3.1.Объем дисциплины и виды учебной работы

3.2.Распределение часов по темам и видам учебной работы

4. Содержание курса

5. Темы семинарских занятий

6. Тематика курсовых работ, рефератов и докладов

7. Учебно-методическое обеспечение

7.1 Литература

7.2 Методические указания студентам

7.3 Методические рекомендации для преподавателя

II. Материалы, устанавливающие содержание и порядок проведения входящего, промежуточного и итогового контроля

1. Материалы для входящего контроля.

2. Материалы для промежуточного контроля

3. Материалы для итогового контроля (Примерный перечень вопросов к экзамену (зачёту))
I. РАБОЧАЯ ПРОГРАММА




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 435; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.212 сек.