Paradygmaty programowania/Test 7: Programowanie w logice - przegląd

From Studia Informatyczne

Test 7

Używane w Prologu klauzule Horna mają w następniku:

co najmniej jeden term

dokładnie jeden term

dokładnie dwa termy

zero lub jeden term

Stosowana w Prologu metoda wnioskowania to:

indukcja pozaskończona

rezolucja

unifikacja

zasada instancjonowania prostego

Klauzula "dziadek(X, Z) :- ojciec(X, Y), ojciec(Y, Z).":

mówi tylko, że jeśli X jest ojcem Y i Y jest ojcem Z, to X jest dziadkiem Z

wyklucza, by któs mógł być swoim własnym dziadkiem

wyklucza, by któs mógł być swoim własnym ojcem

jest niepoprawna składniowo

Do tworzenia i rozkładania list w Prologu stosuje się:

funkcje cons, head i tail

operatory ++, + i -

operator | i odpowiednie dopasowania

w Prologu nie ma list

Zapis "X is 3 * Y + 4" w Prologu powoduje:

podstawienie wartości wyrażenia 3*Y+4 pod zmienną X

utożsamienie (lub sprawdzenie utożsamienia) zmiennej X z wartością wyrażenia 3*Y+4

wypisanie rozwiązania równania X=3*Y+4

taki zapis jest niepoprawny

Jeśli Prologowi nie uda się udowodnić jednego z podcelów, to:

wraca do poprzednich podcelów, próbując znaleźć alternatywne rozwiązania

wypisuje komunikat o niepowodzeniu rezolucji

zgłasza błąd wykonania

nie robi nic, tzn. kontynuuje działanie

Dla stwierdzeń złożonych Prolog stosuje:

przeszukiwanie w głąb

przeszukiwanie wszerz

przeszukiwanie w głąb lub wszerz, w zależności od dostępnej pamięci

inną metdoę, nie wymienioną tutaj

Zapis [X | Y] w Prologu oznacza:

konkatenację list X i Y

listę, gdzie X jest głową, a Y -- ogonem listy

parę uporządkowaną złożoną z elementów X i Y

wyrażenie warunkowe z dozorem X

Jaką klauzulę należałoby dopisać przed ,,f(X, [_ | Y]) :- f(X, Y).", by otrzymać funktor sprawdzający przynależność elementu do listy?

f(X, []).

f(X, [X]).

f(X, [X | _]).

tego nie da się tak zrobić

Lista [1, [2, 3], 4, []] ma długość:

3

4

5

jest niepoprawna składniowo