Описание тега constraint-handling-rules

Constraint Handling Rules is a declarative constraint logic programming language.
1 ответ

Представление логических дизъюнкций в правилах обработки ограничений

Я пишу решатель ограничений в Прологе, который реализует простую логическую формулу: "(alive(A) and animal(A)) iff (awake(A) or asleep(A))", Я нашел один способ реализовать его в правилах обработки ограничений, но он гораздо более многословен, чем и…
08 май '17 в 00:04
1 ответ

Как избежать бесконечной рекурсии с помощью правил обработки ограничений

Я написал простой набор ограничений в SWI-Prolog, используя правила обработки ограничений. Он использует два относительно простых правила вывода: %If A means B, then B means A. means(A,B) ==> means(B,A). %If A means B and A means C, then B means …
1 ответ

Определение ограничений CHR во время выполнения

Я пытаюсь написать программу, которая генерирует новые ограничения во время выполнения в SWI-Prolog. is_true([A,means,B]) предназначен для создания другого ограничения во время выполнения: :- use_module(library(chr)). :- chr_constraint is_true/1. is…
12 авг '17 в 23:12
1 ответ

Использование constraint_handlers в C++

У меня есть код в C#, который использует функцию _set_invalid_parameter_handler. Это специфично для Windows, и я пытаюсь переписать этот код на стандартном C++, чтобы он работал на Linux. Я не уверен, как перевести этот функционал. Мне посоветовали …
11 июл '17 в 13:05
1 ответ

Как вы можете посчитать, количество возвратов в Prolog SWI или CHR Prolog SWI

Я создаю несколько решателей головоломок в Prolog SWI с CHR (Правила обработки ограничений) Все отлично работает, но мне нравится проверять, какой решатель лучший. Поэтому мне нравится выяснять, какой решатель использует наименьшее количество возвра…
0 ответов

Общий метод для переноса кода в Eclipse CLP в CHR

Мой вопрос немного общий, но ответ на мой конкретный вопрос может быть очень полезным. Общий вопрос: "Существует ли какой-либо общий метод для передачи кода в прологе Eclipse CLP в код правил обработки ограничений (CHR)?". Я знаю, что код CHR все ра…
0 ответов

Ограничение направления в CHR (правила обработки ограничений)

Я знаю об ограничении каналов в контексте программирования ограничений. Кроме того, я могу увидеть некоторые примеры реализации ограничения канализации в EclipseCLP здесь. В качестве примера в EclipseCLP, предположим, что есть две переменные A а так…
0 ответов

Формат заголовков ограничений в CHR

Я новичок в CHR, и мне было интересно, имеет ли смысл иметь функции в качестве аргументов для заголовков ограничений в правиле. Я знаю, что в теле правила это возможно. Например C(X-Y) легально здесь? C(X), C(X-Y), C(Y) => C(X * Y)
1 ответ

Вывод решения CHR в прологе

Я бегу программу CHR учебник в SWI-Пролог. :- use_module(library(chr)). :- chr_constraint fib/2. f0 @ fib(0,M) ==> M=1. f1 @ fib(1,M) ==> M=1. fn @ fib(N,M) ==> N>=2 | N1 is N-1, fib(N1,M1), N2 is N-2, fib(N2,M2), M is M1+M2. Все идет хо…
1 ответ

Поведение CHR в прологе SWI для простого и () правила

Я пробовал простую программу в SWI-Prolog с использованием библиотеки CHR. Ответы на вопросы для меня очевидны, но отслеживание сбило меня с толку. Я начал только с одного правила. and(X,Y,Z) <=> Y = 0 | Z = 0. Трассировка имеет смысл ?- and(A…
08 авг '19 в 17:37
1 ответ

Снижение ограничений в Prolog

Одна из недавних задач, связанных с появлением кода, ставит перед мной задачу решить для наименьшего количества входного материала, который я могу использовать, чтобы применить заданный набор реакций и получить 1 единицу выходного материала. Наприм…
1 ответ

Создание двунаправленного правила в CHR и CLP / FD

В качестве примера. Предположим, что все, что красное, имеет значение 5. Я пишу следующее: :- use_module(library(chr)). :- use_module(library(clpfd)). :- chr_type color ---> red ; blue. :- chr_constraint hasColor(?any, ?color). :- chr_constraint …
29 ноя '19 в 02:54
2 ответа

Правила обработки ограничений в SWI Prolog: существует ли "хранилище ограничений" только на время обработки целей верхнего уровня?

Я внимательно изучаю правила обработки ограничений (CHR), чтобы понять, могу ли я их понять (в том смысле, что здесь вычисляется и как классическая логика и даже линейная логика вписываются в это) и, возможно, применить их. В книге Тома Фрювирта от …
08 дек '19 в 14:08
3 ответа

Решение цепных реакций в прологе

Одна из недавних задач, связанных с появлением кода, ставит перед мной задачу решить для наименьшего количества входного материала, который я могу использовать для применения заданного набора реакций и получения 1 единицы выходного материала. Наприм…
15 дек '19 в 08:17
0 ответов

Есть ли способ изменить порядок правил CHR во время выполнения в прологе?

Я пишу программу на Прологе для художественных целей, сильно полагаясь на большой набор правил CHR. Я хотел бы иметь возможность запускать много раз, но каждый раз выводить разные результаты. Самый простой способ сделать это - каждый раз недетермини…
25 дек '19 в 00:27
1 ответ

Создание ограничений декомпозиции для ограничений

Рассмотрим следующую схему: :- use_module(library(chr)). :- chr_constraint a/1, b/1. % really there will be many of these, possibly 100s % some rules about how to replace as with bs, e.g., a(1),a(1) <=> b(2). % a way to decompose, e.g., b(2) &…
1 ответ

tau-prolog не будет запускать код пролога, в котором я использую библиотеку CHR, хотя он работает на SWI-Prolog

Я пытаюсь использовать тау-пролог для запуска кода CHR, и он дает эту ошибку throw(error(existence_error(procedure, '/'(color, 1)), '/'(top_level, 0)))хотя он отлично работает на SWI-Prolog это код пролога :-use_module(library(chr)). :- chr_constrai…
0 ответов

CHR в SWI Prolog: Защита правил, содержащая ограничение "только что удаленное", не возвращается, удаляет стек

Небольшой тестовый код без особого смысла: :- use_module(library(chr)). :- chr_constraint foo/1, bar/1, anyone/2. foo(X) \ bar(Y) <=> anyone(X,Y). anyone(_,Y) <=> bar(Y) | writef("bar(%w) exists\n",[Y]). anyone(_,Y) <=> writef("bar…
1 ответ

Правила обработки ограничений в SWI Prolog: в каком порядке накладываются ограничения на хранилище?

Я изучаю правила обработки ограничений (CHR) в swi-prolog. Я начал с учебного пособия из « Правила обработки ограничений» Тома Шрайверса - Учебное пособие для (Prolog) программистов . Часть путаницы заключается в том, что в каком порядке помещать ог…
2 ответа

Правила обработки ограничений в SWI Prolog: ограничение neq не работает

Я изучаю правила обработки ограничений (CHR) в swi-prolog. Я начал с учебника Тома Шрайверса « Правила обработки ограничений. Учебник для (Пролог)-программистов » . На стр. 286 автор привел пример реализации ограничения неравенства. :- use_module(li…