Описание тега failure-slice

A failure-slice is a fragment of a Prolog program obtained by inserting one or more `false` goals somewhere in it. Failure-slices help to localize reasons for universal non-termination of a pure monotonic Prolog program. They also help to give a lower bound for the number of inferences needed. It is a concrete program-slicing technique.
2 ответа

Пролог: проверьте, имеют ли два списка одинаковые элементы

Я новичок в Прологе, и у меня возникают проблемы с проверкой, если два списка имеют абсолютно одинаковые элементы. Элементы могут быть в разных порядках. У меня есть этот код: myremove(X, [X|T], T). myremove(X, [H|T], [H|R]) :- myremove(X, T, R). sa…
28 окт '12 в 18:13
2 ответа

Предикат, который генерирует целые числа и проверяет, является ли целое число

Я пытаюсь создать предикат Prolog, который позволит мне проверить, является ли заданное значение целым числом больше 0, а также даст мне допустимое целое число с учетом переменной. Теперь это выглядит так: intgr(1). intgr(X) :- intgr(Y), X is Y+1. Э…
14 ноя '13 в 13:55
3 ответа

Объяснение рекурсивной процедуры Пролога

Я бы хотел, чтобы кто-нибудь объяснил эту процедуру, если это возможно (из книги "Изучай пролог сейчас"). Он берет две цифры и складывает их вместе. add(0,Y,Y). add(s(X),Y,s(Z)) :- add(X,Y,Z). В принципе я понимаю, но у меня есть несколько вопросов.…
30 янв '13 в 07:26
2 ответа

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

Мне нужно написать программу, которая рассчитывает продукт в диапазоне: Я написал следующий код: mult(N,N,R,R). mult(N,Nt,R,Rt):-N1=Nt+1,R1=Rt*(1/(log(Nt))),mult(N,N1,R,R1). Это должно реализовать основной продукт из Nt в N из 1/ln(j), Насколько я п…
23 ноя '14 в 17:40
2 ответа

Почему Пролог падает в этом простом примере?

likes(tom,jerry). likes(mary,john). likes(mary,mary). likes(tom,mouse). likes(jerry,jerry). likes(jerry,cheese). likes(mary,fruit). likes(john,book). likes(mary,book). likes(tom,john). likes(john,X):-likes(X,john), X\=john. Привет, выше приведен оче…
28 апр '12 в 03:06
2 ответа

Как предотвратить дублирование в сгенерированных последовательностях с помощью dif/2?

Этот вопрос возник при ответе на другой вопрос о Stackru при (обобщении), генерирующий все последовательности, сформированные из конечного набора элементов без повторяющихся вхождений. Как правильно заметил Борис в комментариях, существует множество…
06 дек '14 в 19:11
1 ответ

Смена списка в прологе

Следующий код приводит к бесконечному циклу с возможной ошибкой "Out of Local Stack". По сути, я уменьшаю значение GX, пока оно не станет таким же, как MX. Пример ввода [[m,g,b],[w,w,w]], путь wallBlock('w'). wallBlock('b'). item('f'). item('p'). it…
03 дек '12 в 07:59
1 ответ

STRIPS Planner зацикливается бесконечно

В Прологе я определил Планировщик ПОЛОС для решения логических задач. После нескольких испытаний с другими более простыми проблемами я решил выяснить, может ли он решить более сложную проблему. Я дал ему СТРИПС определение пасьянса колышка, английск…
26 дек '16 в 00:42
3 ответа

Создать обведенный список в прологе

Я пытаюсь создать эту функцию в Прологе: % Signature: circleList(L1, L2)/2 % Purpose: L2 is a "circled" L1 list. % Precondition: L1 is fully instantiated. % Examples: % ?- circleList([2, 3, 4, 5], X). % X = [2, 3, 4, 5]; % X = [3, 4, 5, 2]; % X = [4…
10 июн '14 в 13:53
3 ответа

Для отсчета числа с помощью Пролога

Тривиальный вопрос, но я хочу, чтобы программа возвращала список чисел, меньших или равных данному числу. Например, CountD(4,L), должен дать [4,3,2,1], Это то, что я до сих пор: CountD(1,[]). CountD(Num,List):- [Num|List], CountD(M,List), Num is M+1…
01 дек '14 в 12:58
1 ответ

Обезьяна и банан в мышлении как вычисление

Я читаю книгу " Мышление как вычисление" и написал код в главе 9.4: plan(L) :- initial_state(I), goal_state(G), reachable(I, L, G). initial_state([]). legal_move(S, A, [A | S]) :- poss(A, S). goal_state(S) :- has_bananas(S). reachable(S, [], S). rea…
22 мар '16 в 07:52
1 ответ

Пролог - N-Queens викторина - бесконечный цикл

Это касается проблемы 8-куин. Я пытаюсь решить более общую проблему N-Queens. Цель состоит в том, чтобы заставить это правило показать мне все возможные ответы. Например: solution(Sol,4). X = [2, 4, 1, 3] ; X = [3, 1, 4, 2] ; false. Мне удалось полу…
22 июн '14 в 15:23
3 ответа

Предотвращение возврата после первого решения пары Фибоначчи

Семестр fib(N,F) верно, когда F это Nчисло Фибоначчи. Следующий код Пролога обычно работает для меня: :-use_module(library(clpfd)). fib(0,0). fib(1,1). fib(N,F) :- N #> 1, N #=< F + 1, F #>= N - 1, F #> 0, N1 #= N - 1, N2 #= N - 2, F1 #=…
2 ответа

В прологе почему не добавляется "край (X, Y):- край (Y, X)". работа по преобразованию определения ориентированного графа в неориентированный граф

Я только изучаю Пролог, и я рассматриваю конспекты лекций, и все примечания говорят о том, что: дано следующее определение для ориентированных графов: path(X, Y) :- edge(X, Y). path(X, Y) :- edge(X, Z), path(Z, Y). Если бы мы хотели сделать это неор…
14 апр '14 в 04:06
1 ответ

Эта программа сортировки пролога переполняет стек просто из-за его сложности - или потому, что это неправильно?

В предыдущем посте я в конце концов выяснил, как написать программу gprolog, которая проверяет, является ли один список перестановкой другого. Насколько я знаю, это работает. Теперь я создаю mysort Предикат, который сочетает в себе предикат перестан…
05 июл '13 в 21:55
2 ответа

Пролог Ошибка "Out of local stack"

Вот моя простая программа Пролог: friend(X,Y):- knows(X,Y). friend(X,Z):- friend(X,Y), friend(Y,Z). knows(brian,tom). knows(tom,peter). Если я наберу следующий запрос friend(brian,peter). Пролог выдаст следующий вывод: ?- friend(brian,peter). true Е…
13 фев '14 в 15:51
4 ответа

Лучшее завершение для s(X)-суммы

(Позвольте мне проникнуть в волну промежуточных вопросов.) Общее определение для суммы двух натуральных чисел nat_nat_sum/3: nat_nat_sum(0, N, N). nat_nat_sum(s(M), N, s(O)) :- nat_nat_sum(M, N, O). Строго говоря, это определение носит слишком общий…
3 ответа

Пролог - получить факторы для данного числа не останавливается?

Мне нужно найти факторы данного числа, например: ?- divisors2(40,R). R = [40,20,10,8,5,4,2,1]. Код: % get all the numbers between 1-X range(I,I,[I]). range(I,K,[I|L]) :- I < K, I1 is I + 1, range(I1,K,L). % calc the modulo of each element with th…
11 янв '13 в 07:26
0 ответов

Обнаружение некоторых циклов в целях Пролога, которые не заканчиваются универсально

TL;DR: этот вопрос об одном конкретном аспекте оценки кандидатов-сбоев-срезов. Следующий код ancestor_of/2 выражает транзитивное замыкание child_of/2: ancestor_of (X, Y): - child_of (Y, X). ancestor_of (X, Z): - child_of (Z, Y), ancestor_of (X, Y). …
3 ответа

Разбор выражения в Прологе и возврат абстрактного синтаксиса

Я должен написать parse(Tkns, T), который принимает математическое выражение в форме списка токенов и находит T, и возвращает инструкцию, представляющую абстрактный синтаксис, соблюдая порядок операций и ассоциативность. Например, ?- parse( [ num(3)…
11 дек '13 в 05:16