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}

Podobne dokumenty