Правило - фраза, значення істинності якої залежить від істинності значень умов, що утворюють тіло правила. Форма запису:
заголовок:-
тіло.
Форма запису заголовка відповідає формі запису факту (без крапки наприкінці).
Позначення “:-“ читається як “якщо”. Тобто, якщо істинні всі предикати, що входять у тіло, то заголовок стає фактом.
Кожна умова, що входить у тіло, називається підціллю. Підцілі можуть зв’язуватися або “,” – “і”, або “;” – “або”. У першому випадку для істинності заголовка правила необхідно, щоб кожна підціль, що входить у тіло, була істиною.
Представимо правило, що включає 2 конъюнктивно зв’язані підцілі:
“Студент одержить залік, якщо
він здав всі лабораторні роботи
I
він успішно написав контрольну роботу”.
Подання подцелей складе явну частину БД, що зберігає факти lab/1 і check/1 відповідно. Числа, що стоять після косої, указують кількість аргументів - арность предиката. Такий запис посилання на предикат необхідний тому, що Arity/Prolog предикати з тим самим ім’ям і різної арності обробляє як різні невзаємопов’язані фрази.
|
|
Єдиним аргументом і lab/1, і check/1 є ідентифікатор студента.
Неявна частина БД буде містити безпосередньо вище певне правило, представлене exam/1 з аргументом -ідентифікатором студента.
% Програма 1.2: студент, що здав лаб. роботи(прізвище студента)
lab(ivanov).
lab(petrov).
% студент, що успішно написав контр.роботу(прізвище студента)
check(sidorov).
check(petrov).
% студент, що склав іспит(прізвище студента)
ехаm(Х):-
lab(X),
check(X).