Programovací jazyk Prolog

Slides:



Advertisements
Podobné prezentace
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Advertisements

Pojem FUNKCE v matematice
Deduktivní soustava výrokové logiky
Normalizace Řada analytiků se mylně domnívá, že pro každý objekt existuje jedno jediné univerzálně použitelné nejlepší řešení bez ohledu na řešený problém.
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Úvod do databázových systémů
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Uživatelem definované typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Seznamy v jazyce Haskell doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Predikátová logika 1. řádu
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Predikátová logika1 Predikátová logika 1. řádu Teď „logika naostro“ !
Algebra.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Principy překladačů Mezikód Jakub Yaghob.
Induktivní logické programování
Implementace konečného automatu v Prologu Tato část popisuje strukturu konkrétního automatu a bude se lišit pro každý automat. 1.Definice přechodové funkce:
Logické programování Úvodní přednáška.
2IT – PVY – objektové DBS Bc. Jiří Šilhán
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Formální axiomatické teorie Teorie relací a funkcí.
F U N K C E.
JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.
MATEMATIKA I.
Abeceda a formální jazyk
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Číselným oborem rozumíme číselnou množinu, na které jsou definovány bez omezení početní operace sčítání a násobení, tj. číselný obor je vzhledem k těmto.
Funkce Funkce f reálné proměnné x je předpis, který každému x e R přiřadí nejvíc jedno y e R tak, že y = f(x) Definiční obor funkce D je množina všech.
Základy λ- kalkulu doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Predikátová logika.
Predikátová logika.
JUI - 6. přednáška Úvod do jazyka Prolog, struktura programu, datové objekty, unifikace RNDr. Jiří Dvořák, CSc.
Přednáška 10 Logické programování, PROLOG (PROgramming in LOGic)
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Výroková logika.
Logické programování Přednáška číslo 2. 2 Programování v Prologu Programování v PROLOGu spočívá v – deklarování určitých faktů o objektech a relacích.
Programovací jazyk Haskell doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Databázové modelování
Formalní axiomatické teorie
Zpracování neurčitosti Fuzzy přístupy RNDr. Jiří Dvořák, CSc.
Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ.1.07/1.5.00/ Šablona:III/2č. materiálu:VY_32_INOVACE_86.
Relace, operace, struktury
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
Databázové systémy Informatika pro ekonomy, př. 18.
FUNKCE. Závislost délky vegetační sezóny na nadmořské výšce
MATEMATIKA Obsah přednášky Funkce. 3. Limita funkce
Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce
Procedurální (klasické) programování Popisuje algoritmus – postup, jak vyřešit úlohu.
Marie Duží vyučující: Marek Menšík Logika: systémový rámec rozvoje oboru v ČR a koncepce logických propedeutik pro mezioborová studia.
Rezoluční metoda 3. přednáška
Seznamy v jazyce Haskell Ing. Lumír Návrat  katedra informatiky, D-403 
Výroková logika.
Predikátová logika1 Predikátová logika 1. řádu Teď „logika naostro“ !
Procedurální (klasické) programování Popisuje algoritmus – postup, jak vyřešit úlohu.
VY_32_INOVACE_22-01 Posloupnosti.
Číselné obory 9.ročník Mgr. Miroslava Černá ZŠ Volgogradská 6B Ostrava-Zábřeh.
Funkce. Funkce - definice Funkce je zobrazení, které každému číslu z podmnožiny množiny reálných čísel R přiřazuje právě jedno reálné číslo. Funkci značíme.
Definiční obor a obor hodnot
PROLOG strategie vyhodnocení dotazu
Predikátová logika (1. řádu).
PROLOG PROgramování v LOGice
Matematická logika 5. přednáška
Sémantika PL1 Interpretace, modely
Predikátová logika.
Transkript prezentace:

Programovací jazyk Prolog doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava

Programovací jazyk Prolog Obsah Logický program Fakt, dotaz, pravidlo Term, substituce Logická proměnná Rekurzivní pravidla Seznamy Programovací jazyk Prolog

Programovací jazyk Prolog Úvod Hlavní myšlenka: Využití počítače k vyvozování důsledků na základě deklarativního popisu Postup: reálný svět  zamýšlená interpretace  logický model  program Výpočet - určení splnitelnosti či nesplnitelnosti cíle, případně včetně vhodných substitucí. Programovací jazyk Prolog

Programovací jazyk Prolog Logický program Fakta vek(petr, 30). vek(jana, 24). Pravidla starsi(X, Y) :- vek(X, V1), vek(Y, V2), V1 > V2. Dotazy ?- starsi(petr, jana). Yes Programovací jazyk Prolog

Programovací jazyk Prolog Co je to dotaz? Odpověď na dotaz vzhledem k programu = určení, zda je dotaz logickým důsledkem programu. Logické důsledky se odvozují aplikací dedukčních pravidel, např. P ├ P (identita) Je-li nalezen fakt identický dotazu, dostaneme Yes. Odpověď No znamená pouze to, že z programu nelze platnost dotazu vyvodit. Programovací jazyk Prolog

Předpoklad uzavřeného světa zvire(pes). zvire(kocka). ?- zvire(pes). Yes ?- zvire(zirafa). No => Předpokládáme platnost pouze toho, co je uvedeno v programu. Programovací jazyk Prolog

Programovací jazyk Prolog Logická proměnná Představuje nespecifikovaný objekt Jméno začíná velkým písmenem ?- vek(jana, X). X = 24. ?- vek(pavla, X). No Existuje X takové, že vek(jana, X) lze odvodit z programu? Pokud ano, jaká je hodnota X? Programovací jazyk Prolog

Programovací jazyk Prolog Kvantifikátory likes(X, beer). Pro všechna X platí likes(X, beer). ?- likes(X, beer). Existuje X takové, že likes(X, beer)? Programovací jazyk Prolog

Programovací jazyk Prolog Term Datová struktura definovaná rekurzivně: Konstanty a proměnné jsou termy Struktury jsou termy: funktor(arg1, arg2, …) funktor: jméno začínající malým písmenem argument: term Funktor je určen jménem a aritou f(t1, t2, …, tn) …. f/n Příklad: z/0 s/1 … z, s(z), s(s(z)), s(s(s(z))) Programovací jazyk Prolog

Programovací jazyk Prolog Substituce Základní term (ground term) neobsahuje proměnné s(s(z)) Substituce Konečná množina dvojic ve tvaru Xi=ti Aplikace substituce  na term A … A f(X, a) {X=g(z), Y=b} = f(g(z), a) Instance termu A je instancí B, existuje-li substituce  taková, že A = B f(g(z), a) je instancí termu f(X, a) Programovací jazyk Prolog

Programovací jazyk Prolog Konjunktivní dotazy ?- zvire(pes), zvire(kocka). Yes Sdílení proměnných: ?- vek(X, V), vek(Y, V). Existují X a Y se stejným věkem? Programovací jazyk Prolog

Programovací jazyk Prolog Pravidla A :- B1, B2, …, Bn. A = hlava pravidla B1, B2, …, Bn = tělo pravidla syn(X, Y) :- otec(Y, X), muz(X). deda(X, Y) :- otec(X, Z), otec(Z, Y). Proměnné jsou univerzálně kvantifikované. Platnost proměnných je celé pravidlo. Programovací jazyk Prolog

Programovací jazyk Prolog Rekurzivní pravidla a Definice grafu edge(a, b). edge(a, c). edge(b, d). edge(c, d). edge(d, e). edge(f, g). connected(N, N). connected(N1, N2) :- edge(N1, L), connected(L, N2). b c d f e g Programovací jazyk Prolog

Programovací jazyk Prolog Rekurzivní pravidla Přirozená čísla: nat(z). nat(s(X)) :- nat(X). leq(z, X) :- nat(X). leq(s(X), s(Y)) :- leq(X, Y). add(z, X, X). add(s(X), Y, s(Z)) :- add(X, Y, Z). Programovací jazyk Prolog

Programovací jazyk Prolog Pracujeme s relacemi ! add(s(z), s(z), X). X=s(s(z)) add(s(z), X, s(s(z))). X=s(z) add(X, Y, s(s(z))). X=z Y=s(s(z)) ; X=s(z) Y=s(z) ; X=s(s(z)) Y=z ; No Programovací jazyk Prolog

Programovací jazyk Prolog Seznamy list([]). list([X|Xs]) :- list(Xs). member(X,[X|Xs]). member(X,[Y|Ys]) :- member(X,Ys). ?- member(b, [a,b,c]). ?- member(X, [a,b,c]). ?- member(b, X) Programovací jazyk Prolog (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava

Programovací jazyk Prolog Úkol Vytvořte predikát times/3 reprezentující operaci násobení Vytvořte predikáty even/1 a odd/1 pro ověření, zda je zadané číslo sudé, resp. liché. Vytvořte predikát prefix/2 pro zjištění, zda je jeden seznam prefixem druhého seznamu. Programovací jazyk Prolog