Wykład 06 Metody Analizy Programów System Hoare

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Wprowadzenie w problematykę związaną z twierdzeniem Gödla
Sortowanie przez scalanie
Metody badania stabilności Lapunowa
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
RACHUNEK ZDAŃ.
CIĄGI.
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Programowanie I Rekurencja.
VI Rachunek predykatów
Złożoność obliczeniowa
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Matematyka Dyskretna, G.Mirkowska, PJWSTK
Elementy Rachunku Prawdopodobieństwa
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Liczby Pierwsze - algorytmy
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
ALGORYTMY I STRUKTURY DANYCH
Metody Sztucznej Inteligencji w Sterowaniu 2009/2010Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz,
Materiały pomocnicze do wykładu
Elementy kombinatoryki
Materiały pomocnicze do wykładu
Matematyka Dyskretna, Moce zbiorów G.Mirkowska, PJWSTK
Elementy Rachunku Prawdopodobieństwa c.d.
Matematyka Dyskretna, Struktury algebraiczne G.Mirkowska, PJWSTK
12 grudnia 2001Matematyka Dyskretna, Elementy Kombinatoryki G.Mirkowska, PJWSTK 1 Wykład 11 Elementy Kombinatoryki.
Elementy Rachunku Prawdopodobieństwa c.d.
22 listopada 2000Regula konkatenacji II1 Dziedziczenie (cd.) Reguła konkatenacji II przykład - heapsort Reguła konkatenacji III.
8. LOGIKA TEMPORALNA Składnia zdaniowej logiki temporalnej:
Matematyka Dyskretna, G.Mirkowska PJWSTK
Nierówności (mniej lub bardziej) geometryczne
Algorytmy i Struktury Danych Sortowanie
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Metody Lapunowa badania stabilności
Wyrażenia w Turbo Pascalu.
Semantyczna poprawność algorytmów – dowodzenie za pomocą niezmienników
Algorytmy i struktury danych
ITERACJA - powtórzenie
Języki i automaty część 3.
Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego Program Operacyjny Kapitał Ludzki.
Modelowanie i Identyfikacja 2011/2012 Metoda propagacji wstecznej Dr hab. inż. Kazimierz Duzinkiewicz, Katedra Inżynierii Systemów Sterowania 1 Warstwowe.
Modelowanie i identyfikacja 2010/2011Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz, Katedra.
Podstawy analizy matematycznej I
Rachunki Gentzena Joanna Witoch.
ALGORYTMY I STRUKTURY DANYCH
Sterowanie – metody alokacji biegunów II
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 7 Synchronizacja procesów i wątków
Ogólna struktura programu w TP
Metody numeryczne szukanie pierwiastka metodą bisekcji
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
Prawdopodobieństwo warunkowe Twierdzenie o prawdopodobieństwie całkowitym Materiał współfinansowany ze środków Unii Europejskiej w ramach Europejskiego.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
ANALIZA SKŁADNIOWA.
Systemy wspomagające dowodzenie twierdzeń
KNW - wykład 3 LOGIKA MODALNA.
Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Kinga Cichoń.
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Wykład 06 Metody Analizy Programów System Hoare Grażyna Mirkowska PJWSTK, 29 listopada 2000 Wyklad 06 Metody Analizy Programów System Hoare'a

System Hoare’a 1969 Niech P1, P2, P będą programami, a a,b- formułami. H1 {a(x/t)} x:= t {a(x)} H2 {a}P1{a’}, {a’} P2{b} {a} begin P1; P2 end {b} H3 {a  g}P1{b}, {a  g} P2 {b } {a} if g then P1 else P2 fi {b} H4 {a  g}P{a} , {a} while g do P od {a  g } H5 (a1 a), {a }P{b}, (b b1) {a1} P {b1} Aksjomat instrukcji przypisania Reguła instrukcji złożonej Reguła instrukcji warunkowej Reguła instrukcji iteracji Reguła konsekwencji Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Przykład 1/6 Flaga Holenderska begin i :=1; j :=1; k :=1; while kn do if bleu(k) then zamień(k,j); zamień(j,i); i := i+1; j := j+1 else if blanc(k) then zamień(k,j); j:= j+1 fi fi; k := k+1; od end; DANE: tablica C(1: n) kolorowych kul białych niebieskich i czerwonych. bleu(i), blanc(i), rouge(i) są predykatami wskazującymi kolor kuli . Procedura zamień(i,j) dokonuje zamiany położenia i-tej i j-tej kuli. begin aux := C(i); C(i) := C(j); C(j):= aux end; SZUKANE: tablica C uporządkowana tak, by wszystkie kule niebieskie poprzedzały kule białe, a kule biale poprzedzały kule czerwone. Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Idea algorytmu ijk k=i=j=1 Idea algorytmu jest następująca: zbiór pozycji dzielimy na 4 części, które zawierają odpowiednio kule niebieskie, kule białe, kule czerwone i zbiór kul jeszcze “do rozważenia”. Na każdym etapie algorytmu jedna z kul ze zbioru „do rozważenia” zostaje przeniesiona na właściwe miejsce. Indeks k wskazuje pozycję pierwszego z lewej miejsca jeszcze nie rozważanego ( na początku k=1), i- wskazuje pierwszą pozycję z prawej na której może się pojawić kula niebieska , j- pierwszą pozycję od prawej, na której może się pojawić kula biała. i j k i j k i j k Wyklad 06 Metody Analizy Programów System Hoare'a

Co chcemy udowodnić? Fakty pomocnicze Udowodnimy, stosując reguły Hoare, że przedstawiony program jest dobrym rozwiązaniem problemu „flagi Holenderskiej”, tzn R |= {a} P {b}, gdzie a (i)  (bleu(i)  blanc(i)  rouge(i)) b(i, j) [(x)(1x<i  bleu(x))  (ix<j  blanc(x))  ( j x<n+1 rouge(x))] R jest dowolną arytmetyczną strukturą danych, w której określona jest realcja liniowego porządku  i operacja następnika. rouge(i)  (blanc(i)  blue(i)) blue(i)  (blanc(i)  rouge(i)) blanc(i)  (rouge(i)  blue(i)) Fakty pomocnicze {blue(k)  rouge(j)} zamień(k,j) {blue(j)  rouge(k)} {blanc(i)  blue(j)} zamień(j,i) {blue(i)  blanc(j)} {blanc(k)  rouge(j)} zamień(k,j) {blanc(j)  rouge(k)} To są dodatkowe założenia o strukturzedanych. Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Załóżmy, że formuła a jest prawdziwa Rozważmy formułę d, która ma opisywać sytuację ogólną w każdym kroku pętli d: (x)((1x<i  bleu(x) )  (ix<j  blanc(x))  ( jx<k  rouge(x)))  k  n+1 i j k P’: if bleu(k) then zamień(k,j); zamień(j,i); i := i+1; j := j+1 else if blanc(k) then zamień(k,j); j:= j+1 fi fi; k := k+1; 1 przypadek {d  k  n  bleu(k)} [zamień(k,j); zamień(j,i)] {( x) ((1  x  i  bleu(x) )  (i < x  j  blanc(x)))  ( j < x  k  rouge(x))  k  n+1} i j k 2 przypadek {d  k  n  bleu(k)  blanc(k)} [zamień(k,j)] {( x) ((1  x < i  bleu(x) )  (i  x  j  blanc(x))  ( j< x  k  rouge(x)))  k  n+1} NIEZMIENNIK ? {d  k  n} P’ {d } Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Rzeczywiście: {d  bleu(k)} [zamień(k,j); zamień(j,i); j:=j+1; k:=k+1] {d } {d   bleu(k)  blanc(k)} [zamień(k,j); j:=j+1; k:=k+1] {d } (d   bleu(k)   blanc(k))  (rouge(k)  d ) Wynika stąd na mocy reguł H2 i H3 Hoare’a, że d jest niezmiennikiem pętli w naszym programie, czyli udowodniliśmy {d  k  n} P’ {d } Zatem na mocy reguły H4 mamy również udowodnione {d} while k  n do P’ od {d  k  n } Ale R |= (d  k=n+1)  b Zatem na mocy reguły konsekwencji H5 otrzymujemy R |= {a} P {b} H2 {a}P1{a’}, {a’} P2{b} {a} begin P1; P2 end {b} H3 {a  g}P1{b}, {a g} P2 {b } {a} if g then P1 else P2 fi {b} H4 {a  g}P{a} , {a} while g do P od {a g } H5 (a1 a), {a }P{b}, (b b1) {a1} P {b1} Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Przykład 2/6 Rozdzielanie zbioru Problem: Dany jest zbiór skończony X o elememtach z pewnego liniowo uporząd-kowanego zbioru <E,  >. Dany jest podział zbioru X=(t1,t2) taki, że card(t1)=n, card(t2)=m. Zadanie polega na znalezieniu takiego podziału (tt1,tt2) zbioru X , że każdy element zbioru tt1 jest niewiększy od dowolnego elementu zbioru tt2 i card(tt1)=n, card(tt2)=m. Załóżmy, że struktura danych M, do której należą elementy zbioru X, posiada funkcje max, min, delete oraz insert o następujących własnościach (Wł_Str) ( xt ) x  max(t) ( xt) min(t)  x max(t) t  min(t)  t [t := insert(e,t)] e  t (x  t  [t := insert(e,t)] x  t) [t := delete(e,t)] e t ((x  t  x  e)  [t := delete(e,t)] x  t) P:begin x := max(t1); y := min(t2); while x > y do t1 := delete(x,t1); t1 := insert(y,t1); t2 := delete(y,t2); t2 := insert(x,t2); x := max(t1); y := min(t2); od end; M może być np. kolejką priorytetową. Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Idea algorytmu zbiór t1 zbiór t2 zbiór t1 zbiór t2 Wyklad 06 Metody Analizy Programów System Hoare'a

Co chcemy udowodnić? Fakty pomocnicze Twierdzenie Warunek wstępny: a = card(t1)=n  card(t2)=m  t1 t2 = X  t1 t2=  Warunek Końcowy: b = card(t1)=n  card(t2)=m  t1  t2 = X  t1 t2=  )  (x, xt1)(y, y t2) x  y Twierdzenie Program P (rozdzielania zbioru) jest częściowo poprany ze względu na warunek początkowy a i warunek końcowy b w każdej strukturze danych, w której prawdziwe są warunki (Wł_Str), tzn. Jeżeli M |= Wł_Str, to M |= {a} P {b}. Z tych faktów wynika np. że wykonanie ciągu instrukcji t1 := delete(x,t1); t1 := insert(y,t1); t2 := delete(y,t2); t2 := insert(x,t2); nie zmienia mocy zbiorów t1 i t2. Fakty pomocnicze {card(t)=k  et1 } [t := delete(e,t)] {card(t)=k-1} {card(t)=k   et1 } [t := insert(e,t)] {card(t)=k+1} To są dodatkowe informacje o strukturzedanych. Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Formuła a= card(t1)=n  card(t2)=m  t1 t2 = X  t1 t2=  jest niezmiennikiem pętli w programie P, tzn. {a x>y} P’{a} Po zastosowaniu reguły dla iteracji H4 mamy udowodnione {a} P {a   max(t1)>min(t2)} Ponieważ M|=  max(t1)> min(t2)  ( xt1)( yt2) x  y we wszystkich rozważanych strukturach, zatem na mocy H5, {a} P {b} cnd. H4 {a  g}P{a} , {a} while g do P od {a  g } H5 (a1 a), {a }P{b}, (b b1) {a1} P {b1} Wyklad 06 Metody Analizy Programów System Hoare'a

Czy ten algorytm zawsze kończy obliczenie? Niech d(t1,t2)= liczba elementów x t1, dla których istnieje element y w t2 taki, że y<x. FAKT Ciąg wartości funkcji d maleje przy każdej iteracji pętli w programie P. P: begin x := max(t1); y := min(t2); while x > y do t1 := delete(x,t1); t1 := insert(y,t1); t2 := delete(y,t2); t2 := insert(x,t2); x := max(t1); y := min(t2); od end; d(t1,t2) = i Ile iteracji wykona ten algorytm w najgorszym razie? Min(n,m ) d(t1,t2) < i Np.: 579 |6782 Ponieważ d(t1,t2) jest liczbą naturalną i 0 d(t1,t2)  n dla wszystkich wartości t1 otrzymanych w trakcie realizacji algorytmu, zatem po skończonej liczbie kroków algorytm zatrzyma się. Wyklad 06 Metody Analizy Programów System Hoare'a

Przykład 3/6 Funkcja McCarthy Problem Zbadać częściową poprawność tego programu w strukturze liczb naturalnych ze względu na specyfikację < x  100 , 1  z  y  111> Rozważmy program begin y := x; z := 1; while (y 100  z1)do if y  100 then y := y+11; z:= z+1 else y := y-10; z:= z-1 fi od end; y £111  z  1 (y £111  z  1)  y£100)  (y >100  y £111  z  1  z1) y+11 £111  z +1  1  y£100) y £111  z  1 Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Twierdzenie 1 Formuła d = (y £111  z  1) jest niezmiennikiem pętli w programie P, tzn. N |= {d  (y£100  z  1)} P {d}. Dowód. W strukturze liczb naturalnych następujący ciąg implikacji jest prawdziwy (y£100  d  (y£100  z  1))  ( y£100  y £111  z  1)  (y£100  (y+11 £111  z +11) ) (1) Stosując dwa razy regułę H1 otrzymamy N |= {y+11 £111  z +1  1} (y := y+11) {y £111  z +1  1} N |= {y £111  z +1  1} (z :=z+1) {y £111  z  1} Na mocy reguły H2 mamy N |= {y+11 £111  z +1  1} begin y := y+11; z := z+1 end {y £111  z  1} Korzystając z (1) możemy wzmocnić tę ostatnią własność (reguła H5). Zatem N |= {y£100  d  (y£100  z  1)} begin y := y+11; z := z+1 end {y £111 z  1} (2) H1 {a(x/t)} x:= t {a(x)} Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a To samo rozumowanie może być powtórzone w przypadku, gdy y >100 . Zatem mamy N |= y>100  d  (y£100  z1)  y>100  (y £111  z 1  z  1)  y>100  (z-1>0  y-10£101 ) (3) Stosując do powyższego dwa razy regulę H1 otrzymamy kolejno N |= {z-1>0  y-10£101} (y :=y-10) { z-1>0  y£101} N |= { z-1>0  y£101} (z :=z-1) { z  1  y£101 } Stąd na mocy reguły H2 oraz formuły (3) mamy N |= {z-1>0  y-10£101} begin y :=y-10; z:=z-1 end { z  1  y£101 } Pozostało tylko zastosować regułę H5 do zdań (2), (4) i mamy : N |= {y>100  d (y£100 z  1)} begin y :=y-10; z:=z-1 end {d} (4) Ostatecznie N |= {d  (y£100 z  1)} P {d} H1 {a(x/t)} x:= t {a(x)} H5 (a1 a), {a }P{b}, (b b1) {a1} P {b1} Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Twierdzenie Program P jest częściowo poprawny ze względu na warunek początkowy x£100 i warunek końcowy (y £111  z  1), N |= {x £ 100} P {y £111  z  1} Dowód Oczywiście mamy N |= {x £ 100} (y:=x; z:=1) {y £111  z  1} Na mocy poprzedniego twierdzenia N |= { y£111  z  1  (y 100  z1)} P {y£111  z  1} Zatem korzystając z reguły pętli H4 mamy: N |= {x £ 100} P {y >100  y £111  z 1} H4 {a  g}P{a} , {a} while g do P od {a  g } Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Twierdzenie Program P zatrzymuje sięę dla wszystkich danych spełniających warunek x 100 w strukturze liczb naturalnych. Dowód Niech f(y,z) = -2*y+21*z+201 . Oczywiście mamy : f(y,z)=a  (-2(y+11)+21(z+1)+201)= a-1 f(y,z)=a  (-2(y-10)+21(z-1)+201)= a-1 Stosując regułę H1, możemy wywnioskować co następuje {f(y,z)=a } [y :=y+11; z:=z+1] {f(y,z) = a-1} {f(y,z)=a } [y :=y-10; z:=z-1] {f(y,z) = a-1} Dzięki regule H2 otrzymamy {f(y,z)=a} P {f(y,z)=a-1}. Oznacza to. że wartości funkcji f(y,z) maleją przy kolejnych iteracjach pętli . Na mocy niezmiennika mamy y £ 111, 1 £z , a stąd f(y,z) = -2y +21z+201 £ -222+21+201 £ 0). Zatem istnieje w każdym obliczeniu taki punkt, którym warunek pętli nie będzie spełniony, tzn program zatrzyma się. Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Definicja Całkowita poprawność Powiemy, że program jest całkowicie poprawny za względu na warunek początkowy a i warunek końcowy b wttw - dla wszystkich danych początkowych spełniających warunek a, program zatrzymuje się oraz - otrzymane wyniki spełniają warunek końcowy b. Wyklad 06 Metody Analizy Programów System Hoare'a

Wyklad 06 Metody Analizy Programów System Hoare'a Definicja Najsłabszy warunek wstępny. Najsłabszym warunkiem wstępnym programu P w strukturze M nazywmy taką formułę a, kóra spełnia warunki: (1) dla dowolnych danych początkowych w M, spełniających warunek a, wyniki programu istnieją i spełniają warunek b, tzn. M |= (a => Pb), (tzn. program P jest całkowicie poprawny ze względu na <a,b> w strukturze M), (2) każdy inny warunek d spełniający (1),tzn. M |= (d => Pb), implikuje a w strukturze M, tzn. M |= (d =>a). Twierdzenie Niech a będzie formulą równoważną Pb w M. Wtedy a jest najsłabszym warunkiem wstępnym programu P ze względu na formułę b. Dowód: Oczywiście mamy M |= (a =>Pb). Niech d będzie taką formułą, że M |= (d => Pb). Wtedy również mamy M |= (d =>a). Cnd. Wyklad 06 Metody Analizy Programów System Hoare'a