SW wykład 12 - Slajd1: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Mengel (dyskusja | edycje)
Nie podano opisu zmian
 
Tarlecki (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 2: Linia 2:


[[Grafika:sw1200.png|frame|center|]]
[[Grafika:sw1200.png|frame|center|]]
Na poprzednich dwóch wykładach wprowadziliśmy i analizowaliśmy logikę
Hoare'a: logikę stwierdzeń o częściowej poprawności programów
najprostszej wersji języka TINY względem ich specyfikacji danych jako
para warunków (wstępnego i końcowego) wyrażonych formułami logiki
pierwszego rzędu. Specyfikacje te traktowaliśmy jako część stwierdzeń
o częściowej poprawności programów, gdzie naszym zadaniem było
pokazanie tej własności (częściowej poprawności właśnie) dla danego
programu. Innymi słowy, omawialiśmy problem weryfikacji programu
względem jego specyfikacji i przedstawiliśmy system dowodzenia dla
odpowiednich stwierdzeń poprawności.
Na specyfikacje, także na specyfikacje postaci danej dla logiki
Hoare'a, można też patrzeć nieco inaczej: jako na sformułowanie
zadania programistycznego "zbuduj program, który jest poprawny
względem zadanej specyfikacji". Spróbujmy tak właśnie przeczytać
specyfikację daną parą warunków (wstępnego i końcowego). Specyfikacja
taka opisuje zadanie programistyczne: zbuduj program (naszego języka
TINY), który jest częściowo poprawny względem zadanych warunków
wstępnego i końcowego. Oczywiście, nie definiuje to programu
jednoznacznie: zadaniem programisty jest zbudowanie dowolnego takiego
programu. Może się też zdarzyć, że zadanie to jest nierozwiązywalne:
taki program może nie istnieć. Może się też zdarzyć, że nawet gdy
takie programy istnieją, są one zbyt trudne do zbudowania (w
jakimkolwiek sensie) i zadanie nie zostanie rozwiązane...

Aktualna wersja na dzień 22:03, 16 paź 2006

<<powrót do strony wykładu

Zadanie programistyczne Przykład Problemy z logiką Hoare'a Poprawność całkowita Poprawność całkowita, c.d. Poprawność całkowita, c.d. Reguła dla pętli Poprawność systemu dowodzenia dla Tiny Pełność systemu dowodzenia dla Tiny Przykład Uogólnienie Poprawność i pełność Relacje dobrze ufundowane Dowodzenie poprawności całkowitej Przykład Przykład Kolejny problem Binarne warunki końcowe Warunki poprawności Reguły dowodzenia Reguły dowodzenia, c.d. Przykład Logika algorytmiczna System dowodzenia

Na poprzednich dwóch wykładach wprowadziliśmy i analizowaliśmy logikę Hoare'a: logikę stwierdzeń o częściowej poprawności programów najprostszej wersji języka TINY względem ich specyfikacji danych jako para warunków (wstępnego i końcowego) wyrażonych formułami logiki pierwszego rzędu. Specyfikacje te traktowaliśmy jako część stwierdzeń o częściowej poprawności programów, gdzie naszym zadaniem było pokazanie tej własności (częściowej poprawności właśnie) dla danego programu. Innymi słowy, omawialiśmy problem weryfikacji programu względem jego specyfikacji i przedstawiliśmy system dowodzenia dla odpowiednich stwierdzeń poprawności.

Na specyfikacje, także na specyfikacje postaci danej dla logiki Hoare'a, można też patrzeć nieco inaczej: jako na sformułowanie zadania programistycznego "zbuduj program, który jest poprawny względem zadanej specyfikacji". Spróbujmy tak właśnie przeczytać specyfikację daną parą warunków (wstępnego i końcowego). Specyfikacja taka opisuje zadanie programistyczne: zbuduj program (naszego języka TINY), który jest częściowo poprawny względem zadanych warunków wstępnego i końcowego. Oczywiście, nie definiuje to programu jednoznacznie: zadaniem programisty jest zbudowanie dowolnego takiego programu. Może się też zdarzyć, że zadanie to jest nierozwiązywalne: taki program może nie istnieć. Może się też zdarzyć, że nawet gdy takie programy istnieją, są one zbyt trudne do zbudowania (w jakimkolwiek sensie) i zadanie nie zostanie rozwiązane...