Συμβολική επεξεργασία
Με βάση μεταβλητές και όρους μπορούμε να γράψουμε ένα πρόγραμμα
που να αναγνωρίζει πολυώνυμα ορισμένα με τον παρακάτω τρόπο:
- sum(A, B) (άθροισμα)
- diff(A, B) (διαφορά)
- prod(A, B) (γινόμενο)
- quot(A, B) (πηλίκο)
- pow(A, B) (ύψωση σε δύναμη)
- τη μεταβλητή X
- καθώς και ακεραίους.
polynomial(X, X).
polynomial(N, X) :-
number(N).
polynomial(sum(A, B), X) :-
polynomial(A, X),
polynomial(B, X).
polynomial(diff(A, B), X) :-
polynomial(A, X),
polynomial(B, X).
polynomial(prod(A, B), X) :-
polynomial(A, X),
polynomial(B, X).
polynomial(quot(A, B), X) :-
polynomial(A, X),
number(B).
polynomial(pow(A, B), X) :-
polynomial(A, X),
integer(B).
Ερωτήσεις:
?- p(sum(x, 1), x).
->.
yes
?- p(sum(x, 1), y).
no
?- polynomial(sum(prod(5,pow(x, 2)), prod(2, x)), x).
->.
yes
?- polynomial(sum(prod(5,pow(x, 2)), pow(y, 3)), x).
no
?- polynomial(sum(prod(5,pow(x, 2.1)), prod(2, x)), x).
no