Описание тега logical-purity

Логическая чистота - это свойство логических программ, написанных только с использованием предложений Хорна.
2 ответа

Пролог конструкции if-then-else: -> vs *-> vs. if_/3

Как отмечалось в другом ответе Stackru, который я больше не могу найти, этот шаблон часто появляется в практическом коде Prolog: pred(X) :- guard(X), ... pred(X) :- \+ guard(X), ... и многие люди пытаются сжать это pred(X) :- (guard(X) -> ... ; .…
2 ответа

Источник чистого пролога маленьких программ

Вопрос: есть ли место с некоторыми программами, которые я могу проверить? Я говорю о стиле розеттского кода, но я пошел туда и увидел, что почти каждая программа решается с непростым прологическим синтаксисом (с использованием cut, с использованием …
06 апр '16 в 13:32
8 ответов

Другой /2 - существует ли чистое детерминированное определение?

different(Xs, Ys) :- member(X, Xs), non_member(X, Ys). different(Xs, Ys) :- member(Y, Ys), non_member(Y, Xs). Хотя это определение с использованием member/2 а также non_member/2 почти 1 идеален с декларативной точки зрения, он создает избыточные реш…
16 июн '15 в 09:32
2 ответа

Порядок голов в чистом прологе

Я очень новичок в прологе. Насколько я знаю, Чистый Пролог ограничен клаузлами Рога. Вот очень простая прологическая программа - % student( Snr , FirstName , LastName , Semester ). student( 1000 , 'Anna' , 'Arm' , 'ti2' ) . student( 1001 , 'Rita' , …
28 фев '16 в 07:40
4 ответа

Двусвязный список в Прологе

Я изучал Пролог в свободное время от 8 месяцев до года, и теперь я перехожу к реализации некоторых классических структур данных и алгоритмов. Я заинтересован в получении двусвязного списка в Прологе, но совершенно сбит с толку относительно того, как…
27 янв '19 в 21:51
2 ответа

Какая польза от if_/3?

Предикат if_/3 кажется довольно популярным среди немногих основных участников Prolog-части Stack Overflow. Этот предикат реализован как таковой, благодаря @false: if_(If_1, Then_0, Else_0) :- call(If_1, T), ( T == true -> call(Then_0) ; T == fals…
03 окт '16 в 13:54
1 ответ

Что подразумевается под "логической чистотой" в Прологе?

Что подразумевается под "логической чистотой" (в контексте программирования на Прологе)? Информация о тэге логической чистоты гласит "программы, использующие только клаузулы Хорна", но затем, как бы предикаты вроде if_/3квалифицируйте, используя сто…
11 авг '15 в 12:08
2 ответа

Пролог: избегайте лишних точек выбора (недетерминизм) с оператором вырезания и без него

Во-первых, я прочитал все другие посты на SO, касающиеся использования разрезов в Прологе, и определенно вижу проблемы, связанные с их использованием. Однако для меня все еще есть некоторая неясность, и я хотел бы решить это раз и навсегда. В привед…
2 ответа

Объединение чистых предикатов

Я пытаюсь объединить некоторые чистые предикаты из предыдущих вопросов о переполнении стека, чтобы создать свой собственный предикат. Я хочу дать список c (с которыми связаны факты - "at") и термин "особенность", в котором есть оператор и порог для …
27 сен '17 в 11:10
2 ответа

Правильное управление потоком в Прологе без использования не декларативного синтаксиса if-then-else

Я хотел бы проверить произвольный факт и сделать что-то, если оно есть в базе знаний, и что-то еще, если это не так, но без ( I -> T ; E)синтаксис. У меня есть некоторые факты в моей базе знаний: unexplored(1,1). unexplored(2,1). safe(1,1). учиты…
1 ответ

Пролог - возвращает результат вместо печати в алгоритме

Я знаю, что технически нет "возврата" в Прологе, но я не знал, как сформулировать вопрос иначе. Я нашел пример кода алгоритма для поиска маршрутов между станциями метро. Он работает хорошо, однако предполагается, что он просто распечатывает результа…
2 ответа

Логическое отрицание в прологе

Я прочитал довольно много о Отрицании Пролога Отказом, где Пролог, чтобы доказать это \+Goal держит пытается доказать, что Goal выходит из строя. Это тесно связано с CWA (предположение о близком мире), где, например, если мы запрашиваем \+P(a) (где …
1 ответ

Каким требованиям должна соответствовать компьютерная функция, чтобы считаться "монотонной"?

Каким требованиям должна соответствовать компьютерная функция / процедура / предикат, чтобы считаться "монотонной"? Let A be some thing , Let B be some thing , Let R be a monotonic relationship between A and B , Let R_ be a non-monotonic relationshi…
10 апр '17 в 03:44
2 ответа

Избыточные ответы варианта уточненного предиката append/3

Я хотел предложить логически чистое решение некоторых других недавних проблем на этом форуме. Для начала я внедрил усовершенствованный вариант append/3 и назвал это appendR/4, Он основан на предикатах if_/3 а также (=)/3 реализовано @false в объедин…
04 апр '15 в 08:57
2 ответа

Сопрограмма в Прологе: когда аргумент является списком (он имеет фиксированную длину)

Вопрос Можно ли запланировать выполнение цели, как только длина списка будет известна / исправлена, или, как указывает @false в комментариях, данный аргумент становится [правильным] списком? Что-то вроде этого: when(fixed_length(L), ... some goal ..…
19 янв '15 в 12:03
3 ответа

Декларативное использование memberchk/2

memberchk/2 это обычно определенный предикат, который определяется с точки зрения member/2 вот так: memberchk(X, Xs) :- once(member(X, Xs)). Следовательно, это удастся только для первого ответа member/2, Его полное процедурное значение не вписываетс…
25 окт '15 в 10:43
2 ответа

Пролог, о том, как формировать лучшие статьи

У меня есть следующие пункты: num_parent(adam, X) :- !, X = 0. num_parent(eve, X) :- !, X = 0. num_parent(X, 2). Когда я набрал запрос: num_parent(eve,X). Это только возвращает: X = 0. что я и хочу Но когда я набрал этот запрос: num_parent(X,0). это…
23 ноя '17 в 11:03
1 ответ

is_list/1 и свободные переменные

Вот первое наблюдение: ?- is_list([]), is_list([_,_,_]). true. Вот еще одно наблюдение: ?- [] = _, [_,_,_] = _. true. Поэтому с чего бы is_list/1 быть реализован таким образом, чтобы ?- is_list(_). false. или же ?- is_list([_|_]). false. когда _ мож…
01 июл '16 в 14:09
1 ответ

Пролог: Можно ли заставить предикат вести себя по-разному в зависимости от того, является ли значение основательным или нет?

У меня есть несколько сложный предикат с четырьмя аргументами, которые должны работать, когда первый и последний аргументы являются заземлением / не заземлением, а не заземлением / заземлением или заземлением / заземлением, а второй и третий аргумен…
16 окт '15 в 15:07
2 ответа

Пролог не дает мне решения, когда он существует

Я работаю через Семь языков за семь недель, но есть кое-что, чего я не понимаю в прологе. У меня есть следующая программа (в зависимости от их программы Wallace и Grommit): /* teams.pl */ onTeam(a, aTeam). onTeam(b, aTeam). onTeam(b, superTeam). onT…
02 окт '16 в 08:33