Wprowadzenie do Prologa

Podobne dokumenty
Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd.

Wstęp do Prolog. Wykonali: Rafał Denkiewicz, Rafał Rutkowski, Kacper Rękawiecki

Programowanie w logice

PODSTAWY SZTUCZNEJ INTELIGENCJI

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

Programowanie deklaratywne

Programowanie w logice

Laboratorium przedmiotu Paradygmaty Programowania

Programowanie w Logice

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Programowanie deklaratywne

Deklarowania faktów dotyczących obiektów i związków między nimi. Definiowania reguł dotyczących obiektów i związków między nimi.

Języki programowania deklaratywnego

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Projekt 4: Programowanie w logice

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Języki programowania zasady ich tworzenia

Adam Meissner.

Programowanie w Logice Struktury danych (Lista 2)

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Prezentacja do pobranie:

RBD Relacyjne Bazy Danych

Programowanie w logice Prolog 1

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Języki programowania deklaratywnego

Metoda Tablic Semantycznych

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

CLP Programowanie logiczne z ograniczeniami.

LOGIKA Klasyczny Rachunek Zdań

Uzgadnianie formuł rachunku predykatów

Semantyka rachunku predykatów

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Internet Semantyczny i Logika I

Programowanie w logice Wykład z baz danych dla

Matematyczne Podstawy Informatyki

Logika stosowana. Ćwiczenia Programowanie w logice i PROLOG. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski

SZTUCZNA INTELIGENCJA

Składnia rachunku predykatów pierwszego rzędu

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.1 Elementy języka Prolog: fakty i zapytania. Przemysław Kobylański

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Reguły gry zaliczenie przedmiotu wymaga zdania dwóch testów, z logiki (za ok. 5 tygodni) i z filozofii (w sesji); warunkiem koniecznym podejścia do

Problem. Uzgadnianie wyrażeń rachunku predykatów. Instancja wyrażenia. Podstawienie termu za zmienną. Joanna Józefowska

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

Programowanie w języku C++ Grażyna Koba

Definicje. Algorytm to:

Języki programowania sztucznej inteligencji Piotr Fulmański

Inżynieria wiedzy. Katedra Wytrzymałości Materiałów i Metod Komputerowych Mechaniki 1. Podstawy programowania w języku CLIPS

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Rachunek logiczny. 1. Język rachunku logicznego.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Klasyczny rachunek predykatów

Programowanie w języku Python. Grażyna Koba

Podstawy Sztucznej Inteligencji (PSZT)

Podstawy programowania skrót z wykładów:

4. Funkcje. Przykłady

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Szablony funkcji i klas (templates)

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

PROLOG INNE PRZYKŁADY MACIEJ KELM

Cw.12 JAVAScript w dokumentach HTML

Elementy logiki matematycznej

Programowanie w Logice Środowisko programowania i dialog z systemem (Lista 0)

Dana jest baza: kobieta(katarzyna). kobieta(anna). kobieta(maria). kobieta(marianna). kobieta(marta). Zdefiniujemy predykat kobiety/0 następująco:

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Bazy danych TERMINOLOGIA

Podstawy programowania w Pythonie

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań

Logika dla socjologów Część 4: Elementy semiotyki O pojęciach, nazwach i znakach

Programowanie w logice Prolog 2

Dedukcyjne bazy danych i rekursja

Metody wnioskowania. Wnioskowanie w przód (ang. forward chaining) Wnioskowanie w tył (ang. Backward chaining) Od przesłanki do konkluzji Np..

Dariusz Banasiak. Instytut Informatyki, Automatyki i Robotyki. Politechniki Wrocławskiej

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

Programowanie deklaratywne i logika obliczeniowa

Semantyka rachunku predykatów pierwszego rzędu. Dziedzina interpretacji. Stałe, zmienne, funkcje. Logika obliczeniowa.

1 Podstawy c++ w pigułce.

Programowanie w logice Prolog. Piotr Fulmański

Technologie informacyjne - wykład 12 -

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Kwerendy (zapytania) wybierające

Notacja. - operator implikacji, - operator koniunkcji v operator alternatywy - operator równoważności ~ operator negacji Duża litera (np.

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie),

ZASADY REDAGOWANIA PRACY LICENCJACKIEJ

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Podstawy języka PROLOG

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki. Wykład 14. Wprowadzenie do logiki intuicjonistycznej

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Języki formalne i automaty Ćwiczenia 6

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Programowanie w Logice

JAVAScript w dokumentach HTML (1)

Transkrypt:

Wprowadzenie do Prologa Rozdział 1 Tutorial Introduction Maciej Gapiński Dominika Wałęga

Spis treści 1. Podstawowe informacje 2. Obiekty i relacje 3. Reguły 4. Fakty 5. Zapytania 6. Zmienne i stałe

Podstawowe informacje Prolog to jeden z najpopularniejszych języków programowania logicznego. Nazwa tego języka to akronim powstały od PROgramowania w LOGice (ang. programming in logic). Jest to język deklaratywny - nie zapisujemy algorytmu rozwiązującego dany problem. Opisujemy problem tak, by system mógł sam wywnioskować jakie jest jego rozwiązanie. Definiujemy dany problem (obiekty związane z problemem i relacje pomiędzy tymi obiektami), a nie sposób jego rozwiązania. Prolog jest wykorzystywany w wielu programach związanych z: - logiką w informatyce - sztuczną inteligencją - przechowywaniem i przetwarzaniem danych - rozwiązywaniem problemów abstrakcyjnych

Podstawowe informacje Współcześnie jest dostępny szereg implementacji, w tym swobodnie ogólnodostępne kompilatory. SWI-Prolog: http://www.swi-prolog.org GNU-Prolog: http://www.gnu-prolog.inria.fr

Podstawowe informacje

Podstawowe informacje Nazwy relacji i obiektów muszą zaczynać się małymi literami. Nazwy rozpoczynające się od dużej litery oznaczają zmienne. Zaczynamy od zapisu relacji. Następnie dopisujemy rozdzielone przecinkami oraz ujęte w okrągły nawias obiekty Nazwy obiektów występujących w nawiasach nazywamy argumentami Nazwy relacji znajdującej się przed nawiasem nazywamy predykatem

Obiekty i relacje W omawianym języku definiujemy obiekty i określamy wiążące je relacje. Nie podajemy z czego składa się dany obiekt i co można z nim zrobić, ale jaki on jest. Opisujemy również relacje jakim obiekt ten podlega. Najprostszym sposobem opisu obiektu, jest podanie faktów z nim związanych, jak na przykład: mniejszy(mysz, slon). mysz jest mniejsza od słonia ciezszy(arbuz, gruszka). arbuz jest cięższy od gruszki W podanych przykładach określamy obiekty (mysz, słoń, arbuz, gruszka) i wiążemy je relacją (mniejszy, cięższy).

Obiekty i relacje Tworzymy przykładowy dokument (Plik PL (.pl)):

Obiekty i relacje Po uruchomieniu programu, możemy mu zadawać pytania:

Obiekty i relacje Prolog nie wie, że w stosunku do relacji może stosować przechodniość. W ten oto sposób dochodzimy do sytuacji, gdy musimy poinformować program o pewnych relacjach, czyli określić reguły.

Obiekty i relacje

Reguły Reguł używamy, gdy jeden fakt zależy od grupy innych faktów. W języku polskim tworzymy takie reguły za pomocą słów jeżeli, jeśli itp. Przykłady: Jeżeli pada deszcz, zabieram ze sobą parasolkę. Wchodzę na spacer, jeśli świeci słońce. Reguły używane są również do zapisywania definicji. Przykłady: X jest ptakiem, jeżeli: X jest zwierzęciem. X posiada pióra.

Reguły Na regułę składa się głowa oraz ciała. Połączone są one symbolami dwukropka i myślnika. Głowa składa się z jednego predykatu. Ciało reguły może być połączeniem dowolnej ilości warunków (oddzielanych przecinkami - oznaczającymi logiczne and). Przykłady: Adam lubi tylko tanie i zdrowe przekąski. lubi(adam, X) :- tanie(x), zdrowe(x). Aby spełniona była przesłanka reguły, spełnione muszą być wszystkie jej cele.

Reguły

Fakty Fakt to zdanie otrzymane przez wstawienie do określonego w programie predykatu wartości zmiennych(obiektów), dla których jest ono prawdziwe. Przykłady: lubi(adam,ewa). Fakt Adam lubi Ewę. lubi(ewa,adam). Fakt Ewa lubi Adama.

Fakty Fakty odnoszą się również do relacji. Relacje mogą mieć dowolna ilość argumentów. Przykłady: gra(adam,ewa,szachy). Fakt Adam i Ewa grają w szachy. jedzenie(ewa,adam,jablko). Fakt Ewa i Adama jedzą jabłko.

Fakty Nazwy wszystkich relacji i obiektów muszą zaczynać się małymi literami - lubi(adam,ewa). Nazwy obiektów występujące w nawiasach nazywamy argumentami. Nazwę relacji znajdującą się przed nawiasem nazywamy predykatem - gra(adam,ewa,szachy) Zbiór faktów nazywamy bazą danych

Fakty i reguły kończymy kropką.

Zapytania Gdy znamy już fakty możemy zadawać pytania. W tym celu przed frazą umieszczamy znak zapytania i myślnik (?-) Przykłady:?- posiada(adam,rower). Pytanie: Czy istnieje fakt mówiący, że Adam posiada rower? Wpisane przez Nas pytanie musi być zakończone kropką, po której naciskamy klawisz Enter (celem wysłania go do systemu). Prolog przeszuka całą dostępną bazę danych (fakty i reguły) i jeśli zostanie znalezione coś, co pasuje do zapytania i zwraca przy tym wartość logiczną prawda, zostanie zwrócona odpowiedź yes; w przeciwnym razie no. Zamiast szukać odpowiedzi na pytanie Czy Adam ma rower?, możemy chcieć zapytać Co ma Adam?. Przykład:?- posiada(adam,x).

Zapytania Przykłady: lubi(jas,piernik). lubi(jas,malgosia). lubi(malgosia,cukierek). lubi(malgosia,piernik). Możemy konstruować zapytania złożone, np.?- lubi(jas,malgosia), lubi(malgosia,jas). czyli: Czy prawdą jest, że Jaś lubi Małgosię i Małgosia lubi Jasia? Lub?- lubi(jas,x), lubi(malgosia,x). czyli: Szukam tego wszystkiego co lubi zarówno Jas jak i Małgosia. Odpowiedź na pytanie o to co lubi Jaś lub Małgosia uzyskamy zapytaniem:?- lubi(jas,x); lubi(malgosia,x).

Zmienne i stałe Zmienna - relacja może być rozumiana jako funkcja określona na pewnym zbiorze obiektów. Wówczas przez zmienną rozumiemy dowolny, ale nie ustalony element z dziedziny jakiejś relacji. Nazwy zmiennych są atomami rozpoczynającymi się zawsze wielką literą. Przykład: Relacja student/2, która jest prawdziwa jeśli argumentami są nazwisko studenta i nazwa przedmiotu na egzaminie z którego ściągał. Wstawiając do niej zmienne (Kowalski,Origami) otrzymamy predykat prawdziwy dla par utworzonych przez konkretne nazwisko i odpowiadający mu przedmiot(y). Jeśli bazą programu jest zbiór: student(a,teoria_pola). W wyniku otrzymamy: 1? student(kowalski,origami). Kowalski = a, Origami = teoria_pola ;

Zmienne i stałe Stała - konkretny obiekt (np: a, kowalski, 111) lub konkretna relacja (litera, nazwisko, liczba,:-). Stałe dzielimy na: Liczby Atomy (są zbudowane z dowolnych symboli ewentualnie ujętych w pojedynczy cudzysłów przy czym zawsze zaczynają się małą literą)

Netografia http://fulmanski.pl/zajecia/prolog/wyklad.pdf http://ki.pwr.edu.pl/kobylanski/prolog/ http://home.agh.edu.pl/~gjn/dydaktyka/lecrbs/gjn-labprolog/node2.html http://math.uni.lodz.pl/~kowalcr/lodz_paradygmaty_z/prologbook.pdf https://pl.wikipedia.org/wiki/prolog_(język_programowania)