book(signature_1,title_1,author_1,publisher_1,year_1).
book(signature_2,title_2,author_2,publisher_2,year_2).
book(signature_3,title_3,author_1,publisher_3,year_3).
book(signature_4,title_4,author_4,publisher_4,year_4).
book(signature_5,title_5,author_1,publisher_5,year_5).
journal(journal_id_1,title_1,volume_1,number_1,year_1).
journal(journal_id_2,title_2,volume_2,number_2,year_2).
journal(journal_id_3,title_3,volume_3,number_3,year_3).
journal(journal_id_4,title_4,volume_4,number_4,year_4).
journal(signature_5,title_5,volume_5,number_5,year_5).
user(id_1,surname_1,forename_1,born_1,address_1).
user(id_2,surname_2,forename_2,born_2,address_2).
user(id_3,surname_3,forename_3,born_3,address_3).
user(id_4,surname_4,forename_4,born_4,address_4).
user(id_5,surname_5,forename_5,born_5,address_5).
register(id_1,signature_1,borrow_date_1,return_date_1).
register(id_1,signature_2,borrow_date_2,return_date_2).
register(id_2,signature_1,borrow_date_3,return_date_3).
%%% Algebraic operations
sum(Id,Title,Year):-
book(Id,Title,_,_,Year);
journal(Id,Title,_,_,Year), not(book(Id,Title,_,_,Year)).
intersect(Id,Title,Year):-
book(Id,Title,_,_,Year),
journal(Id,Title,_,_,Year).
except(Id,Title,Year):-
book(Id,Title,_,_,Year),
not(journal(Id,Title,_,_,Year)).
projection(Title,Author,Year):-
book(_,Title,Author,_,Year).
selection(Signature,Title,Author,Publisher,Year):-
book(Signature,Title,Author,Publisher,Year),
Author = author_1.
cartesian_product(Signature,Uid):-
book(Signature,_,_,_,_),
user(Uid,_,_,_,_).
who_what_book(Uid,Surname,Name,Signature,Title,BorrowDate,ReturnDate):-
register(Uid,Signature,BorrowDate,ReturnDate),
user(Uid,Surname,Name,_,_),
book(Signature,Title,_,_,_).
Brak I/O
% Definicje działania bramek podstawowych
not(1,0).
not(0,1).
and(0,0,0).
and(0,1,0).
and(1,0,0).
and(1,1,1).
or(0,0,0).
or(0,1,1).
or(1,0,1).
or(1,1,1).
% Definicja przykładowego układu - xor
xor(Input1,Input2,Output) :-
not(Input1,N1),
not(Input2,N2),
and(Input1,N2,N3),
and(Input2,N1,N4),
or(N3,N4,Output).
% Przykładowe testy:
% xor(1,0,W), xor(1,I,1), xor(I1,I2,0)
Zapamiętywanie nowych faktów
Dla zaawansowanych
liczby-send
Dalsza rozbudowa bazy wiedzy PF, przepisz treść i zadaj pytania podane w
LPN.