Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Wyklad 06 Metody Analizy Programów System Hoare'a 1 Wykład 06 Metody Analizy Programów System Hoare Grażyna Mirkowska PJWSTK, 29 listopada 2000."— Zapis prezentacji:

1

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

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

4 Wyklad 06 Metody Analizy Programów System Hoare'a 3 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; Przykład 1/6 Flaga Holenderska 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; DANE: tablica C(1: n) kolorowych kul białych niebieskich i czerwonych. SZUKANE: tablica C uporządkowana tak, by wszystkie kule niebieskie poprzedzały kule białe, a kule biale poprzedzały kule czerwone.

5 Wyklad 06 Metody Analizy Programów System Hoare'a 4 kij 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. Idea algorytmu ijk jik kji k=i=j=1

6 Wyklad 06 Metody Analizy Programów System Hoare'a 5 Udowodnimy, stosując reguły Hoare, że przedstawiony program jest dobrym rozwiązaniem problemu flagi Holenderskiej, tzn R |= { } P { }, gdzie (i) (bleu(i) blanc(i) rouge(i)) (i, j) [( x)(1 x

7 Wyklad 06 Metody Analizy Programów System Hoare'a 6 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; Załóżmy, że formuła jest prawdziwa Rozważmy formułę która ma opisywać sytuację ogólną w każdym kroku pętli ( x)((1 x

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

9 Wyklad 06 Metody Analizy Programów System Hoare'a 8 Problem: Dany jest zbiór skończony X o elememtach z pewnego liniowo uporząd- kowanego zbioru. 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. Przykład 2/6 Rozdzielanie zbioru 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; 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) M może być np. kolejką priorytetową.

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

11 Wyklad 06 Metody Analizy Programów System Hoare'a 10 Co chcemy udowodnić? Warunek wstępny: = card(t1)=n card(t2)=m t1 t2 = X t1 t2= Warunek Końcowy: = 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 i warunek końcowy w każdej strukturze danych, w której prawdziwe są warunki (Wł_Str), tzn. Jeżeli M |= Wł_Str, to M |= { P { 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} 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. To są dodatkowe informacje o strukturzedanych.

12 Wyklad 06 Metody Analizy Programów System Hoare'a 11 Formuła = card(t1)=n card(t2)=m t1 t2 = X t1 t2= jest niezmiennikiem pętli w programie P, tzn. { x>y} P{ } Po zastosowaniu reguły dla iteracji H4 mamy udowodnione { } P { 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, { } P { cnd. H4 { }P{ }, { } while do P od { } H5 { }P{ }, { } P { }

13 Wyklad 06 Metody Analizy Programów System Hoare'a 12 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

14 Wyklad 06 Metody Analizy Programów System Hoare'a 13 Przykład 3/6 Funkcja McCarthy 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; Problem Zbadać częściową poprawność tego programu w strukturze liczb naturalnych ze względu na specyfikację (y 111 z 1) y 100) ( y >100 y 111 z 1 z 1) y 111 z 1 y z +1 1 y 100) y 111 z 1

15 Wyklad 06 Metody Analizy Programów System Hoare'a 14 Dowód. W strukturze liczb naturalnych następujący ciąg implikacji jest prawdziwy (y 100 y 100 z 1)) ( y 100 y 111 z 1) (y 100 (y z +1 1) )(1) Stosując dwa razy regułę H1 otrzymamy N |= {y 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 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 y 100 z 1)} begin y := y+11; z := z+1 end {y 111 z 1} (2) Twierdzenie 1 Formuła = (y 111 z 1) jest niezmiennikiem pętli w programie, tzn. N |= { y 100 z 1)} { }. H1 { (x/t)} x:= t { (x)}

16 Wyklad 06 Metody Analizy Programów System Hoare'a 15 To samo rozumowanie może być powtórzone w przypadku, gdy y 100. Zatem mamy N |= y 100 y 100 z 1) y 100 (y 111 z 1 z 1) y 100 (z-1>0 y ) (3) Stosując do powyższego dwa razy regulę H1 otrzymamy kolejno N |= {z-1>0 y } (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 } 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 y 100 z 1)} begin y :=y-10; z:=z-1 end { } (4) Ostatecznie N |= { y 100 z 1)} P { } H1 { (x/t)} x:= t { (x)} H5 { }P{ }, { } P { }

17 Wyklad 06 Metody Analizy Programów System Hoare'a 16 Twierdzenie Program jest częściowo poprawny ze względu na warunek początkowy x 100 i warunek końcowy (y 111 z 1), N |= {x 100} {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} {y >100 y 111 z 1} H4 { }P{ }, { } while do P od { }

18 Wyklad 06 Metody Analizy Programów System Hoare'a 17 Twierdzenie Program 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 ). Zatem istnieje w każdym obliczeniu taki punkt, którym warunek pętli nie będzie spełniony, tzn program zatrzyma się.

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

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


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

Podobne prezentacje


Reklamy Google