Grundläggande logik och modellteori



Relevanta dokument
Grundläggande logik och modellteori

Flera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen. x y (x > 0) (y > 0) xy > 0 Domän D = R

MATEMATIKENS SPRÅK. Syftet med denna övning är att med hjälp av logik lära oss att uttrycka matematik mer exakt,

Wienerprocesser. Finansiell statistik, vt-05. Enkel slumpvandring. Enkel slumpvandring. Varför: model för aktiekurs (dock med aber...

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska ni kunna?

7, Diskreta strukturer

Grundläggande logik och modellteori

Automater. Matematik för språkteknologer. Mattias Nilsson

Föreläsning 8: Intro till Komplexitetsteori

Semantik och pragmatik

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Uppgift 2 Betrakta vädret under en följd av dagar som en Markovkedja med de enda möjliga tillstånden. 0 = solig dag och 1 = regnig dag

Grundläggande digitalteknik

Digitalt lärande och programmering i klassrummet

Föreläsning 6: Introduktion av listor

VHDL och laborationer i digitalteknik

Grunderna i stegkodsprogrammering

1. 20 identiska bollar skall delas ut till fem flickor och fem pojkar. På hur många olika sätt kan detta ske om

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Programmering A. Johan Eliasson

F5 Introduktion till digitalteknik

Programmeringsteknik med C och Matlab

Datastrukturer och algoritmer

K3 Om andra ordningens predikatlogik

Business Model You Din personliga affärsplan framtagen på åtta timmar.

Figur 1. Skärmbild med markerade steg i videon. Diagram och tabell som visar positionerna som funktion av tiden.

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 4: Poster

1. Skriv = eller i den tomma rutan, så att det stämmer. Motivera ditt val av tecken.

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

T1-modulen Lektionerna Radioamatörkurs OH6AG OH6AG. Bearbetning och översättning: Thomas Anderssén, OH6NT Heikki Lahtivirta, OH2LH

Bedöma elevers förmågor i muntlig uppgift

Av kursplanen och betygskriterierna,

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Programmerbar logik. Kapitel 4

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Att använda pekare i. C-kod

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Grundläggande logik och modellteori (5DV102)

Laboration Kombinatoriska kretsar

Samspelet i trafiken informella regler, irritation och aggressiva beteenden

Synkronisering. Föreläsning 8

Vad är semantik? LITE OM SEMANTIK I DATORLINGVISTIKEN. Språkteknologi semantik. Frågesbesvarande

Nulägesanalys & Kravspecifikation

Hands-On Math. Matematikverkstad. Förskolans nya läroplan 1 juli Matematik är en abstrakt och generell vetenskap

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Tentamen TEN1 HI

Tentamen i Sannolikhetslära och statistik (lärarprogrammet) 12 februari 2011

Lennart Carleson. KTH och Uppsala universitet

LABORATIONSINSTRUKTION

Problemlösning som metod

Föreläsning 1 & 2 INTRODUKTION

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Manual Jourläkarschema Närhälsan V7 - Version 1.0

Laboration Kombinatoriska kretsar

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

Sätt att skriva ut binärträd

Digital Aritmetik Unsigned Integers Signed Integers"

Matematik 5 Kap 3 Derivator och Integraler

Kapitel IV. Partikeltalet som termodynamisk variabel & faser

Uppgifter talmönster & följder

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

OOP Objekt-orienterad programmering

Dubbelt En elev plockar upp en näve kuber. En annan ska ta upp dubbelt så många.

En bokstav kan säga mer än tusen ord

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

LULEÅ TEKNISKA UNIVERSITET Ämneskod S0006M Institutionen för matematik Datum Skrivtid

STYRNING AV PORTFÖLJER MED FLERA TILLGÅNGAR

Västsvenska paketet Skattning av trafikarbete

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Om include-filer i PHP

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Kompetenser och matematik

varandra. Vi börjar med att behandla en linjes ekvation med hjälp av figur 7 och dess bildtext.

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Problem att fundera över

Introduktion till att använda sig av GLPK

Programmering av stegmotorer ett miniprojekt i samarbete med Svensk Maskinprovning

Omtentamen i DV & TDV

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

E-post, chat mm. E-post, chat mm. E-post, chat mm. E-post, chat mm. E-post, chat mm. E-post, chat mm

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Att genomföra ett e-postutskick till klubbens medlemmar

NMCC Sigma 8. Täby Friskola 8 Spets

En trafikmodell. Leif Arkeryd. Göteborgs Universitet. 0 x 1 x 2 x 3 x 4. Fig.1

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Gör-det-själv-uppgifter 1: marknader och elasticiteter

Steg 4. Lika arbeten. 10 Diskrimineringslagen

SAMMANSTÄLLNING AV: Systematiskt kvalitetsarbete Algutsrums förskola

SMD 134 Objektorienterad programmering

Patrik Calén

Tommy Färnqvist, IDA, Linköpings universitet. 2 Strukturer Domäner Tolkningar... 3

8-4 Ekvationer. Namn:..

Att göra investeringskalkyler med hjälp av

Tylömarks. lilla gröna om... Naturvård

Anmälningskod: GU Sök senast: 15 april


GIT L0002B INTRODUKTION TILL PROGRAMMERING OCH C# Information inför kursstart

Transkript:

Grundläggande logik och modellteori Modellprövning och NuSMV Jonas Hägglund Department of mathematics Umeå university Våren 2010 Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 1 / 23

Dagens föreläsning 1 Modellprövning för LTL Specifikation Modell 2 NuSMV Ett exempel Kort om OU5 Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 2 / 23

Förra föreläsningen Intro till temporallogik LTL Syntax Semantik Exempel Uttrycksfullhet hos LTL Några ekvivalenser för LTL Introduktion till modellprövning Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 3 / 23

Dagens föreläsning 1 Modellprövning för LTL Specifikation Modell 2 NuSMV Ett exempel Kort om OU5 Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 4 / 23

Modellprövning abstraktion System Matematisk modell M Specifikation representation Formell specifikation φ Modellprövning: M = φ? Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 5 / 23

Specifikation i LTL LTL är en logik för att specificera de egenskaper vi vill att ett system ska ha. Exempel på detta är: Säkerhet - Något dåligt får inte inträffa. Vanligtvis en formel på formen G (... ). t.ex. G (landing_gear_up (altitude = 0)) eller G (x = 0 F(z = y/x)) Livfullhet - Något bra kommer att inträffa. Vanligtvis en formel på formen F(... ). t.ex. F (klarar_tentan) eller G(start F(avsluta)). Rättvisa - Om något begärs oändligt ofta kommer det att inträffa oändligt ofta. T.ex. GF(ready) GF(run). Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 6 / 23

En viktig egenskap som ej går att uttrycka i LTL En egenskap som är mer problematisk i LTL är nåbarhet (reachability), dvs att vi kan nå ett visst tillstånd. LTL kan inte uttrycka existensen av en stig. Vi kan dock uttrycka komplementet i LTL: vi kan inte nå ett visst tillstånd. Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 7 / 23

Modellering av ett system De system vi är intresserade av här är främst reaktiva och samverkande system: Reaktiva - System som vanligtvis reagerar med sin omgivning och inte terminerar (t.ex. hårdvarukretsar, kommunikationsprotokoll och styrsystem). Samverkande - System som består av flera komponenter som körs tillsammans (de kan t.ex. dela på en gemensam resurs). Här skiljer vi vanligtvis mellan asynkrona system (endast en komponent ändrar sitt tillstånd i varje tidssteg) och synkrona system (alla komponenter tar ett steg samtidigt). Den abstrakta modell som vi använder för att beskriva ett system är, som tidigare sagts, ett transitionssystem (kallas ofta Kripke-strukturer i litteraturen). Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 8 / 23

Modellering av ett system forts... Transitionssystem kan modellera ett brett spektrum av olika system. Observera att vi får problem med oändliga strukturer. Antalet tillstånd kan även vara väldigt stort (state explosion). Tag t.ex. ett system med två 64-bitars variabler (t.ex. 64-bitars Integers). Om vi inte sätter någon begränsning på dessa får systemet 2 128 10 39 möjliga tillstånd. Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 9 / 23

Modellering av ett system forts... Ett transitionssystem beskrivs sällan explicit direkt från definitionen. Istället används vanligtvis något modelleringsspråk (ett enkelt specialanpassat programmeringsspråk). Exempel på sådana språk är VHDL, SDL och SMV (mer om detta strax). Dessa system beskriver vanligtvis: Tillstånden - Alla möjliga värden variablerna i systemet kan anta De initiala tillstånden - Initialvärdena för variablerna Transitioner - Hur systemet går mellan olika tillstånd Atomiska utsagor - Utsagor om variablerna i systemet Labeling - Vilka atomiska utsagor som är sanna i ett tillstånd Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 10 / 23

NuSMV NuSMV står för New Symbolic Model Verifier och är baserad på öppen källkod. Den är en nyimplementation av SMV som utvecklades av McMillan 1993. NuSMV ger dels ett språk (SMV) där användaren kan specificera ett transitionssystem M samt ett system för att testa om M = φ där φ är en specifikation i antingen CTL eller LTL. Den använder effektiva metoder för att testa detta (bl.a. s.k. Binary Decision Diagrams och SAT-lösare). Den stöder även bounded model checking. Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 11 / 23

Exempel från boken MODULE main VAR request : boolean; status : {ready,busy}; ASSIGN init(status) := ready; next(status) := case request : busy; 1 : {ready,busy}; esac; LTLSPEC G(request -> F status=busy) Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 12 / 23

Logiska symboler i NuSMV Standard LTL NuSMV &! F F G G U U X X Notera att NuSMV inte har symboler för R och W så dessa måste definieras m.h.a. de andra symbolerna (se ekvivalenserna från förra föreläsningen). Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 13 / 23

Mer om NuSMV De enda datatyperna i NuSMV är skalärer, boolska variabler samt fixa arrayer. Statiska datastrukturer kan också konstrueras. Eftersom de transitionssystem som studeras är ändliga är givetvis även datatyperna ändliga. NuSMV hanterar även moduler, vilket gör det enklare att dela upp modellen i delar, samt ökar läsbarheten. Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 14 / 23

LTL för förfluten tid NuSMV har även symboler för att beskriva förfluten tid. Dessa är: Op - Utläses Once p. Säger att p har gällt någon gång i historien. Hp - Utläses History p. Säger att p har gällt i alla tidigare tillstånd. psq - Utläses p Since q, p har gällt sen ett föregående tillstånd då q gällt. Yp - Utläses Yesterday p, p gällde i föregående tillstånd. Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 15 / 23

Ömsesidig uteslutning igen MODULE main VAR pr1: process prc(pr2.st, turn, 0); pr2: process prc(pr1.st, turn, 1); turn: boolean; ASSIGN init(turn) := 0; -- safety LTLSPEC G!((pr1.st = c) & (pr2.st = c)) -- liveness LTLSPEC G((pr1.st = t) -> F (pr1.st = c)) LTLSPEC G((pr2.st = t) -> F (pr2.st = c)) -- negation of strict sequencing (desired to be false) LTLSPEC G(pr1.st=c -> ( G pr1.st=c (pr1.st=c U (!pr1.st=c & G!pr1.st=c ((!pr1.st=c) U pr2.st=c))))) Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 16 / 23

Ömsesidig uteslutning forts... MODULE prc(other-st, turn, myturn) VAR st: {n, t, c}; ASSIGN init(st) := n; next(st) := case (st = n) : {t,n}; (st = t) & (other-st = n) : c; (st = t) & (other-st = t) & (turn = myturn): c; (st = c) : {c,n}; 1 : st; esac; next(turn) := case turn = myturn & st = c :!turn; 1 : turn; esac; FAIRNESS running FAIRNESS!(st = c) Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 17 / 23

NuSMV som pussel-lösare Pussel: Färjekarln En man som sköter en färja över en liten flod står inför följande problem. Han ska transportera över en get, ett salladshuvud och en varg över en flod. Det ryms dock endast en av dessa förutom honom själv i hans mycket lilla färja och om han lämnar vargen och geten ensamma så äter vargen upp geten. Samma sak gäller med geten och salladshuvudet. Hur ska han göra för att transportera över alla utan att någon blir uppäten? Planeringsproblem Hur lösa i NuSMV? Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 18 / 23

NuSMV som pussel-lösare forts... MODULE main VAR ferryman : boolean; goat : boolean; cabbage : boolean; wolf : boolean; carry : {g,c,w,0}; ASSIGN init(ferryman) := 0; init(goat) := 0; init(cabbage) := 0; init(wolf) := 0; init(carry) := 0; Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 19 / 23

NuSMV som pussel-lösare forts... next(ferryman) := {0,1}; next(carry) := case ferryman=goat : g; 1 : 0; esac union case ferryman=cabbage : c; 1 : 0; esac union case ferryman=wolf : w; 1 : 0; esac union 0; next(goat) := case ferryman=goat & next(carry)=g : next(ferryman); 1 : goat; esac; next(cabbage) := case ferryman=cabbage & next(carry)=c : next(ferryman); 1 : cabbage; esac; next(wolf) := case ferryman=wolf & next(carry)=w : next(ferryman); 1 : wolf; esac; LTLSPEC!(( (goat=cabbage goat=wolf) -> goat=ferryman) U (cabbage & goat & wolf & ferryman)) Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 20 / 23

Kort om OU5 Tre delar Ett schack-problem En binär adderare Ett eget problem Läs manualen till NuSMV! Skall helst lösas två och två Sista delen är mycket fri. Inget krav att systemet uppfyller specifikationen (men försök göra ett system som gör det innan ni kör modelltestning). Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 21 / 23

Dagens föreläsning Modellprövning NuSMV Kort om labben Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 22 / 23

Nästa föreläsning Förgrenad-tids-temporallogik CTL Jonas Hägglund (Umeå university) Grundläggande logik och modellteori VT 2010 23 / 23