Föreläsning 15 Logik med tillämpningar 97-12-12. Innehåll u Programmeringsstil i Prolog u Expertsystem u Att kunna inför tentan u Kapitel 13 och 14.3.

Slides:



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

Livsåskådning och religion
Talföljder formler och summor
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Funktioner och programorganisation
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
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.
2D1311 Programmeringsteknik med PBL
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:
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Logikprogrammering Ons, 25/9
Föreläsning 7 Analys av algoritmer T(n) och ordo
1 Ingenjörsmetodik IT & ME 2009 Föreläsare Dr. Gunnar Malm.
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.
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
© 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 3: rekursion Teori –Introducera rekursiva definitioner i Prolog –Fyra exempel –Visa att.
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Detection of similarity between documents Axel Bengtsson Ola Olsson
Programmering B PHP Lektion 2
Logikprogrammering och Prolog
Etik och Moral Läran om rätt och fel.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Semantik – introduktion
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Logikprogrammering 21/10 Binära träd
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Föreläsning 6 Logik med tillämpningar F6 Innehåll u Resten om resolution u Varför så många olika beslutsprocedurer? u Teorembevisaren Otter.
Formell logik Kapitel 9 Robin Stenwall Lunds universitet.
Logik med tillämpningar
Logikprogrammering 16/ : operatorer Staffan Larsson.
Labgrupper: 2 pers/grupp fr o m lab 2 schema ENKÄT.
Föreläsning 4-5 Logik med tillämpningar
Matematisk statistik och signal-behandling - ESS011 Föreläsning 3 Igor Rychlik 2015 (baserat på föreläsningar av Jesper Rydén)
Föreläsning 11 Logik med tillämpningar Innehåll u Generell resolution u Kapitel i Ben-Ari.
Aritmetik 3.4 M 8.2 E 2.2. dagens föreläsning operatorer för aritmetik tillämpningar.
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.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
Satslogik, forts. DAA701/716 Leif Grönqvist 5:e mars, 2003.
Föreläsning 2 2D1312 Introduktion till Python Kap 1 och 2 i kursboken.
Föreläsning 16 Logik med tillämpningar Innehåll u Information kring kursvärdering och tentagenomgång u Genomgång av övningstenta 2.
Logik med tillämpningar
1 Semantik – introduktion Semantik = läran om mening Tvärvetenskapligt filosofi lingvistik psykologi AI Lingvistik motsägelser mångtydighet metaforer Filosofi.
Pontus Johansson 1 grammatiker 21.1 G 1 (BBS 7)
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.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
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.
1 Matlab, föreläsning 1 Oktober MATLAB Perspektiv på materialdesign Lina Kjellqvist Rum: K324 Telefon:
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Föreläsning 1-2 Logik med tillämpningar
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.
Lars Madej  Talmönster och talföljder  Funktioner.
Manada.se Kapitel 4 Ekvationer och formler. 4.1 Ekvationer och uttryck.
KPP053, HT2015 MATLAB, Föreläsning 4
Populärt brukar algebra ibland kallas för bokstavsräkning
Filosofisk logik Kapitel 15
Föreläsning 16: Tentan, att förbereda sig…
Presentationens avskrift:

Föreläsning 15 Logik med tillämpningar

Innehåll u Programmeringsstil i Prolog u Expertsystem u Att kunna inför tentan u Kapitel 13 och 14.3 i Sterling/Shapiro.

Hur ska man skriva program i Prolog?  Man skriver klausuler på formen sort(Xs, Ys) :- permutation(Xs, Ys), ordered(Ys). u Dvs, man skriver både klausulens huvud och samtliga delmål på egen rad. Delmålen indenteras till exempel med en tab.

u Man brukar normalt hålla samman definitionen av ett predikat; dvs, man skriver alla klausuler som definierar ett predikat efter varandra: u permutation([], []). permutation([X|Xs], Ys) :- permutation(Xs, Zs), insert(X, Zs, Ys). Programstil forts.

Anonyma variabler u De flesta prologsystem tillåter att man ersätter de variabler som förekommer endast en gång i en regel med en anonym variabel, för att understryka de variabler som är relevanta vid unifieringen. u member(X,[X | Xs]). member(X,[Y | Ys]) :- member(X,Ys). u member(X,[X | _]). member(X,[_ | Ys]) :- member(X,Ys).

Kommentarer u Alltid viktigt att kommentera koden! u Allt som står mellan % och radslut är en kommentar. Allt som står mellan /* och */ (inklusive radslut) är en kommentar. u Det är inte alltid nödvändigt att tala om hur en procedur fungerar, men man ska alltid tala om vad samtliga predikat i ett program gör. u Detta görs lämpligen på raden innan definitionen av relationen.

Läsbarheten hos ett program u Beror på layout och namn på variabler. u Predikatnamnen beskriver relationer mellan objekt i programmet. u Man har standardardiserade variabelnamn tex Xs, Ys etc för listor och X, Y för element. u ett_predikat och EnVariabel - man visar på två ord på olika sätt för predikat och variabler. u Det viktigaste är att man är konsekvent!

setof och bagof u Alla lösningar till en fråga kan samlas i en lista med hjälp av setof eller bagof. Skillnaden är att setof tar bort duplikat medan bagof verkligen ger alla lösningar. u setof(X,member(X,[a,b,d,a,e,b,c],Y). Y= [a,b,c,d,e] u bagof(X,member(X,[a,b,d,a,e,b,c],Y). X=_0, Y= [a,b,d,a,e,b,c]

Egna operatorer u Egna operatorer kan definieras med op. op tar tre argument, ett precedensvärde, operatorns associativ- itet samt operatornamnet. u Exempel:op(200, xfy, ^) u Precedensvärdet måste vara mellan 0 och (systemberoende). Associativiteten specificeras som en av fx, fy prefixoperator xf, yf postfixoperator xfx, xfy, yfx, yfy infixoperator

Egna operatorer forts. u Nuvarande precedens och associativitet kan efterfrågas med current_op. Varför inte prova lista alla op:ar med u bagof((X,Y,Z),current_op(X,Y,Z),Ls).

Systematiskt programmerande? u Kan vara enklare att programmera om man utgår från en skelettkod som byggs ut.  list([X|Xs]) :- list(Xs). list([]).  Kan byggas ut till: length([X|Xs], N) :- length(Xs, N1), N is N1+1. length([], 0).

Expertsystem u Ska härma en mänsklig expert och fatta de beslut hon skulle ha gjort. u Kan likna ett expertsystem med en svart låda. Vi skickar in ett antal input och vill få ett (eller flera) svar. u Hur fyller man lådan på bästa sätt? Logiska regelbaser, fuzzy logik, artificiella neurala nätverk, statistiska formler m.m. u En tillämpning inom AI - Artificiell Intelligens.

Några andra tillämpningar inom AI u Behandling av naturligt språk u Teorembevisning u Robotar u Automatisk programmering u Kombinatoriska och schemaläggnings problem u Perception - syn, hörsel etc

Eliza u En utmaning: Kan man programmera en dator så att den beter sig som en människa? eller Kan man se skillnad på en dators konversation och en människas? u Joseph Weizenbaum skrev ett program som skulle härma en psykoterapeuts sätt att närma sig en patient.

Eliza u Referens: Weizenbaum: ”Eliza - A computer program for the study of natural langauage communication between man and machine.” Communications of the ACM, Volym 9, Nummer 1, Januari u Finns implementerad i Emacs som kommandot ”doctor”

Exempel på dialog: I am unhappy. How long have you been unhappy? Six months. Can you help me? What makes you think I can help you? You remind me of my father and brother. Please tell me more about father …

Hur fungerar Eliza? u Matcha det som ges som input mot ett mönster som bildar ett standardsvar. Ex. I am (*). How long have you been (*)? I like (*). Does anyone else in your family like (*)? (*) you (**) me. What makes you think I (**) you? u Finns som Prolog-program sidan 275 i Shapiro.

Att kunna inför tentan u Följande kapitel ingår: –Ben-Ari: 1, , , , –Sterling-Shapiro: 1 - 3, , , 12.1, , 13, 14.1, 14.3

u Samtliga definitioner, speciellt viktiga är –Tolkning (interpretation) –Logisk ekvivalens –Satisfierbarhet, validitet, falsifierbarhet, motsägelse, tautologi –Beslutsprocedur –Satisfierbar mängd, modell –Logisk konsekvens –Teori, teorem, axiom –Atom, literal, kompletterande par –Sundhet och fullständighet –Gentzen och Hilbertsystem (dvs kunna beskriva dem inte bevisa i dem) Bevis, bevisbarhet –CNF, PCNF

u Definitioner forts. –Klausul, klausulform, klausulmängd, enhetsklausul –S  S’, subsumering –Tomma klausulen –Resolutionsproceduren –Relation, predikat, kvantifierare, funktioner, termer, stängda termer –Substitution –Fria och bundna variabler, universell och existensiell closure –Instansiering –Herbranduniversum, herbrandtolkning, herbrandbas, herbrandmodell –Grund term, grund klausul, grund literal, grund atom, horn klausuler

u Definitioner forts, –Mgu –Fakta, regler, mål (fråga), program –Meningen med ett logikprogram –Korrekt program, fullständigt program –Databas, rekursiva regler –Lista, träd –Negation as failure, closed world assumption, not i Prolog –Backtracking –Redundanta lösningar –=, ==, =:=, is, =/=, \==, = =, etc –typredikaten integer, atom, compound, constant, symbol, list –målordning, regelordning och hur det påverkar körningen av programmet

u Förstå samtliga teorem och deras bevis, speciellt: –Sambandet mellan  och  –Sammanhanget mellan validitet och osatisfierbarhet och mellan satisfierbarhet och falsifierbarhet –Teoremen sidan –Sambandet mellan  och  –De fyra lemmana som beskriver hur man minskar en klausulmängd så att S  S’ –E(  ) = (E  )  –  (  ) = (  )

u Boolska operatorer och deras sanningsvärden. u Använda sanningstabeller u Skriva om en formel med hjälp av logiska ekvivalenser (bl. a. fig 2.9 och fig 3.2) u Semantiska tablåer för sats- och predikatlogik u Veta vad en refuteringsmetod är u Omvandla en godtycklig formel till CNF, PCNF eller klausulform u Minska en klausulmängd S så att S  S’ u Utföra resolution u Kunna se på en formel vad som är variabler, konstanter, funktioner och predikat. u Utföra substitution, unifiering u Robinsons unifieringsalgoritm

u Standardisera isär variabler u SLD-resolution u Förklara vilka skillnader som finns mellan logikprogrammering i teorin och Prolog u Kunna tolka ett Prologprogram procedurellt och deklarativt (och veta skillnaden mellan detta!) u Kunna bygga ett sökträd för ett logikprogram u Följa konventionen när man programmerar i Prolog u Programmera i Prolog… u Veta vad som menas med rekursiva och iterativa program i Prolog u Skriva om ett rekursivt program till ett iterativt eller tvärtom. u functor/3, arg/3, =../2, var, nonvar u !, röda och gröna cut