Praca dyplomowa magisterska

Wielkość: px
Rozpocząć pokaz od strony:

Download "Praca dyplomowa magisterska"

Transkrypt

1 AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI, INFORMATYKI I INŻYNIERII BIOMEDYCZNEJ KATEDRA INFORMATYKI STOSOWANEJ Praca dyplomowa magisterska Zastosowanie technik weryfikacji modelowej do analizy własności sieci Petriego Using model checking techniques for Petri nets analysis Autor: Agnieszka Biernacka, Jerzy Biernacki Kierunek studiów: Informatyka Opiekun pracy: dr hab. Marcin Szpyrka, prof. n. Kraków, 2014

2 Oświadczam, świadomy(-a) odpowiedzialności karnej za poświadczenie nieprawdy, że niniejsza pracę dyplomowa wykonałem(-am) osobiście i samodzielnie i nie korzystałem(-am) ze źródeł innych niż wymienione w pracy.

3 Serdecznie dziękujemy naszemu promotorowi dr. hab. Marcinowi Szpyrce za zaangażowanie, cierpliwość i pomoc merytoryczna udzielona w trakcie pisania tej pracy.

4 Spis treści 1. Wprowadzenie Cele pracy Zawartość pracy Sieci Petriego Sieci miejsc i przejść Sieci kolorowane Analiza sieci Petriego Analiza sieci miejsc i przejść Analiza sieci kolorowanych Podsumowanie Logiki temporalne LTL CTL Porównanie LTL i CTL NuSMV Opis formatu Interaktywny tryb NuSMV Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV Podsumowanie Metoda translacji Algorytm Translacja sieci miejsc i przejść Translacja sieci kolorowanych Interfejs graficzny Przykłady zastosowania Problem pięciu filozofów Układ logiczny

5 SPIS TREŚCI Problem producenta i konsumenta Prosty protokół transportowy Podsumowanie Podział zadań A. Generacja grafu pokrycia w narzędziu TINA B. Generacja grafu osiagalności w narzędziu CPN Tools... 88

6 1. Wprowadzenie Jednym z najważniejszych wymagań stawianych współczesnym systemom informatycznym jest wysoka jakość oprogramowania oraz powiązana z nią bezawaryjność. Cecha ta jest szczególnie ważna, gdy awaria systemu może spowodować utratę ludzkiego życia lub zdrowia. Obecnie najczęściej wykorzystywanym podejściem do sprawdzenia niezawodności oprogramowania jest weryfikacja istniejącego kodu. Obejmuje ona testy statyczne i dynamiczne. Jednak już Dijkstra zwrócił uwagę na to, że Testowaniem nie można wykazać braku błędów, można w ten sposób jedynie wykazać ich obecność. Zwłaszcza w testowaniu systemów współbieżnych podejście to pozwala na przetestowanie jedynie niewielkiej części możliwych zachowań systemu. Istnieje jednak odmienne podejście, jakim jest zastosowanie metod formalnych. Mogą one zostać wykorzystane do określenia poprawności systemu współbieżnego. Jedną z najbardziej obiecujących technik automatycznej analizy oprogramowania, należącą do metod formalnych, jest weryfikacja modelowa. W tym podejściu zaprojektowany model systemu jest weryfikowany jeszcze przed rozpoczęciem implementacji. Taka weryfikacja sprawdza wszystkie stany danego systemu, dzięki czemu zapewnia pełną zgodność z przygotowaną specyfikacją. Niestety narzędzia służące do tworzenia sieci Petriego, które są popularnym formalizmem wykorzystywanym w inżynierii oprogramowania, rzadko wyposażone są w jakiekolwiek algorytmy weryfikacji modelowej. Narzędzie przedstawione w pracy łączy siłę dwóch uznanych środowisk modelowania sieci Petriego (TINA [Tin14] [BF08] i CPN Tools [CPN14]) z dominującym narzędziem do weryfikacji modelowej (NuSMV [CCJ + 10] [CCK + 10]) Cele pracy W literaturze można spotkać się z narzędziami PEP [Pep04] oraz Model-Checking Kit [MCK04], które umożliwiają weryfikację modelową sieci Petriego, między innymi przy pomocy narzędzia CMU SMV. Niestety narzędzia przestały być rozwijane w 2004 roku. Istnieją również narzędzia takie jak PROD [Pro07] czy LoLA [Lol13], umożliwiające weryfikację sieci Petriego przy pomocy logik temporalnych LTL i CTL. Jednak żadne z nich nie wspiera nowego weryfikatora modelowego NuSMV, ani popularnych sieci kolorowanych. Dla sieci kolorowanych jedyną możliwością weryfikacji modelowej jest udostępniony w narzędziu CPN Tools weryfikator formuł zapisanych w logice ASK-CTL. Logika ASK-CTL jest rozszerzeniem 7

7 1.2. Zawartość pracy 8 logiki CTL. Do zapisania formuł wymagana jest jednak znajomość języka funkcyjnego ML. Inną niedogodnością jest brak wsparcia dla formuł zapisywanych w logice LTL. Celem pracy było stworzenie narzędzia służącego do translacji grafów osiągalności dla sieci prostych oraz sieci kolorowanych na opis systemu w języku NuSMV. W konsekwencji narzędzie pozwala na automatyczną weryfikację modelową sieci zamodelowanych w narzędziach TINA oraz CPN Tools. Prezentowane rozwiązanie jako jedyne umożliwia weryfikację zarówno PT-sieci jak i sieci kolorowanych przy pomocy logik LTL oraz CTL Zawartość pracy W rozdziale 2 przedstawiono podstawowe elementy teorii sieci Petriego, obejmujące sieci miejsc i przejść oraz sieci kolorowane wraz metodami analizy tych sieci. Kolejny rozdział odnosi się do logik temporalnych LTL oraz CTL. Rozdział 4 zawiera opis narzędzia NuSMV z naciskiem na możliwość automatycznej weryfikacji formuł logik temporalnych przez system zamodelowany w tym narzędziu. W rozdziale 5 przedstawione zostaje zaimplementowane narzędzie, służące do translacji grafów osiągalności sieci Petriego na opis systemu w języku NuSMV. Przykłady zastosowania narzędzia do rozwiązywania problemów z dziedziny systemów współbieżnych zawiera rozdział 6. W ostatnim rozdziale zawarte zostało krótkie podsumowanie pracy. W pracy znalazły się również dodatki A i B, które zawierają opis generowania odpowiednio grafu pokrycia w narzędziu TINA oraz grafu osiągalności w narzędziu CPN Tools.

8 2. Sieci Petriego Sieci Petriego są formalną, graficzną techniką opisu i analizy złożonych systemów współbieżnych. Zostały wprowadzone w 1962 roku przez C. A. Petriego. Od tego czasu powstało wiele prac rozwijających przedstawiony przez Petriego model. Stworzonych zostało wiele typów sieci, pozwalających na modelowanie kolejnych klas systemów. Sieci Petriego mają zastosowanie w wielu dziedzinach nauki, ponieważ w intuicyjny sposób przedstawiają zależności modelowanego systemu. Przykładami ich zastosowania są m.in. [Pet07]: procesy dyskretne, systemy czasu rzeczywistego, systemy wbudowane, sieci komputerowe, systemy ekspertowe, przepływy pracy, sieci logistyczne, zakłady przemysłowe, systemy dowodzenia i kierowania wojskiem. W pracy omówione i wykorzystane zostaną sieci miejsc i przejść oraz sieci kolorowane Sieci miejsc i przejść Sieci miejsc i przejść (PT-sieci) [Szp08] [Mur89] są najczęściej wykorzystywaną techniką modelowania procesów współbieżnych. Dzięki prostej strukturze są łatwe w analizie i weryfikacji. Graficzna reprezentacja sieci to graf dwudzielny, w którym węzły są miejscami lub przejściami. Przejścia często są inaczej nazywane tranzycjami. Z miejscami powiązane jest aktualne znakowanie. Odpowiada ono za opis aktualnego stanu systemu. Znakowanie może ulec zmianie na skutek wykonania przejścia. Wiąże się to z przejściem systemu do kolejnego stanu. Łuki grafu mogą łączyć jedynie węzły różnych typów i mogą mieć przypisane wagi. Poniżej zamieszczona została formalna definicja PT-sieci. 9

9 2.1. Sieci miejsc i przejść 10 Definicja Sieć miejsc i przejść Uporządkowana piątka postaci N = (P, T, A, W, M 0 ) nazywana jest siecia miejsc i przejść (PTsiecią), jeżeli spełnione są warunki: 1. P jest niepustym zbiorem miejsc. 2. T jest niepustym zbiorem przejść (tranzycji) takim, że P T =. 3. A (P T ) (T P ) jest zbiorem łuków. 4. W : A N jest funkcją wag łuków. Funkcja W przyporządkowuje każdemu łukowi sieci liczbę naturalną, interpretowaną jako waga łuku. 5. M 0 : P Z + jest znakowaniem poczatkowym sieci N. p2 p1 t1 t2 3 2 p3 p4 Rysunek 2.1: Przykład PT-sieci. Przykład prostej PT-sieci przedstawia rysunek 2.1. W podanym przykładzie: P = {p1, p2, p3, p4} T = {t1, t2} A = {(p1, t1), (p2, t1), (p2, t2), (t1, p3), (t2, p3), (p4, t2)} W (p1, t1) = W (p2, t1) = W (p2, t2) = W (p4, t2) = 1, W (t1, p3) = 3, W (t2, p3) = 2 M 0 (p1) = M 0 (p4) = 1, M 0 (p2) = 2, M 0 (p3) = 0 Znakowanie można przedstawić również w postaci wektora: M = (M(p1), M(p2), M(p3), M(p4))

10 2.1. Sieci miejsc i przejść 11 Wykonanie przejścia jest możliwe, jeśli dane przejście jest aktywne, tzn. dla każdego z jego miejsc wejściowych, wartość znakowania jest nie mniejsza od wagi łuku prowadzącego z tego miejsca do rozpatrywanego przejścia. Miejsce wejściowe p przejścia t to takie miejsce, dla którego istnieje łuk (p, t). Z kolei miejsce wyjściowe to miejsce, dla którego istnieje łuk (t, p). Dla podanego przykładu zostanie przeprowadzone sprawdzenie aktywności przejścia t1: 1. Przejście t1 posiada dwa miejsca wejściowe: p1 oraz p2. 2. Rozpatrujemy miejsce p1: wartość jego znakowania wynosi 1, waga łuku wynosi 1 - warunek jest spełniony. 3. Rozpatrujemy miejsce p2: wartość jego znakowania wynosi 2, waga łuku wynosi 1 - warunek jest spełniony. 4. Przejście jest aktywne. p2 p1 t1 t2 3 2 p3 p4 Rysunek 2.2: Zmiana znakowania po wykonaniu przejścia t1. W wyniku wykonania przejścia następuje zmiana znakowania określona następująco: M(p) W (p, t) gdy p In(t) Out(t) M M(p) + W (t, p) gdy p Out(t) In(t) (p) = M(p) W (p, t) + W (t, p) gdy p In(t) Out(t) M(p) w pozostalych przypadkach gdzie: In(t) = {p P : (p, t) A} Out(t) = {p P : (t, p) A} Analogicznie definiujemy In(p) i Out(p). Ponownie odwołując się do podanego przykładu, przedstawione zostanie obliczenie wartości znakowania po wykonaniu przejścia t1:

11 2.2. Sieci kolorowane M (p1): p1 In(t) Out(t), zatem M (p1) = M(p1) W (p1, t1) = 1 1 = 0 2. M (p2): p2 In(t) Out(t), zatem M (p2) = M(p2) W (p2, t1) = 2 1 = 1 3. M (p3): p3 Out(t) In(t), zatem M (p3) = M(p3) + W (t1, p3) = = 3 4. M (p4): p4 / In(t) oraz p4 / Out(t), zatem M (p4) = M(p4) Nowe znakowanie pokazano na rysunku 2.2. Zmianę znakowania M do znakowania M poprzez wykonanie przejścia t oznacza się jako: M t M Znakowanie osiągalne (reachable marking) ze znakowania M to znakowanie, które można otrzymać ze znakowania M po wykonaniu skończonego ciągu przejść: M t 1 t M 2 t 1 M2 3 t... k Mk Zbiór przejść możliwych do wykonania ze znakowania M oznacza się symbolem L(M), natomiast przez R(M) oznacza się zbiór wszystkich znakowań osiągalnych z M. Ważną własnością sieci jest jej ograniczoność, którą można powiązać z bezpieczeństwem systemu. Bezpieczeństwo może być definiowane jako brak występowania niepożądanych stanów, np. nieograniczonego wzrostu liczby znaczników w miejscach sieci. Definicja Ograniczoność sieci miejsc i przejść Miejsce p nazywamy ograniczonym, jeżeli jest spełniony warunek: k N M R(M 0 ): M(p) k tzn. przy dowolnym znakowaniu osiągalnym ze znakowania początkowego liczba znaczników w miejscu p jest nie większa niż k. Miejsce takie nazywamy k-ograniczonym, przy czym k jest górnym ograniczeniem miejsca p. Sieć N nazywamy k-ograniczona, jeżeli wszystkie jej miejsca są k-ograniczone. Miejsce 1-ograniczone nazywamy bezpiecznym, a sieć 1-ograniczoną nazywamy bezpieczna Sieci kolorowane Klasyczne sieci Petriego miejsc i przejść, chociaż są prostą i skuteczną metodą modelowania systemów, często nie sprawdzają się w złożonych systemach. Problemem w ich przypadku jest brak możliwości wprowadzenia rozróżnienia pomiędzy znacznikami żaden znacznik nie ma w PT-sieciach specjalnego znaczenia. Cecha, która stanowi w pewien sposób o prostocie formy PT-sieci, skutkuje koniecznością tworzenia rozległych specyfikacji modeli, pozbawionych jasno sprecyzowanej struktury. Niedogodności związane z tym problemem zostały rozwiązane przez tzw. sieci wysokiego poziomu.

12 2.2. Sieci kolorowane 13 Sieci kolorowane zostały wprowadzone przez Kurta Jensena w 1981 roku i są jednym z bardziej popularnych rodzajów sieci wysokiego poziomu [Szp08] [SS10]. Rozbudowują one standardowe podejście do modelowania PT-sieci o możliwość definiowania i przypisywania miejscom typów danych, czyli tzw. palet kolorów. Paleta kolorów miejsca określa typ danych (znaczników), jakie mogą być w nim przechowywane. W sieciach kolorowanych znakowanie miejsca jest wielozbiorem nad zbiorem wartości (kolorów) dopuszczalnych przez definicję palety koloru miejsca. Do łuków i przejść przypisywane są natomiast wyrażenia pozwalające na wykonywanie operacji na znacznikach danego typu. Opis formalny sieci kolorowanych należy rozpocząć od definicji pojęcia wielozbioru [Szp08][SS10]. Wielozbiór został wprowadzony w celu umożliwienia opisu zawierania wielu elementów o tej samej wartości. Klasyczne pojęcie zbioru pozwala określić jedynie relację przynależności elementu do zbioru. Definicja Wielozbiór Wielozbiorem A nad niepustym zbiorem A nazywana jest dowolna funkcja, taka że: A : A Z + Rodzinę wszystkich wielozbiorów zbudowanych nad dowolnym zbiorem A oznacza się symbolem 2 A. Dla przykładowego zbioru A = {a, b, c, d, e} wielozbiorami nad zbiorem A mogą być wielozbiory A 1 = {a, b, b, c, c, c, e, e} i A 2 = {b, e}. Do zapisu wielozbiorów można użyć również formy algebraicznej: A 1 = a + 2b + 3c + 2e i A 2 = b + e. Ogólny zapis wielozbioru nad zbiorem A wygląda następująco: A = x A A (x)x, gdzie A (x) oznacza liczbę wystąpień (współczynnik) elementu x w wielozbiorze A. Element należy do wielozbioru, jeśli jego współczynnik jest większy od 0. Dla dowolnych wielozbiorów A 1, A 2 definicje relacji równości, relacji mniejszości, sumy oraz różnicy (przy założeniu, że A 1 A 2 ) przedstawione zostały poniżej: A 1 = A 2 x A: A 1 (x) = A 2 (x) A 1 A 2 x A: A 1 (x) A 2 (x) A 1 + A 2 = x A (A 1 (x) + A 2 (x)) A 1 A 2 = x A (A 1 (x) A 2 (x)) Ilustracja operacji dodawania wielozbiorów znajduje się na rysunku 2.3. Typ zmiennej, inaczej nazywany paletą kolorów, jednoznacznie określa wszystkie wartości, które mogą być przyjmowane przez zmienną. Dla dowolnej zmiennej v, typ zmiennej jest oznaczany symbolem T (v). Podobnie typ dowolnego wyrażenia x zapisany zostanie jako T (x). Zbiór wszystkich zmiennych zawartych w wyrażeniu x oznaczany jest przez V(x). Typ zmiennych należących do dowolnego zbioru V zdefiniowany jest następująco: T (V ) = {T (v): v V }.

13 2.2. Sieci kolorowane 14 b a a b d b d a d a a a d d d b b b c c 2a + 2b + c a + b + 3d 3a + 3b + c + 3d Rysunek 2.3: Suma wielozbiorów Zbiór wartości logicznych (true, false) oznaczony zostanie symbolem Bool. Węzły miejsca i przejścia dowolnego łuku a zapisywane są odpowiednio symbolami P (a) i T (a). Definicja Kolorowana sieć Petriego Kolorowana siecia Petriego nazywana jest krotka N = (Σ, P, T, A, γ, C, G, E, M 0 ), gdzie: Σ niepusty, skończony zbiór typów (palet kolorów), z których każdy jest niepustym zbiorem wartości (kolorów). P niepusty, skończony zbiór miejsc. T niepusty, skończony zbiór przejść. A niepusty, skończony zbiór łuków, spełniający warunek: P T = P A = T A =. γ : A (P T ) (T P ) funkcja zaczepienia, która przyporządkowuje każdemu łukowi dwa węzły (miejsce i przejście). C : P Σ funkcja typów, która określa, jakiego typu znaczniki może zawierać każde z miejsc. G funkcja zastrzeżeń, która przypisuje każdemu przejściu wyrażenie spełniające warunek: t T : T (G(t)) Bool T (V(G(t))) Σ, tzn. wyrażenie, którego wynik jest typu Bool oraz typ każdej zmiennej w wyrażeniu należy do zbioru Σ. E funkcja wag łuków, która przypisuje każdemu z łuków wyrażenie, takie że: a A: T (E(a)) 2 C(P (a)) T (V(E(a))) Σ, tzn. wyrażenie, którego typy zmiennych należą do Σ oraz którego wynik jest typu należącego do wielozbioru nad typem przypisanym do miejsca P (a). M 0 znakowanie poczatkowe, takie że p P, M 0 (p) 2 C(p), tzn. M 0 jest funkcją przyporządkowującą każdemu miejscu wielozbiór nad typem przypisanym do tego miejsca. Dla danej sieci kolorowanej N = (Σ, P, T, A, γ, C, G, E, M 0 ) oraz zbioru węzłów sieci V = P T, zbiór łuków otaczających węzeł x V zdefiniowany jest następująco: A(x) = {a A: x V (γ(a) = (x, x ) γ(a) = (x, x))}

14 2.2. Sieci kolorowane 15 Definicja Wiazanie przejścia Wiazaniem przejścia t T nazywane jest odwzorowanie b określone na zbiorze V(t), takie że v V(t): b(v) T (v) G(t) = true, tzn. wyrażenie b dla każdej zmiennej przypisuje wartość należącą do typu tej zmiennej oraz spełniony jest dozór przejścia t. Symbolem B(t) oznaczamy zbiór wszystkich wiązań przejścia t. Symbol B oznacza zbiór par (t, b), takich że t T i b B(t). Definicja Znakowanie Znakowaniem sieci kolorowanej N nazywana jest dowolna funkcja M określona na zbiorze miejsc sieci, taka że: p P : M(p) 2 C(p). Dla pary węzłów x, y V symbolem E(x, y) oznaczane jest wyrażenie powstałe poprzez zsumowanie wyrażeń na łukach, których początkiem jest x, a końcem y. Wynik wartościowania tego wyrażenia oznaczany jest symbolem E(x, y) b. Wielozbiór znaczników usuwanych podczas wykonania przejścia t z miejsca p oznaczany jest symbolem E(p, t) b, natomiast wielozbiór znaczników dodawanych do miejsca p oznaczany jest symbolem E(t, p) b. Definicja Aktywność przejścia Przejście t T jest aktywne przy znakowaniu M i wiązaniu b B(t), jeśli spełniony jest następujący warunek: p In(t): E(p, t) b M(p), tzn. jeśli każde z miejsc wejściowych przejścia t zawiera przy wiązaniu b odpowiednią ilość odpowiednich wartości znaczników. Przejście t jest aktywne przy znakowaniu M, jeśli jest aktywne dla znakowania M i pewnego wiązania b B(t). Nowe znakowanie M, otrzymane po wykonaniu aktywnego przy znakowaniu M i wiązaniu b przejścia t, określane jest na podstawie następującego równania: M(p) E(p, t) b gdy p In(t) Out(t) M M(p) + E(t, p) b gdy p Out(t) In(t) (p) = M(p) E(p, t) b + E(t, p) b gdy p In(t) Out(t) M(p) w pozostalych przypadkach Przykład sieci kolorowanej (N) został pokazany na rysunku 2.4. W przykładzie zadeklarowano trzy typy danych Σ = {LICZBA, LICZNIK, WYNIK }:

15 2.2. Sieci kolorowane 16 p1 1`(2.0) ++ 1`(4.0) ++ 1`(8.0) x LICZBA (z + (x/y),i+1) [y<>0.0] t1 p3 (0.0,0) WYNIK y (z,i) 1`(0.0) ++ 1`(0.5) ++ 1`(2.0) p2 LICZBA colset LICZBA = real; colset LICZNIK = int with ; colset WYNIK = product LICZBA * LICZNIK; var x,y,z : LICZBA; var i : LICZNIK; Rysunek 2.4: Przykład sieci kolorowanej LICZBA liczba rzeczywista LICZNIK podzbiór zbioru liczb całkowitych WYNIK krotka dwuelementowa, przechowująca uporządkowaną parę wartości typów LICZBA i LICZNIK. Zadeklarowane zostały również zmienne x, y, z typu LICZBA oraz i typu LICZNIK. Działanie sieci można opisać w następujący sposób: Przejście t1 wybiera losowo po jednym znaczniku z miejsca p1 (w zmiennej x) i miejsca p2 (w zmiennej y), a następnie dodaje wynik dzielenia x/y do sumy poprzednich ilorazów, pobranej z miejsca p3 (w zmiennej z). Dodatkowo z miejsca p3 pobierana i inkrementowana jest zmienna i, będąca licznikiem wykonanych operacji. Dla uporządkowanego względem indeksów zbioru miejsc, znakowanie początkowe wynosi M 0 = ((2.0) + (4.0) + (8.0), (0.0) + (0.5) + (2.0), (0.0, 0)). Znakowanie początkowe zostało umieszczone przy każdym miejscu z prawej strony u góry. Zapis znakowania został zmodyfikowany na potrzeby parsera programu CPNTools symbol + został zastąpiony symbolem ++ oraz pomiędzy ilością a wartością znacznika wprowadzony został symbol. Przejście t1 posiada zastrzeżenie o postaci [y <> 0.0], którego zadaniem jest niedopuszczenie do wykonania dzielenia przez 0. Wobec tego, aby przejście t1 było aktywne, nie wystarczy by w każdym z

16 2.2. Sieci kolorowane 17 miejsc p1, p2 i p3 znajdowała się odpowiednia ilość znaczników, ale również wartość znacznika pochodzącego z miejsca p2 musi być różna od 0. Przejście t1 jest aktywne przy znakowaniu początkowym M 0 i sześciu możliwych wiązaniach, m.in. b 1 = (2.0/x, 0.5/y, 0.0/z, 0/i), b 2 = (2.0/x, 2.0/y, 0.0/z, 0/i), b 3 = (8.0/x, 0.5/y, 0.0/z, 0/i). Wykonanie przejścia t1 przy wiązaniu b 1 spowoduje powstanie nowego znakowania M 1 = ((4.0) + (8.0), (0.0) + (2.0), (4.0, 1)). Przy znakowaniu M 1 przejście t1 wciąż jest aktywne przy dwóch możliwych wiązaniach b 7 = (4.0/x, 2.0/y, 4.0/z, 1/i) oraz b 8 = (8.0/x, 2.0/y, 4.0/z, 1/i). Wykonanie przejścia t1 zarówno przy wiązaniu b 7, jak i b 8, powoduje osiągnięcie tzw. znakowania martwego, to znaczy, że przy tym oznakowaniu żadne przejście nie jest aktywne. Jest to spowodowane tym, że jedynym pozostałym znacznikiem w miejscu p2 jest w tym wypadku znacznik (0.0), który nie może zostać powiązany ze zmienną y ze względu na zastrzeżenie przejścia t1. Podobnie jak to miało miejsce w przypadku sieci miejsc i przejść, bardzo ważną rolę w analizie sieci kolorowanych odgrywa ograniczoność. W przypadku sieci kolorowanych ograniczenie rozpatruje się w dwóch kategoriach. Ograniczoność dotyczy w tym przypadku nie tylko liczby znaczników, ale również ich wartości. Możliwe znakowania miejsca w sieciach kolorowanych określa się więc za pomocą górnych i dolnych ograniczeń liczbowych oraz górnych i dolnych ograniczeń wielozbiorowych. Definicja Ograniczoność w sieciach kolorowanych Niech N = (Σ, P, T, A, γ, C, G, E, M 0 ) będzie siecią kolorowaną. 1. Miejsce p P nazywane jest ograniczonym, jeżeli spełniony jest warunek: k N M R(M 0 ): M(p) k, tzn. dla każdego znakowania osiągalnego ze znakowania początkowego M 0, liczba znaczników w miejscu p nie przekracza k. Miejsce takie nazywane jest k-ograniczonym. Liczba k nazywana jest górnym ograniczeniem tego miejsca. Jeśli miejsce p nie jest ograniczone, to nazywane jest nieograniczonym. Jeśli wszystkie miejsca sieci N są k-ograniczone, to sieć ta nazywana jest k-ograniczona. 2. Liczba k nazywana jest dolnym ograniczeniem miejsca p P, jeżeli spełniony jest warunek: M R(M 0 ): M(p) k. 3. Wielozbiór X 2 C(p) nazywany jest górnym ograniczeniem wielozbiorowym miejsca p P, jeżeli spełniony jest warunek: M R(M 0 ): M(p) X. 4. Wielozbiór X 2 C(p) nazywany jest dolnym ograniczeniem wielozbiorowym miejsca p P, jeżeli spełniony jest warunek: M R(M 0 ): X M(p).

17 2.3. Analiza sieci Petriego Analiza sieci Petriego Analiza sieci miejsc i przejść Jedną z grup metod analizy sieci jest analiza zbioru znakowań osiągalnych [SS10]. Zbiór osiągalnych znakowań sieci przedstawiany jest w postaci grafu skierowanego. Węzłami grafu są osiągalne znakowania. Łuki są etykietowane nazwą przejścia t i łączą znakowanie sieci przed wykonaniem przejścia, ze znakowaniem sieci po wykonaniu tego przejścia. Rozwiązaniem problemu osiągalności jest odpowiedź na pytanie, czy znakowanie M jest osiągalne w danej sieci [Hal] [BMO]. Innymi słowy jest to poszukiwanie ciągu przejść ze znakowania M do znakowania M. Jeśli znakowanie M otrzymywane jest po wykonaniu jednego przejścia, to mówi się, że jest ono bezpośrednio osiagalne. Przykład Przykład grafu osiagalności Sieć miejsc i przejść wykorzystywana w przykładzie została przedstawiona na rysunku 2.5. Budowa p1 t1 t2 p2 t3 t4 p3 p4 Rysunek 2.5: Sieć miejsc i przejść. drzewa osiągalności wygląda następująco: 1. Korzeń drzewa jest etykietowany poprzez znakowanie początkowe M Dla każdego liścia drzewa o znakowaniu M: jeśli istnieje znakowanie M, osiągalne bezpośrednio ze znakowania M, to węzeł ma dodawane dziecko o etykiecie M. Łuk jest etykietowany przejściem t, dla którego M t M. 3. Jeśli w poprzednim kroku dodane zostały nowe węzły, to przejdź do kroku 2. W przeciwnym wypadku zakończ. Drzewo osiągalności dla podanego przykładu zostało przedstawione na rysunku 2.6. Drzewo określa w sposób jednoznaczny ciąg przejść jaki należy wykonać, aby dojść od znakowania korzenia do dowolnego innego osiągalnego znakowania. Drzewo osiągalności często bywa trudne w analizie, ponieważ może być nieskończone, jeśli:

18 2.3. Analiza sieci Petriego 19 (0, 1, 0, 1) t1 t4 (1, 0, 0, 1) (0, 1, 1, 0) t2 t3 (0, 1, 0, 1) (0, 1, 1, 0) t1 t4 (1, 0, 0, 1) (0, 1, 1, 0) t2 t3 Rysunek 2.6: Drzewo osiągalności. zawiera powtarzające się stany, sieć jest nieograniczona. Pierwszy problem rozwiązuje graf osiągalności. Konstrukcja grafu osiągalności wygląda następująco: 1. Węzeł początkowy jest etykietowany poprzez znakowanie początkowe M Dla każdego węzła grafu o znakowaniu M: jeśli istnieje znakowanie M osiągalne bezpośrednio ze znakowania M: 2.1. Jeśli graf zawiera węzeł o etykiecie M, to połącz węzły łukiem o etykiecie t W przeciwnym wypadku dodaj do grafu nowy węzeł o znakowaniu M i połącz węzły łukiem o etykiecie t. 3. Jeśli w poprzednim kroku dodane zostały nowe węzły, to przejdź do kroku 2. W przeciwnym wypadku zakończ. Konstruując graf osiągalności dla podanego przykładu otrzymujemy graf przedstawiony na rysunku 2.7. (0, 1, 0, 1) t1 t2 t4 (1, 0, 0, 1) t3 (0, 1, 1, 0) Rysunek 2.7: Graf osiągalności.

19 2.3. Analiza sieci Petriego 20 p1 p4 p3 t1 t2 t3 t4 p5 p2 Rysunek 2.8: Model systemu konsument producent. Przykład Przykład grafu pokrycia Na rysunku 2.8 został przedstawiony model systemu konsument producent. Sieć ta jest siecią nieograniczoną, dlatego drzewo osiągalności jest nieskończone. Jego fragment pokazuje rysunek 2.9. Graf (1, 0, 0, 1, 0) t1 (0, 1, 0, 1, 0) t2 (1, 0, 1, 1, 0) t1 (0, 1, 1, 1, 0) t2 t3 (1, 0, 0, 0, 1) t1 (1, 0, 2, 1, 0) t1 t3 Rysunek 2.9: Drzewo osiągalności. pokrycia (coverability graph) pozwala przedstawić nieskończony zbiór znakowań na skończonym grafie skierowanym [SS10]. Dla sieci ograniczonych graf ten pokrywa się z grafem osiągalności. Węzeł grafu pokrycia może zawierać znakowanie, którego współrzędne wynoszą. Oznacza to, że dla dowolnego znakowania M istnieje znakowanie M, takie że: p P : M (p) M (p). Poniżej znajduje się algorytm generacji grafu pokrycia: 1. Dodaj węzeł początkowy o znakowaniu M 0. Oznacz go jako nowy. 2. Dopóki istnieje węzeł oznaczony jako nowy:

20 2.3. Analiza sieci Petriego Wybierz węzeł M oznaczony jako nowy Jeśli dla znakowania M nie istnieje aktywne przejście oznacz węzeł jako końcowy. W przeciwnym wypadku, dla każdego przejścia aktywnego przy znakowaniu M wykonaj: Oblicz znakowanie M, gdzie M t M Jeżeli w grafie istnieje znakowanie M, takie że M jest osiągalne z M oraz: ( p P ) M (p) M (p) oraz ( p P ) M (p ) < M (p ) to M = M + ((M M ) ) Jeśli węzeł M nie należy do grafu to dodaj go Dodaj łuk z węzła M do M o etykiecie t, gdzie M t M. Oznacz węzeł M jako nowy, a M jako stary. Graf pokrycia dla przedstawionej sieci pokazuje rysunek 2.10 (1, 0, 0, 1, 0) t1 (0, 1, 0, 1, 0) t2 t2 t1 (1, 0,, 1, 0) t3 t4 (0, 1,, 1, 0) (1, 0,, 0, 1) t4 t3 t2 (0, 1,, 0, 1) t1 Rysunek 2.10: Graf pokrycia Analiza sieci kolorowanych Sieci kolorowane, podobnie jak PT-sieci, można analizować na podstawie ich grafu osiągalności [Szp08]. Podobnie jak w przypadku sieci miejsc i przejść, w sieciach kolorowanych węzłami grafu osiągalności są znakowania sieci, a etykiety łuków zawierają nazwę przejścia (i wiązania) wykonanego pomiędzy jednym znakowaniem, a drugim. Definicja Graf osiagalności sieci kolorowanej Grafem osiagalności dla danej sieci kolorowanej N = (Σ, P, T, A, γ, C, G, E, M 0 ) nazywany jest graf G = (V, A, γ) etykietowany nad zbiorem B, spełniający warunki: 1. V = R(M 0 ) jest zbiorem węzłów grafu.

21 2.3. Analiza sieci Petriego A = {(M, (t, b), M ): M, M R(M 0 ) M (t,b) M } jest zbiorem łuków, a etykieta (t, b) oznacza, że wykonanie przejścia t przy wiązaniu b powoduje zmianę znakowania z M na M. 3. a = (M, (t, b), M ) A: γ(a) = (M, M ) (17.0, 2) (9.0, 2) t1, (2.0/x, 2.0/y, 16.0/z, 1/i) t1, (8.0/x, 0.5/y, 1.0/z, 1/i) t1, (4.0/x, 0.5/y, 1.0/z, 1/i) t1, (2.0/x, 2.0/y, 8.0/z, 1/i) (16.0, 1) t1, (4.0/x, 2.0/y, 16.0/z, 1/i) t1, (8.0/x, 0.5/y, 0.0/z, 0/i) (1.0, 1) t1, (2.0/x, 2.0/y, 0.0/z, 0/i) t1, (4.0/x, 0.5/y, 0.0/z, 0/i) (8.0, 1) t1, (8.0/x, 2.0/y, 8.0/z, 1/i) (18.0, 2) (0.0, 0) (12.0, 2) t1, (8.0/x, 0.5/y, 2.0/z, 1/i) t1, (2.0/x, 2.0/y, 0.0/z, 0/i) t1, (2.0/x, 0.5/y, 0.0/z, 0/i) t1, (8.0/x, 2.0/y, 0.0/z, 0/i) t1, (4.0/x, 0.5/y, 4.0/z, 1/i) (2.0, 1) (4.0, 1) (4.0, 1) t1, (2.0/x, 0.5/y, 2.0/z, 1/i) t1, (4.0/x, 2.0/y, 4.0/z, 1/i) t1, (8.0/x, 2.0/y, 4.0/z, 1/i) t1, (2.0/x, 0.5/y, 4.0/z, 1/i) (6.0, 2) (8.0, 2) Rysunek 2.11: Graf osiągalności dla sieci z rys Przykładowy graf osiągalności sieci kolorowanej N znajdującej się na rysunku 2.4 przedstawiony został na rysunku Graf osiągalności dla tej sieci jest konstruowany podobnie jak dla PT-sieci. Węzłem początkowym jest znakowanie początkowe sieci N, czyli M 0 = ((2.0) + (4.0) + (8.0), (0.0) + (0.5) + (2.0), (0.0, 0)). Przy znakowaniu początkowym aktywne jest przejście t1 przy sześciu różnych wiązaniach: b 1 = (2.0/x, 0.5/y, 0.0/z, 0/i), b 2 = (2.0/x, 2.0/y, 0.0/z, 0/i), b 3 = (8.0/x, 0.5/y, 0.0/z, 0/i),

22 2.4. Podsumowanie 23 b 4 = (2.0/x, 2.0/y, 0.0/z, 0/i), b 5 = (4.0/x, 0.5/y, 0.0/z, 0/i), b 6 = (8.0/x, 2.0/y, 0.0/z, 0/i). W wyniku wykonania przejścia t1 przy wiązaniu b1 powstaje nowe znakowanie M 1 = ((4.0) + (8.0), (0.0) + (2.0), (4.0, 1)), które jest nowym węzłem grafu osiągalności, połączonym z węzłem M 0 łukiem o etykiecie zawierającej nazwę przejścia i wiązania. Po rozważeniu wszystkich wiązań przy przejściu t1 rozważane są podobnie aktywne przejścia przy wyznaczonych znakowaniach M 2, M 3,..., M 6. Postępowanie takie powtarzane jest dopóki istnieją aktywne przejścia z rozważanych znakowań. Graf osiągalności sieci kolorowanej jest skończony pod warunkiem, że wszystkie miejsca sieci posiadają górne ograniczenia wielozbiorowe Podsumowanie Sieci Petriego są potężnym narzędziem modelowania wielu klas systemów. Swoją popularność sieci Petriego zyskały dzięki połączeniu dobrze zdefiniowanej teorii matematycznej oraz intuicyjnej reprezentacji graficznej. Teoria matematyczna pozwala na dokładne modelowanie i analizę systemu, natomiast reprezentacja graficzna pozwala na łatwą do zrozumienia wizualizację zmian stanów systemu. Przedstawione w rozdziale sieci miejsc i przejść są jednymi z najbardziej popularnych klas sieci Petriego. Ze względu na swoją prostą strukturę, tworzenie i analizowanie modeli jest przy ich pomocy stosunkowo łatwe. Drugą klasą sieci Petriego opisaną w tym rozdziale były sieci kolorowane, zaliczane do tzw. sieci wysokiego poziomu. Dodają one możliwość definiowania różnych typów znaczników, czego skutkiem jest możliwość opisu złożonych modeli za pomocą stosunkowo prostego grafu. Ceną zwiększenia możliwości modelowania jest wzrost stopnia skomplikowania analizy sieci kolorowanych, która często wymaga wspomagania poprzez odpowiednie oprogramowanie.

23 3. Logiki temporalne Weryfikacja modelowa systemu informatycznego wymaga wyspecyfikowania jego własności w sposób dokładny i niedwuznaczny. Własności te są zazwyczaj opisywane za pomocą języków specyfikacji własności do których należy logika temporalna. Jest ona rozszerzeniem tradycyjnego rachunku zdań zawierającym dodatkowo operatory odnoszące się do zachowania systemu w czasie, przy czym czas nie jest wprowadzany w sposób jawny, ważna jest wyłącznie kolejność osiągania poszczególnych stanów. Logika temporalna umożliwia specyfikowanie wielu rodzajów ważnych własności systemu, takich jak [BK08]: poprawność funkcjonalna odpowiedź na pytanie czy system spełnia swoje zadanie? osiągalność czy istnieje ścieżka prowadzaca do danego stanu systemu? bezpieczeństwo nic złego nigdy się nie stanie żywotność coś dobrego kiedyś się wydarzy sprawiedliwość czy pod pewnymi warunkami określone wydarzenie jest powtarzalne? własności czasu rzeczywistego czy system reaguje w czasie? 3.1. LTL LTL (ang. Linear Temporal Logic) jest formalizmem dostosowanym do specyfikowania LTwłasności. Logika zakłada liniową strukturę czasu. Czas jest zbiorem dyskretnym, w którym każdy punkt ma dokładanie jeden następnik. Poniżej przedstawione zostaną definicje określające składnię LTL [BK08]. Definicja Formuły LTL na zbiorze AP formuł atomowych są tworzone według następującej gramatyki: gdzie a AP. ϕ ::= true a ϕ 1 ϕ 2 ϕ Xϕ ϕ 1 U ϕ 2 24

24 3.1. LTL 25 Operator X oznacza, że formuła jest spełniona w następnym stanie. Natomiast operator U oznacza, że formuła stojąca po lewej stronie operatora jest spełniona aż do momentu, kiedy spełniona jest formuła po prawej stronie operatora U. Używając operatorów logicznych koniunkcji oraz negacji można uzyskać pełen zestaw zdań logicznych [BK08]. Inne operatory logiczne uzyskujemy następująco: ϕ 1 ϕ 2 ϕ 1 ϕ 2 ϕ 1 ϕ 2 ϕ 1 ϕ 2 def === ( ϕ 1 ϕ 2 ) def === ϕ 1 ϕ 2 def Pozostałe operatory definiujemy jak poniżej: === (ϕ 1 ϕ 2 ) (ϕ 2 ϕ 1 ) def === (ϕ 1 ϕ 2 ) (ϕ 2 ϕ 1 ). Fϕ Gϕ def === true U ϕ def === F ϕ Operator F oznacza, że zdanie jest poprawne kiedyś w przyszłości, natomiast G, że zdanie jest poprawne teraz i zawsze w przyszłości. Rysunek liniowej strukturze czasowej. 3.1 pokazuje intuicyjne znaczenie operatorów dla systemu o Rysunek 3.1: Intuicyjne znaczenie operatorów. Definicja Semantyka LTL Niech ϕ będzie formułą LTL nad zbiorem AP. LT-własnością indukowaną przez ϕ jest: Words(ϕ) = { σ (2 AP ) ω : σ = ϕ } gdzie relacja spełniania = (2 AP ) ω LTL jest najmniejszą relacją spełniającą warunki:

25 3.1. LTL 26 σ = true σ = a wtw, gdy a A 0 σ = ϕ 1 ϕ 2 wtw, gdy σ = ϕ 1 i σ = ϕ 2 σ = ϕ wtw, gdy σ = ϕ σ = Xϕ wtw, gdy σ [1...] = A 1 A 2 A 3... = ϕ σ = ϕ 1 U ϕ 2 wtw, gdy j 0 takie, że σ [i...] = ϕ 1 dla wszystkich 0 i < j Tutaj, dla σ = A 0 A 1 A 2... (2 AP ) ω, σ [j...] = A j A j+1 A j+2... jest przyrostkiem σ zaczynającym się w (j + 1)-szym symbolu A j. Definicja System tranzycyjny System tranzycyjny TS jest krotką (S, Act,, I, AP, L), gdzie: S jest zbiorem stanów, Act jest zbiorem akcji, S Act S jest relacją przejść, I S jest zbiorem stanów początkowych, AP jest zbiorem formuł atomowych, L: S 2 AP jest funkcją etykietującą stany. TS jest nazywany skończonym, jeżeli S, Act oraz AP są skończone. Definicja Bezpośrednie poprzedniki i następniki Niech TS = (S, Act,, I, AP, L) będzie systemem tranzycyjnym. Dla s S oraz α Act zbiór bezpośrednich α następników stanu s jest zdefiniowany następująco: Post (s, α) = { s S s α s }, Post (s) = α Act Post (s, α) Zbiór bezpośrednich α poprzedników stanu s jest zdefiniowany następująco: Pre (s, α) = { } s S s α s, Pre (s) = α Act Pre (s, α) Definicja Ścieżka częściowa Skończona ścieżką częściową ˆπ systemu tranzycyjnego T S jest skończona sekwencja stanów s 0 s 1... s n taka, że s i Post (s i 1 ) dla każdego 0 < i n, gdzie n 0.

26 3.1. LTL 27 Definicja Maksymalna i poczatkowa ścieżka skończona Maksymalna ścieżką częściową jest albo skończona ścieżka częściowa, która kończy się w stanie terminalnym, albo nieskończona ścieżka częściowa. Ścieżka częściowa jest nazywana poczatkow a, jeżeli zaczyna się w stanie początkowym, np. jeśli s 0 I. Definicja Ścieżka Ścieżka systemu tranzycyjnego TS to początkowa, maksymalna ścieżka częściowa. Zapis Paths(TS) oznacza zbiór wszystkich ścieżek TS, a Paths fin (TS) odpowiada zbiorowi wszystkich początkowych, skończonych ścieżek częściowych systemu tranzycyjnego T S. Definicja Ślady Niech TS = (S, Act,, I, AP, L) będzie systemem tranzycyjnym bez stanów terminalnych. Ślad (trace) nieskończonej ścieżki π = s 0 s 1... jest zdefiniowany jako trace(π) = L(s 0 )L(s 1 ).... Ślad skończonej ścieżki ˆπ = s 0 s 1... s n jest zdefiniowany jako trace(ˆπ) = L(s 0 )L(s 1 )... L(s n ). Śladem stanu s jest ślad nieskończonej ścieżki częściowej π, która zaczyna się w stanie s. Zbiór śladów stanu s zapisywany jest jako Traces(s). Zapis Traces(TS) oznacza zbiór śladów stanów początkowych systemu tranzycyjnego TS. Definicja Semantyka LTL nad ścieżkami i stanami Niech TS = (S, Act,, I, AP, L) będzie systemem tranzycyjnym bez stanów terminalnych oraz niech ϕ będzie formułą LTL nad zbiorem AP. Dla fragmentu π nieskończonej ścieżki TS relacja spełniania jest zdefiniowana następująco: π = ϕ wtw, gdy trace (π) = ϕ Dla stanu s S, relacja spełniania = jest zdefiniowana następująco: s = ϕ wtw, gdy ( π Paths(s) : π = ϕ) TS spełnia ϕ, zapisywane jako TS = ϕ, jeśli Traces(TS) Words(ϕ) Przedstawiony zostanie zmodyfikowany przykład systemu tranzycyjnego zaczerpnięty ze źródła [BK08]. Rysunek 3.2: Przykład systemu tranzycyjnego.

27 3.2. CTL 28 Przykład Przykład systemu tranzycyjnego Przykład systemu tranzycyjnego został przedstawiony na rysunku 3.2. Zbiór stanów początkowych I = {s 0, s 2 }. Zbiór formuł atomowych AP = {a, b}. W podanym przykładzie, T S = Ga, ponieważ w każdym z trzech stanów systemu, a jest spełnione. s 0 = X(a b), ponieważ jedynym następnikiem s 0 jest s 1, w którym spełnione jest a b. Natomiast T S = X(a b), gdyż s 2 I oraz s 2 = X(a b). Następnikiem stanu s 2 jest on sam, a w tym stanie nie jest spełnione a b, ponieważ nie jest spełnione b. Prawdą jest, że T S = G( b (a b)). W stanach s 0 oraz s 1 lewa strona implikacji jest nieprawdziwa, co powoduje prawdziwość całej implikacji. Natomiast dla stanu s 2 zdanie b jest spełnione, przez co prawa strona implikacji również musi być prawdziwa. Dla stanu s 2 formuła G( b (a b)) jest spełniona, gdyż system już zawsze będzie w stanie s 2, w którym spełnione jest a i nie spełnione jest b CTL CTL (ang. Computation Tree Logic) [HR04] [BK08] jest logiką czasu rozgałęzionego pozwalającą specyfikować własności systemu. Model czasu w tej logice jest strukturą drzewiastą, w której przyszłość nie jest jednoznacznie określona. W przyszłości istnieje wiele potencjalnych ścieżek, z których każda może być wykonana. CTL posiada dwa rodzaje formuł: formuły stanowe, będące asercjami atomicznych wyrażeń logicznych, dotyczących stanów oraz formuły ścieżkowe, określające własności temporalne ścieżek. Formuły ścieżkowe w CTL, podobnie jak w LTL, tworzone są z operatorów U (until) oraz X (next-step), jednak nie mogą być łączone przy pomocy boolowskich spójników logicznych, ani bezpośrednio zagnieżdżane. Poniżej przedstawione zostaną definicje określające składnię CTL [BK08]: Definicja Składnia CTL Formuły stanowe w CTL nad zbiorem AP są zdaniami atomicznymi, tworzonymi zgodnie z następującą gramatyką: Φ ::= true a Φ 1 Φ 2 Φ ϕ ϕ gdzie a AP oraz ϕ jest formułą ścieżkową. Formuły ścieżkowe w CTL są tworzone według następującej gramatyki: ϕ ::= XΦ Φ 1 U Φ 2 gdzie Φ, Φ 1 oraz Φ 2 są formułami stanowymi Formuły stanowe oznaczane są w CTL u wielkimi, greckimi literami, natomiast formuły ścieżkowe oznaczane są literami małymi. CTL wprowadza rozróżnienie pomiędzy formuły ścieżkowe oraz formuły stanowe. Operatory temporalne X oraz U mają to samo znaczenie co w LTL i są nazywane operatorami ścieżkowymi. Formuła XΦ jest spełniona dla ścieżki, jeśli Φ jest spełnione w następnym stanie tej ścieżki, a formuła Φ U Ψ jest spełniona, jeśli na ścieżce istnieje taki stan, który spełnia Ψ oraz Φ jest spełnione dla każdego poprzedniego

28 3.2. CTL 29 stanu na ścieżce. Formuły stanowe tworzone są poprzez dodanie do formuł ścieżkowych kwantyfikatora ścieżkowego (inaczej E), oznaczającego istnieje ścieżka lub kwantyfikatora ścieżkowego (inaczej A), oznaczającego każda ścieżka. Aby formuła mogła zostać uznana za poprawną, liniowe operatory temporalne X oraz U muszą być bezpośrednio poprzedzone przez operatory lub. Formuła ϕ jest spełniona dla stanu jeśli istnieje ścieżka spełniająca ϕ zaczynająca się w tym stanie. Podobnie formuła ϕ jest spełniona jeśli wszystkie ścieżki zaczynające się w tym stanie spełniają ϕ. Formuły CTL są rozpatrywane nad stanami i ścieżkami systemu tranzycyjnego TS [BK08]. Semantyka formuł CTL dla systemu tranzycyjnego TS jest zdefiniowana poprzez dwie relacje spełniania: jedna dla formuł ścieżkowych i jedna dla formuł stanowych. Relację spełniania oznaczamy jako = TS lub w skrócie =. Dla formuł stanowych = jest relacją pomiędzy stanami, a formułą stanową. Zapis s = Φ oznacza, że relacja s = Φ jest spełniona wtedy i tylko wtedy, gdy formuła stanowa Φ jest spełniona dla stanu s. Dla formuł ścieżkowych = jest relacją pomiędzy maksymalnymi fragmentami ścieżek, a formułą ścieżkową. Zapis π = ϕ oznacza, że relacja π = ϕ jest spełniona wtedy i tylko wtedy, gdy ścieżka π spełnia formułę ścieżkową ϕ. Definicja Relacja spełniania w CTL Niech a AP będzie wyrażeniem atomicznym, TS = (S, Act,, I, AP, L) będzie systemem tranzycyjnym bez stanów terminalnych, stan s S, Φ, Ψ będą formułami stanowymi oraz ϕ będzie formułą ścieżkową CTL. Relacja spełniania = jest zdefiniowana dla formuły stanowej jako: s = a wtw, gdy a L(s) s = Φ wtw, gdy nieprawda, że s = Φ s = Φ Ψ wtw, gdy (s = Φ)i(s = Ψ) s = ϕ wtw, gdy π = ϕ dla dowolnej π Paths(s) s = ϕ wtw, gdy π = ϕ dla wszystkich π Paths(s) Dla ścieżki π, realacja spełnienia = formuły ścieżkowej jest zdefiniowana następująco: π = XΦ π = Φ U Ψ wtw, gdy π[1] = Φ wtw, gdy j 0 : (π[j] = Ψ ( 0 k < j, π[k] = Φ)) gdzie dla ścieżki π = s 0 s 1 s 2... oraz liczby całkowitej i 0, π[i] oznacza (i+1)-szy stan π, np. π[i] = s i. Definicja Semantyka formuł CTL dla systemów tranzycyjnych Dla systemu tranzycyjnego TS = (S, Act,, I, AP, L) zbiór Sat T S (Φ), w skrócie Sat(Φ), dla formuły stanowej CTL Φ jest zdefiniowany następująco: Sat(Φ) = s S : s = Φ System tranzycyjny TS spełnia formułę CTL Φ wtedy i tylko wtedy, gdy Φ jest spełnione dla wszystkich stanów początkowych TS: TS = Φ wtw, gdy s 0 I, s 0 = Φ

29 3.2. CTL 30 Jest to odpowiednikiem zapisu I Sat(Φ). Interpretację podstawowych formuł CTL można przedstawić następująco: EFΦ istnieje taka ścieżka, że jeden z jej stanów spełnia Φ AFΦ dla każdej ścieżki, jeden z jej stanów spełnia Φ EGΦ istnieje taka ścieżka, że każdy z jej stanów spełnia Φ AGΦ każdy stan, każdej ścieżki spełnia Φ (niezmiennik) EXΦ istnieje ścieżka, której następny stan spełnia Φ AXΦ w następnym stanie każdej ścieżki spełnione jestφ E(Φ U Ψ) istnieje ścieżka posiadająca stan spełniający Ψ i Φ jest spełnione w każdym poprzednim stanie tej ścieżki. A(Φ U Ψ) każda ścieżka posiada stan spełniający Ψ i Φ jest spełnione w każdym poprzednim stanie tych ścieżek. Formuły te zostały schematycznie przedstawione na rysunku 3.3. Przykład Przykład formuł CTL dla systemu tranzycyjnego Przykład systemu tranzycyjnego [BK08], został przedstawiony na rysunku 3.4. T S posiada jeden stan początkowy, I = {s 0 }. Zbiór formuł atomowych AP = {a, b}. Dla systemu TS sprawdzane są następujące formuły: Φ = EXa jest spełniona dla każdego stanu, Sat(Φ) = {s 0, s 1, s 2, s 3 }, ponieważ każdy stan posiada jako następnika stan spełniający a. TS = Φ, ponieważ jego stany początkowe spełniają Φ. Φ = AXa jest spełniona dla każdego stanu z wyjątkiem s 0, Sat(Φ) = {s 1, s 2, s 3 }, ponieważ tylko stan s 0 posiada jako następnik stan niespełniający a. TS = Φ, ponieważ jeden z jego stanów początkowych nie spełnia Φ. Φ = EGa jest spełniona dla każdego stanu oprócz s 2, Sat(Φ) = {s 0, s 1, s 3 }, ponieważ tylko stan s 0 nie spełnia a. Z każdego z pozostałych stanów istnieje taka ścieżka, która dla każdego stanu spełnia a. TS = Φ, ponieważ jego stany początkowe spełniają Φ. Φ = AGa jest spełniona tylko dla stanu s 3, Sat(Φ) = {s 3 }, ponieważ tylko stan s 3 spełnia a oraz nie posiada żadnego innego następnika poza samym sobą. Z każdego z pozostałych stanów istnieje taka ścieżka, która prowadzi do stanu s 2, który nie spełnia a. TS = Φ, ponieważ jeden z jego stanów początkowych nie spełnia Φ.

30 3.2. CTL 31 EF czarny AF czarny EG czarny AG czarny EX czarny AX czarny E(szary U czarny) A(szary U czarny) Rysunek 3.3: Intuicyjne przedstawienie podstawowych formuł CTL. Φ = EF(EGa) jest spełniona dla każdego stanu, Sat(Φ) = {s 0, s 1, s 2, s 3 }, ponieważ z każdego stanu istnieje ścieżka do stanu s 3, który spełnia AGa, a więc tym samym spełnia EGa. TS = Φ, ponieważ jego stany początkowe spełniają Φ. Φ = A(a U b) jest spełniona dla każdego stanu oprócz s 3, Sat(Φ) = {s 0, s 1, s 2, s 3 }. Stany s 1 i s 2 spełniają natychmiastowo A(a U b), ponieważ spełniają b. Stan s 0 również spełnia A(a U b), ponieważ spełnia a i wszyscy jego bezpośredni sukcesorzy spełniają b. Tylko s 3 nie posiada żadnego następnika spełniającego b. TS = Φ, ponieważ jego stany początkowe spełniają Φ. Φ = E(a U ( a A( a U b))) jest spełniona dla każdego stanu oprócz s 3, Sat(Φ) = {s 0, s 1, s 2 }. Stan s 2 spełnia tylko b, więc spełnia od razu a A( a U b), a więc spełnia również Φ. Stany s 0 i s 1 również spełniają Φ, ponieważ istnieje z nich ścieżka prowadząca do stanu s 2, na której każdy stan, aż do s 2, spełnia a. Stan s 3 nie spełnia Φ, ponieważ nie posiada on żadnego na-

31 3.3. Porównanie LTL i CTL 32 Rysunek 3.4: Przykład systemu tranzycyjnego. stępnika oprócz samego siebie i nie ma z niego ścieżki prowadzącej do stanu spełniającego choćby a. TS = Φ, ponieważ jego stany początkowe spełniają Φ Porównanie LTL i CTL W logice LTL formuły są sprawdzane na ścieżkach. Stan systemu z definicji spełnia formułę LTL, jeśli wszystkie ścieżki od danego stanu spełniają tę formułę. Natomiast w logice CTL ścieżki kwantyfikowane są jawnie, przez co w tym aspekcie CTL jest bardziej ekspresywny od logiki LTL. Z drugiej strony LTL pozwala na wybór zakresu ścieżek poprzez opisanie ich formułą, co w logice CTL nie jest możliwe. Przykładowo chcąc sprawdzić formułę wszystkie ścieżki zawierajace stan spełniajacy p, zawieraja również stan spełniajacy q w LTL można zapisać następująco: F p F q. Nie jest możliwe zapisanie tej formuły w CTL, ponieważ każdy operator F musi zostać poprzedzony kwantyfikatorem ścieżkowym A lub E. Formuła CTL AF p AF q nie jest równoznaczna, gdyż oznacza jeżeli wszystkie ścieżki zawieraja stan spełniajacy p, to wszystkie ścieżki zawieraja stan spełniajacy q. Formuła CTL AG (p AF q) jest bliższa wspomnianej formule LTL, jednak wymusza, by stan spełniający q znajdował się na ścieżce po wystąpieniu stanu spełniającego p, a w formule LTL nie ma takiego ograniczenia [HR04]. CTL* CTL LTL Rysunek 3.5: Siła ekspresji LTL, CTL oraz CTL*.

32 3.3. Porównanie LTL i CTL 33 Istnieje logika temporalna łącząca ekspresywność zarówno logiki LTL, jak i CTL poprzez zlikwidowanie ograniczenia CTL, mówiącego o tym, że przed każdym operatorem temporalnym (X, U, F, G) musi wystąpić operator ścieżkowy (A, E). Logika ta nazywana jest CTL* [HR04]. Składania CTL* składa się z dwóch klas formuł: formuł stanowych, które są sprawdzane dla stanów: φ ::= true false p ( φ) (φ φ) A [α] E [α] gdzie p jest dowolną formułą atomową, a α jest dowolną formułą ścieżkową. formuł ścieżkowych, obliczanych dla ścieżek: α ::= φ ( α) (α α) (α U α) (G α) (F α) (X α) gdzie φ jest dowolną formułą stanową. Rysunek 3.5 przedstawia relację między siłami ekspresji LTL, CTL oraz CTL*. Przykładowo formułę w którymkolwiek stanie się nie znajdziemy, zawsze można dojść do stanu, gdzie p będzie spełnione można wyrazić w CTL jako AG EF p, jednak nie ma zapisu w LTL, który odpowiadałby tej formule. Z kolei w LTL można zapisać formułę jeżeli jest nieskończenie wiele p wzdłuż ścieżki, wtedy kiedyś wystapi p jako GF p F q, co nie ma odpowiednika w CTL. Natomiast formułę po p ewentualnie występuje q można zapisać zarówno w LTL przez zapis G (p F q), jak i w CTL AG (p AF q). Istnieją również formuły, które można wyrazić jedynie przy użyciu CTL*, przykładowo istnieje ścieżka z nieskończona licza stanów spełniajacych p, co zapisuje się jako E [GF p].

33 4. NuSMV NuSMV [CCGR00] [CCJ + 10] [CCK + 10] jest narzędziem do weryfikacji formalnej systemów o skończonej liczbie stanów. Jest oprogramowaniem typu Open Source - został opracowny przez FBK- IRST oraz Carnegie Mellon University. Pozwala na weryfikację systemów według specyfikacji w logikach temporalnych CTL oraz LTL. Jednym z głównych celów języka NuSMV jest opis przejść między stanami systemu. NuSMV bazuje na modelu opracowanym przez McMillan a w Carnegie Mellon University, znanym jako SMV - wprowadza jednak wiele usprawnień, w tym: tryb interaktywny, w którym użytkownik może wywoływać różne obliczenia (inicjalizacja, wybór stanu początkowego, symulacja itd.); analizę niezmienników, w tym formuł które pozostają niezmienne dla badanego modelu; weryfikację modelową, w tym logiki CTL, LTL oraz PSL. Celem projektu NuSMV jest rozwój narzędzia do weryfikacji modelu, które: jest otwarte i konfigurowalne, może być stosowane w projektach transferu technologii, może być stosowane jako narzędzie do badań w różnych dziedzinach Opis formatu W tym rozdziale przedstawione zostaną podstawowe zasady semantyczne i syntaktyczne języka Nu- SMV określone w NuSMV User Manual [CCJ + 10]. Nazwy zmiennych w języku NuSMV mogą być ciągiem znaków rozpoczynającym się od znaku zawierającego się w zbiorze {A-Za-z_}, po czym mogą zawierać znaki ze zbioru {A-Za-z0-9_$#-}. Identyfikatory nie mogą być zarezerwowanymi słowami kluczowymi: MODULE, DEFINE, MDEFINE, CONSTANTS, VAR, IVAR, FROZENVAR, INIT, TRANS, INVAR, SPEC, CTLSPEC, LTLSPEC, PSLSPEC, COMPUTE, 6 NAME, INVARSPEC, FAIRNESS, JUSTICE, COMPAS- SION, ISA, ASSIGN, CONSTRAINT, SIMPWFF, CTLWFF, LTLWFF, PSLWFF, COMPWFF, IN, MIN, MAX, MIRROR, PRED, PREDICATES, process, array, of, boolean, integer, real, word, word1, bool, signed, unsigned, extend, resize, sizeof, uwconst, swconst, EX, AX, EF, AF, EG, AG, E, F, O, G, H, X, Y, 34

34 4.1. Opis formatu 35 Z, A, U, S, V, T, BU, EBF, ABF, EBG, ABG, case, esac, mod, next, init, union, in, xor, xnor, self, TRUE, FALSE, count. Podstawowymi typami dostępnymi w NuSMV są: boolean, integer, enum, word oraz array. Moduł programu może składać się z trzech części: VAR - zawiera definicje zmiennych używanych w programie; ASSIGN - może zawierać inicjalizację zmiennych (co służy do określenia stanów początkowych) oraz przypisuje kolejne wartości dla zmiennych; CTLSPEC / LTLSPEC - sekcja zawiera specyfikację CTL lub LTL; narzędzie NuSMV umożliwia sprawdzanie spełniania przez system określonych własności. Listing 4.1: Przykład pliku NuSMV. 1 MODULE main 2 VAR 3 s: {s1, s2, s3, s4, s5}; 4 a : boolean; 5 b : boolean; 6 ASSIGN 7 init(s) := s1; 8 next(s) := case 9 s = s1 : {s2, s3}; 10 s = s2 : {s3}; 11 s = s3 : {s4, s1}; 12 s = s4 : {s5}; 13 s = s5 : {s5}; 14 esac; 15 a := case 16 s = s2 : TRUE; 17 s = s3 : TRUE; 18 TRUE : FALSE; 19 esac; 20 b := case 21 s = s3 : TRUE; 22 s = s5 : TRUE; 23 TRUE : FALSE; 24 esac; 25 LTLSPEC G a 26 LTLSPEC X a W podanym przykładzie s reprezentuje aktualny stan systemu, s1 do s5 to stany systemu, natomiast a oraz b są formułami atomicznymi. Zmienna s jest inicjalizowana funkcją init, co oznacza, że początkowym stanem systemu jest stan s1. Funkcja next przyporządkowuje stanom s ich następników. W kolejnej

35 4.2. Interaktywny tryb NuSMV 36 Funkcja read_model -i <plik wejściowy> go pick_state -r pick_state -i goto_state <stan> print_current_state -v simulate [-i] [-k n] show_traces -v show_states quit compute_reachable print_reachable_states check_ctlspace check_ltlspace Opis Wczytanie pliku wejściowego typu.smv Inicjalizacja Losowy wybór stanu początkowego Interaktywny wybór stanu początkowego Ustawienia aktualnego stanu Opis aktualnego stanu, prezentacja aktualnych wartości zmiennych Symulacja, opcjonalna symulacja interaktywna, opcjonalne podanie liczby kroków (n) symulacji Wyświetlenie kolejnych kroków przeprowadzonej symulacji Wypisanie stanów Zakończenie pracy Oblicza zbiór stanów osiągalnych Wypisanie obliczonego zbioru stanów osiągalnych Sprawdzanie spełniania formuł CTL przez system Sprawdzanie spełniania formuł LTL przez system Tablica 4.1: Przykłady najważniejszych funkcji interaktywnego trybu NuSMV. części określone zostało, dla których ze stanów od s1 do s5, formuły atomowe a oraz b są spełnione. Łatwo odczytać, że a jest spełnione w stanach s1 oraz s2, natomiast b jest spełnione w stanach s3 oraz s5. Na końcu pliku podane zostały formuły LTL dla systemu Interaktywny tryb NuSMV NuSMV posiada tryb interaktywny, dzięki któremu użytkownik może wywoływać odpowiednie obliczenia lub wpływać na stan systemu. Aby uruchomić narzędzie NuSMV w trybie interaktywnym należy wywołać polecenie NuSMV - int <opcjonalny plik wejściowy>. Przykłady najważniejszych funkcji interaktywnego trybu NuSMV przedstawia tabela Przykład weryfikacji modelowej z wykorzystaniem programu Nu- SMV W tym podrozdziale przeprowadzona zostanie weryfikacja modelowa przykładów przedstawionych na rysunkach 3.2 oraz 3.4 wykorzystując narzędzie NuSMV. Przykład Przykład weryfikacji modelowej z wykrzystaniem NuSMV - LTL Przykład systemu tranzycyjnego został przedstawiony na rysunku 3.2. Zbiór stanów początkowych

36 4.3. Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV 37 I = {s 0, s 2 }. Zbiór formuł atomowych AP = {a, b}. Wykorzystując narzędzie NuSMV sprawdzone zostanie, czy model spełnia formuły: T S = Ga T S = X(a b) T S = G( b (a b)) Dla przedstawionego systemu plik.smv wygląda następująco: Listing 4.2: Plik NuSMV wraz ze specyfikacją LTL. 1 MODULE main 2 VAR 3 s: {s0, s1, s2}; 4 a : boolean; 5 b : boolean; 6 ASSIGN 7 init(s) := {s0, s2}; 8 next(s) := case 9 s = s0 : {s1}; 10 s = s1 : {s0, s2}; 11 s = s2 : {s2}; 12 esac; 13 a := case 14 s = s0 : TRUE; 15 s = s1 : TRUE; 16 s = s2 : TRUE; 17 TRUE : FALSE; 18 esac; 19 b := case 20 s = s0 : TRUE; 21 s = s1 : TRUE; 22 TRUE : FALSE; 23 esac; 24 LTLSPEC G a 25 LTLSPEC X (a & b) 26 LTLSPEC G (!b -> G(a &!b)) Tak przygotowany plik zapisany został pod nazwą example_ltl.smv. Poniżej przedstawiona zostanie instrukcja wprowadzenia modelu oraz odczytania interesujących informacji na jego temat. W pierwszej kolejności należy uruchomić narzędzie NuSMV w trybie interaktywnym: $./NuSMV -int

37 4.3. Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV 38 W następnym kroku należy wczytać plik.smv oraz uruchomić inicjalizację: NuSMV > read_model -i example_ltl.smv NuSMV > go Jeśli narzędzie nic nie wyświetla, oznacza to, że plik został poprawnie wczytany i nie zawiera błędów syntaktycznych. Aby wybrać stan początkowy należy wpisać: pick_state -i Dla podanego przykładu, do zbioru stanów początkowych należą s0 oraz s2. Lista tych stanów, wraz z odpowiadającymi wartościami zmiennych, zostaje wyświetlona w linii komend. Poniżej listy znajduje się zapytanie do użytkownika o wybór stanu: *************** AVAILABLE STATES ************* ================= State ================= 0) s = s0 a = TRUE b = TRUE ================= State ================= 1) s = s2 b = FALSE Choose a state from the above (0-1): Po wyborze stanu początkowego, przeprowadzona została interaktywna symulacja przejść między kolejnymi stanami: NuSMV > simulate -i ******** Simulation Starting From State 2.1 ******** *************** AVAILABLE STATES ************* ================= State ================= 0) s = s1 a = TRUE b = TRUE

38 4.3. Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV 39 There s only one available state. Press Return to Proceed. Chosen state is: 0 *************** AVAILABLE STATES ************* ================= State ================= 0) s = s0 a = TRUE b = TRUE ================= State ================= 1) s = s2 b = FALSE Choose a state from the above (0-1): 0 Chosen state is: 0 *************** AVAILABLE STATES ************* ================= State ================= 0) s = s1 a = TRUE b = TRUE There s only one available state. Press Return to Proceed. Chosen state is: 0 *************** AVAILABLE STATES ************* ================= State ================= 0) s = s0 a = TRUE b = TRUE ================= State ================= 1) s = s2 b = FALSE Choose a state from the above (0-1): 1 Chosen state is: 1 *************** AVAILABLE STATES ************* ================= State ================= 0) s = s2

39 4.3. Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV 40 a = TRUE b = FALSE There s only one available state. Press Return to Proceed. Chosen state is: 0 *************** AVAILABLE STATES ************* ================= State ================= 0) s = s2 a = TRUE b = FALSE There s only one available state. Press Return to Proceed. Chosen state is: 0 *************** AVAILABLE STATES ************* ================= State ================= 0) s = s2 a = TRUE b = FALSE There s only one available state. Press Return to Proceed. ˆC Po każdym kroku narzędzie wyświetla listę możliwych następników, a użytkownik dokonuje wyboru przejścia. Po symulacji możliwe jest wyświetlenie ścieżki, przez którą przechodziła symulacja. Ścieżkę otrzymać można używając polecenia show_traces. Po przeprowadzonej powyżej symulacji, rezultat tego polecenia jest następujący: <!- ################### Trace number: 2 ################### -> Trace Description: Simulation Trace Trace Type: Simulation -> State: 2.1 <- s = s0 a = TRUE b = TRUE -> State: 2.2 <- s = s1 -> State: 2.3 <- s = s0 -> State: 2.4 <- s = s1

40 4.3. Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV 41 -> State: 2.5 <- s = s2 b = FALSE -> State: 2.6 <- -> State: 2.7 <- Narzędzie pozwala na wyliczenie oraz wypisanie liczby stanów osiągalnych. Przykład wygląda następująco: NuSMV > compute_reachable The computation of reachable states has been completed. The diameter of the FSM is 2. NuSMV > print_reachable_states ###################################################################### system diameter: 2 reachable states: 3 (2ˆ ) out of 12 (2ˆ ) ###################################################################### Najważniejszą funkcjonalnością narzędzia jest możliwość weryfikacji specyfikacji LTL modelu. Polecenie check_ltlspec wyświetla następujący rezultat weryfikacji modelowej: - specification G a is true - specification X (a & b) is false - as demonstrated by the following execution sequence Trace Description: LTL Counterexample Trace Type: Counterexample - Loop starts here -> State: 3.1 <- s = s2 a = TRUE b = FALSE -> State: 3.2 <- - specification G (!b -> G (a &!b)) is true Narzędzie poprawnie określiło, które z formuł są spełnione przez zamodelowany system. Dla formuły, która nie jest przez system spełniana, podany jest przykład ścieżki, która powoduje, że T S = X(a b). Jest to przykład z pętlą nieskończoną w stanie s2. Pracę z narzędziem kończymy poleceniem quit.

41 4.3. Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV 42 Przykład Przykład weryfikacji modelowej z wykrzystaniem NuSMV - CTL Przykład systemu tranzycyjnego został przedstawiony na rysunku 3.4. Zbiór stanów początkowych I = {s 0 }. Zbiór formuł atomowych AP = {a, b}. Wykorzystując narzędzie NuSMV zostanie sprawdzone, czy model spełnia formuły: T S = EXa T S = AXa T S = EGa T S = AGa T S = EFEG a T S = A (a U b) T S = E (a U ( a A ( a U b))) Dla przedstawionego systemu plik.smv wygląda następująco: Listing 4.3: Plik NuSMV wraz ze specyfikacją CTL. 1 MODULE main 2 VAR 3 s: {s0, s1, s2, s3}; 4 a : boolean; 5 b : boolean; 6 ASSIGN 7 init(s) := s0; 8 next(s) := case 9 s = s0 : {s1, s2}; 10 s = s1 : {s0, s3}; 11 s = s2 : {s1}; 12 s = s3 : {s3}; 13 esac; 14 a := case 15 s = s0 : TRUE; 16 s = s1 : TRUE; 17 s = s3 : TRUE; 18 TRUE : FALSE; 19 esac; 20 b := case 21 s = s1 : TRUE; 22 s = s2 : TRUE; 23 TRUE : FALSE;

42 4.3. Przykład weryfikacji modelowej z wykorzystaniem programu NuSMV esac; 25 CTLSPEC EX a 26 CTLSPEC AX a 27 CTLSPEC EG a 28 CTLSPEC AG a 29 CTLSPEC EF (EG a) 30 CTLSPEC A [ a U b ] 31 CTLSPEC E [ a U (!a & A [!a U b ] ) ] Plik zapisany został pod nazwą example_ctl.smv. Poniżej przedstawiona zostanie instrukcja wprowadzenia modelu oraz sprawdzenia spełniania podanych formuł przez zamodelowany system. Ponownie należy uruchomić narzędzie NuSMV w trybie interaktywnym: $./NuSMV -int Należy wczytać plik.smv oraz uruchomić inicjalizację: NuSMV > read_model -i example_ctl.smv NuSMV > go Po poprawnym wczytaniu pliku należy wybrać stan początkowy, należy wpisać: pick_state -i Dla podanego przykładu jedynym możliwym stanem początkowym jest stan s0, dlatego wystarczy nacisnąć ENTER, aby zatwierdzić operację: *************** AVAILABLE STATES ************* ================= State ================= 0) s = s0 a = TRUE b = FALSE There s only one available state. Press Return to Proceed. Wykorzystana zostanie możliwość weryfikacji specyfikacji CTL modelu. Polecenie check_ctlspec wyświetla następujący rezultat weryfikacji modelowej: - specification EX a is true - specification AX a is false

43 4.4. Podsumowanie 44 - as demonstrated by the following execution sequence Trace Description: CTL Counterexample Trace Type: Counterexample -> State: 2.1 <- s = s0 a = TRUE b = FALSE -> State: 2.2 <- s = s2 a = FALSE b = TRUE - specification EG a is true - specification AG a is false - as demonstrated by the following execution sequence Trace Description: CTL Counterexample Trace Type: Counterexample -> State: 3.1 <- s = s0 a = TRUE b = FALSE -> State: 3.2 <- s = s2 a = FALSE b = TRUE - specification EF (EG a) is true - specification A [ a U b ] is true - specification E [ a U (!a & A [!a U b ] ) ] is true Narzędzie poprawnie określiło, które z formuł są spełnione przez system. Dla formuł, które nie są spełnione przez system, podane są ścieżki, które powodują, że T S = AXa oraz T S = AGa. Pracę z narzędziem kończymy poleceniem quit Podsumowanie NuSMV jest wydajną, elastyczną i zarazem dobrze ustrukturyzowaną platformą do weryfikacji modelowej. NuSMV wprowadza wyraźne rozgraniczenie pomiędzy częścią back-end ową a front-end ową. Na część back-end ową składają się m.in. algorytmy weryfikacji modelowej oraz różnego rodzaju heurystyki optymalizacyjne. Część front-end ową stanowi język wejściowy NuSMV. Ze względu na podo-

44 4.4. Podsumowanie 45 bieństwo do znanych języków programowania, język NuSMV jest intuicyjnym narzędziem specyfykacji dla programistów i inżynierów oprogramowania. NuSMV pozwala weryfikować również systemy o wysokiej złożoności, tj. zawierające powyżej stanów [CCGR00]. Te cechy sprawiają, że platforma NuSMV jest użytecznym i wygodnym narzędziem weryfikacji automatów skończonych.

45 5. Metoda translacji Głównym celem pracy było stworzenie narzędzia pozwalającego na translację grafów osiągalności PT-sieci i sieci kolorowanych na opis systemu w języku NuSMV. W obu przypadkach proces translacji można podzielić na cztery etapy, co przedstawione zostało na rysunku 5.1. Generacja grafu osiągalności (lub pokrycia dla PT-sieci) Parsowanie pliku wejściowego z wygenerowanym w poprzednim etapie grafem Reprezentacja grafu za pomocą modelu obiektowego Generacja pliku NuSMV Rysunek 5.1: Schemat procesu translacji. Stworzone narzędzie pozwala na translację sieci utworzonych przy pomocy narzędzia TINA dla PTsieci oraz CPN Tools dla sieci kolorowanych. Pierwszym etapem procesu jest generacja grafu osiągalności (lub grafu pokrycia w przypadku sieci miejsc i przejść). Generacja grafu jest możliwa do wykonania za pomocą wcześniej wymienionych narzędzi. Wynikiem tego kroku jest plik zawierający opis wygenerowanego grafu. Etap drugi polega na przeparsowaniu wygenerowanego w poprzednim kroku grafu. Z pliku wybierane są informacje o stanach, znakowaniu oraz przejściach pomiędzy stanami. Dla sieci kolorowanych wczytywane są również zdefiniowane palety kolorów. W kolejnym etapie wczytane dane zostają przetworzone do specjalnie zaprojektowanego modelu reprezentującego graf. Ostatnim etapem jest generacja pliku NuSMV. Polega ona na przedstawieniu węzłów grafu w postaci stanów systemu. Każdy stan jest reprezentacją jednego z osiągalnych znakowań sieci Petriego. Krawędzie grafu zapisywane są jako przejścia pomiędzy stanami. Szczegóły algorytmu zostały dokładnie opisane w dalszej części rozdziału Algorytm W stworzonym narzędziu zaimplementowane zostały dwa algorytmy: dla sieci miejsc i przejść oraz dla sieci kolorowanych. Oba bazują na schemacie przedstawionym na rysunku 5.1, jednak ze względu na 46

46 5.1. Algorytm 47 różnice pomiędzy tymi dwoma typami sieci oraz narzędziami do ich modelowania, algorytmy wymagały różnego podejścia do parsowania i generowania kodu NuSMV. Z tego względu podrozdział ten został podzielony na dwie części, które szczegółowo opisują implementację obu algorytmów Translacja sieci miejsc i przejść Do modelowania sieci miejsc i przejść oraz do obliczania grafu pokrycia dla tych sieci zostało wykorzystane narzędzie TINA [Tin14][BF08]. TINA jest intuicyjnym i prostym w obsłudze narzędziem do graficznej lub tekstowej edycji sieci. Umożliwia generację grafu osiągalności i grafu pokrycia. Modele i grafy mogą być zapisywane w różnych formatach. Najwygodniejszym formatem zapisu grafu pokrycia do parsowania jest format KTS. Przykład takiego pliku przedstawiony został poniżej: Listing 5.1: Przykład pliku.kts. 1 state 0 2 props L.scc*5 p0*3 p1*2 3 trans t0/1 t1/2 4 5 state 1 6 props L.scc*2 p0*2 p1 p2 7 trans t0/3 t1/4 8 9 state 2 10 props L.scc*4 p0*3 p1 p2 11 trans t0/ state 3 14 props p0 p2*2 15 trans state 4 18 props L.scc p0*2 p2*2 19 trans Plik składa się z kolejnych sekcji rozpoczynających się od słowa state, bezpośrednio po którym zapisany jest numer identyfikujący stan. Każda sekcja odpowiada jednemu węzłowi grafu pokrycia. W linijce rozpoczynającej się słowem props znajduje się informacja o znakowaniu systemu w danym stanie. Przykładowo dla pierwszego ze stanów zapis p0*3 p1*2 oznacza, że w tym stanie M(p 0 ) = 3 oraz M(p 1 ) = 2. W pozostałych miejscach znakowanie jest równe zeru. Jeśli sieć jest nieograniczona, to wartość jest zapisywana w pliku jako w. Przykład zamieszono w listingu 5.2. Listing 5.2: Przykład pliku.kts z wartością. 1 state 0 2 props

47 5.1. Algorytm 48 3 trans t0/1 4 5 state 1 6 props p0*w 7 trans t0/1 Linia zaczynająca się od słowa kluczowego trans przedstawia aktywne przejścia w systemie dla podanego stanu. W listingu 5.1 dla stanu o identyfikatorze 1 mamy aktywne dwa przejścia: t 0 oraz t 1. Zapis t0/3 oznacza, że po wykonaniu przejścia t 0 system przejdzie do stanu o identyfikatorze 3. Generacja pliku.kts dla sieci miejsc i przejść zamodelowanej przy pomocy narzędzia TINA przedstawiona została w dodatku A. Dla plików.kts zaimplementowany został parser, który zapisuje graf za pomocą modelu obiektowego. Wejściem programu jest plik.kts. Ponieważ wartość znakowania w NuSMV musi być reprezentowana za pomocą liczby całkowitej, należy wprowadzić parametr określający maksymalną wartość znakowania. Symbol w będzie zastępowany tą maksymalną wartością. W projekcie dodane zostało również usprawnienie dla sieci, których znakowanie zawiera się w zbiorze {0, 1} - dla takich przypadków wartość znakowania będzie zapisywana w NuSMV w zmiennej typu BOOLEAN. W pozostałych przypadkach wartości znakowania zapisywane będą w zmiennych typu INTEGER. Algorytm parsowania pliku.kts wygląda następująco: 1. Oznacz typ sieci jako BOOLEAN. 2. Dla każdej sekcji state z pliku: 2.1. Dodaj stan wraz z jego identyfikatorem do listy stanów Znajdź linię w sekcji zaczynającą się od słowa props, zawierającą znakowanie stanu Dla każdej znalezionej pary {nazwa miejsca, wartość znakowania}: Jeżeli wartość znakowania jest różna od 0 i 1, to oznacz typ sieci jako INTEGER Dodaj znakowanie miejsca do stanu, przy czym jeśli wartość znakowania jest oznaczona symbolem w, to zamień go na parametr określony w konfiguracji użytkownika Jeśli miejsce z analizowanej pary nie znajduje się na liście miejsc sieci, to dodaj je do tej listy Zapisz linię rozpoczynającą się od słowa trans, będącą podstawą do połączenia węzłów grafu. Dodaj ją do listy informacji o przejściach aktywnych w stanie. 3. Dla każdego znalezionego stanu i każdej odnotowanej informacji o przejściach aktywnych w tym stanie: 3.1. Wybierz pary {przejście, identyfikator następnego stanu}, gdzie przejście t to takie, dla którego M t M. M oznacza znakowanie w aktualnie rozpatrywanym stanie, natomiast M oznacza znakowanie w stanie o podanym identyfikatorze.

48 5.1. Algorytm Dodaj stan o znakowaniu M do listy następników stanu o znakowaniu M. Wynikiem działania opisanego algorytmu jest model obiektowy grafu pokrycia, zawierający informacje o: miejscach sieci, stanach sytemu, wartościach znakowania, przejściach pomiędzy tymi stanami, parametrze określającym maksymalną wartość znakowania - w dalszej części rozdziału będzie on oznaczany symbolem ω, typie zmiennych określających aktualne znakowanie (INTEGER lub BOOLEAN). Model obiektowy grafu pokrycia jest wejściem dla algorytmu generacji opisu systemu w języku NuSMV. Generacja pliku wyjściowego wygląda następująco: 1. Utwórz nagłówek pliku: dodaj linię MODULE main. 2. Utwórz zmienne: 2.1. Dodaj nagłówek sekcji linię VAR Utwórz zmienną dla stanów systemu o identyfikatorze s. Zmienna jest typu wyliczeniowego. Wartościami jakie może przyjmować zmienna s, są poszczególne stany systemu, które otrzymujemy z grafu pokrycia Dla każdego miejsca sieci utwórz zmienną, która będzie odpowiadać za wartość znakowania w poszczególnych stanach systemu: Przyjmijmy nazwę miejsca jako nazwę zmiennej. Jeśli nazwa miejsca jest niepoprawną nazwą zmiennej w języku NuSMV, zmodyfikuj ją lub generuj nową Typem zmiennej niech będzie INTEGER lub BOOLEAN, w zależności od wartości wyliczonych na etapie parsowania Jeśli zmienna jest typu INTEGER, to jej zakres ustaw na 0..ω. 3. Generuj sekcję ASSIGN: 3.1. Dodaj nagłówek sekcji ASSIGN Zmiennej s ustaw wartość odpowiadającą początkowemu stanowi systemu Dodaj sekcję określającą przejścia między stanami: utwórz strukturę warunkową case dla zmiennej s, w której w zależności od aktualnej jej wartości, funkcja next() będzie przyporządkowywać jej wartości odpowiadające jej następnym stanom. Informacje te znajdują się w dostarczonym przez parser grafie pokrycia.

49 5.1. Algorytm Dodaj sekcję określającą wartości znakowań w poszczególnych stanach systemu: utwórz strukturę warunkową case dla zmiennych, które odpowiadają znakowaniom dla kolejnych miejsc systemu. Ich wartości będą zależne od aktualnej wartości zmiennej s. Wynikiem działania generatora jest plik.smv. Dla takiego pliku użytkownik może sprawdzić, czy system opisany początkowo jako sieć miejsc i przejść spełnia formuły zapisane w specyfikacji LTL bądź CTL Translacja sieci kolorowanych Jako narzędzie do modelowania i generacji grafu osiągalności dla sieci kolorowanych wykorzystany został program CPN Tools [CPN14]. Oprogramowanie to zostało oryginalnie stworzone przez CPN Group na Uniwersytecie Aarhus, lecz w 2010 roku zostało przejęte i jest dalej rozwijane przez AIS group na Uniwersytecie Technicznym w Eindhoven. CPN Tools jest rozbudowanym i wydajnym narzędziem służącym do edycji, symulacji i analizy kolorowanych sieci Petriego. Program CPN Tools pozwala na automatyczną generację grafu osiągalności dla zamodelowanej w nim sieci kolorowanej. Sama procedura generacji grafu osiągalności została przedstawiona w dodatku B. Wygenerowany graf osiągalności jest zapisywany w pliku razem z zamodelowaną siecią. Istotną zaletą narzędzia CPN Tools jest to, że dane w pliku zapisane są w języku XML. Dzięki temu plik jest łatwy do zrozumienia przez człowieka i jego parsowanie nie stanowi żadnego problemu. Rozważony zostanie plik zawierający zapisaną sieć i graf osiągalności wykorzystany w przykładzie Ze względu na dużą ilość dodatkowych informacji zapisywanych w pliku.cpn, a w rezultacie jego duży rozmiar, przedstawione zostaną jedynie najistotniejsze fragmenty tego pliku. Przykład Przykład deklaracji palet kolorów Poniżej przedstawiony został fragment pliku.cpn zawierający informacje o zadeklarowanych paletach kolorów: Listing 5.3: Deklaracje palet kolorów w pliku.cpn. 4 <workspaceelements> 8 <cpnet> 9 <globbox> 22 <block id="id1"> 23 <id>standard declarations</id> <color id="id "> 26 <id>liczba</id> 27 <real/> 28 <layout>colset LICZBA = real;</layout> 29 </color> 30

50 5.1. Algorytm <color id="id "> 32 <id>licznik</id> 33 <int> 34 <with> 35 <ml>0</ml> 36 <ml>1000</ml> 37 </with> 38 </int> 39 <layout>colset LICZNIK = int with ;</layout> 40 </color> <color id="id "> 43 <id>wynik</id> 44 <product> 45 <id>liczba</id> 46 <id>licznik</id> 47 </product> 48 <layout>colset WYNIK = product LICZBA * LICZNIK;</layout> 49 </color> 95 </block> 96 </globbox> 1781 </cpnet> 1782 </workspaceelements> W przedstawionym fragmencie zadeklarowane zostały trzy palety kolorów: LICZBA, LICZNIK i WYNIK. Każda z deklaracji została umieszczona w znacznikach <color> wraz z unikalnym identyfikatorem. We wnętrzu znacznika znajdują się elementy określające własności palety kolorów. Z punktu widzenia algorytmu translacji istotny jest jedynie znacznik <id>, zawierający informację o nazwie palety kolorów oraz znaczniki typu, np. <real>, <int>, <product> itd. Każdy ze znaczników typu może różnić się strukturą wewnętrzną, jednak w procesie translacji istotne jest jedynie określenie typu podstawowego. Przykład Przykład deklaracji miejsc Poniżej przedstawiony został fragment pliku.cpn zawierający informacje o zdefiniowanych miejscach sieci kolorowanej: Listing 5.4: Deklaracja miejsca sieci kolorowanej w pliku.cpn. 4 <workspaceelements> 8 <cpnet> 97 <page id="id6">

51 5.1. Algorytm <pageattr name="pierwszy przyklad"/> 99 <place id="id "> 110 <text>p1</text> 122 <type id="id "> 133 <text tool="cpn Tools" 134 version="4.0.0">liczba</text> 135 </type> 150 </place> 1368 </page> 1781 </cpnet> 1782 </workspaceelements> W przedstawionym fragmencie zadeklarowane zostało miejsce p1. Dla algorytmu najistotniejsze jest to, co znajduje się wewnątrz znacznika <place>, w szczególności zawartości znaczników <text> oraz <type>. Pierwszy z nich zawiera nazwę miejsca, natomiast wewnątrz drugiego, w zagnieżdżonym znaczniku <text>, znajduje się nazwa palety kolorów przypisanej do danego miejsca. Przykład Przykład deklaracji węzłów grafu osiagalności Kolejnym ważnym fragmentem pliku wejściowego są deklaracje węzłów grafu osiągalności, wygenerowanego automatycznie dla zamodelowanej sieci. 4 <workspaceelements> Listing 5.5: Deklaracja węzła grafu osiągalności w pliku.cpn 8 <cpnet> 97 <page id="id6"> 98 <pageattr name="pierwszy przyklad"/> 1001 <ssnode id="id " 1002 number="1" 1003 predecessors="0" 1004 successors="6"> 1015 <descriptor x=" " 1016 y=" " 1017 visible="false" 1018 dead="false"> 1019 <text>1: 1020 Pierwszy_przyklad&apos;p1 1:

52 5.1. Algorytm Pierwszy_przyklad&apos;p2 1: Pierwszy_przyklad&apos;p3 1: 1 (0.0,0) 1027 </text> 1028 </descriptor> 1031 </ssnode> 1368 </page> 1781 </cpnet> 1782 </workspaceelements> Każdy węzeł grafu osiągalności reprezentuje pewien stan sieci. Stanem sieci jest jego aktualne znakowanie. Zakodowane jest ono wewnątrz znacznika <text>, który znajduje się z kolei wewnątrz znacznika <ssnode>. Opis tekstowy, który się tam znajduje należy jednak odpowiednio przeparsować by wyciągnąć informację o znakowaniu w poszczególnych miejscach. Przykładowy wpis dla miejsca p2, Pierwszy_przyklad&apos;p2 1: , można odczytać następująco: W miejscu p2 znajduje się jeden znacznik o wartości 0.0, jeden znacznik o wartości 0.5 oraz jeden znacznik o wartości 2.0. Istotne są również atrybuty id i number węzła <ssnode>, przechowujące odpowiednio unikalny identyfikator elementu oraz numer porządkowy stanu. Przykład Przykład deklaracji łuków grafu osiagalności Ostatnim parsowanym fragmentem pliku wejściowego są deklaracje łuków grafu osiągalności. 4 <workspaceelements> Listing 5.6: Deklaracja łuku grafu osiągalności w pliku.cpn. 8 <cpnet> 97 <page id="id6"> 98 <pageattr name="pierwszy przyklad"/> 569 <ssarc id="id " 570 order="1" 571 number="6"> 584 <source idref="id "/> 585 <destination idref="id "/> 592 </ssarc>

53 5.1. Algorytm </page> 1781 </cpnet> 1782 </workspaceelements> Każdy z łuków grafu osiągalności zapisywany jest w znaczniku <ssarc>. Zagnieżdżone są w nim dwa kluczowe znaczniki: <source> i <destination>, zawierające w atrybucie idref odpowiednio identyfikator węzła źródłowego i docelowego. Identyfikator ten jest tym samym, który znajduje się w atrybucie id deklaracji węzła grafu. Algorytm parsowania pliku.cpn wygląda następująco: 1. Dla każdego znalezionego znacznika color: 1.1. Stwórz nową paletę kolorów Przyporządkuj do stworzonej palety kolorów jej typ podstawowy Dodaj paletę kolorów do listy palet. 2. Dla każdego znalezionego znacznika place: 2.1. Stwórz nowy obiekt miejsca Zapisz nazwę miejsca Przyporządkuj miejscu odpowiednią paletę kolorów z listy palet Dodaj miejsce do listy miejsc. 3. Dla każdego znalezionego znacznika ssnode: 3.1. Stwórz nowy obiekt węzła grafu osiągalności Zapisz identyfikator węzła grafu osiągalności Zapisz numer węzła grafu osiągalności Zapisz tymczasowo nieprzetworzony tekst zawierający znakowanie Dodaj węzeł grafu osiągalności do listy węzłów. 4. Dla każdego znalezionego znacznika ssarc: 4.1. Odczytaj identyfikatory węzła źródłowego i węzła docelowego Odnajdź na liście węzłów węzeł źródłowy i węzeł docelowy Dodaj węzeł docelowy do listy następników węzła źródłowego. 5. Dla każdego węzła na liście węzłów grafu: 5.1. Usuń zbędne znaki zapisanego tymczasowo tekstu znakowania.

54 5.1. Algorytm Połącz linie zawierające znakowanie dla jednego miejsca Dla każdej linii przygotowanego wstępnie tekstu znakowania: Odczytaj nazwę miejsca Odczytaj każdą z par {kolor, ilość znaczników} Dodaj znalezione pary do listy zawierającej znakowanie stanu. Wynikiem działania opisanego algorytmu jest model obiektowy grafu osiągalności, zawierający: listę miejsc sieci z przyporządkowanymi im paletami kolorów, listę stanów, przy czym każdy stan zawiera: numer porządkowy, listę następników, znakowanie w postaci mapy, w której kluczem jest miejsce, a wartością znakowanie w tym miejscu. Podobnie jak to ma miejsce w przypadku translacji sieci miejsc i przejść, model obiektowy grafu pokrycia stanowi wejście dla modułu generacji opisu systemu w języku NuSMV. Algorytm generacji pliku wyjściowego wygląda następująco: 1. Utwórz nagłówek pliku NuSMV określający nazwę modułu. 2. Generuj sekcję deklaracji zmiennych modułu: 2.1. Dodaj do pliku linię VAR Utwórz w pliku deklarację zmiennej s typu wyliczeniowego, przechowującą aktualny stan systemu Ustaw 0 jako maksymalną wartość znakowania Dla każdej pary {kolor, wartość} znakowania miejsca w każdym stanie: Stwórz etykietę składająca się z nazwy miejsca i koloru Jeśli wartość znakowania jest większa od dotychczasowo największej wartości to ją zapisz Jeśli na liście obiektów zmiennych nie istnieje obiekt o danej etykiecie, to stwórz i dodaj taki obiekt do listy Zapisz w obiekcie zmiennej parę {stan, wartość znakowania w tym stanie} Dla każdego obiektu reprezentującego zmienną: Dodaj do pliku zmienną typu INTEGER, której nazwą będzie etykieta zapisana w obiekcie zmiennej. Zmienna przyjmuje wartości od zera do największej zapisanej wartości znakowania.

55 5.2. Interfejs graficzny Generuj sekcję ASSIGN: 3.1. Dodaj do pliku linię ASSIGN Dodaj do pliku linię ustawiającą stan początkowy systemu Dodaj linię zawierającą instrukcję next(s), pozwalającą określić następną wartość zmiennej s. Jako prawą stronę przypisania dodaj instrukcję wyboru, której opcjami są poszczególne stany systemu, a zwracanymi wartościami są listy następników tych stanów Dla każdego obiektu zmiennej: Dodaj do pliku instrukcję wyboru, ustawiającą wartość zmiennej w zależności od aktualnego stanu. Wartości zmiennej pobierz z obiektu zmiennej, który przechowuje pary {stan, wartość znakowania w tym stanie}. Po zakończeniu przetwarzania sieci, algorytm zwraca plik.smv, który można uruchomić w programie NuSMV i wykonać na nim weryfikację modelową przy wykorzystaniu formuł LTL i CTL Interfejs graficzny W celu ułatwienia korzystania z przygotowanego narzędzia stworzony został graficzny interfejs użytkownika (rysunek 5.2). Umożliwia on konfigurację parsera, wczytanie pliku wejściowego oraz zapis wygenerowanego pliku w formacie.smv. Interfejs napisany został w języku Java wykorzystując bibliotekę Swing, dzięki czemu może służyć zarówno użytkownikom systemu Linux jak i Windows. W głównym obszarze formatki wyświetlony zostaje wygenerowany plik.smv, możliwy do zapisu lub skopiowania. Rysunek 5.2: Interfejs graficzny.

56 5.2. Interfejs graficzny 57 Menu programu składa się z trzech elementów: Plik, Parser oraz Pomoc. W menu Plik (rysunek 5.3) dostępne są trzy opcje: Otwórz przejście do wyboru pliku, który ma być wejściem dla parsera aplikacji, Zapisz opcja dostępna dopiero po wygenerowaniu pliku, zapisuje plik wynikowy w formacie.smv, Zamknij zamknięcie programu. Rysunek 5.3: Menu Plik. Menu Parser (rysunek 5.4) odpowiada za konfigurację parsera. Użytkownik może wybrać opcję Kolorowane sieci Petriego lub Sieci miejsc i przejść w zależności od tego, jakiego typu sieć zamodelował i zamierza poddać metodzie translacji. Wybór Sieci miejsc i przejść powoduje uaktywnienie się opcji Omega. Po wybraniu tej opcji wyświetlony zostaje dialog z możliwością ustalenia parametru Omega, określającego maksymalną wartość znakowania. Domyślnie ustaloną wartością jest liczba 1000 (rysunek 5.5). Trzecim elementem głównego menu jest Pomoc (rysunek 5.6), pod którym znaleźć można Rysunek 5.4: Menu Parser. Rysunek 5.5: Ustawienie parametru Omega. opcję O programie. Wybór tej opcji powoduje wyświetlenie dialogu z podstawowymi informacjami na temat stworzonego narzędzia (rysunek 5.7).

57 5.2. Interfejs graficzny 58 Rysunek 5.6: Menu Pomoc. Rysunek 5.7: O programie. Pod menu znajduje się panel (rysunek 5.8), w którym użytkownik ma możliwość wyboru pliku do procesu translacji wpisując jego ścieżkę w pole oznaczone etykietą Plik wejściowy lub wybierając plik z dysku przez kliknięcie przycisku po prawej stronie tego pola. Przy wyborze pliku z dysku pliki są filtrowane według rozszerzenia: jeśli użytkownik wybrał w menu opcję Kolorowane sieci Petriego, to wyświetlane będą pliki tylko z rozszerzeniem.cpn. Jeśli jednak wybrał Sieci miejsc i przejść, to wyświetlane będą jedynie pliki.kts. Po wyborze pliku użytkownik może rozpocząć translację klikając przycisk Parsuj. Po poprawnym procesie translacji w głównym polu formatki pokazuje się opis systemu w języku NuSMV. Rysunek 5.8: Panel do wprowadzania pliku wejściowego.

58 6. Przykłady zastosowania W rozdziale przedstawione zostały przykłady zastosowania opracowanego narzędzia do translacji grafu osiągalności sieci Petriego na opis systemu w języku NuSMV. Przykłady obejmują zarówno proste sieci, których grafy pokrycia lub osiągalności są możliwe do zrozumienia i przeanalizowania przez człowieka, jak również sieci o zbyt dużej ilości węzłów do takiej analizy. Przykłady prostsze pozwalają na dokładne zrozumienie i przeanalizowanie działania programu, natomiast przykłady bardziej skomplikowane pokazują możliwości stworzonego narzędzia oraz uzasadniają konieczność jego zastosowania. Pierwsze dwa problemy zostały zamodelowane przy pomocy sieci miejsc i przejść: problem pięciu filozofów jako przykład prostszy oraz układ logiczny, jako przykład sieci o dużym grafie pokrycia. Dwa kolejne problemy zamodelowane zostały przy użyciu sieci kolorowanych. Tu również pokazany został przykład prostej sieci producent-konsument oraz sieci o rozbudowanym grafie osiągalności prosty protokół transportowy Problem pięciu filozofów. Jako pierwszy rozważony będzie problem pięciu filozofów, który opisany jest następująco: przy okrągłym stole zasiada pięciu filozofów. Przed każdym z nich położony jest talerz, a między talerzami znajdują się widelce, przez co każdy filozof ma jeden widelec po swojej lewej stronie i jeden po stronie prawej. Aby zjeść, filozof musi być w posiadaniu obu tych widelców. Jeśli każdy z filozofów weźmie po jednym widelcu z tej samej strony, to może dojść do zakleszczenia filozofowie będą czekać na widelec z drugiej strony, który jest zajęty przez sąsiadującego filozofa. Brak dostępnych widelców ma być analogią do braku dostępu do zasobów przez procesy pracujące współbieżnie. W literaturze można znaleźć wiele propozycji rozwiązania tego problemu. Poszukiwane jest rozwiązanie, które nie tylko rozwiąże problem zakleszczenia. Innym problemem może być również zagłodzenie. Jeśli np. filozofowie po upłynięciu określonego czasu będą odkładali widelec, jeśli nie udało im się podnieść drugiego, to zlikwidowany jest problem zakleszczenia, jednak filozof może podejmować kolejne próby, w czasie których nie uda mu się podnieść drugiego widelca. Proponowane rozwiązania mogą zostać zamodelowane za pomocą sieci Petriego. Jeśli graf osiągalności tej sieci zostanie poddany przedstawionej przez nas metodzie translacji, możliwe staje się zweryfikowanie problemów zagłodzenia oraz zakleszczenia, przy pomocy zapisu tych problemów w postaci odpowiednich formuł LTL lub CTL. 59

59 6.1. Problem pięciu filozofów. 60 Rysunek 6.1: Propozycja rozwiązania problemu pięciu filozofów zamodelowana jako sieć miejsc i przejść. Jednym w proponowanych rozwiązań jest warunek, aby filozofowie podnosili oba widelce jednocześnie. Dzięki temu filozof, który podniesie widelce może od razu przystąpić do jedzenia. Zlikwidowany jest również problem zakleszczeń. Aby jednak zweryfikować te własności zamodelowana została sieć miejsc i przejść przedstawiona na rysunku 6.1. Miejsca od p0 do p4 oznaczają zajętość kolejnych widelców. Jeśli w miejscu znajduje się znacznik, znaczy to, że odpowiadający mu widelec jest wolny. Przy braku znaczników widelec jest zajęty. Liczba znaczników inna od 1 lub 0 oznaczałaby, że sieć została źle zaprojektowana. Wywołanie przejścia między sąsiednimi miejscami (przykładowo przejścia t0 dla miejsc p0 oraz p1) oznacza podniesienie obu widelców przez filozofa. Znaczniki w miejscach od p5 do p9 oznaczają, że odpowiedni filozofowie są w trakcie jedzenia. Dla podanego przejścia t0, znacznik, który trafia do miejsca p5 oznacza jedzącego filozofa. Po zakończeniu jedzenia (wywołanie przejścia t5) widelce wracają na swoje miejsce (pojawiają się znaczniki w miejscach p0 oraz p1). Aby zweryfikować, czy sieć rozwiązuje opisane wyżej problemy, wygenerowany został graf pokrycia w formacie.kts. Graficzna reprezentacja grafu przedstawiona została na rysunku 6.2. Etykiety przy węzłach odpowiadają nazwom stanów w opisie systemu w języku NuSMV. Należy przeanalizować graf sprawdzając, czy wszystkie stany odpowiadające jedzeniu poszczególnych filozofów są osiągalne oraz czy system nie zawiera stanów terminalnych. Przy pomocy utworzonego narzędzia do translacji grafu pokrycia na opis systemu w języku NuSMV wygenerowany został poniższy plik.smv: Listing 6.1: Opis rozwiązania problemu pięciu filozofów w języku NuSMV. 1 MODULE main 2 VAR 3 s: {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10};

60 6.1. Problem pięciu filozofów. 61 s7 s4 s8 t1 t0 (0, 0, 1, 0, 0, 1, 0, 0, 1, 0) (1, 1, 1, 0, 0, 0, 0, 0, 1, 0) (1, 0, 0, 0, 0, 0, 1, 0, 1, 0) t5 t6 t3 t8 t8 t3 t8 t3 s1 s0 s2 t5 t1 (0, 0, 1, 1, 1, 1, 0, 0, 0, 0) (1, 1, 1, 1, 1, 0, 0, 0, 0, 0) t0 t6 t2 s3 t4 s5 t7 t9 (1, 0, 0, 1, 1, 0, 1, 0, 0, 0) t7 t2 (1, 1, 0, 0, 1, 0, 0, 1, 0, 0) (0, 1, 1, 1, 0, 0, 0, 0, 0, 1) t4 t9 t5 t0 (0, 0, 0, 0, 1, 1, 0, 1, 0, 0) s6 t9 t4 s10 (0, 1, 0, 0, 0, 0, 0, 1, 0, 1) t2 t7 s9 t1 t6 (0, 0, 0, 1, 0, 0, 1, 0, 0, 1) Rysunek 6.2: Graf pokrycia dla sieci z rysunku p0 : boolean; 5 p1 : boolean; 6 p2 : boolean; 7 p3 : boolean; 8 p4 : boolean; 9 p5 : boolean; 10 p6 : boolean; 11 p7 : boolean; 12 p8 : boolean; 13 p9 : boolean; 14 ASSIGN 15 init(s) := s0; 16 next(s) := case 17 s = s0 : {s1, s2, s3, s4, s5}; 18 s = s1 : {s0, s6, s7}; 19 s = s2 : {s0, s8, s9}; 20 s = s3 : {s0, s6, s10}; 21 s = s4 : {s0, s7, s8}; 22 s = s5 : {s0, s9, s10}; 23 s = s6 : {s1, s3}; 24 s = s7 : {s1, s4}; 25 s = s8 : {s2, s4}; 26 s = s9 : {s2, s5}; 27 s = s10 : {s3, s5}; 28 esac; 29 p0 := case 30 s = s0 : TRUE;

61 6.1. Problem pięciu filozofów s = s2 : TRUE; 32 s = s3 : TRUE; 33 s = s4 : TRUE; 34 s = s8 : TRUE; 35 TRUE : FALSE; 36 esac; 37 p1 := case 38 s = s0 : TRUE; 39 s = s3 : TRUE; 40 s = s4 : TRUE; 41 s = s5 : TRUE; 42 s = s10 : TRUE; 43 TRUE : FALSE; 44 esac; 45 p2 := case 46 s = s0 : TRUE; 47 s = s1 : TRUE; 48 s = s4 : TRUE; 49 s = s5 : TRUE; 50 s = s7 : TRUE; 51 TRUE : FALSE; 52 esac; 53 p3 := case 54 s = s0 : TRUE; 55 s = s1 : TRUE; 56 s = s2 : TRUE; 57 s = s5 : TRUE; 58 s = s9 : TRUE; 59 TRUE : FALSE; 60 esac; 61 p4 := case 62 s = s0 : TRUE; 63 s = s1 : TRUE; 64 s = s2 : TRUE; 65 s = s3 : TRUE; 66 s = s6 : TRUE; 67 TRUE : FALSE; 68 esac; 69 p5 := case 70 s = s1 : TRUE; 71 s = s6 : TRUE; 72 s = s7 : TRUE; 73 TRUE : FALSE;

62 6.1. Problem pięciu filozofów esac; 75 p6 := case 76 s = s2 : TRUE; 77 s = s8 : TRUE; 78 s = s9 : TRUE; 79 TRUE : FALSE; 80 esac; 81 p7 := case 82 s = s3 : TRUE; 83 s = s6 : TRUE; 84 s = s10 : TRUE; 85 TRUE : FALSE; 86 esac; 87 p8 := case 88 s = s4 : TRUE; 89 s = s7 : TRUE; 90 s = s8 : TRUE; 91 TRUE : FALSE; 92 esac; 93 p9 := case 94 s = s5 : TRUE; 95 s = s9 : TRUE; 96 s = s10 : TRUE; 97 TRUE : FALSE; 98 esac; Dla prezentowanego przykładu przygotowane zostały następujące formuły LTL oraz CTL: EFp 5, EFp 6, EFp 7, EFp 8, EFp 9 Formuła EFp 5 oznacza, że istnieje taka ścieżka wykonania sieci, że pierwszy filozof jest w posiadaniu obu widelców. Pozostałe formuły mają znaczenie podobne, ale odnoszą się do pozostałych filozofów. GFp 5, GFp 6, GFp 7, GFp 8, GFp 9 Formuła GFp 5 oznacza, że niezależnie jaki stan zostanie osiągnięty, wychodząc od tego stanu osiągnięty zostanie kiedyś stan, w którym pierwszy filozof będzie w posiadaniu obu widelców. Spełnienie tego warunku oznacza, że filozof zawsze będzie mógł ponownie się posilić. Pozostałe formuły mają znaczenie podobne, ale odnoszą się do pozostałych filozofów. G(( p 0 p 1 p 2 p 3 p 4 ) (p 5 p 6 p 7 p 8 p 9 )) Formuła ta oznacza, że jeśli wszystkie widelce są zajęte, to na pewno któryś z filozofów jest w trakcie jedzenia. G(p 5 ( p 0 p 1 )), G(p 6 ( p 1 p 2 )), G(p 7 ( p 2 p 3 )), G(p 8 ( p 3 p 4 )), G(p 9 ( p 4 p 0 )) Formuły te pozwalają zweryfikować, czy przy jedzeniu filozof korzysta z odpowiednich widelców.

63 6.1. Problem pięciu filozofów. 64 AG(p 5 EF p 5 ), AG(p 6 EF p 6 ), AG(p 7 EF p 7 ), AG(p 8 EF p 8 ), AG(p 9 EF p 9 ) Pierwsza z formuł oznacza, że jeżeli pierwszy z filozofów jest w posiadaniu obu widelców, to istnieje ścieżka, dla której w pewnym momencie w przyszłości filozof odkłada te widelce na stół (znaczy to, że system nie posiada zakleszczeń w stanach jedzenia pierwszego filozofa). Pozostałe formuły mają znaczenie podobne, ale odnoszą się do pozostałych filozofów. AG( p 5 EFp 5 ), AG( p 6 EFp 6 ), AG( p 7 EFp 7 ), AG( p 8 EFp 8 ), AG( p 9 EFp 9 ) Formuła analogiczna do poprzedniej jeśli filozof nie je, to ma taką możliwość w którymś z następnych stanów (system nie posiada zakleszczeń w stanach niejedzenia). Formuły można wprowadzić do pliku.smv zapisując jak poniżej: Listing 6.2: Formuły LTL oraz CTL dla problemu pięciu filozofów. 100 LTLSPEC G F p5 101 LTLSPEC G F p6 102 LTLSPEC G F p7 103 LTLSPEC G F p8 104 LTLSPEC G F p CTLSPEC EF p5 107 CTLSPEC EF p6 108 CTLSPEC EF p7 109 CTLSPEC EF p8 110 CTLSPEC EF p LTLSPEC G ((!p0 &!p1 &!p2 &!p3 &!p4) -> (p5 p6 p7 p8 p9)) LTLSPEC G (p5 -> (!p0 &!p1)) 115 LTLSPEC G (p6 -> (!p1 &!p2)) 116 LTLSPEC G (p7 -> (!p2 &!p3)) 117 LTLSPEC G (p8 -> (!p3 &!p4)) 118 LTLSPEC G (p9 -> (!p4 &!p0)) CTLSPEC AG (p5 -> EF!p5) 121 CTLSPEC AG (p6 -> EF!p6) 122 CTLSPEC AG (p7 -> EF!p7) 123 CTLSPEC AG (p8 -> EF!p8) 124 CTLSPEC AG (p9 -> EF!p9) CTLSPEC AG (!p5 -> EF p5) 127 CTLSPEC AG (!p6 -> EF p6) 128 CTLSPEC AG (!p7 -> EF p7) 129 CTLSPEC AG (!p8 -> EF p8) 130 CTLSPEC AG (!p9 -> EF p9)

64 6.1. Problem pięciu filozofów. 65 Tak przygotowany plik można uruchomić w narzędziu NuSMV, weryfikując spełnialność formuł przez system. Wyniki analizy wyglądają następująco: NuSMV > check_ltlspec -- specification G ( F p5) is false -- as demonstrated by the following execution sequence Trace Description: LTL Counterexample Trace Type: Counterexample -- Loop starts here -> State: 1.1 <- s = s0 p0 = TRUE p1 = TRUE p2 = TRUE p3 = TRUE p4 = TRUE p5 = FALSE p6 = FALSE p7 = FALSE p8 = FALSE p9 = FALSE -> State: 1.2 <- s = s3 p2 = FALSE p3 = FALSE p7 = TRUE -> State: 1.3 <- s = s0 p2 = TRUE p3 = TRUE p7 = FALSE Analogiczne kontrprzykłady zostały znalezione dla formuł GFp 6, GFp 7, GFp 8, GFp specification G (p5 -> (!p0 &!p1)) is true -- specification G (p6 -> (!p1 &!p2)) is true -- specification G (p7 -> (!p2 &!p3)) is true -- specification G (p8 -> (!p3 &!p4)) is true -- specification G (p9 -> (!p4 &!p0)) is true

65 6.2. Układ logiczny specification G (((((!p0 &!p1) &!p2) &!p3) &!p4) -> ((((p5 p6) p7) p8) p9)) is true NuSMV > check_ctlspec -- specification EF p5 is true -- specification EF p6 is true -- specification EF p7 is true -- specification EF p8 is true -- specification EF p9 is true -- specification AG (p5 -> EF!p5) is true -- specification AG (p6 -> EF!p6) is true -- specification AG (p7 -> EF!p7) is true -- specification AG (p8 -> EF!p8) is true -- specification AG (p9 -> EF!p9) is true -- specification AG (!p5 -> EF p5) is true -- specification AG (!p6 -> EF p6) is true -- specification AG (!p7 -> EF p7) is true -- specification AG (!p8 -> EF p8) is true -- specification AG (!p9 -> EF p9) is true Wnioski z przeprowadzonej analizy są następujące: Istnieją takie ciągi przejść, dla których każdy filozof posiada oba widelce; W systemie nie ma stanów terminalnych, nie ma zakleszczeń; Istnieją takie ścieżki nieskończone, w których filozof może nigdy nie dostać dwóch widelców proponowane rozwiązanie nie likwiduje zatem problemu zagłodzenia Układ logiczny. Kolejny przykład zaczerpnięty został ze źródła [Bal]. Rozważony zostanie układ logiczny, złożony z bramek OR, XOR oraz AND. Układ ma na celu obliczyć najbardziej znaczący bit sumy trzech liczb jednobitowych. Został on zaprezentowany na rysunku 6.3. Trzema wejściami są kolejne bity, oznaczone na rysunku literami A, B, C. Zaznaczone zostało również wyjście układu (Result), którego oczekiwane wartości w zależności od sygnałów wejściowych przedstawia tabela 6.1. Dla podanego układu logicznego zaprojektowana została sieć miejsc i przejść. Rezultat zamieszczony został na rysunku 6.4. Znacznik w miejscu A_0 odpowida za ustawienie bitu A na wartość 0, z kolei znacznik w miejscu A_1 odpowiada za ustawienie bitu A na wartość 1. Analogiczne oznaczenia

66 6.2. Układ logiczny. 67 C A Result B Rysunek 6.3: Rozważany układ logiczny. dotyczą bitów B oraz C. O tym na jaką wartość zostanie ustawiony bit decyduje odpalenie odpowiedniego przejścia: dla bitu A wywołanie przejścia t5 spowoduje ustawienie bitu na wartość 0, przejścia t6 na wartość 1. Każda bramka składa się z czterech przejść ponieważ na wejściu każdej bramki są dwa bity mogące przyjmować dwie wartości (0 lub 1) dla każdej bramki istnieją cztery kombinacje oraz dwa możliwe wyjścia oznaczone przez odpowiednie miejsca sieci. Jak widać, sieć jest dość skomplikowana i trudno zweryfikować, czy jest ona poprawnie zamodelowana. Ta poprawność, mogłaby zostać zweryfikowana poprzez sprawdzenie formuł LTL odpowiadającym kolejnym wierszom tabeli 6.1. Formuły te wyglądają następująco: G((A 0 > 0 B 0 > 0 C 0 > 0) F (result 0 > 0)) G((A 0 > 0 B 0 > 0 C 1 > 0) F (result 0 > 0)) A B C Result Tablica 6.1: Wyjście układu w zależności od wartości bitów.

67 6.2. Układ logiczny. 68 set_c_to_0 C_0 set_c t3 C_1 t19 t20 C_and A_xor_B 0 set_c_to_1 t4 t18 C_and A_xor_B 1 t17 xor_not_fired set_a_to_0 A_xor_B_0 result_0 A_0 t9 t21 set_a 2 set_a_to_1 t5 2 A_1 t10 t11 A_xor_B_1 t22 t23 result_1 t6 t12 t24 and_not_fired set_b_to_0 A_and_B_1 2 B_0 t13 set_b t14 t7 t15 A_and_B_0 B_1 set_b_to_1 2 t16 t8 Rysunek 6.4: Sieć miejsc i przejść dla rozważanego układu logicznego. G((A 0 > 0 B 1 > 0 C 0 > 0) F (result 0 > 0)) G((A 0 > 0 B 1 > 0 C 1 > 0) F (result 1 > 0)) G((A 1 > 0 B 0 > 0 C 0 > 0) F (result 0 > 0)) G((A 1 > 0 B 0 > 0 C 1 > 0) F (result 1 > 0)) G((A 1 > 0 B 1 > 0 C 0 > 0) F (result 1 > 0)) G((A 1 > 0 B 1 > 0 C 1 > 0) F (result 1 > 0)) Dla przedstawionej sieci wygenerowany został plik.kts. Okazuje się, że graf pokrycia dla tej sieci zawiera 87 węzłów. Taka liczba utrudnia przeanalizowanie grafu przez człowieka i sprawdzenie poprawności formuł LTL. Dzięki przygotowanemu w projekcie narzędziu, graf ten został poddany translacji na opis systemu w języku NuSMV. Ze względu na jego duży rozmiar (876 linii kodu), plik nie zostanie zawarty w pracy. Do pliku zapisane zostały również formuły LTL zapisane w konwencji języka NuSMV:

68 6.3. Problem producenta i konsumenta. 69 Listing 6.3: Formuły LTL dla układu logicznego. 843 LTLSPEC G ((A_0 > 0 & B_0 > 0 & C_0 > 0) -> F (result_0 > 0)) 844 LTLSPEC G ((A_0 > 0 & B_0 > 0 & C_1 > 0) -> F (result_0 > 0)) 845 LTLSPEC G ((A_0 > 0 & B_1 > 0 & C_0 > 0) -> F (result_0 > 0)) 846 LTLSPEC G ((A_0 > 0 & B_1 > 0 & C_1 > 0) -> F (result_1 > 0)) 847 LTLSPEC G ((A_1 > 0 & B_0 > 0 & C_0 > 0) -> F (result_0 > 0)) 848 LTLSPEC G ((A_1 > 0 & B_0 > 0 & C_1 > 0) -> F (result_1 > 0)) 849 LTLSPEC G ((A_1 > 0 & B_1 > 0 & C_0 > 0) -> F (result_1 > 0)) 850 LTLSPEC G ((A_1 > 0 & B_1 > 0 & C_1 > 0) -> F (result_1 > 0)) Wynik weryfikacji formuł LTL w narzędziu NuSMV dla tak przygotowanego pliku.kts wygląda następująco: NuSMV > check_ltlspec -- specification G (((A_0 > 0 & B_0 > 0) & C_0 > 0) -> F result_0 > 0) is true -- specification G (((A_0 > 0 & B_0 > 0) & C_1 > 0) -> F result_0 > 0) is true -- specification G (((A_0 > 0 & B_1 > 0) & C_0 > 0) -> F result_0 > 0) is true -- specification G (((A_0 > 0 & B_1 > 0) & C_1 > 0) -> F result_1 > 0) is true -- specification G (((A_1 > 0 & B_0 > 0) & C_0 > 0) -> F result_0 > 0) is true -- specification G (((A_1 > 0 & B_0 > 0) & C_1 > 0) -> F result_1 > 0) is true -- specification G (((A_1 > 0 & B_1 > 0) & C_0 > 0) -> F result_1 > 0) is true -- specification G (((A_1 > 0 & B_1 > 0) & C_1 > 0) -> F result_1 > 0) is true Jak widać zamodelowana sieć spełnia wymagania i poprawnie modeluje przedstawiony układ logiczny, zapewniając oczekiwane wartości na wyjściu układu dla odpowiednich wejść. Taka weryfikacja była możliwa jedynie dzięki możliwości translacji tak dużego grafu pokrycia do opisu NuSMV. Przykład pokazuje przydatność przygotowanego narzędzia i jego niezbędność przy próbie weryfikacji formuł LTL lub CTL dla dużych sieci Problem producenta i konsumenta. Pierwszym przykładem, który zostanie przedstawiony dla sieci kolorowanych, będzie problem producenta-konsumenta [S.14]. Jest to klasyczny problemem informatyczny związany z synchronizacją procesów współbieżnych. W systemie istnieją dwa rodzaje procesów: producenci, którzy produkują

69 6.3. Problem producenta i konsumenta. 70 pewne dane oraz konsumenci, którzy odbierają dane od producentów. Pomiędzy producentami a konsumentami znajduje się bufor o określonej pojemności, służący do przekazywania danych. Problem polega na synchronizacji pracy obu rodzajów procesów w taki sposób, aby: 1. Konsument oczekiwał na pobranie danych, jeśli bufor jest pusty. Pobranie danych z pustego bufora oznaczałoby pobranie bezwartościowych danych. 2. Producent nie umieszczał danych w buforze, gdy bufor jest pełny. Zapisanie danych do pełnego bufora oznaczałoby nadpisanie, a w konsekwencji utratę jeszcze nieodczytanych przez konsumenta danych. 3. Nie istniała możliwość zagłodzenia procesu konsumenta. Nie może dojść do sytuacji, w której konsument będzie w nieskończoność czekał na odebranie danych, gdy te napływają do bufora. Do takiej sytuacji mogłoby dojść, gdyby tylko jeden konsument pobierał wszystkie dane. 4. Nie istniała możliwość zagłodzenia procesu producenta. Nie może dojść do sytuacji, w której producent czekałby w nieskończoność na umieszczenie danych w buforze, jeśli tylko dane są z bufora pobierane przez klientów. Analogicznie do zagłodzenia konsumenta, zagłodzenie producenta może nastąpić, gdy jedynie część procesów producenta umieszcza dane w buforze blokując pozostałe. 5. Nie dochodziło do zakleszczeń. Dla prostego przykładu, w którym istnieje jeden proces producenta i jeden proces konsumenta, sieć zamodelowana może zostać tak jak zostało to przedstawione na rysunku 6.5. Zdefiniowane zostały trzy palety kolorów typu wyliczeniowego: PR oznaczający producenta (ang. producer). W najprostszej wersji problemu paleta zawiera tylko jeden możliwy kolor factory. CON oznaczający konsumenta (ang. consument). W najprostszej wersji problemu paleta zawiera tylko jeden możliwy kolor client. BUF oznaczający bufor (ang. buffer). Wartości tego koloru służą do przechowywania informacji o ilości wolnych i zajętych miejsc w buforze. Paleta zawiera tylko jeden możliwy kolor bufspace. Miejsca P1 i P2 odnoszą się do producentów, P3 i P6 odnoszą się do bufora, a P4 oraz P5 dotyczą konsumentów. Obecność znaczników w miejscach P1 oraz P5 oznacza pracę odpowiednio producenta i konsumenta, natomiast obecność znaczników w miejscach P2 i P4 oznacza oczekiwanie na dostęp do bufora. Dane w buforze są przedstawiane za pomocą znaczników znajdujących się w miejscu P3, natomiast wolna przestrzeń bufora zamodelowana jest poprzez ilość znaczników w miejscu P6.

70 6.3. Problem producenta i konsumenta. 71 p P1 factory PR p c P4 client CON c b b T1 T2 P3 BUF T3 T4 c p p b b c P2 PR P6 2`bufSpace P5 CON BUF colset1pr1=1with1factory; colset1con1=1with1client; colset1buf1=1with1bufspace; var1p:1pr; var1c:1con; var1b:1buf; Rysunek 6.5: Model sieci kolorowanej dla problemu producenta-konsumenta. W celu weryfikacji własności stworzonego modelu systemu wygenerowany został graf osiągalności przedstawiony na rysunku 6.6. Dla uproszczenia analizy dodane zostały do grafu etykiety przyporządkowujące węzłom grafu nazwy stanów. Etykiety te będą reprezentowały węzły po translacji na język NuSMV. Zaimplementowane narzędzie do translacji posłużyło do wygenerowania kodu NuSMV przedstawionego na poniższym listingu: Listing 6.4: Opis systemu producent-konsument po translacji na język NuSMV. 1 MODULE main 2 VAR 3 s: {s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12}; 4 P5_client : 0..2; 5 P6_bufSpace : 0..2; 6 P4_client : 0..2; 7 P1_factory : 0..2; 8 P3_bufSpace : 0..2; 9 P2_factory : 0..2; 10 ASSIGN 11 init(s) := s1; 12 next(s) := case 13 s = s1 : s2;

71 6.3. Problem producenta i konsumenta s = s2 : s3; 15 s = s3 : {s5, s4}; 16 s = s4 : {s7, s6}; 17 s = s5 : {s1, s7}; 18 s = s6 : {s8, s9}; 19 s = s7 : {s2, s9}; 20 s = s8 : s10; 21 s = s9 : {s3, s10}; 22 s = s10 : {s4, s11}; 23 s = s11 : {s6, s12}; 24 s = s12 : s8; 25 esac; 26 P5_client := case 27 s = s10 : 1; 28 s = s11 : 1; 29 s = s5 : 1; 30 s = s9 : 1; 31 s = s7 : 1; 32 s = s12 : 1; 33 TRUE : 0; 34 esac; 35 P6_bufSpace := case 36 s = s10 : 1; 37 s = s1 : 2; 38 s = s4 : 1; 39 s = s2 : 2; 40 s = s5 : 2; 41 s = s9 : 1; 42 s = s7 : 2; 43 s = s3 : 1; 44 TRUE : 0; 45 esac; 46 P4_client := case 47 s = s1 : 1; 48 s = s8 : 1; 49 s = s6 : 1; 50 s = s4 : 1; 51 s = s2 : 1; 52 s = s3 : 1; 53 TRUE : 0; 54 esac; 55 P1_factory := case 56 s = s11 : 1;

72 6.3. Problem producenta i konsumenta s = s1 : 1; 58 s = s6 : 1; 59 s = s5 : 1; 60 s = s9 : 1; 61 s = s3 : 1; 62 TRUE : 0; 63 esac; 64 P3_bufSpace := case 65 s = s10 : 1; 66 s = s11 : 2; 67 s = s8 : 2; 68 s = s6 : 2; 69 s = s4 : 1; 70 s = s9 : 1; 71 s = s12 : 2; 72 s = s3 : 1; 73 TRUE : 0; 74 esac; 75 P2_factory := case 76 s = s10 : 1; 77 s = s8 : 1; 78 s = s4 : 1; 79 s = s2 : 1; 80 s = s7 : 1; 81 s = s12 : 1; 82 TRUE : 0; 83 esac; Aby sprawdzić, czy model systemu spełnia wymagania synchronizacji procesów określone w definicji problemu, należy najpierw ustalić formuły weryfikujące te wymagania. Dla prezentowanego przykładu zdefiniowane zostały następujące formuły LTL: 1. Konsument nigdy nie pobierze danych z pustego bufora: (P3_bufSpace = 0 P4_client = 1) X(P5_client = 1) 2. Konsument nigdy nie umieści danych w pełnym buforze: (P6_bufSpace = 0 P2_factory = 1) X(P1_factory = 1) 3. Brak możliwości zagłodzenia konsumenta: GF(P4_client = 1) GF(P5_client = 1)

73 6.3. Problem producenta i konsumenta. 74 s1 s2 factory empty empty client empty 2`bufSpace t1 empty factory empty client empty 2`bufSpace s3 t2 factory empty 1`bufSpace client empty 1`bufSpace t4 t3 factory empty empty empty client 2`bufSpace t1 s5 t1 s7 t2 empty factory 1`bufSpace client empty 1`bufSpace s4 t4 empty factory empty empty client 2`bufSpace s6 t1 factory empty 2`bufSpace client empty empty t4 t4 t3 t4 t3 factory empty 1`bufSpace empty client 1`bufSpace t1 t2 s9 empty factory 2`bufSpace client empty empty t3 empty factory 1`bufSpace empty client 1`bufSpace s8 t4 s10 s12 empty factory 2`bufSpace empty client empty t1 factory empty 2`bufSpace empty client empty s11 t2 Rysunek 6.6: Graf osiągalności dla modelu systemu przedstawionego na rysunku Brak możliwości zagłodzenia producenta: GF(P2_factory = 1) GF(P1_factory = 1) 5. Brak zakleszczeń: GF(P2_factory = 1) GF(P1_factory = 1) GF(P4_client = 1) GF(P5_client = 1) Formuły można dopisać do pliku.smv następująco: Listing 6.5: Formuły LTL weryfikujące poprawność modelu systemu producent-konsument. 85 LTLSPEC (P3_bufSpace=0 & P4_client=1) ->!X(P5_client=1)

74 6.4. Prosty protokół transportowy LTLSPEC (P6_bufSpace=0 & P2_factory=1) ->!X(P1_factory=1) 87 LTLSPEC G F (P4_client=1) -> G F (P5_client=1) 88 LTLSPEC G F (P2_factory=1) -> G F (P1_factory=1) 89 LTLSPEC G F (P2_factory=1) & G F (P1_factory=1) & G F (P4_client=1) & G F (P5_client=1) W celu weryfikacji spełnialności formuł przez system należy uruchomić przygotowany plik w narzędziu NuSMV. Wyniki analizy przedstawionego pliku zostały przedstawione poniżej: NuSMV > check_ltlspec -- specification ( G ( F P4_client = 1) -> G ( F P5_client = 1)) is true -- specification ( G ( F P2_factory = 1) -> G ( F P1_factory = 1)) is true -- specification ((P3_bufSpace = 0 & P4_client = 1) ->!( X P5_client = 1)) is true -- specification ((P6_bufSpace = 0 & P2_factory = 1) ->!( X P1_factory = 1)) is true -- specification ((( G ( F P2_factory = 1) & G ( F P1_factory = 1)) & G ( F P4_client = 1)) & G ( F P5_client = 1)) is true Analiza wykazała, że wszystkie postawione systemowi założenia zostały spełnione w przygotowanym modelu. Ze względu na niewielki rozmiar grafu osiągalności analiza tych własności nie sprawiłaby problemu również człowiekowi. Gdy jednak zwiększymy rozmiar problemu, dodając dwóch klientów, to ilość stanów w grafie osiągalności zwiększy się z 12 do 48. Przy większej ilości stanów człowiek nie jest już w stanie w rozsądnym czasie przeanalizować sieci samodzielnie, co zostanie jeszcze lepiej pokazane w kolejnym przykładzie Prosty protokół transportowy. Drugi przykład dla sieci kolorowanych dotyczy weryfikacji modelu prostego protokołu komunikacyjnego. Przykład ten bazuje na modelu stworzonym prof. K. Jensena [Jen98][JKW07] i jego modyfikacjach [M.07]. W omawianym protokole jest jeden nadawca i jeden odbiorca. Zarówno nadawca jak i odbiorca posiadają numer porządkowy pakietu, pozwalający określić, czy dane nie zostały utracone. Nadawca wysyła pakiety do odbiorcy. Jeśli numer pakietu otrzymanego przez odbiorcę jest poprawny, to odbiorca wysyła nadawcy potwierdzenie odbioru pakietu i sygnalizuje gotowość do odebrania kolejnego. Jeśli numer otrzymanego pakietu nie jest poprawny, to odbiorca sygnalizuje nadawcy jaki numer pakietu powinien otrzymać. Każdy pakiet danych może zostać wysłany dwukrotnie. Powtórne wysłanie pakietu symuluje sytuację nieotrzymania potwierdzenia odebrania pakietu w wyznaczonym czasie, w przypadku utraty pakietu lub dużych opóźnień podczas transportu danych. Prawdopodobieństwo utraty pakietów i

75 6.4. Prosty protokół transportowy. 76 Dane Dane Nadawca Odbiorca Potwierdzenie Potwierdzenie Rysunek 6.7: Schemat omawianego protokołu transportowego. potwierdzeń podczas przesyłania jest w modelu ustalone na 20%. Wartość tą można jednak modyfikować poprzez zmianę odpowiednich parametrów. Model sieci został przedstawiony na rysunku 6.8. Kolory, zmienne i funkcje dla tego modelu zostały zdefiniowane w poniższym listingu: Listing 6.6: Deklaracje dla modelu prostego protokołu transportowego. colset INT = int; colset DATA = string; colset INTxDATA = product INT * DATA; colset Ten0 = int with 0..10; colset Ten1 = int with 1..10; var m, n, k: INT; var p, str: DATA; var s: Ten0; var r: Ten1; val stop = "########"; fun TransOk(s:Ten0,r:Ten1) = (r<=s); W miejscu o nazwie Send znajdują się po dwa znaczniki trzech różnych kolorów z palety INTxDATA: (1,"Hello ") (2,"World") (3,"########") Znaczniki te reprezentują pakiety danych przeznaczone do wysłania. Pierwszy element znacznika to numer porządkowy pakietu, a drugi to jego zawartość. Ostatni ze znaczników, oznaczony numerem porządkowym 3, zawiera ciąg znaków oznaczający zakończenie transmisji. Docelowo pakiety powinny

76 6.4. Prosty protokół transportowy. 77 E Success INT = m k INTxDATA f`8=[whello)wuaa f`8f[wworldwuaa Send f`8o[w wu 8n[pu [n>e] Send Packet 8n[pu 8n[pu A INTxDATA Transmit Packet n n s = INT NextSend 8 TenE SP n k [n<>e] 8 TenE SA s [n=e] Receive Ack End) trans Sender n n INT D if)transok8s[ru then)=`n else)empty Transmit Ack Network Simple)Protocol if)transok8s[ru then)=`8n[pu else)empty = NextRec INT n DATA B 8n[pu INTxDATA k if)n=k) andalso)p=stop then)e else)if)n=k) then)ka=) else)k C INT Receiver Received WW str if)n=k andalso p<>stop then)str^p else)str Receive Packet if)n=k)andalso)p=stop then)e else)if)n=k) then)ka=) else)k Rysunek 6.8: Model prostego protokołu transportowego [Jen98] [JKW07].

77 6.4. Prosty protokół transportowy. 78 trafić do miejsca Received. Początkowo znajduje się tam jeden znacznik przechowujący pusty łańcuch znaków. Przychodzące pakiety będą po kolei dodawane do jego zawartości. Miejsca SP (z ang. Success rate for Packages) oraz SA (z ang. Success rate for Acknowledgements) służą do zamodelowania prawdopodobieństwa utraty pakietu oraz potwierdzenia podczas przesyłania przez sieć. Przechowują po jednym znaczniku z palety Ten0. Paleta ta może przechowywać wartości typu całkowitoliczbowego z zakresu od 0 do 10 włącznie. Znaczniki o kolorach 8 znajdujące się w miejscach SP i SA oznaczają 80% szans na powodzenie transmisji. Zmieniając kolor znacznika w tym miejscu można regulować to prawdopodobieństwo w zakresie od 0 do 100%. Miejsce nextsend przechowuje numer porządkowy następnego pakietu danych jaki nadawca powinien wysłać. Analogicznie miejsce nextrec przechowuje numer porządkowy pakietu jaki powinien być otrzymany przez odbiorcę. Miejsca A, B, C, D są miejscami pomocniczymi, przechowującymi pakiety i potwierdzenia w fazach pośrednich. Miejsce Success przechowuje znacznik wskazujący na to, czy transmisja zakończyła się powodzeniem. Logika działania modelu zawarta jest przede wszystkich w przejściach. Pierwszym z nich jest przejście Send packet. Pobiera ono jeden znacznik z miejsca Send o numerze porządkowym n, który odczytuje z miejsca NextSend. Następnie pakiet ten jest przesyłany do miejsca A. Przejścia Transmit Packet oraz Transmit Ack są do siebie bardzo podobne. Pobierają po jednym znaczniku odpowiednio z miejsc A i C, a następnie przenoszą go do miejsc B i D. Transmisja może się jednak nie powieść i pakiety mogą zostać stracone. Możliwe jest to, ponieważ zmienna r znajduje się na łukach wyjściowych przejść, przez co może przyjąć dowolny kolor ze swojej palety, w tym wypadku może przyjąć wartość od 1 do 10 włącznie. Funkcja TransOK sprawdza czy losowa wartość zmiennej r jest mniejsza bądź równa wartości zmiennej s, pobranej z miejsc SP i SA. Jeśli tak, to transmisja jest uznawana za zakończoną sukcesem i znacznik przechodzi do miejsca docelowego. W przeciwnym wypadku znacznik ginie, tzn. zostaje usunięty z miejsca początkowego, jednak nie zostaje umieszczony w miejscu docelowym. Przejście Receive Packet pobiera pakiet z miejsca B i sprawdza, czy jego numer porządkowy zgadza się z numerem przechowywanym w miejscu NextRec. Jeśli nie, to pakiet jest pomijany i wysyłane jest żądanie wysłania pakietu o oczekiwanym przez odbiorcę numerze. Jeśli numer się zgadza, to sprawdzane jest, czy nie jest on sekwencją zakańczającą transmisję. Jeśli tak, to nic nie jest dopisywane do znacznika przechowywanego w miejscu Received, a do miejsc NextRec oraz C trafia znacznik o kolorze 0 oznaczającym potwierdzenie zakończenia transmisji. Jeśli otrzymany ciąg znaków nie jest sekwencją kończącą, to jest on konkatenowany z zawartością znacznika przechowywanego w miejscu Received, a do miejsc NextRec oraz C trafia znacznik o kolorze wskazującym na numer kolejnego pakietu jaki powinien otrzymać odbiorca. Numer porządkowy, wysyłany przed odbiorcę, jest traktowany jako potwierdzenie i odbierany w czasie wykonywania przejścia Receive Ack. Przejście to podmienia znacznik znajdujący się w miejscu NextSend, na znacznik z miejsca D. Wykonywane jest jednak tylko wtedy, gdy kolor znacznika w miejscu D jest różny od 0, tzn. gdy odbiorca prosi o kolejną paczkę danych. W wypadku gdy znacznik

78 6.4. Prosty protokół transportowy. 79 w miejscu D ma kolor 0 aktywne staje się przejście End trans, powodujące zakończenie transmisji poprzez usunięcie znacznika z miejsca NextSend i zmianę koloru znacznika w miejscu Success z 0 na 1. Po generacji przestrzeni stanów, okazuje się, że ta niezbyt rozległa sieć posiada graf osiągalności zawierający 2012 stanów i łuki. Człowiek nie jest w stanie w rozsądnym czasie sprawdzić wszystkich możliwych ścieżek wykonania. Opisywane w tej pracy narzędzie translacji jest jednak w stanie szybko przetworzyć graf osiągalności na kod NuSMV, na którym bardzo prosto można sprawdzić takie własności jak: 1. Czy pakiety są otrzymywane w odpowiedniej kolejności? (NextRec_1 = 1) (F(NextRec_2 = 1) XG(NextRec_1 = 1)) (NextRec_2 = 1) (F(NextRec_3 = 1) XG(NextRec_2 = 1)) (NextRec_3 = 1) (F(NextRec_0 = 1) XG(NextRec_3 = 1)) 2. Czy istnieje taki ciąg przejść, że transmisja się powodzi? EF AG(Success_1 = 1) 3. Czy transmisja się zawsze powodzi? AF AG(Success_1 = 1) 4. Czy transmisja może zakończyć się sukcesem w sytuacji, gdy odbiorca nie otrzymał wszystkich pakietów? (Success_1 = 1) (Received_HelloWorld = 1) 5. Czy transmisja może zakończyć się niepowodzeniem, pomimo że odbiorca otrzymał wszystkie pakiety? EF((Received_HelloWorld = 1) AG(Success_1 = 0)) W formułach specyfikacji NuSMV pytania te można zapisać następująco: Listing 6.7: Formuły LTL i CTL weryfikujące poprawność modelu prostego protokołu transportowego LTLSPEC (NextRec_1 = 1) -> ( F (NextRec_2 = 1) X G(NextRec_1 = 1)) LTLSPEC (NextRec_2 = 1) -> ( F (NextRec_3 = 1) X G(NextRec_2 = 1)) LTLSPEC (NextRec_3 = 1) -> ( F (NextRec_0 = 1) X G(NextRec_3 = 1)) CTLSPEC EF AG (Success_1 = 1) CTLSPEC AF AG (Success_1 = 1) 19593

79 6.4. Prosty protokół transportowy LTLSPEC (Success_1 = 1) -> (Received_HelloWorld = 1) CTLSPEC EF ((Received_HelloWorld = 1) & AG(Success_1 = 0)) Po wczytaniu pliku do programu NuSMV i uruchomieniu sprawdzania poprawności formuł otrzymane zostały następujące rezultaty: NuSMV > check_ltlspec -- specification (NextRec_1 = 1 -> ( F NextRec_2 = 1 X ( G NextRec_1 = 1))) is true -- specification (NextRec_2 = 1 -> ( F NextRec_3 = 1 X ( G NextRec_2 = 1))) is true -- specification (NextRec_3 = 1 -> ( F NextRec_0 = 1 X ( G NextRec_3 = 1))) is true -- specification (Success_1 = 1 -> Received_HelloWorld = 1) is true NuSMV > check_ctlspec -- specification EF (AG Success_1 = 1) is true -- specification AF (AG Success_1 = 1) is false -- as demonstrated by the following execution sequence Trace Description: CTL Counterexample Trace Type: Counterexample -> State: 1.1 <- s = s1 A_#2_World# = 0 Success_1 = 0 Success_0 = 1 Received_Hello = 0 NextRec_0 = 0 Send_#2_World# = 2 NextRec_1 = 1 SP_8 = 1 SA_8 = 1 D_3 = 0 NextRec_3 = 0 NextRec_2 = 0 A_#1_Hello# = 0 Send_#1_Hello# = 2 C_0 = 0 B_#3_######### = 0 C_2 = 0

80 6.4. Prosty protokół transportowy. 81 C_3 = 0 D_2 = 0 D_0 = 0 Send_#3_######### = 2 A_#3_######### = 0 Received_ = 1 B_#1_Hello# = 0 NextSend_1 = 1 B_#2_World# = 0 NextSend_2 = 0 Received_HelloWorld = 0 NextSend_3 = 0 -> State: 1.2 <- s = s2 A_#1_Hello# = 1 Send_#1_Hello# = 1 -> State: 1.3 <- s = s4 A_#1_Hello# = 0 B_#1_Hello# = 1 -> State: 1.4 <- s = s8 A_#1_Hello# = 1 Send_#1_Hello# = 0 -> State: 1.5 <- s = s14 A_#1_Hello# = 0 B_#1_Hello# = 2 -> State: 1.6 <- s = s19 Received_Hello = 1 NextRec_1 = 0 NextRec_2 = 1 C_2 = 1 Received_ = 0 B_#1_Hello# = 1 -> State: 1.7 <- s = s22

81 6.4. Prosty protokół transportowy. 82 C_2 = 0 -> State: 1.8 <- s = s15 C_2 = 1 B_#1_Hello# = 0 -- Loop starts here -> State: 1.9 <- s = s20 C_2 = 0 -> State: 1.10 <- -- specification EF (Received_HelloWorld = 1 & AG Success_1 = 0) is true Jak pokazała analiza, jedynym pytaniem na jakie odpowiedź jest negatywna było pytanie o to, czy transmisja się zawsze powodzi. NuSMV pokazał kontrprzykład, w którym można zauważyć, że kolejne pakiety są gubione podczas transmisji, przez co niemożliwe staje się wysłanie komunikatu. Jednocześnie jedna z formuł wykazała, że transmisja może się zakończyć sukcesem. Na podstawie pozostałych odpowiedzi można wywnioskować, że pakiety odbierane są przez odbiorcę zawsze we właściwej kolejności oraz, co ciekawe, że odbiorca może otrzymać wszystkie pakiety, pomimo tego, że transmisja nie zakończyła się powodzeniem z punktu widzenia nadawcy.

82 7. Podsumowanie W ramach pracy opracowany został algorytm translacji grafów osiągalności sieci Petriego (miejsc i przejść oraz kolorowanych) na opis systemu w języku NuSMV. Przygotowane zostało w pełni działające narzędzie, realizujące postawione mu w założeniach pracy cele. Umożliwia ono translację plików.kts oraz.cpn, dając w wyniku plik.smv. Dzięki temu, użytkownicy mogą w prosty sposób sprawdzić poprawność zamodelowanego systemu, dokonując weryfikacji przy użyciu formuł logik temporalnych LTL oraz CTL. System / problem Typ sieci Liczba węzłów Czas w grafie osiągalności translacji [ms] Problem pięciu filozofów sieć miejsc i przejść Producent-konsument sieć kolorowana Układ logiczny sieć miejsc i przejść Prosty protokół transportowy sieć kolorowana Tablica 7.1: Podsumowanie wyników translacji dla przedstawionych w pracy przykładów. Przygotowane narzędzie dla każdego z przedstawionych w rozdziale 6 przykładów poprawnie przeprowadziło proces translacji grafów osiągalności na opis systemu w języku NuSMV. Wyniki tych translacji przedstawia tabela 7.1. Zmierzone czasy translacji grafów okazały się w pełni zadowalające. Opis dla sieci miejsc i przejść jako sieci prostszych jest generowany szybciej niż dla sieci kolorowanych. Jednak nawet dla złożonego przykładu protokołu transportowego translacja zajęła tylko około 20 sekund. Biorąc pod uwagę duży rozmiar parsowanego pliku (ponad 20 MB), można uznać taki wynik za jak najbardziej satysfakcjonujący. Samodzielne tworzenie kodu NuSMV dla grafu zawierającego 2012 węzłów i łuki jest rzeczą praktycznie niemożliwą do realizacji - umożliwia to jednak przygotowane w pracy narzędzie. W przyszłości projekt mógłby zostać rozwinięty o możliwość parsowania grafów zapisanych w innych formatach niż przedstawione w pracy formaty.kts oraz.cpn. Warte rozważenia byłoby również zastosowanie translacji dla grafów innych rodzajów sieci Petriego, takich jak sieci hierarchiczne, czasowe, RTCP i inne. 83

83 7.1. Podział zadań Podział zadań Tabela 7.2 przedstawia autorstwo poszczególnych części pracy natomiast tabela 7.3 pokazuje podział zadań przy implementacji narzędzia do translacji grafów osiągalności sieci Petriego do opisu systemu w języku NuSMV. Agnieszka Biernacka Jerzy Biernacki 1. Wprowadzenie 2. Sieci Petriego 2.1 Sieci miejsc i przejść 2.2 Sieci kolorowane Analiza sieci miejsc i przejść Analiza sieci kolorowanych 3. Logiki temporalne 3.1 LTL 3.2 CTL 4. NuSMV 4.1 Opis formatu Przykład weryfikacji modelowej 4.2 Interaktywny tryb NuSMV z wykorzystaniem programu NuSMV 5. Metoda translacji Translacja sieci miejsc i przejść Translacja sieci kolorowanych 6. Przykłady zastosowania 6.1 Problem pięciu filozofów 6.3 Problem producenta i konsumenta 6.2 Układ logiczny 6.4 Prosty protokół transportowy 7. Podsumowanie A. Generacja grafu pokrycia w narzędziu TINA B. Generacja grafu osiągalności w narzędziu CPN Tools Tablica 7.2: Autorstwo poszczególnych części pracy.

84 7.1. Podział zadań 85 Agnieszka Biernacka Jerzy Biernacki Ogólna koncepcja metody translacji grafów na opis systemu w języku NuSMV Parser pliku.kts Parser pliku.cpn Model obiektowy grafu Generator opisu systemu w języku NuSMV Generator opisu systemu w języku NuSMV dla grafów pokrycia sieci miejsc i przejść dla grafów osiągalności sieci kolorowanych Testy zaimplementowanego narzędzia Tablica 7.3: Podział prac przy implementacji narzędzia do translacji grafu osiągalności na opis systemu w języku NuSMV.

85 A. Generacja grafu pokrycia w narzędziu TINA Poniżej przedstawiony został opis generacji pliku.kts dla grafu pokrycia sieci miejsc i przejść zamodelowanej przy pomocy narzędzia TINA. 1. Wczytaj lub utwórz sieć miejsc i przejść w edytorze TINA (rysunek A.1). Rysunek A.1: Sieć miejsc i przejść zamodelowana przy pomocy narzędzia TINA. 2. W zakładce Tools wybierz opcję reachability analysis (rysunek A.2). Zostanie otwarte okno dialogowe z ustawieniami generacji grafu. Rysunek A.2: Zakładaka Tools edytora. 86

86 87 3. W sekcji building wybierz opcję coverability graph. Dzięki temu wygenerowany zostanie graf pokrycia. W sekcji output zaznacz opcję kts (.ktz). Pozostałe opcje pozostaw z domyślnymi wartościami. Sposób zaznaczenia pokazuje rysunek A.3. Potwierdź przyciskiem OK. Rysunek A.3: Opcje generacji grafu. 4. Wygenerowany zostaje tekstowy opis grafu pokrycia. Kliknij prawym przyciskiem myszy na pole, w którym znajduje się opis. Wybierz z menu kontekstowego opcję save view (rysunek A.4). Wybierz nazwę i katalog w którym chcesz zapisać plik. Domyślnym rozszerzeniem pliku jest rozszerzenie.kts. Rysunek A.4: Wybór zapisu pliku z menu kontekstowego.

87 B. Generacja grafu osiagalności w narzędziu CPN Tools Poniżej przedstawiony został opis generacji grafu osiągalności dla sieci kolorowanej zamodelowanej przy pomocy narzędzia CPN Tools. 1. Wczytaj lub utwórz sieć kolorowaną w narzędziu CPN Tools. Przykład pokazuje rysunek B Do obliczania i rysowania grafu służy przybornik State space (rysunek B.2). 3. Ponieważ wiele sieci może mieć nieskończone lub bardzo duże grafy osiągalności, pożyteczną opcją jest ustawienie narzędziu Calculate State Space maksymalnej liczby węzłów (nodestop) lub krawędzi (arcstop), jakie ma zawierać obliczany graf. Opcje znajdują się w menu kontekstowym, wyświetlanym po kliknięciu prawym klawiszem myszy na narzędziu (rysunek B.3). 4. W celu obliczenia przestrzeni stanów sieci, wybieramy narzędzie Calculate State Space i klikamy na stronie z zamodelowaną siecią (rysunek B.4). 5. Następnie wybieramy narzędzie Calculate SCC graph i klikamy na stronie (rysunek B.5). Obliczony zostanie graf osiągalności. 6. Tworzymy nową stronę, na której rysować będziemy graf osiągalności (opcjonalnie). 7. Przybornik Aux posłuży do napisania funkcji obliczającej listę krawędzi grafu (rysunek B.6). 8. Z przybornika Aux wybieramy narzędzie Text i dodajemy je do strony. Treść funkcji obliczającej listę krawędzi grafu osiągalności przedstawia rysunek B.7. Rysunek B.1: Sieć kolorowana zamodelowana przy pomocy narzędzia CPN Tools. 88

88 89 Rysunek B.2: Przybornik State space. Rysunek B.3: Opcje narzędzia Calculate State Space. Rysunek B.4: Obliczanie przestrzeni stanów sieci narzędziem Calculate State Space. Rysunek B.5: Obliczanie grafu osiągalności narzędziem Calculate SCC graph. Rysunek B.6: Przybornik Aux.

89 90 Rysunek B.7: Funkcja obliczająca listę krawędzi grafu osiągalności. Rysunek B.8: Opcje narzędzia Display partial state space. 9. W kolejnym kroku posłużymy się narzędziem Display partial state space. Przed jego użyciem należy odznaczyć opcję Nodes in the list - dzięki temu narzędzie będzie interpretowało listę jako listę krawędzi, a nie listę węzłów grafu osiągalności. Poprawnie odznaczone pole pokazuje rysunek B Tak przygotowanym narzędziem klikamy na przygotowaną funkcję (rysunek B.9). Rysunek B.9: Użycie narzędzia Display partial state space na obiekcie z przybornika Aux. 11. Na stronie przedstawiony zostaje obliczony graf osiągalności. Węzły grafu odpowiadają stanom systemu, natomiast krawędzie przejściom między tymi stanami. Po kliknięciu w trójkącik znajdujący się w lewym, dolnym rogu węzła wyświetlona zostaje informacja na temat znakowania systemu w stanie odpowiadającym danemu węzłowi. Przykład pokazuje rysunek B Graf jest zapisywany razem z zamodelowaną siecią w pliku.cpn.

90 91 Rysunek B.10: Graf osiągalności w CPN Tools.

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe 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

Bardziej szczegółowo

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (7) Automaty czasowe NuSMV Paweł Głuchowski, Politechnika Wrocławska wersja 2.4 Treść wykładu NuSMV NuSMV symboliczny

Bardziej szczegółowo

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (3) Logika CTL Paweł Głuchowski, Politechnika Wrocławska wersja 2.2 Treść wykładu Charakterystyka logiki CTL Czas w Computation

Bardziej szczegółowo

Najkrótsza droga Maksymalny przepływ Najtańszy przepływ Analiza czynności (zdarzeń)

Najkrótsza droga Maksymalny przepływ Najtańszy przepływ Analiza czynności (zdarzeń) Carl Adam Petri (1926-2010) Najkrótsza droga Maksymalny przepływ Najtańszy przepływ Analiza czynności (zdarzeń) Problemy statyczne Kommunikation mit Automaten praca doktorska (1962) opis procesów współbieżnych

Bardziej szczegółowo

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017 Logika Stosowana Wykład 1 - Logika zdaniowa Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 30 Plan wykładu 1 Język

Bardziej szczegółowo

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (1) Wprowadzenie do logiki temporalnej Paweł Głuchowski, Politechnika Wrocławska wersja 2.2 Program wykładów 1. Wprowadzenie

Bardziej szczegółowo

Wprowadzenie Logiki temporalne Przykłady użycia Bibliografia. Logiki temporalne. Andrzej Oszer. Seminarium Protokoły Komunikacyjne

Wprowadzenie Logiki temporalne Przykłady użycia Bibliografia. Logiki temporalne. Andrzej Oszer. Seminarium Protokoły Komunikacyjne Seminarium Protokoły Komunikacyjne Spis treści 1 2 PLTL - Propositional Linear Temporal Logic CTL - Computation Tree Logic CTL* - uogólnienie 3 4 rozszerzaja logikę pierwszego rzędu o symbole określajace

Bardziej szczegółowo

Definicja sieci. Sieć Petriego jest czwórką C = ( P, T, I, O ), gdzie: P = { p 1, p 2,, p n } T = { t 1, t 2,, t m }

Definicja sieci. Sieć Petriego jest czwórką C = ( P, T, I, O ), gdzie: P = { p 1, p 2,, p n } T = { t 1, t 2,, t m } Sieci Petriego Źródła wykładu: 1. http://www.ia.pw.edu.pl/~sacha/petri.html 2.M. Szpyrka: Sieci Petriego w modelowaniu i analizie systemów współbieżnych, WNT 2008 Definicja sieci Sieć Petriego jest czwórką

Bardziej szczegółowo

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (2) Logika LTL Paweł Głuchowski, Politechnika Wrocławska wersja 2.1 Treść wykładu Charakterystyka logiki LTL Czas w Linear

Bardziej szczegółowo

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (4) Modelowa weryfikacja systemu Paweł Głuchowski, Politechnika Wrocławska wersja 2.1 Treść wykładu Własności współbieżnych

Bardziej szczegółowo

Adam Meissner.

Adam Meissner. Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis SZTUCZNA INTELIGENCJA Podstawy logiki pierwszego rzędu

Bardziej szczegółowo

Metoda Tablic Semantycznych

Metoda Tablic Semantycznych Procedura Plan Reguły Algorytm Logika obliczeniowa Instytut Informatyki Plan Procedura Reguły 1 Procedura decyzyjna Logiczna równoważność formuł Logiczna konsekwencja Procedura decyzyjna 2 Reguły α, β,

Bardziej szczegółowo

LOGIKA I TEORIA ZBIORÓW

LOGIKA I TEORIA ZBIORÓW LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja

Bardziej szczegółowo

Elementy logiki matematycznej

Elementy logiki matematycznej Elementy logiki matematycznej Przedmiotem logiki matematycznej jest badanie tzw. wyrażeń logicznych oraz metod rozumowania i sposobów dowodzenia używanych w matematyce, a także w innych dziedzinach, w

Bardziej szczegółowo

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

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0 ĆWICZENIE 1 Klasyczny Rachunek Zdań (KRZ): zdania w sensie logicznym, wartości logiczne, spójniki logiczne, zmienne zdaniowe, tabele prawdziwościowe dla spójników logicznych, formuły, wartościowanie zbioru

Bardziej szczegółowo

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

Weryfikacja modelowa. Protokoły komunikacyjne 2006/2007. Paweł Kaczan Weryfikacja modelowa Protokoły komunikacyjne 2006/2007 Paweł Kaczan pk209469@students.mimuw.edu.pl Plan Wstęp Trzy kroki do weryfikacji modelowej Problemy Podsumowanie Dziedziny zastosowań Weryfikacja

Bardziej szczegółowo

Rachunek predykatów. Formuły rachunku predykatów. Plan wykładu. Relacje i predykaty - przykłady. Relacje i predykaty

Rachunek predykatów. Formuły rachunku predykatów. Plan wykładu. Relacje i predykaty - przykłady. Relacje i predykaty Rachunek predykatów Wykład 4 Plan wykładu Relacje i predykaty Formuły rachunku predykatów Interpretacje Logiczna równoważność Metoda tabel Modele skończone i nieskończone Rozstrzygalność Relacje i predykaty

Bardziej szczegółowo

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI Program wykładów: dr inż. Barbara GŁUT Wstęp do logiki klasycznej: rachunek zdań, rachunek predykatów. Elementy semantyki. Podstawy teorii mnogości

Bardziej szczegółowo

Paradygmaty dowodzenia

Paradygmaty dowodzenia Paradygmaty dowodzenia Sprawdzenie, czy dana formuła rachunku zdań jest tautologią polega zwykle na obliczeniu jej wartości dla 2 n różnych wartościowań, gdzie n jest liczbą zmiennych zdaniowych tej formuły.

Bardziej szczegółowo

1. Sieci Petriego. Rys. 1-1 Przykład sieci Petriego

1. Sieci Petriego. Rys. 1-1 Przykład sieci Petriego 1 1. Sieci Petriego Narzędzie wprowadzone przez Carla A. Petriego w 1962 roku do pierwotnie modelowania komunikacji z automatami. Obecnie narzędzie stosowane jest w modelowaniu systemów współbieżnych,

Bardziej szczegółowo

SIECI PETRIEGO WYŻSZEGO RZEDU Kolorowane sieci Petriego. Kolorowane sieci Petriego 1

SIECI PETRIEGO WYŻSZEGO RZEDU Kolorowane sieci Petriego. Kolorowane sieci Petriego 1 SIECI PETRIEGO WYŻSZEGO RZEDU Kolorowane sieci Petriego Kolorowane sieci Petriego 1 PRZYKŁAD - DWA POCIAGI Kolorowane sieci Petriego 2 KONCEPCJA KOLORÓW Model z rysunku (a) nie jest równoważny poprzedniemu,

Bardziej szczegółowo

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. 1 Logika Klasyczna obejmuje dwie teorie:

Bardziej szczegółowo

Struktury formalne, czyli elementy Teorii Modeli

Struktury formalne, czyli elementy Teorii Modeli Struktury formalne, czyli elementy Teorii Modeli Szymon Wróbel, notatki z wykładu dra Szymona Żeberskiego semestr zimowy 2016/17 1 Język 1.1 Sygnatura językowa Sygnatura językowa: L = ({f i } i I, {P j

Bardziej szczegółowo

Internet Semantyczny i Logika II

Internet Semantyczny i Logika II Internet Semantyczny i Logika II Ontologie Definicja Grubera: Ontologia to formalna specyfikacja konceptualizacji pewnego obszaru wiedzy czy opisu elementów rzeczywistości. W Internecie Semantycznym językiem

Bardziej szczegółowo

WOJSKOWA AKADEMIA TECHNICZNA WYDZIAŁ CYBERNETYKI

WOJSKOWA AKADEMIA TECHNICZNA WYDZIAŁ CYBERNETYKI WOJSKOWA AKADEMIA TECHNICZNA WYDZIAŁ CYBERNETYKI Analiza i modelowanie Systemów Teleinformatycznych Sprawozdanie z ćwiczenia laboratoryjnego nr 6 Temat ćwiczenia: Modelowanie systemów równoległych z zastosowaniem

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Automat ze stosem Automat ze stosem to szóstka

Bardziej szczegółowo

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa. Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna

Bardziej szczegółowo

Praktyczne metody weryfikacji. Wykład 9: Weryfikacja ograniczona.. p.1/40

Praktyczne metody weryfikacji. Wykład 9: Weryfikacja ograniczona.. p.1/40 Praktyczne metody weryfikacji Wykład 9: Weryfikacja ograniczona. p.1/40 Symboliczna weryfikacja modelowa (SMC) model kodowanie boolowskie QBF implementacja OBDD weryfikacja modelowa = operacje na OBDDs.

Bardziej szczegółowo

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

I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych. I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych. 1. Elementy logiki matematycznej. 1.1. Rachunek zdań. Definicja 1.1. Zdaniem logicznym nazywamy zdanie gramatyczne

Bardziej szczegółowo

Semantyka rachunku predykatów

Semantyka rachunku predykatów Relacje Interpretacja Wartość Spełnialność Logika obliczeniowa Instytut Informatyki Relacje Interpretacja Wartość Plan Plan Relacje O co chodzi? Znaczenie w logice Relacje 3 Interpretacja i wartościowanie

Bardziej szczegółowo

Praktyczne metody weryfikacji

Praktyczne metody weryfikacji Praktyczne metody weryfikacji Sławomir Lasota Uniwersytet Warszawski semestr zimowy 06/07. p.1/?? I. Motywacja czyli po co?. p.2/?? czerwiec 1996. p.3/?? nieobsłużony wyjatek szacunkowy koszt: 600 mln

Bardziej szczegółowo

Zasada indukcji matematycznej

Zasada indukcji matematycznej Zasada indukcji matematycznej Twierdzenie 1 (Zasada indukcji matematycznej). Niech ϕ(n) będzie formą zdaniową zmiennej n N 0. Załóżmy, że istnieje n 0 N 0 takie, że 1. ϕ(n 0 ) jest zdaniem prawdziwym,.

Bardziej szczegółowo

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych

Bardziej szczegółowo

Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW

Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW Logika Stosowana Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika

Bardziej szczegółowo

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie Opracował: dr hab. inż. Jan Magott KATEDRA INFORMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie 207 Temat: Automaty Moore'a i Mealy 1. Cel ćwiczenia Celem ćwiczenia jest

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Rachunek logiczny. 1. Język rachunku logicznego.

Rachunek logiczny. 1. Język rachunku logicznego. Rachunek logiczny. Podstawową własnością rozumowania poprawnego jest zachowanie prawdy: rozumowanie poprawne musi się kończyć prawdziwą konkluzją, o ile wszystkie przesłanki leżące u jego podstaw były

Bardziej szczegółowo

Zbiory, relacje i funkcje

Zbiory, relacje i funkcje Zbiory, relacje i funkcje Zbiory będziemy zazwyczaj oznaczać dużymi literami A, B, C, X, Y, Z, natomiast elementy zbiorów zazwyczaj małymi. Podstawą zależność między elementem zbioru a zbiorem, czyli relację

Bardziej szczegółowo

Metody dowodzenia twierdzeń i automatyzacja rozumowań Tabele syntetyczne: definicje i twierdzenia

Metody dowodzenia twierdzeń i automatyzacja rozumowań Tabele syntetyczne: definicje i twierdzenia Metody dowodzenia twierdzeń i automatyzacja rozumowań Tabele syntetyczne: definicje i twierdzenia Mariusz Urbański Instytut Psychologii UAM Mariusz.Urbanski@.edu.pl Metoda tabel syntetycznych (MTS) MTS

Bardziej szczegółowo

Logika Matematyczna (1)

Logika Matematyczna (1) Logika Matematyczna (1) Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl 4 X 2007 Jerzy Pogonowski (MEG) Logika Matematyczna (1) 4 X 2007 1 / 18 Plan konwersatorium Dzisiaj:

Bardziej szczegółowo

020 Liczby rzeczywiste

020 Liczby rzeczywiste 020 Liczby rzeczywiste N = {1,2,3,...} Z = { 0,1, 1,2, 2,...} m Q = { : m, n Z, n 0} n Operacje liczbowe Zbiór Dodawanie Odejmowanie Mnożenie Dzielenie N Z Q Pytanie Dlaczego zbiór liczb wymiernych nie

Bardziej szczegółowo

Logika Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Logika Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017 Logika Stosowana Wykład 2 - Logika modalna Część 2 Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 27 Plan wykładu

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń Elementy logiki Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń 1 Klasyczny Rachunek Zdań 1.1 Spójniki logiczne Zdaniem w sensie logicznym nazywamy wyrażenie, które jest

Bardziej szczegółowo

miejsca przejścia, łuki i żetony

miejsca przejścia, łuki i żetony Sieci Petriego Sieć Petriego Formalny model procesów umożliwiający ich weryfikację Główne konstruktory: miejsca, przejścia, łuki i żetony Opis graficzny i matematyczny Formalna semantyka umożliwia pogłębioną

Bardziej szczegółowo

LOGIKA Klasyczny Rachunek Zdań

LOGIKA Klasyczny Rachunek Zdań LOGIKA Klasyczny Rachunek Zdań Robert Trypuz trypuz@kul.pl 5 listopada 2013 Robert Trypuz (trypuz@kul.pl) Klasyczny Rachunek Zdań 5 listopada 2013 1 / 24 PLAN WYKŁADU 1 Alfabet i formuła KRZ 2 Zrozumieć

Bardziej szczegółowo

Analiza sieci Petriego

Analiza sieci Petriego Analiza sieci Petriego Przydatność formalnej analizy modelu procesów Szpital obsługa 272 pacjentów 29258 zdarzeń 264 różnych czynności Czy powyższy model jest poprawny? Własności behawioralne sieci Petriego

Bardziej szczegółowo

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

10. Translacja sterowana składnią i YACC

10. Translacja sterowana składnią i YACC 10. Translacja sterowana składnią i YACC 10.1 Charakterystyka problemu translacja sterowana składnią jest metodą generacji przetworników tekstu języków, których składnię opisano za pomocą gramatyki (bezkontekstowej)

Bardziej szczegółowo

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Gramatyki bezkontekstowe I Gramatyką bezkontekstową

Bardziej szczegółowo

Sieci Petriego. Sieć Petriego

Sieci Petriego. Sieć Petriego Sieci Petriego Sieć Petriego Formalny model procesów umożliwiający ich weryfikację Główne konstruktory: miejsca, przejścia, łuki i żetony Opis graficzny i matematyczny Formalna semantyka umożliwia pogłębioną

Bardziej szczegółowo

Wstęp do Techniki Cyfrowej... Teoria automatów

Wstęp do Techniki Cyfrowej... Teoria automatów Wstęp do Techniki Cyfrowej... Teoria automatów Alfabety i litery Układ logiczny opisywany jest przez wektory, których wartości reprezentowane są przez ciągi kombinacji zerojedynkowych. Zwiększenie stopnia

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

JAO - Wprowadzenie do Gramatyk bezkontekstowych

JAO - Wprowadzenie do Gramatyk bezkontekstowych JAO - Wprowadzenie do Gramatyk bezkontekstowych Definicja gramatyki bezkontekstowej Podstawowymi narzędziami abstrakcyjnymi do opisu języków formalnych są gramatyki i automaty. Gramatyka bezkontekstowa

Bardziej szczegółowo

SYSTEMY UCZĄCE SIĘ WYKŁAD 4. DRZEWA REGRESYJNE, INDUKCJA REGUŁ. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska

SYSTEMY UCZĄCE SIĘ WYKŁAD 4. DRZEWA REGRESYJNE, INDUKCJA REGUŁ. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska SYSTEMY UCZĄCE SIĘ WYKŁAD 4. DRZEWA REGRESYJNE, INDUKCJA REGUŁ Częstochowa 2014 Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska DRZEWO REGRESYJNE Sposób konstrukcji i przycinania

Bardziej szczegółowo

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych Opracował: dr inż. Zbigniew Buchalski KATEDRA INFORMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów

Bardziej szczegółowo

Topologia zbioru Cantora a obwody logiczne

Topologia zbioru Cantora a obwody logiczne Adam Radziwończyk-Syta Michał Skrzypczak Uniwersytet Warszawski 1 lipca 2009 http://students.mimuw.edu.pl/~mskrzypczak/dokumenty/ obwody.pdf Zbiór Cantora Topologia Definicja Przez zbiór Cantora K oznaczamy

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Informacje podstawowe 1. Konsultacje: pokój

Bardziej szczegółowo

Gramatyki atrybutywne

Gramatyki atrybutywne Gramatyki atrybutywne, część 1 (gramatyki S-atrybutywne Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyki atrybutywne Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji

Bardziej szczegółowo

Sortowanie topologiczne skierowanych grafów acyklicznych

Sortowanie topologiczne skierowanych grafów acyklicznych Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)

Bardziej szczegółowo

Wprowadzenie do algorytmiki

Wprowadzenie do algorytmiki Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki

Bardziej szczegółowo

Podstawowe Pojęcia. Semantyczne KRZ

Podstawowe Pojęcia. Semantyczne KRZ Logika Matematyczna: Podstawowe Pojęcia Semantyczne KRZ I rok Językoznawstwa i Informacji Naukowej UAM 2006-2007 Jerzy Pogonowski Zakład Logiki Stosowanej UAM http://www.logic.amu.edu.pl Dodatek: ściąga

Bardziej szczegółowo

Graf. Definicja marca / 1

Graf. Definicja marca / 1 Graf 25 marca 2018 Graf Definicja 1 Graf ogólny to para G = (V, E), gdzie V jest zbiorem wierzchołków (węzłów, punktów grafu), E jest rodziną krawędzi, które mogą być wielokrotne, dokładniej jednoelementowych

Bardziej szczegółowo

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegółowo

Podstawy Informatyki. Algorytmy i ich poprawność

Podstawy Informatyki. Algorytmy i ich poprawność Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

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

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch. Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania

Bardziej szczegółowo

Prof. dr hab. inż. Jan Magott Wrocław, Katedra Informatyki Technicznej Wydział Elektroniki Politechniki Wrocławskiej

Prof. dr hab. inż. Jan Magott Wrocław, Katedra Informatyki Technicznej Wydział Elektroniki Politechniki Wrocławskiej Prof. dr hab. inż. Jan Magott Wrocław, 09.09.2017 Katedra Informatyki Technicznej Wydział Elektroniki Politechniki Wrocławskiej RECENZJA ROZPRAWY DOKTORSKIEJ DLA INSTYTUTU PODSTAW INFORMATYKI POLSKIEJ

Bardziej szczegółowo

Analiza semantyczna. Gramatyka atrybutywna

Analiza semantyczna. Gramatyka atrybutywna Analiza semantyczna Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji na temat składni języka podlegającego tłumaczeniu, translator musi posiadać możliwość korzystania z wielu innych informacji

Bardziej szczegółowo

Opis efektów kształcenia dla programu kształcenia (kierunkowe efekty kształcenia) WIEDZA. rozumie cywilizacyjne znaczenie matematyki i jej zastosowań

Opis efektów kształcenia dla programu kształcenia (kierunkowe efekty kształcenia) WIEDZA. rozumie cywilizacyjne znaczenie matematyki i jej zastosowań TABELA ODNIESIEŃ EFEKTÓW KSZTAŁCENIA OKREŚLONYCH DLA PROGRAMU KSZTAŁCENIA DO EFEKTÓW KSZTAŁCENIA OKREŚLONYCH DLA OBSZARU KSZTAŁCENIA I PROFILU STUDIÓW PROGRAM KSZTAŁCENIA: POZIOM KSZTAŁCENIA: PROFIL KSZTAŁCENIA:

Bardziej szczegółowo

Schematy Piramid Logicznych

Schematy Piramid Logicznych Schematy Piramid Logicznych geometryczna interpretacja niektórych formuł Paweł Jasionowski Politechnika Śląska w Gliwicach Wydział Matematyczno-Fizyczny Streszczenie Referat zajmuje się następującym zagadnieniem:

Bardziej szczegółowo

domykanie relacji, relacja równoważności, rozkłady zbiorów

domykanie relacji, relacja równoważności, rozkłady zbiorów 1 of 8 2012-03-28 17:45 Logika i teoria mnogości/wykład 5: Para uporządkowana iloczyn kartezjański relacje domykanie relacji relacja równoważności rozkłady zbiorów From Studia Informatyczne < Logika i

Bardziej szczegółowo

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

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań. Wykłady z Analizy rzeczywistej i zespolonej w Matematyce stosowanej Wykład ELEMENTY LOGIKI ALGEBRA BOOLE A Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek

Bardziej szczegółowo

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

Wstęp do Techniki Cyfrowej... Algebra Boole a Wstęp do Techniki Cyfrowej... Algebra Boole a Po co AB? Świetne narzędzie do analitycznego opisu układów logicznych. 1854r. George Boole opisuje swój system dedukcyjny. Ukoronowanie zapoczątkowanych w

Bardziej szczegółowo

Języki formalne i automaty Ćwiczenia 1

Języki formalne i automaty Ćwiczenia 1 Języki formalne i automaty Ćwiczenia Autor: Marcin Orchel Spis treści Spis treści... Wstęp teoretyczny... 2 Wprowadzenie do teorii języków formalnych... 2 Gramatyki... 5 Rodzaje gramatyk... 7 Zadania...

Bardziej szczegółowo

Semantyka rachunku predykatów pierwszego rzędu. Dziedzina interpretacji. Stałe, zmienne, funkcje. Logika obliczeniowa.

Semantyka rachunku predykatów pierwszego rzędu. Dziedzina interpretacji. Stałe, zmienne, funkcje. Logika obliczeniowa. Logika obliczeniowa Instytut Informatyki 1 Interpretacja i wartościowanie Dziedzina interpretacji Interpretacja Wartościowanie 2 Wartość formuły Wartość termu Wartość logiczna formuły Własności 3 Logiczna

Bardziej szczegółowo

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa SIMR 06/07, Analiza, wykład, 07-0- Przestrzeń wektorowa Przestrzeń wektorowa (liniowa) - przestrzeń (zbiór) w której określone są działania (funkcje) dodawania elementów i mnożenia elementów przez liczbę

Bardziej szczegółowo

Metody Kompilacji Wykład 3

Metody Kompilacji Wykład 3 Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy

Bardziej szczegółowo

Indukowane Reguły Decyzyjne I. Wykład 3

Indukowane Reguły Decyzyjne I. Wykład 3 Indukowane Reguły Decyzyjne I Wykład 3 IRD Wykład 3 Plan Powtórka Grafy Drzewa klasyfikacyjne Testy wstęp Klasyfikacja obiektów z wykorzystaniem drzewa Reguły decyzyjne generowane przez drzewo 2 Powtórzenie

Bardziej szczegółowo

Analiza sieci Petriego

Analiza sieci Petriego Analiza sieci Petriego Przydatność formalnej analizy modelu procesów Szpital obsługa 272 pacjentów 29258 zdarzeń 264 różnych czynności Czy powyższy model jest poprawny? Tomasz Koszlajda Instytut Informatyki

Bardziej szczegółowo

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II Wykład 6. Drzewa cz. II 1 / 65 drzewa spinające Drzewa spinające Zliczanie drzew spinających Drzewo T nazywamy drzewem rozpinającym (spinającym) (lub dendrytem) spójnego grafu G, jeżeli jest podgrafem

Bardziej szczegółowo

Elementy logiki i teorii mnogości Wyk lad 1: Rachunek zdań

Elementy logiki i teorii mnogości Wyk lad 1: Rachunek zdań Elementy logiki i teorii mnogości Wyk lad 1: Rachunek zdań Micha l Ziembowski m.ziembowski@mini.pw.edu.pl www.mini.pw.edu.pl/ ziembowskim/ October 2, 2016 M. Ziembowski (WUoT) Elementy logiki i teorii

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Liczby zespolone. x + 2 = 0.

Liczby zespolone. x + 2 = 0. Liczby zespolone 1 Wiadomości wstępne Rozważmy równanie wielomianowe postaci x + 2 = 0. Współczynniki wielomianu stojącego po lewej stronie są liczbami całkowitymi i jedyny pierwiastek x = 2 jest liczbą

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

MODELOWANIE I WERYFIKACJA PROTOKOŁU SCTP Z WYKORZYSTANIEM AUTOMATÓW CZASOWYCH ZE ZMIENNYMI

MODELOWANIE I WERYFIKACJA PROTOKOŁU SCTP Z WYKORZYSTANIEM AUTOMATÓW CZASOWYCH ZE ZMIENNYMI Zeszyty Naukowe WSInf Vol 7, Nr 1, 2008 Artur Męski 1, Agata Półrola 2 1 Wyższa Szkoła Informatyki w Łodzi 2 Uniwersytet Łódzki, Wydział Matematyki i Fizyki MODELOWANIE I WERYFIKACJA PROTOKOŁU SCTP Z WYKORZYSTANIEM

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca

Bardziej szczegółowo

Projekt 4: Programowanie w logice

Projekt 4: Programowanie w logice Języki Programowania Projekt 4: Programowanie w logice Środowisko ECL i PS e W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem http://eclipseclp.org/. Po zainstalowaniu

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo

Metalogika (1) Jerzy Pogonowski. Uniwersytet Opolski. Zakład Logiki Stosowanej UAM

Metalogika (1) Jerzy Pogonowski. Uniwersytet Opolski. Zakład Logiki Stosowanej UAM Metalogika (1) Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl Uniwersytet Opolski Jerzy Pogonowski (MEG) Metalogika (1) Uniwersytet Opolski 1 / 21 Wstęp Cel: wprowadzenie

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Wstęp do logiki. Klasyczny Rachunek Zdań II

Wstęp do logiki. Klasyczny Rachunek Zdań II Wstęp do logiki Klasyczny Rachunek Zdań II DEF. 1 (Słownik). Następujące znaki tworzą słownik języka KRZ: p 1, p 2, p 3, (zmienne zdaniowe) ~,,,, (spójniki) ), ( (nawiasy). DEF. 2 (Wyrażenie). Wyrażeniem

Bardziej szczegółowo

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Poprawność programów Jeżeli projektujemy algorytmy lub piszemy programy, to ważne jest pytanie, czy nasz algorytm lub program

Bardziej szczegółowo

Elementy logiki i teorii mnogości

Elementy logiki i teorii mnogości Elementy logiki i teorii mnogości Zdanie logiczne Zdanie logiczne jest to zdanie oznajmujące, któremu można przypisać określoną wartość logiczną. W logice klasycznej zdania dzielimy na: prawdziwe (przypisujemy

Bardziej szczegółowo

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych. Elementy logiki i teorii zbiorów. 1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych. Pojęcia pierwotne to najprostsze

Bardziej szczegółowo

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1. 3. Wykłady 3 i 4: Języki i systemy dedukcyjne. Klasyczny rachunek zdań. 3.1. Monoidy wolne. Niech X będzie zbiorem niepustym. Zbiór ten będziemy nazywać alfabetem. Skończony ciąg elementów alfabetu X będziemy

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka

Bardziej szczegółowo

1 Działania na zbiorach

1 Działania na zbiorach M. Beśka, Wstęp do teorii miary, rozdz. 1 1 1 Działania na zbiorach W rozdziale tym przypomnimy podstawowe działania na zbiorach koncentrując się na własnościach tych działań, które będą przydatne w dalszej

Bardziej szczegółowo