Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "© Patrick Blackburn, Johan Bos & Kristina Striegnitz Logikprogrammering –Undervisningsmaterialet NYTT för 2013: –Learn Prolog Now! –SWI Prolog-tolk, startas."— Presentationens avskrift:

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

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

3 © 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

4 © 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

5 © 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.

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

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

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

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

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

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

12 © 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

13 © 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

14 © 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

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

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

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

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

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

20 © 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

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

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

23 © 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. ?-

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

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

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

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

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

29 © 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

30 © 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

31 © 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

32 © 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

33 © 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

34 © 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

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

36 © 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 ?-

37 © 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

38 © 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.

39 © 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

40 © 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).

41 © 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

42 © 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 ?-

43 © 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 ?-

44 © 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

45 © 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

46 © 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).

47 © 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

48 © 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.

49 © 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!

50 © 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

51 © 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

52 © 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

53 © 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?

54 © 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 ?-

55 © 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).

56 © 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 ?-

57 © 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).

58 © 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 ?-

59 © 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

60 © 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?

61 © 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

62 © 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!

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

64 © 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

65 © 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

66 © 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

67 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

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

69 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)

70 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)

71 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.

72 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

73 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!

74 © 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

75 © 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: :, ;. :-

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

77 © 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!

78 © 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

79 © 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))))

80 © 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

81 © 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

82 © 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).

83 © Patrick Blackburn, Johan Bos & Kristina Striegnitz Övningar

84 © 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

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


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

Liknande presentationer


Google-annonser