SW wykład 2 - Slajd23: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arturas (dyskusja | edycje)
Nie podano opisu zmian
Dorota (dyskusja | edycje)
Nie podano opisu zmian
 
(Nie pokazano 1 wersji utworzonej przez jednego użytkownika)
Linia 1: Linia 1:
{{Szablon:Semantyka i weryfikacja programów/Wykład 2}}
{{Szablon:Semantyka i weryfikacja programów/Wykład 2}}
[[Grafika:sw0222.png|frame|center|]]
[[Grafika:sw0222.png|frame|center|]]
Właśnie przez indukcję względem długości obliczenia można pokazać
prostą własność obliczeń dla sekwencyjnego złożenia instrukcji, a
dokładniej: obliczeń rozpoczynających się od konfiguracji, które
zawierają sekwencyjne złożenie instrukcji jako instrukcję do wykonania.
Pokazujemy tu mianowicie, że każde obliczenie dla złożenia
sekwencyjnego instrukcji można rozbić na dwie części: pierwszą,
związaną z obliczeniem pierwszej składowej instrukcji, i drugą część,
będącą obliczeniem dla drugiej jej składowej --- przy czym długości
obliczeń pozostają ze sobą w oczekiwanym związku. Dowód przebiega
przez indukcję względem długości obliczenia instrukcji. Początek jest
trywialny: puste obliczenie nie może spełniać założeń. Dla niepustego
obliczenia, rozważamy jego pierwszy krok. Zgodnie z definicją relacji
przejścia, możliwe są dwa przypadki: albo ten pierwszy krok kończy
obliczenie pierwszej składowej i wtedy teza zachodzi w sposób
oczywisty, albo kolejna konfiguracja zawiera złożenie sekwencyjne
"reszty" pierwszej składowej z całą drugą składową. W tym drugim
przypadku korzystamy z założenia indukcyjnego (dla krótszego
obliczenia, zaczynającego się jednak od konfiguracji zawierającej
złożenie sekwencyjne instrukcji).
Prostą konsekwencją tego faktu jest to, że każde obliczenie dla danej
instrukcji "generuje" obliczenie dla sekwencyjnego złożenia tej
instrukcji z inną instrukcją --- ten dodany do instrukcji "ciąg
dalszy" nie wpływa na przebieg obliczeń.

Aktualna wersja na dzień 09:51, 29 wrz 2006

<<powrót do strony wykładu

Składnia Składnia konkretna Składnia abstrakcyjna Przyjmowane założenia Przykład wiodący Kategorie składniowe Kategorie składniowe, c.d. Uwagi Indukcja strukturalna Definicje indukcyjne Kategorie semantyczne Wartościowanie zmiennych Semantyka wyrażeń Semantyka wyrażeń logicznych Semantyka instrukcji Prosty fakt Dowód Przezroczystość odwołań Semantyka operacyjna Obliczenia Semantyka operacyjna Tiny Własności Własności, c.d. Warianty definicji

Właśnie przez indukcję względem długości obliczenia można pokazać prostą własność obliczeń dla sekwencyjnego złożenia instrukcji, a dokładniej: obliczeń rozpoczynających się od konfiguracji, które zawierają sekwencyjne złożenie instrukcji jako instrukcję do wykonania.

Pokazujemy tu mianowicie, że każde obliczenie dla złożenia sekwencyjnego instrukcji można rozbić na dwie części: pierwszą, związaną z obliczeniem pierwszej składowej instrukcji, i drugą część, będącą obliczeniem dla drugiej jej składowej --- przy czym długości obliczeń pozostają ze sobą w oczekiwanym związku. Dowód przebiega przez indukcję względem długości obliczenia instrukcji. Początek jest trywialny: puste obliczenie nie może spełniać założeń. Dla niepustego obliczenia, rozważamy jego pierwszy krok. Zgodnie z definicją relacji przejścia, możliwe są dwa przypadki: albo ten pierwszy krok kończy obliczenie pierwszej składowej i wtedy teza zachodzi w sposób oczywisty, albo kolejna konfiguracja zawiera złożenie sekwencyjne "reszty" pierwszej składowej z całą drugą składową. W tym drugim przypadku korzystamy z założenia indukcyjnego (dla krótszego obliczenia, zaczynającego się jednak od konfiguracji zawierającej złożenie sekwencyjne instrukcji).

Prostą konsekwencją tego faktu jest to, że każde obliczenie dla danej instrukcji "generuje" obliczenie dla sekwencyjnego złożenia tej instrukcji z inną instrukcją --- ten dodany do instrukcji "ciąg dalszy" nie wpływa na przebieg obliczeń.