Lista zadań 8 (ze składnikami wykładu)
Transkrypt
Lista zadań 8 (ze składnikami wykładu)
Lista zadań 8 (ze składnikami wykładu) 1. Co oznacza nww(S,true) dla dowolnej instrukcji S? 2. Niech S1 będzie instrukcją x:= x+y, a S2 instrukcją y:= x*y. Oblicz nww(S1;S2, x<y). 3. Udowodnij, Ŝe |= nww(S, p∧q) ⇒ nww(S,p) ∧ ,q). 4. udowodnij, Ŝe nww(if B then begin s1;S2 end else begin S2;S3 end, q) = nww(if B then S1 else S2;S3, q). 5. Udowodnij, Ŝe następujący program jest częściowo poprawny: {a≥0} x:= 0; y:= 1, while y<= a do begin x:= x+1; y:= y+2*x+1 end {0≤x2≤a<(x+1)2} 6. Udowodnij, Ŝe następujący program jest częściowo poprawny: {a>0 ∧ b>0} x:= a; y:= b; while x<>y do if x>y then x:= x-y else y:= y-x {x = NWD(a,b)} 7. Udowodnij, Ŝe następujący program jest częściowo poprawny: {a>0 ∧ b>0} x:= a; y:= b; while x<>y do begin while x>y do x:= x-y; while y>x do y:= y-x end {x = NWD(a,b)} 6.3 System dowodzenia HL w logice Hoare’a Definicja 6.10 Asercją nazywamy trójkę {p}S{q}, gdzie S jest programem, a p i q są formyłami rachunku predykatów, zwanymi: warunkiem wstępnym oraz warunkiem końcowym. Asercja jest prawdziwa, co oznaczamy |= {p}S{q}, wtedy i tylko wtedy, gdy zachodzi warunek: program S rozpocznie wykonywanie w stanie spełniającym p oraz obliczenie S zakończy się, to obliczenie zakończy się w stanie spełniającym q. Jeśli |= {p}S{q}, to program jest częściowo poprawny względem p i q. Asercje są równieŜ nazywane trójkami Hoare’a. Definicja 6.11 Formuła A jest słabsza od formuły B, jeśli zachodzi implikacja B⇒A. Dla danego zbioru formuł {A1, A2,.., Ai, ...} formuła Ai jest najsłabszą formułą tego zbioru, jeśli zachodzą implikacje Aj ⇒ Ai dla kaŜdego j. Definicja 6.12 Dla programu S oraz formuły q, najsłabszym warunkiem wstępnym programu S i formuły q nazywamy najsłabszą formułę p, dla której |= {p}S{q} (piszemy zamiast p: nww(S,q)). Twierdzenie 6.1 |= {p}S{q} witw , gdy |= p ⇒ nww(S,q). Definicja 6.13 nww(x := t, p(x)) = p(x)(t/x). Definicja 6.14 Formułę I nazywamy niezmiennikiem programu S witw, gdy nww(S,I)=I. Definicja 6.15 (dwie równowaŜne definicjie dla instrukcji warunkowej) nww(if B then S1 else S2, q) = (B ⇒ nww(S1,q) ∧ (¬B ⇒ nww(S2,q)), nww(if B then S1 else S2, q) = (B ∧ nww(S1,q) ∨ (¬B ∧ nww(S2,q)) Definicja 6.15 (dwie równowaŜne definicjie dla instrukcji warunkowej) nww(while B do S, q) = (¬B ⇒ q) ∧ (B ⇒ nww(S; while B do S,q)), nww(while B do S, q) = (¬B ∧ q) ∨ (B ∧ nww(S; while B do S,q)), Wykonanie instrukcji pętli moŜe odbyć się na dwa sposoby: - Instrukcja moŜe zakończyć się natychmiast, gdyŜ wartością wyraŜenia logicznego jest fałsz. Wówczas stan nie ulega zmianie czyli warunek wstępny jest taki jak końcowy. - JeŜeli wyraŜenie jest prawdziwe, to nastąpi wykonanie instrukcji z treści tej pętli, a po jej zakończeniu instrukcja pętli ponowi próbę osiągnięcia warunku końcowego. Twierdzenie 6.2 (rozdzielenie) |= nww(S,p) ∧ nww(S,q) ⇔ nww(S, p ∧ q). Twierdzenie 6.3 (cudu nie ma) |= nww(S,p) ∧ nww(S,¬p) ⇒ nww(S, false). Twierdzenia 6.4 (dualizm) |= ¬nww(S, ¬p) ⇒ nww(S, p). Twierdzenie 6.5 (monotoniczność) JeŜeli |= p⇒q, to |= nww(S,p) ⇒ nww(S,q). Definicja 5.13 (System dowodzeniaHL) Aksjomat dziedziny KaŜda formuła prawdziwa w dziedzinie (dziedzinach) zmiennych programu. Aksjomat przypisania |- {p(x) (t,x)} x:= t {p(x)} Reguła złoŜenia { p}S1{q},{q}S 2 {r} { p}S1 ; S 2 {r} Reguła instrukcji warunkowej {p ∧ B} S1 {q}, {p∧ ¬ B} S2 {q}, _______________. {p} if then B S1 else S2 {q}