Logika Temporalna i Automaty Czasowe



Podobne dokumenty
Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania C. dr. Krystyna Łapin

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Podstawy i języki programowania

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Logika Temporalna i Automaty Czasowe

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Praktyczne metody weryfikacji

Podstawy programowania w języku C

Język C zajęcia nr 11. Funkcje

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Wstęp do Techniki Cyfrowej... Algebra Boole a

Weryfikacja modelowa. Protokoły komunikacyjne 2006/2007. Paweł Kaczan

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Systemy zdarzeniowe - opis przedmiotu

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Projekt 4: Programowanie w logice

Język ludzki kod maszynowy

Właściwości i metody obiektu Comment Właściwości

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Część 4 życie programu

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Logika Temporalna i Automaty Czasowe

Programowanie komputerowe. Zajęcia 1

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Wstęp do programowania. Różne różności

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Podstawy programowania skrót z wykładów:

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

2 Przygotował: mgr inż. Maciej Lasota

Podstawy i języki programowania

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wstęp do programowania

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Struktura pliku projektu Console Application

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

Modelowanie i Analiza Systemów Informatycznych

C++ wprowadzanie zmiennych

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Programowanie w Logice Przykłady programów. Przemysław Kobylański

I - Microsoft Visual Studio C++

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Kiedy i czy konieczne?

Algorytmika i Programowanie VBA 1 - podstawy

Podstawy programowania

Ada 95 #1/5 - typy. Typy skalarne. Hierarchia typów w Adzie. Typ znakowy. Typy dyskretne. Plan wykładu

( wykł. dr Marek Piasecki )

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Języki i paradygmaty programowania

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Visual Basic for Application (VBA)

Mikrokontroler ATmega32. Język symboliczny

Bazy Danych i Usługi Sieciowe

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych.

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

ZMIENNE. Podstawy PHP

Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Java Podstawy. Michał Bereta

if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b

Języki programowania Haskell

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Programowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Matematyka I. BJiOR Semestr zimowy 2018/2019 Wykład 1

3. Instrukcje warunkowe

Ćwiczenie 1. Wprowadzenie do programu Octave

Przeciążanie operatorów

Transkrypt:

Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (7) Automaty czasowe NuSMV Paweł Głuchowski, Politechnika Wrocławska wersja 2.3

Treść wykładu NuSMV NuSMV symboliczny weryfikator modelowy Do czego służy NuSMV Modelowanie Symulowanie Weryfikowanie Przykład pliku.smv Jak uruchomić NuSMV 2

Treść wykładu Język NuSMV Typy danych Makrodefinicje Operatory i predykaty Przypisanie i porównanie zmiennych Operacje na zbiorach Wyrażenie wyboru Moduły Przykład: wolny rynek Procesy 3

NuSMV NuSMV symboliczny weryfikator modelowy Do czego służy NuSMV Modelowanie Symulowanie Weryfikowanie Przykład pliku.smv Jak uruchomić NuSMV 4

NuSMV NuSMV symboliczny weryfikator modelowy narzędzie opis modelu systemu logika temporalna Kronos język ET-LOTOS CTL (TCTL) NuSMV język SMV LTL, CTL, RTCTL Spin język PROMELA LTL UPPAAL graficzny CTL (TCTL) Verus język Verus LTL, CTL, RTCTL, PRTCTL Rozszerzona i otwarta wersja SMV (Symbolic Model Veryfier). Specjalny język definicji automatów skończenie stanowych. Wykorzystanie BDD (binarnych diagramów decyzyjnych). 5

NuSMV Do czego służy NuSMV Modelowanie, symulowanie i weryfikowanie skończenie stanowych systemów czasu rzeczywistego. Dla systemów deterministycznych i niedeterministycznych. Dla systemów synchronicznych i asynchronicznych. 6

NuSMV Modelowanie Model systemu to skończenie stanowe automaty czasowe. Model może być modułowy i hierarchiczny. Symulowanie Symulowanie możliwych przebiegów automatów jest ręczne. Można wybrać symulowaną ścieżkę stanów. 7

NuSMV Weryfikowanie Weryfikacja jest automatyczna. Specyfikację systemu opisuje się formułami logiki temporalnej. Dostępne logiki: LTL, CTL, LTL, RTCTL (z dolnym i górnym ograniczeniem operatorów temporalnych) i PSL. Dozwolone są wszystkie poprawnie zbudowane formuły. Każda formuła weryfikowana jest niezależnie od pozostałych. Weryfikacja formuły zwraca true lub false. Wynikowi false towarzyszy kontrprzykład (ścieżka stanów), jeśli można go wygenerować. Można wyliczyć długość minimalnej i maksymalnej ścieżki między dwoma określonymi stanami. 8

NuSMV Przykład pliku.smv --Wersja 1: MODULE main --Wersja 2: MODULE main VAR a : boolean; b : 0..4; VAR a : boolean; b : 0..4; ASSIGN init(a):= TRUE; next(a):=!a; init(b):= {0,2,4}; next(b):= case next(a) : {0,2,4};!next(a) : {1,3}; esac; INIT a = TRUE & b in {0,2,4}; TRANS next(a) =!a; TRANS next(b) in case next(a) : {0,2,4};!next(a) : {1,3}; esac; CTLSPEC AG(a -> b in {0,2,4}) INVARSPEC (!a -> b in {1,3}) CTLSPEC AG(a -> b in {0,2,4}) INVARSPEC (!a -> b in {1,3}) 9

NuSMV Jak uruchomić NuSMV Model systemu zapisany jest w pliku.smv. Praca w trybie automatycznym: NuSMV plik Praca w trybie interaktywnym: NuSMV -int plik Więcej w następnej prezentacji. 10

Typy danych Makrodefinicje Operatory i predykaty Przypisanie i porównanie zmiennych Operacje na zbiorach Wyrażenie wyboru Moduły Przykład: wolny rynek Procesy 11

Typy danych Logiczny: wartości: FALSE i TRUE, przykład deklaracji: a : boolean; Ograniczony całkowitoliczbowy: wartości: od 2 31 +1 do 2 31 1, należy podać zakres wartości, przykład deklaracji: b : 0..60; 12

Typy danych Enumeracja: określone wartości: słowa (ciągi znaków) i liczby, kolejność wartości nie ma znaczenia, można mieszać słowa z liczbami, nie można używać wartości logicznych FALSE i TRUE, przykłady deklaracji: c : {jeden, siedem, zero}; d : {1, 7, 0}; e : {jeden, siedem, 0}; 13

Typy danych Wektor bitów (wartości logicznych): typy: signed i unsigned, wartości dla typu signed: od 2 N 1 do 2 N 1 1, wartości dla typu unsigned: od 0 do 2N 1, (N rozmiar wektora) przykłady deklaracji: f : unsigned word[4]; g : signed word[5]; 14

Typy danych Tablica: należy podać zakres indeksu i typ wartości, przykłady deklaracji: h : array 0..5 of boolean; i : array 10..20 of {tak, nie}; j : array 1..3 of array 1..2 of unsigned word[5]; Zmienne tworzy się poleceniem VAR, np: VAR a : boolean; b : 0..10; 15

Makrodefinicje Utworzenie makrodefinicji dla długiego wyrażenia skraca zapis. Przykład: DEFINE c := a&b; c jest tylko makrodefinicją dla a&b, c można używać jak zmienną, w BDD nie będzie zmiennej dla c, w BDD zamiast c będzie wyrażenie a&b. W BDD istnieją tylko zmienne utworzone w ramach VAR. 16

Operatory i predykaty Operatory arytmetyczne: + suma, - różnica, * iloczyn, / iloraz (część całkowita), mod iloraz (reszta), Dzielenie przez 0 jest błędem! << przesunięcie w lewo (x << y oznacza x * 2 y ), >> przesunięcie w prawo (x >> y oznacza x / 2 y ). Zależność między operatorami mnożenia i dzielenia: y*(x/y) + (x mod y) = x 17

Operatory i predykaty Operatory logiczne: & koniunkcja, alternatywa, xor alternatywa wykluczająca,! negacja, -> implikacja, <-> równoważność. Wartości logiczne: TRUE, FALSE. 18

Operatory i predykaty Predykaty: = równe,!= różne, < mniejsze, > większe, <= mniejsze lub równe, >= większe lub równe. 19

Przypisanie i porównanie zmiennych Wyrażenia można przypisywać do: zmiennej w bieżącym stanie, np. c := a+b, zmiennej w następnym stanie, np. next(c) := a+b, zmiennej w początkowym stanie, np. init(c) := a+b. Wartości porównywać można ze: zmienną w bieżącym stanie, np. a = b, zmienną w następnym stanie, np. next(c) = a+b, zmienną w początkowym stanie, np. init(c) = a+b. 20

Operacje na zbiorach Przypisanie do zmiennej dowolnej wartości ze zbioru, np.: next(a) := {1,20,45}; Porównanie zmiennej z dowolną wartością ze zbioru przy pomocy operatora in, np.: b in {1,20,45}; Utworzenie sumy zbiorów przy pomocy operatora union, np.: init(c) := {s1,s2} union s3; next(d) in 0 union 1; 21

Wyrażenie wyboru Przykład wyrażenia wyboru (case): next(a) in case warunek1 : TRUE; warunek2 : {FALSE, TRUE}; TRUE : a; esac; Warunki porównywane są do next(a) w podanej kolejności. Uwzględniany jest tylko pierwszy spełniony warunek. Warunek TRUE jest zawsze spełniony. Należy uwzględnić wszystkie możliwe warunki. Po znaku : podano następną wartość dla a. Jeśli następną wartością jest a, to brak zmiany wartości. 22

Moduły Moduł jest komponentem systemu. Główny moduł: nagłówek: MODULE main jest obowiązkowy. Dodatkowy moduł: nagłówek bez parametrów: MODULE nazwa nagłówek z parametrami: MODULE nazwa(param1, param2) parametr w module dostępny jest jak zwykła zmienna. Zmienną modułu może być instancja innego modułu, np.: VAR a : innymoduł(parametr) 23

Moduły Operator. pozwala na dostęp do wewnętrznej zmiennej modułu: instancja_modułu.zmienna_modułu Przykład przekazywania wartości między modułami tego samego poziomu przez ich parametry: MODULE main VAR a : coś(b.z); b : coś(a.z); MODULE coś(parametr) VAR z : boolean; 24

Przykład: wolny rynek Założenia: Dwaj handlarze synchronicznie modyfikują swoje ceny. Każdy z nich chce mieć jak najwyższe ceny, ale mniejsze niż ma przeciwnik. Moduł główny: MODULE main VAR handlarz1 : handlarz(handlarz2.cena); handlarz2 : handlarz(handlarz1.cena); DEFINE H1 := handlarz1.cena < handlarz2.cena; --wygrywa H1 H2 := handlarz2.cena < handlarz1.cena; --wygrywa H2 remis := handlarz1.cena = handlarz2.cena; 25

Przykład: wolny rynek Moduł handlarza: MODULE handlarz(cena_konkurenta) VAR cena : 0..25; ASSIGN init(cena) := 10..20; next(cena) := case cena = 0 cena = 25 : cena; cena < cena_konkurenta : cena + 1; cena >= cena_konkurenta : cena 1; TRUE : cena; esac; 26

Przykład: wolny rynek Weryfikacja (w module głównym): --skutki zwycięstwa handlarza1: CTLSPEC AG(H1 -> AX(AF(H2 remis))) CTLSPEC AG(H1 -> AX(AF(remis))) CTLSPEC AG(H1 -> AX(AF(H2))) --prawda --fałsz --fałsz --trwałość remisu: CTLSPEC AG(remis -> AX(remis)) CTLSPEC!remis -> AG(H1 H2) --prawda --fałsz 27

Procesy Proces to instancja modułu, która działa asynchronicznie z innymi procesami. Dla każdego procesu jego następny stan ustalany jest osobno, a nie jednocześnie. Obecnie nie używa się procesów (są deprecated ). Proces zdefiniowany jest jak zwykły moduł. Instancja procesu zawiera słowo process: bez parametrów: VAR a : process nazwa; z parametrami: VAR b : process nazwa(par1, par2); 28

Koniec Literatura: K.L. McMillan, The SMV system, 2001 A. Cimatti et al. NuSMV a new symbolic model checker R. Cavada et al. NuSMV 2.5 User Manual, 2010 R. Cavada et al. NuSMV 2.5 Tutorial