Описание тега successor-arithmetics

Successor arithmetics, in Prolog also known as s(X)-notation or s(X)-numbers, is an encoding of the natural numbers based on Peano Axioms. Zero is represented by 0, one is represented as the successor of zero s(0), two as the successor of one s(s(0)) etc.
3 ответа

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

вот код плюс, который я не понимаю plus(0,X,X):-natural_number(X). plus(s(X),Y,s(Z)) :- plus(X,Y,Z). пока дано: natural_number(0). natural_number(s(X)) :- natural_number(X). Я не понимаю эту рекурсию. Если у меня есть plus(s(0),s(s(s(0))),Z) как я м…
12 июн '11 в 15:33
3 ответа

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

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

Рекурсивное сложение в Прологе с числами Пеано не работает

В настоящее время я пытаюсь попрактиковаться в Прологе. Я только начал, и я столкнулся с проблемой, которую я не совсем понимаю. Я хочу рекурсивно определить, является ли одно число Пеано двойным другого. Я пытался решить это так: isDouble(0, X,X). …
21 ноя '17 в 19:14
1 ответ

Функция с SUCC

У меня есть некоторые проблемы с этим упражнением COTO(0,y)=y COTO(x+1,y)=SUCC(SUCC(COTO(x, SUCC(y))) COTO (1,3); COTO (2,2); COTO (3,44) - ? Я знаю, что SUCC(2) = 3, например, но у меня до сих пор нет идей по этому вопросу. Кто-нибудь может помочь?…
0 ответов

СМС-пролог

Я пытаюсь найти наименьшее общее кратное число двух Пеано в прологе это мой код: %LCM lcm(A,B,C):- prod(A,B,R),gcd(A,B,S),divide(R,S,C). У меня есть ложный вывод: ?- lcm(s(s(0)),s(s(s(0))),Q). false. Я не знаю, где не так с моим кодом Огромное спаси…
01 дек '17 в 11:58
1 ответ

Получить продукт из пунктов списка с помощью рекурсии в Прологе?

Как получить продукт из элементов списка с помощью рекурсии? Если я спрашиваю: product([s(0), s(s(0)), s(s(0))], S). Результат должен быть: S = s(s(s(s(0)))). Но я получаю неправильные результаты. Или нет результатов. Я старался: product([], 0). pro…
10 ноя '18 в 22:49
1 ответ

Функция преемника в Прологе

В вопросе, который я недавно столкнулся на экзамене по логическому программированию на университетском уровне, меня попросили запрограммировать предикат Пролог, odd/1, который определяет, является ли данное значение нечетным. Реализация должна была …
18 мар '14 в 11:46
3 ответа

Я пытаюсь создать язык a^n b^n-1 c^n-2, используя DCG, но не могу сделать succ(0) для обработки n

s(Count) --> a(Count), b(Count), c(Count). a(0) --> []. a(succ(Count)) --> [a], a(Count). b(0) --> []. b(succ(succ(Count))) --> [b], b(Count). c(0) --> []. c(succ(succ(succ(Count)))) --> [c], c(Count). Что ж, легко создать такой…
03 дек '18 в 06:34
1 ответ

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

Я использую SWI Prolog, в моей домашней работе используется следующий код (код не домашняя, но необходим для написания методов, необходимых для курса): nat(0). nat(s(X)) :- nat(X). plus(0,N,N) :- nat(N). plus(s(M),N,s(Z)) :- plus(M,N,Z). times(0,N,0…
3 ответа

Разделение двух целых чисел альтернативным способом

Давайте рассмотрим, что n=s(s(...s(0)...)) (просто n= s^n(0)). Как можно написать программу, вычисляющую деление двух целых чисел? Я имею в виду s^(n//m) (это определение деления). Есть идеи? Например, если у нас возник вопрос: ?-divide(s(s(s(s(0)))…
01 май '15 в 22:03
1 ответ

Преемник Арифметическая функция Prolog Mod

Как написать функцию mod/3 для арифметики-преемника (числа Пеано) в прологе?
17 окт '16 в 04:58
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). Строго говоря, это определение носит слишком общий…
6 ответов

Пролог считает с использованием s(0) и p(0)

У меня есть некоторые проблемы с частью моей ревизии для моего экзамена по прологу. Мне нужно создать рекурсивное утверждение, которое будет называться упрощением /2. Пример использования будет simplify(s(p(s(0))),Z) что приведет к Z будучи с (0). S…
15 май '14 в 17:34
3 ответа

Что такое дерево SLD для этого запроса?

Рассмотрим следующую программу Пролог (из "Искусство Пролога"): natural_number(0). natural_number(s(X)) :- natural_number(X). plus(X, 0, X) :- natural_number(X). plus(X, s(Y), s(Z)) :- plus(X, Y, Z). и запрос: ?- plus(s(s(s(0))), s(0), Z). И SICStus…
31 окт '12 в 16:43
1 ответ

Предикат в прологе, который верен, если A меньше или равно B

Я хочу написать предикат test(A,B) в прологе, что верно, если A меньше или равно B. Примеры для запроса (должен возвращать true): test(s(s(0)), s(s(s(0)))). test(s(s(s(0))), s(s(s(0)))). Это код, который я написал до сих пор: test(0,0). test(0, s(B)…
17 июн '18 в 15:05
2 ответа

Не равная операция в swi-прологе

Я пытаюсь сравнить два числа Пеано в прологе, но некоторые результаты неверны. Любой может помочь мне, это мой код: %Not Equal notequal(0,s(A),X). notequal(s(A),0,X). notequal(s(A),s(B),C):- A/=B . ИЛИ ЖЕ %Not Equal notequal(0,s(A),X). notequal(s(A)…
01 дек '17 в 10:26
5 ответов

Преобразовать число Пеано s(N) в целое число в прологе

Я наткнулся на эту оценку натуральных чисел логических чисел в учебнике, и это доставляло мне некоторую головную боль: natural_number(0). natural_number(s(N)) :- natural_number(N). Правило примерно гласит, что: если N является 0 это естественно, есл…
1 ответ

Пролог не завершается по запросу с 2 аргументами

Я новичок в Прологе и у меня есть вопрос к упражнению по программированию: У меня есть программа, которая, по моему мнению, работает большую часть времени, но с конкретным запросом я не получаю ответ is_number(0). is_number(s(N)) :- is_number(N). nu…
12 ноя '17 в 12:06
1 ответ

Компьютерные рассуждения о любопытном выводе Пролога Булоса

Любопытный вывод Бооло был изначально сформулирован здесь с уравнениями. Это рекурсивное определение функции f и предиката d с помощью синтаксиса N+, натуральных чисел без нуля, сгенерированных из 1 и s(.). Но это также может быть сформулировано с п…
06 окт '16 в 12:42
1 ответ

Каковы оптимальные зеленые срезы для суммы арифметики преемника?

Чтобы получить зеленые сокращения в Прологе, я пытаюсь добавить их к стандартному определению суммы в арифметике-преемнике (см. Предикат plus Что такое дерево SLD для этого запроса?). Идея состоит в том, чтобы "очистить" вывод как можно больше, искл…