SW wykład 11 - Slajd5: 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:sw1104.png|frame|center|]]
[[Grafika:sw1104.png|frame|center|]]
Zapomnijmy więc na chwilę, że nasz język TINY był definiowany dla
bardzo konkretnego typu danych: liczb całkowitych z zadaną listą
operacji arytmetycznych i predykatów. Uogólnijmy to, przyjmując, że
będziemy teraz pracować z dowolnym wbudowanym pierwotnym typem
danych. To znaczy, definicję języka zacznijmy od podania sygnatury
tego pierwotnego typu danych, która określa pewien zbiór nazw operacji
i nazw predykatów (z ich arnością --- tzn., podając liczbę ich
argumentów).  Następnie ustalamy pewną algebrę nad tą sygnaturą: zbiór
wartości (nośnik algebry) i dla każdej nazwy operacji, funkcję na tym
zbiorze, a dla każdej nazwy predykatu, relację na tym zbiorze (o
odpowiedniej, zgodnej z podaną w sygnaturze, liczbie argumentów).
Algebra ta interpretuje semantycznie nasz pierwotny typ danych języka;
nazywać ją będziemy algebrą pierwotnego typu danych.
Całą definicję języka i dalszą analizę łatwo uogólnić dalej,
dopuszczając tu bardziej realistyczny przypadek sygnatur i algebr
wielorodzajowych, gdzie zbiór danych jest podzielony na wiele rodzajów
nazwanych w sygnaturze, a arność operacji i predykatów określa nie
tylko liczbę, ale i rodzaj ich poszczególnych argumentów (plus rodzaj
wyniku dla operacji). Nie będziemy tu dalej analizować tego
"wielorodzajowego" uogólnienia.

Aktualna wersja na dzień 17:11, 10 paź 2006

<<powrót do strony wykładu

Poprawność systemu dowodzenia Hoare'a Dowód Dowód, c.d. Problem z pełnością Uogólnienie TINYA TINYA Ekspresywność Relatywna pełność logiki Hoare'a Rozszerzenia Ograniczenia

Zapomnijmy więc na chwilę, że nasz język TINY był definiowany dla bardzo konkretnego typu danych: liczb całkowitych z zadaną listą operacji arytmetycznych i predykatów. Uogólnijmy to, przyjmując, że będziemy teraz pracować z dowolnym wbudowanym pierwotnym typem danych. To znaczy, definicję języka zacznijmy od podania sygnatury tego pierwotnego typu danych, która określa pewien zbiór nazw operacji i nazw predykatów (z ich arnością --- tzn., podając liczbę ich argumentów). Następnie ustalamy pewną algebrę nad tą sygnaturą: zbiór wartości (nośnik algebry) i dla każdej nazwy operacji, funkcję na tym zbiorze, a dla każdej nazwy predykatu, relację na tym zbiorze (o odpowiedniej, zgodnej z podaną w sygnaturze, liczbie argumentów). Algebra ta interpretuje semantycznie nasz pierwotny typ danych języka; nazywać ją będziemy algebrą pierwotnego typu danych.

Całą definicję języka i dalszą analizę łatwo uogólnić dalej, dopuszczając tu bardziej realistyczny przypadek sygnatur i algebr wielorodzajowych, gdzie zbiór danych jest podzielony na wiele rodzajów nazwanych w sygnaturze, a arność operacji i predykatów określa nie tylko liczbę, ale i rodzaj ich poszczególnych argumentów (plus rodzaj wyniku dla operacji). Nie będziemy tu dalej analizować tego "wielorodzajowego" uogólnienia.