Логическое программирование

Слайд 2

АЛЬТЕРНАТИВА predicates nondeterm classify(integer,symbol) clauses goal classify(45,positive). Yes goal classify(45,What). What=positive

АЛЬТЕРНАТИВА

predicates
nondeterm classify(integer,symbol)
clauses
goal classify(45,positive).
Yes
goal classify(45,What).
What=positive
1 solution


classify(0,zero).
classify(X,negative):- X < 0.
classify(X,positive):- X > 0.

classify(X,Y):-X=0,Y=zero;
X<0,Y=negative;
X>0,Y=positive.

clauses

Слайд 3

СОСТАВНЫЕ ОБЪЕКТЫ ДАННЫХ Позволяют интерпретировать некоторые части информации как единое целое

СОСТАВНЫЕ ОБЪЕКТЫ ДАННЫХ

Позволяют интерпретировать некоторые части информации как единое целое таким

образом, чтобы затем можно было легко разделить их.
domains
data = data(symbol, integer, integer)
person = person(symbol, symbol)
birthday = birthday(person, data)
predicates people(birthday)
clauses people(birthday(person(“Leo”,”Jensen”),data(april,14,1960))).
goal
D = birthday(person(ivan,ivanov),data(december,25,1991)),write(D).
%people(birthday(person(Name, _), data(_, Day, Year))),write(Name,’ ‘,Day, ‘ ‘,Year).
Слайд 4

Альтернативные структуры domains articles=book(title, author) ; horse(name) ; boat ; bankbook(balance)

Альтернативные структуры

domains
articles=book(title, author) ;
horse(name) ; boat ;


bankbook(balance)
title, author, name=symbol
balance=real
predicates
owns(name,articles)
clauses
owns(john, book("A friend of the family", "Irwin Shaw")).
owns(john, horse(blacky)).
owns(john, boat).
owns(john, bankbook(1000)).
Слайд 5

РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ Пролога можно заставить решать логические задачи, что недоступно

РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ

Пролога можно заставить решать логические задачи, что недоступно

большинству процедурных языков.
Многие логические задачи связаны с рассмотрением нескольких конечных множеств с одинаковым количеством элементов, между которыми устанавли-вается взаимно-однозначное со-ответствие. На языке Пролог эти множества можно описывать как базы знаний, а зависимости между объектами устанавливать с помощью правил.
Задача. В автомобильных гонках три первых места заняли Алеша, Петя и Коля. Какое место занял каждый из них, если Петя занял не второе и не третье место, а Коля - не третье?