© Patrick Blackburn, Johan Bos & Kristina Striegnitz Logikprogrammering –Undervisningsmaterialet NYTT för 2013: –Learn Prolog Now! –SWI Prolog-tolk, startas.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Snabbguide och tips.
I detta bildspel reflekterar kollegor i olika ämnen tillsammans över språkliga handlingar i klassrummet. Underlag till diskussionen är den uppgift som.
Golv, väggar, tak. fönster och en dörr
hej och välkomna EKVATIONER Ta reda på det okända talet.
E-post juni 2013.
Funktioner och programorganisation
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
Prolog, Mån 16/9 Rebecca Jonson.
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 4: Listor (kap. 4 & 6) Teori –Introducera listor, en viktig rekursiv datastruktur som ofta används.
Logikprogrammering Ons, 25/9
Dcg-notation 21.2 G 2.3 M (BBS 8). dagens föreläsning extra argument i dcg-notation prolog-anrop i dcg-notation avslutande kommentarer om dcg.
Introduktion Logikprogrammering HT-02 Staffan Larsson.
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Föreläsning 2 Datalogi för E1 2D1343
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 7: Cut och negation (kap. 10) Teori –Förklarar hur man kontrollerar Prologs backtracking-beteende.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Föreläsning 2 Teori –Unifiering –Unifiering i Prolog –Sökning efter bevis Övningar –Ett lite större.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Föreläsning 3: rekursion Teori –Introducera rekursiva definitioner i Prolog –Fyra exempel –Visa att.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 6: Definite Clause Grammars (kap. 7) Teori –Introducerar kontextfria grammatikor och några besläktade.
Prolog PROgramming LOGic (programmation en logique)
Presupposition gemensam kunskap som inte behöver påstås eller förklaras förutsatt information - bakgrundsantaganden konventionaliserade bärare av implicit.
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Programmering B PHP Lektion 2
Logikprogrammering och Prolog
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Byggnadsmekanik gk 2.1 SNITTKRAFTER
Formell logik Kapitel 1 och 2
Medvetande - Yttervärld. Är världen så som den ser ut?
Subjekt, predikat, objekt Huvudsats, bisats
Exder EPC. Exder EPC Välkommen! I det här bildspelet går vi igenom hur man lägger upp nya artiklar samt skickar artikelinformation. Du bläddrar framåt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Logikprogrammering 21/10 Binära träd
Internkonferens i Webbvetenskap. Webbvetenskap En ny vetenskap närmare bestämt en tvärvetenskap med ett studieobjekt – webben som teknologisk artefakt.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
INTRODUKTION TILL PROGRAMMERING
Kenneth Wilhelmsson 1 Logikprogrammering 10 P Onsdag 20 november 2002.
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Formell logik Kapitel 9 Robin Stenwall Lunds universitet.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Logikprogrammering 16/ : operatorer Staffan Larsson.
Labgrupper: 2 pers/grupp fr o m lab 2 schema ENKÄT.
KNÄCKNING STELA BALKAR INSTABILITETSFENOMENET
Aritmetik 3.4 M 8.2 E 2.2. dagens föreläsning operatorer för aritmetik tillämpningar.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Föreläsning 9 Logik med tillämpningar Innehåll u Semantiska tablåer i predikatlogiken u Klausulform u Herbrandmodeller u Kapitel 3.5,
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
Retoriska arbetsprocessen
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
1 Semantik – introduktion Semantik = läran om mening Tvärvetenskapligt filosofi lingvistik psykologi AI Lingvistik motsägelser mångtydighet metaforer Filosofi.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Logikprogrammering ons 4/9 Rebecca Jonson.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Moralfilosofins historia (MORIA) John Eriksson Department of Philosophy, Linguistics and Theory of Science.
Att räkna med bokstäver
FTEA12:2 Filosofisk Metod Grundläggande argumentationsanalys II.
Formell logik Kapitel 5 och 6
Formell logik Kapitel 1 och 2
Formell logik Kapitel 7 och 8
Presentationens avskrift:

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Logikprogrammering –Undervisningsmaterialet NYTT för 2013: –Learn Prolog Now! –SWI Prolog-tolk, startas under tuxedo/pingvinerna med swipl

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Learn Prolog Now!

© Patrick Blackburn, Johan Bos & Kristina Striegnitz SWI Prolog Gratis Prolog-tolk –Lesser GNU Public License Fungerar på –Linux, –Windows –Mac OS Det finns många olika Prolog-tolkar Alla följer inte ISO-standarden

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Föreläsning 1 Teori –Introduktion till Prolog –Fakta, regler och förfrågningar. –Prologs syntax Exercises (“hemläxa”) –Praktisk träning

© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 1: innehåll Ge några enkla exempel på Prologprogram Presentera Prologs tre grundstrukturer: –Fakta (Facts) –Regler (Rules) –Förfrågningar (Queries) Introducera andra begrepp, bl a –logikens roll –unifiering mha variabler Börja studera Prolog systematiskt genom att definiera termer, atomer och variabler.

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prolog "Programming with Logic" Deklarativt Mycket olikt andra (procedurala) programmeringsspråk Bra för kunskapsintensiva uppgifter

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs historia s/1990s 2005 första Prolog-tolken av Colmerauer och Roussel

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs historia s/1990s 2005 implementation av en DEC10-kompilator av Warren

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs historia s/1990s 2005 Definite Clause Grammars implementation av Pereira och Warren

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs historia s/1990s 2005 Prolog blir mera populärt, speciellt i Europa och Japan

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs historia s/1990s 2005 Prolog används för att programmera naturligt språk-gränssnitt i International Space Station av NASA

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs grundidé Beskriv den relevanta situationen Ställ en fråga Prolog härleder logiskt nya fakta gällande den situation vi beskrivit Prolog delger oss sina slutsatser som svar

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Konsekvenser Tänk deklarativt, inte proceduralt –Utmanande –“Requires a different mindset” Högnivåspråk –Inte så effektivt som ex. C –Bra när det gäller att producera snabba prototyper –Nyttigt i många AI-applikationer

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. Ska skrivas in i en separat fil, som laddas med ex. ?- [prolog/lesson1]. filen i exemplet skulle heta prolog/lesson1.pl ej med

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- woman(mia).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- woman(mia). yes ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- woman(mia). yes ?- playsAirGuitar(jody).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- woman(mia). yes ?- playsAirGuitar(jody). yes ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- woman(mia). yes ?- playsAirGuitar(jody). yes ?- playsAirGuitar(mia). no

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- tattoed(jody).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- tattoed(jody). no ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- tattoed(jody). ERROR: predicate tattoed/1 not defined. ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- party.

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- party. yes ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- rockConcert.

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). party. ?- rockConcert. no ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). fact

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). fact

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). fact rule

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). fact rule

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). fact rule

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). headbody

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). ?- playsAirGuitar(mia). yes ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 2 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). ?- playsAirGuitar(mia). yes ?- playsAirGuitar(yolanda). yes

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Satser (clauses) happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). Det finns fem satser i den här kunskapsbasen: två fakta och tre regler. Slutet på en sats markeras med en punkt.

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Predikat happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda). Det finns tre predikat i den här kunskapsbasen: happy, listens2music, och playsAirGuitar

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 3 happy(vincent). listens2music(butch). playsAirGuitar(vincent):- listens2music(vincent), happy(vincent). playsAirGuitar(butch):- happy(butch). playsAirGuitar(butch):- listens2music(butch).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Att uttrycka konjunktion happy(vincent). listens2music(butch). playsAirGuitar(vincent):- listens2music(vincent), happy(vincent). playsAirGuitar(butch):- happy(butch). playsAirGuitar(butch):- listens2music(butch). Kommat “,” uttrycker konjunktion (and/och) i Prolog

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 3 happy(vincent). listens2music(butch). playsAirGuitar(vincent):- listens2music(vincent), happy(vincent). playsAirGuitar(butch):- happy(butch). playsAirGuitar(butch):- listens2music(butch). ?- playsAirGuitar(vincent). no ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 3 happy(vincent). listens2music(butch). playsAirGuitar(vincent):- listens2music(vincent), happy(vincent). playsAirGuitar(butch):- happy(butch). playsAirGuitar(butch):- listens2music(butch). ?- playsAirGuitar(butch). yes ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Att uttrycka disjunktion (eller/or) happy(vincent). listens2music(butch). playsAirGuitar(vincent):- listens2music(vincent), happy(vincent). playsAirGuitar(butch):- happy(butch). playsAirGuitar(butch):- listens2music(butch). happy(vincent). listens2music(butch). playsAirGuitar(vincent):- listens2music(vincent), happy(vincent). playsAirGuitar(butch):- happy(butch); listens2music(butch). gärna

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prolog och Logik Prolog har klart något med logik att göra... Operatorer –Implikation :- (P -> Q: Q :- P) –Konjunktion, (och) –Disjunktion ; (eller) Använder modus ponens Negation “Q om P” A -> B A _______ B

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 4 woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs variabler woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- woman(X). Stor begynnelsebokstav signalerar variabel

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Instantiering av variabler woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- woman(X). X=mia X instantieras till första värdet som hittas i kunskapsbasen som gör påståendet sant.

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Att fråga efter alternativ woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- woman(X). X=mia; Tryck på semikolon eller spacebar!

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Att fråga efter alternativ woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- woman(X). X=mia; X=jody

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Att fråga efter alternativ woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- woman(X). X=mia; X=jody; X=yolanda

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Att fråga efter alternativ woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- woman(X). X=mia; X=jody; X=yolanda; no ‘no’ signalerar att det inte finns flera svar

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 4 woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- loves(marsellus,X), woman(X). Finns det nån kvinna som marsellus älskar?

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 4 woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- loves(marsellus,X), woman(X). X=mia yes ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 4 woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- loves(pumpkin,X), woman(X).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 4 woman(mia). woman(jody). woman(yolanda). loves(vincent, mia). loves(marsellus, mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). ?- loves(pumpkin,X), woman(X). no ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 loves(vincent,mia). loves(marsellus,mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). jealous(X,Y):- loves(X,Z), loves(Y,Z). ?- jealous(marsellus,W).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 loves(vincent,mia). loves(marsellus,mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). jealous(X,Y):- loves(X,Z), loves(Y,Z). ?- jealous(marsellus,W). W=vincent ?-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 loves(vincent,mia). loves(marsellus,mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). jealous(X,Y):- loves(X,Z), loves(Y,Z). En aningen speciell definition av svartsjuka; X är svarsjuk på Y ifall både X och Y älskar samma Z. X Y Z

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 loves(vincent,mia). loves(marsellus,mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). jealous(X,Y):- loves(X,Z), loves(Y,Z). Hur skulle du ändra predikatet jealous för att beskriva situationen där man är svartsjuk på den som älskas av den som man själv älskar?

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 jealous(X,Y):- loves(X,Z), loves(Z,Y). Hur skulle du ändra predikatet jealous för att beskriva situationen där man är svartsjuk på den som älskas av den som man själv älskar? X Z Y

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 jealous(X,Y):- loves(X,Z), loves(Z,Y). X Z Y Obs! Eftersom Prologs unifiering fungerar såsom den fungerar, kommer denna definition också att innebära att man är svartsjuk på sig själv, ifall kärleken är besvarad; det finns ingenting som hindrar X och Y från att bindas till samma objekt!

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 jealous(X,Y):- loves(X,Z), loves(Z,Y). X Y Z fallet X = Y

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 jealous(X,Y):- loves(X,Z), loves(Z,Y). X Y Z Ifall vår kunskapsbas innehåller fall där någon älskar sig själv (mycket psykologiskt sunt nog!), får vi ännu konstigare situationer... fallet X = Z = Y

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 jealous(X,Y):- loves(X,Z), loves(Z,Y). X Z Denna person skulle också vara patologiskt svartsjuk på alla de andra personer han/hon älskar... fallet X = Z Y

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Kunskapsbas 5 jealous(X,Y):- loves(X,Z), loves(Z,Y). X Y Z För att undvika dessa tolkningar måste vi explicit förbjuda vissa bindningar i reglerna, ex. X \= Y. Vi ska se närmare på dessa i nästa kapitel, unifiering. fallet X = Z = Y

Strangelove...(konstiga bindningar) ?- [strangelove]. % strangelove compiled 0.00 sec, 7 clauses true. ?- listing. jealous(A, C) :- loves(A, B), loves(B, C). loves(jason, medeia). loves(medeia, jason). loves(medeia, khrysis). loves(jason, jason). true. © Patrick Blackburn, Johan Bos & Kristina Striegnitz jason medeia krysis

Strangelove...(konstiga bindningar) ?- jealous(medeia, X). X = medeia ; X = jason ; false. © Patrick Blackburn, Johan Bos & Kristina Striegnitz jason medeia krysis

Strangelove...(konstiga bindningar) [trace] ?- jealous(medeia, X). Call: (6) jealous(medeia, _G337) ? creep Call: (7) loves(medeia, _G407) ? creep Exit: (7) loves(medeia, jason) ? creep Call: (7) loves(jason, _G337) ? creep Exit: (7) loves(jason, medeia) ? creep Exit: (6) jealous(medeia, medeia) ? creep X = medeia ; © Patrick Blackburn, Johan Bos & Kristina Striegnitz jason medeia krysis medeia som älskar jason är svartsjuk på den som jason älskar (= medeia)

Strangelove...(konstiga bindningar) Redo: (7) loves(jason, _G337) ? creep Exit: (7) loves(jason, jason) ? creep Exit: (6) jealous(medeia, jason) ? creep X = jason ; © Patrick Blackburn, Johan Bos & Kristina Striegnitz jason medeia krysis medeia som älskar jason är svartsjuk på den som jason älskar (= jason)

Strangelove...(konstiga bindningar) Redo: (7) loves(medeia, _G407) ? creep Exit: (7) loves(medeia, khrysis) ? creep Call: (7) loves(khrysis, _G337) ? creep Fail: (7) loves(khrysis, _G337) ? creep Fail: (6) jealous(medeia, _G337) ? creep false. © Patrick Blackburn, Johan Bos & Kristina Striegnitz jason medeia krysis Eftersom khrysis som medeia också älskar inte älskar någon, behöver medeia inte vara svartsjuk på denna någon.

Vad lär vi oss om detta? ALLT du skriver i reglerna tar Prolog bokstavligen. Prolog kommer att hitta alla de konstiga konsekvenser som dina regler kan ha. På detta sätt hjälper Prolog dig att skriva logiska definitioner utan luckor. Om du inte lär dig att täcka luckorna blir du snart din egen syster eller farfar. © Patrick Blackburn, Johan Bos & Kristina Striegnitz

Kunskapsbas 5 loves(vincent,mia). loves(marsellus,mia). loves(pumpkin, honey_bunny). loves(honey_bunny, pumpkin). jealous(X,Y):- loves(X,Z), loves(Y,Z). Observera att det är vi/programmeraren som ger mening åt predikaten och dess argument, inte systemet!

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Prologs syntax Vad exakt består fakta, regler och förfrågningar av? Terms Simple TermsComplex Terms ConstantsVariables AtomsNumbers Terms Simple TermsComplex Terms ConstantsVariables AtomsNumbers

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Atomer En sekvens av stora och små bokstäver, siffror eller understreck som börjar med en liten bokstav Exempel: butch, big_kahuna_burger, playGuitar En arbiträr sekvens av tecken innesluten inom apostrofer Exempel: 'Vincent', 'Five dollar shake', En sekvens av specialtecken Exempel: :, ;. :-

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Tal Integers: 12, -34, Floats:

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Variabler En teckensekvens som kan bestå av stora eller små bokstäver, siffror och ‘_’ och börjar med antingen en stor bokstav eller ‘_’. Exempel: X, Y, Variable, Vincent, _tag Stor begynnelsebokstav signalerar ALLTID en variabel!

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Komplexa termer Atomer, tal och variabler är byggklossar för komplexa termer Komplexa termer byggs av en funktor som direkt åtföljs av en sekvens av argument Argumenten ges inom vanliga parenteser (), och separeras av kommatecken Funktorn måste vara en atom

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Exempel på komplexa termer Exempel vi redan sett : –playsAirGuitar(jody) –loves(vincent, mia) –jealous(marsellus, W) Komplexa termer inne i komplexa termer: –hide(X,father(father(father(butch))))

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Aritet Antalet argument en komplex term kräver kallas för dess aritet Exempel: woman(mia) är en term med aritet 1 loves(vincent,mia) har aritet 2 father(father(butch)) har aritet 1

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Aritet är viktig I Prolog kan du definiera två predikat med samma funktor men med olika aritet Prolog skulle betrakta dessa som två olika predikat I Prolog-dokumentation anges ariteten av ett predikat vanligtvis med suffixet "/” efterföljt av ett nummer som representerar antalet argument

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Exempel på aritet Den här kunskapsbasen definierar –happy/1 –listens2music/1 –playsAirGuitar/1 happy(yolanda). listens2music(mia). listens2music(yolanda):- happy(yolanda). playsAirGuitar(mia):- listens2music(mia). playsAirGuitar(yolanda):- listens2music(yolanda).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Övningar

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Sammandrag Enkla exempel på Prologprogram Introducerade tre baskonstruktioner i Prolog: –Fakta –Regler –Förfrågningar Diskuterade andra begrepp, såsom –logikens roll –unifiering mha variabler Definition av Prologs byggstenar: termer, atomer och variabler

© Patrick Blackburn, Johan Bos & Kristina Striegnitz Nästa föreläsning Diskuterar unifiering i Prolog Prologs sökstrategi