Я прочитал короткую статью о Прологе и логическом программировании. Мне любопытно, могут ли логические программы выполнять алгебру. Как бы вы могли спросить, что такое переменная X в уравнении 5 + X = 7 и получить ответ -2?
Мне любопытно, могут ли логические программы делать алгебру
Ответы (4)
Все серьезные системы Prolog обеспечивают программирование логики ограничений в конечных областях, называемое для краткости CLP(FD), с помощью которого вы можете легко решать многие такие уравнения. Например, с SICStus Prolog, SWI и Yap:
?- use_module(library(clpfd)).
true.
?- 5+X #= 7.
X = 2.
Судя по всему, ответ 2 вместо -2. Также ознакомьтесь с программированием логики ограничений по сравнению с другими областями, такими как рациональные числа с библиотекой (clpq).
Да, Пролог может делать алгебру.
Если вы ищете в Google Prolog и CAS (система компьютерной алгебры) вы получите много результатов.
например Использование Пролога в качестве CAS
Если вы понимаете, что Prolog = Синтаксическая унификация + обратная цепочка + REPL,
затем поймите, что именно объединение лежит в основе решения проблем/уравнений, вы можете столкнуться с рассуждениями об уравнениях, которые используются для решения проблем, содержащих равенство (=). Эта же логика также используется с автоматическими средствами доказательства теорем и помощники по проверке.
Если вы посмотрите здесь, вы найдете prolog.ml, который реализует унификацию и обратную цепочку в этом автоматизированном средстве доказательства теорем.
Вы также должны проверить переписывание терминов и поищите в Google переписывание терминов, чтобы узнать больше о науке решения уравнений с использованием термов.
На Прологе существует несколько реализаций систем компьютерной алгебры, в том числе упроститель уравнений и Решатель уравнений PRESS. Существует также несколько решателей ограничений для линейных и нелинейных уравнений, в том числе CLP(R,Q) и CLP (BNR), а также несколько других решателей, реализованных с использованием правила обработки ограничений.
Вместо реализации системы компьютерной алгебры в Прологе также можно реализовать интерпретатор Пролога в системе компьютерной алгебры. Например, есть статья, описывающая реализацию система программирования на основе правил в Mathematica. Существует также реализация системы логического программирования в системе Mathematica из архива библиотеки Wolfram.
Также возможно реализовать логические программы в Sympy, используя его унификацию. алгоритм.
Как насчет этого? Обратите внимание, что это будет работать только для X+Y=Z
.
equation(X,Y,Z):- var(X),X is Z-Y.
equation(X,Y,Z):- var(Y),Y is Z-X.
equation(X,Y,Z):- var(Z),Z is X+Y.
Вы можете спросить:
equation(5,X,7).
X = 2 .
?- equation(2,5,X).
X = 7.
?- equation(X,5,7).
X = 2
equation(1, 1, 2)
терпит неудачу, но equation(1,1,Z), Z = 2
удается.
- person false; 01.08.2018