Lådmodellen....eller procedure box control flow model. Dynamisk bild av ett prologprogram Förklarar i detalj procedurell läsning av ett program.

Relevanta dokument
Föreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1).

Centrala begrepp i prolog och logikprogrammering. Annamaris lista

DD1361 Programmeringsparadigm HT16

DD1361 Programmeringsparadigm HT17

DD1361 Programmeringsparadigm HT15

Prova på-laboration i Prolog

Föreläsning [ ] i programmeringsparadigm. Om multiparadigm-språket OZ och en tjock bok.

Logikprogrammering. Undervisningsmaterialet NYTT för 2013: Learn Prolog Now! SWI Prolog-tolk, startas under tuxedo/ pingvinerna med swipl!

Föreläsning 11 i programmeringsparadigm. Boxmodellen i Sicstus-manualen.

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Föreläsning 8. newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK -- data istället för newtype krävs om >1 konstruerare.

Nada KTH 2004 jan 12 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13

Föreläsning 10 i programmeringsparadigm. Boxmodellen för append.

Föreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.

En#kort#introduk+on#+ll#LaTeX#

Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006

Traditionell Programmering

Vad är det? Översikt. Innehåll. Vi behöver modeller!!! Kontinuerlig/diskret. Varför modeller??? Exempel. Statiska system

3. Steg för steg. Kör IPv6 på riktigt med FortiGate! Principen är enkel:

Föreläsning 3: rekursion

Tentamen i. TDDA 69 Data och programstrukturer

Innehåll: Föreläsning 1-2. Hur kan vi nås? Kursens mål: Kursmaterial. Examination. Logik med tillämpningar

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

LABORATION 1. Inledande Lisp - rekursion

Tentamen: Programutveckling ht 2015

Artificiell Intelligens Lektion 4

Nada Tentamensdag 2004 okt 18 Tentamen Programmeringsparadigm Skrivtid 5 h

Datalogi, grundkurs 1

Föreläsning 8. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.

FL 6: Definite Clause Grammars (kap. 7)

Kanban är inte din process. (låt mig berätta varför) #DevLin Mars 2012

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Semantik och pragmatik

SwemaMultipoint Bruksanvisning

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Länkning av Prolog under C


2 Eclipse en handledning

ARBETSMATERIAL FÖR LÄSAREN

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

Exceptions (undantag) Murach s: kap 7

Retail Academics/ Research Institute o Origin from Center for Retailing

JAWS Nätverksauktorisering

SB168-ES och M7CL Quick Setup Guide Svensk version

Eclipse en handledning

kl Tentaupplägg

729G43'Ar*ficiell'intelligens' Kunskapsrepresenta*on' Kunskapsrepresenta*on' Kunskapsbaserade'agenter' Kunskapsbaserad'agent' Arne'Jönsson' HCS/IDA' '

STAR NEWS. Det saknas fortfarande många Holokroner. Officiell lägertidning för Star Camp 2016

TDDC74 Lab 02 Listor, sammansatta strukturer

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

FactoryCast HMI. Premium & Quantum PLC. FactoryCast HMI epost-tjänst

EU gemensamma regler för drönare. Rémi Vesvre

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

STAR NEWS. Lördag den 6 augusti Darth Vader i Kopparbo

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Grundläggande logik och modellteori

Code-Lite tutorial ( /RoJ)

2.1 Installation of driver using Internet Installation of driver from disk... 3

Logikprogrammering. KŠnnetecken. Exempel pœ relation. Relationer. Varianter. KŠnnetecken och fšrutsšttningar Prolog

Föreläsning 11 i programmeringsparadigm. Negering.

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

JAR som tar eller zip. Java. Exekvering

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Ett Logikprogram. Logik och Programmering. Introduktion till PROLOG, dvs. PROgramming in LOGic. Viktiga begrepp/områden i Prolog. Framtiden?

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

DD1350 Logik för dataloger. Fö 2 Satslogik och Naturlig deduktion

Procedurer och villkor

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

Programmeringsteknik F1/TM1

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

Datorövning 2 Matlab/Simulink. Styr- och Reglerteknik för U3/EI2

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet.

Programmering II (ID1019) :00-12:00

STAR NEWS. Förstärkningen är här!

BDM12 Användarbeskrivning. Introduktion

KAP 18 SQL SERVER AGENT

Resultat av den utökade första planeringsövningen inför RRC september 2005

Mr. Adam Smith Smith's Plastics 8 Crossfield Road Selly Oak Birmingham West Midlands B29 1WQ

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Sista delen av kursen

Djupstruktur och ytstruktur

manual Bluetooth car handsfree Road talk Item: Linocell

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.

Balanserade Styrkort. (Balanced Scorecard) En aptitretare från VisVires AB

Uppdatera Easy Planning till SQL

1 Den normala kartbilden

Tentamen i Grundläggande Programvaruutveckling, TDA548

UNIX verktyg. Användbara kommandon Fil och informationssökning Tags Versionshanteringssystem

Del : Paradigmer allmänt.

Installationsmanual Onepix RSS Vatech SVENSK

Logisk semantik I. 1 Lite om satslogik. 1.1 Konjunktioner i grammatisk bemärkelse. 1.2 Sant och falskt. 1.3 Satssymboler. 1.

Dugga Datastrukturer (DAT036)

Introduktion till Haskell

Manuell installation av SQL Server 2008 R2 Express SP2 fo r SSF Timing

TIDOMAT PW32. Nyheter i version 9.0. Dokumentet beskriver nya funktioner och tillägg samt förbättringar från version 8.51

SITHS. Integration SITHS CA Copyright 2015 SecMaker AB Författare: Andreas Mossnelid Version 1.2

Transkript:

Lådmodellen...eller procedure box control flow model. Dynamisk bild av ett prologprogram Förklarar i detalj procedurell läsning av ett program.

Lådmodellen...eller procedure box control flow model. Dynamisk bild av ett prologprogram Förklarar i detalj procedurell läsning av ett program. Bra förklaringsmodell för ett Prologsystem Bra för avlusning! SWI Prolog använder lådmodellen i sin trace-funktion.

Lådmodellen: byggstenen Goal name En låda per mål/predikat

Lådmodellen: princip Varje mål får en egen låda. Konjunktioner kopplas ihop. Disjunktioner är alternativa vägar. Prologs unifieringsalgoritm motsvaras av vandringar över lådorna.

Exempel: grandparent grandparent(x,y) :- parent(x,z),parent(z,y). grandparent(x, Y) parent(x, Z) parent(z,y)

Exempel: powerful powerful(x) :- sith(x). powerful(x) :- jedi(x). powerful sith jedi

Semantik: Unifiering med faktum jedi(yoda) ger X =yoda. jedi(x)

Semantik: Ingen unifiering Om unifiering misslyckas: parent(yoda, X)

Semantik: Unifiering med regel Hittar att grandparent(x, Y) :- parent(x, Z),... grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). X=anakin, Z=luke grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). X=anakin, Z=luke grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). X=schmi, Z=anakin grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). X=schmi, Z=anakin Y=luke grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). X=schmi, Z=anakin grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). X=schmi, Z=anakin Y=leia grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). X=anakin, Z=leia grandparent(x, Y) parent(x, Z) parent(z,y)

Ett programflöde grandparent(x, Y) :- parent(x, Z), parent(z, Y). parent(anakin, luke). parent(schmi, anakin). parent(anakin, leia). grandparent(x, Y) parent(x, Z) parent(z,y)

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). Fakta sith(darthsidious). jedi(yoda). powerful(x) sith jedi

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). Fakta sith(darthsidious). jedi(yoda). powerful(x) sith jedi

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). X=darthSidious powerful(x) Fakta sith(darthsidious). jedi(yoda). sith jedi

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). Fakta sith(darthsidious). jedi(yoda). powerful(x) sith jedi

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). Fakta sith(darthsidious). jedi(yoda). powerful(x) sith jedi

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). X=yoda powerful(x) Fakta sith(darthsidious). jedi(yoda). sith jedi

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). Fakta sith(darthsidious). jedi(yoda). powerful(x) sith jedi

Lådmodellen för powerful Regel powerful(x) :- sith(x). powerful(x) :- jedi(x). Fakta sith(darthsidious). jedi(yoda). powerful(x) sith jedi

Lådmodellen och rekursion append(x, [], [X]). append(x, [H Tail], [H NewTail]) :- append(x, Tail, NewTail).

Lådmodellen och rekursion append(x, [], [X]). append(x, [H Tail], [H NewTail]) :- append(x, Tail, NewTail). append(x, L, Ut) :- L = [], Ut = [X]. append(x, L, Ut) :- [H Tail] = L, append(x, Tail, NewTail), Ut = [H NewTail].

Lådmodell för append L = [] [H T] = L append(x, L, Ut) append(x, T, NewT) Ut = [X] Ut = [H NewT]

Lådmodell för append L = [] [H T] = L append(x, L, Ut) append(x, T, NewT) Ut = [X] Ut = [H NewT]

Använder boxmodellen (utökad)

Använder boxmodellen (utökad) Starta debug med trace.?- trace. % The debugger will first creep -- showing eve yes

Använder boxmodellen (utökad) Starta debug med trace.?- trace. % The debugger will first creep -- showing eve yes Kör i Emacs så markerar SWI Prolog var du är!

Använder boxmodellen (utökad) Starta debug med trace.?- trace. % The debugger will first creep -- showing eve yes Kör i Emacs så markerar SWI Prolog var du är! SWI Prolog stannar i varje port.

Använder boxmodellen (utökad) Starta debug med trace.?- trace. % The debugger will first creep -- showing eve yes Kör i Emacs så markerar SWI Prolog var du är! SWI Prolog stannar i varje port. Bestäm vilka portar som SWI Prolog ska stanna vid med leash:?- leash([exit,fail]). % Using leashing stopping at [exit,fail] ports yes

Debuginformation Unikt invocation number Rekursionsdjup Aktuell port Aktuell mål, unifieringar

Exempel: spåra grandparent/2?- grandparent(x, Y).

Exempel: spåra grandparent/2?- grandparent(x, Y). 1 1 : grandparent(_430,_450) 2 2 : parent(_430,_636)? 2 2 : parent(schmi,anakin) 3 2 : parent(anakin,_450)? 3 2 : parent(anakin,luke)? 1 1 : grandparent(schmi,luke) X = schmi, Y = luke?

Exempel: spåra grandparent/2?- grandparent(x, Y). 1 1 : grandparent(_430,_450) 2 2 : parent(_430,_636)? 2 2 : parent(schmi,anakin) 3 2 : parent(anakin,_450)? 3 2 : parent(anakin,luke)? 1 1 : grandparent(schmi,luke) X = schmi, Y = luke? n 1 1 : grandparent(schmi,luke) 3 2 : parent(anakin,luke) 3 2 : parent(anakin,leia)? 1 1 : grandparent(schmi,leia) X = schmi, Y = leia? yes

Program: Avlusa married/2 married(x,y) :- married(y,x). married(anakin, padme).?-

Program: Avlusa married/2 married(x,y) :- married(y,x). married(anakin, padme).?- trace. % The debugger will first creep -- showing eve yes % trace,source_info?-

Program: Avlusa married/2 married(x,y) :- married(y,x). married(anakin, padme).?- trace. % The debugger will first creep -- showing eve yes % trace,source_info?- married(x, Y). 1 1 : married(_410,_430)?

Program: Avlusa married/2 married(x,y) :- married(y,x). married(anakin, padme).?- trace. % The debugger will first creep -- showing eve yes % trace,source_info?- married(x, Y). 1 1 : married(_410,_430)? 2 2 : married(_430,_410)?

Program: Avlusa married/2 married(x,y) :- married(y,x). married(anakin, padme).?- trace. % The debugger will first creep -- showing eve yes % trace,source_info?- married(x, Y). 1 1 : married(_410,_430)? 2 2 : married(_430,_410)? 3 3 : married(_410,_430)? 4 4 : married(_430,_410)? 5 5 : married(_410,_430)?