ЯЗык "Пролог". Понятие базы знаний, определение. Задачи и упражнения, страница 3

%                     брат (Имя1, Имя2) %Человек с именем Имя1 является братом человеку с именем

%Имя2, если он мужчина, и они оба дети одних родителей

брат   (Имя1,  Имя2)   :   мужчина(Имя1),  дети_одних_родителей(Имя1,  Имя2), not(Имя1=Имя2).

%                                              сестра  (Имя1,  Имя2)  %Человек с именем Имя1 является сестрой человеку с именем %Имя2, если она жечшина, и они оба дети одних родителей сестра(Имя1,Имя2):женшина(Имя1),дети_одних_родителей(Имя1,Имя2),

not(Имя1=Имя2).

%дядя (Имя1, Имя2)   - Человек с именем Имя1 является дядей %              человеку с именем Имя2,   если он брат одного из

%                родителей челозека с именем Имя2.

дядя(Имя1,Имя2) :- брат(Имя1,ИмяЗ), родитель(ИмяЗ,Имя2).

%      тетя(Имя1,Имя2) - Человек с именем Имя1 является тетей %                человеку с именем Имя2,  если он сестра одного из

%родителей человека с именем Имя2.

тетя (Имя1, У1мя2)   :- сестра (Имя1,ИмяЗ) ,родитель (ИмяЗ,Имя2) .

/■к-к-к + кккк-к-кк* к -kk-kkkkkkk-kk-kk к ** + + ****- + ***+*****■*/

% дети_одних_родителей(Имя1,Имя2) %     Учеловека с именем Имя1 и человека

%     с именем Имя2 есть общий родитель.

дети одних_родителей {Имя1, Ямя2 ) :.—

родитель ( Род,Имя1), !,родитель(Род,Имя2) .

% предок(Имя1,Имя21 - Человек с именем Имя1 является % предком человеку с именем Имя2.

предок(Имя1,Имя21:-родитель(Имя1,Имя2).

предок(Имя1, Имя2):-родитель(Имя1, ИмяЗ),предок(Имя3, Имя2).

Ъпотомок(Имя1,Имя2) - Человек с именем Имя1 является

% потомком человеку с именем Имя2.

потомок(Имя1,Имя2):-предок(Имя2,Имя1).


Факты для базы знаний "Родственные отношения" Определяются факты папа, мама, мужчина, женщина

% папа(Имя1,Имя2) - человек с именем Имя1 является папой % человеку с именем Имя2.

папа ("Игорь","Юра").  %чтобы писать имена с большой папа("Игорь","Даша"). %буквы, необходимо заключать их папа("Игорь","Саша"). %вкавычки, иначе ЭВМ воспримет папа("Игорь","Миша"). %их как переменные, папа("Игорь","Оля") . папа ( "Вася","Юля") . папа("Вася","Толя").

папа("Иван","Игорь"). папа("Иван","Вася"). папа("Иван","Ира").

% мама (Имя 1,Имя 2) - человек с именем Имя1 являетсямамой

%                   человеку с именем Имя2.

мама ("Мария" , "Юра").

мама("Мария","Даша").

мама("Мария","Саша") .

мама("Мария","Миша") .

мама("Мария" , "Оля").

мама("Вера" , "Юля").

мама("Вера", "Толя") .

мама("Агафья","Игорь").

мама("Агафья","Вася" ) .

мама("Агафья","Ира") .

/ + + ** + ****** + ** + ***************** + ****** + ■»-*****/

% мужчина (Имя) - человек с именем Имя является мужчиной мужчина("Игорь"). мужчина("Юра") мужчина("Саша").


мужчина ("Миша") мужчина("Вася"). мужчина("Иван"). мужчина("Толя"). I********** ************ ************************ ^

% женщина (Имя)  - человек с именем Имя является женщиной

^ A*************.*********** w ******************** ^

женщина("Мария"). женщина("Даша"). женщина("Оля"). женщина("Вера"). женщина("Юля"). женщина("Агафья"). женщина("Ира").

/*---- Конецпрограммы "Родственные отношения" --- */

Разбор программы предоставляем читателю.

2.2. Базазнаний "Школа"

Рассмотрим базу знаний из школьной жизни. Пусть вбазе имеются факты вида:

оценка (<фамилия>,<предмет>,<балл>).

Например, база может содержать следующий набор фактов об оценках:

оценка (Иванова,литература,5). оценка (Иванова,математика,5). оценка (Иванова,музыка,5). оценка (петров,физика,4). оценка (петров,химия,3). оценка (петров,литература,5). оценка (васечкин,литература,2). оценка (васечкин,музыка,4). оценка (васечкин,физика,5).