R. D. Tennent, The Denotational Semantics of Programming Languages [1976]

Podobne dokumenty
Paradygmaty programowania

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość

Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda

Zbiory, funkcje i ich własności. XX LO (wrzesień 2016) Matematyka elementarna Temat #1 1 / 16

Teoretyczne Podstawy Języków Programowania Wykład 4. Siła wyrazu rachunku λ

Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW

Zadania do Rozdziału X

LOGIKA I TEORIA ZBIORÓW

Programowanie funkcyjne. Wykªad 13

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Prawdopodobieństwo i statystyka

Dystrybucje, wiadomości wstępne (I)

Informacja o przestrzeniach Sobolewa

Teoria miary. WPPT/Matematyka, rok II. Wykład 5

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Rekurencyjna przeliczalność

1 Relacje i odwzorowania

Elementy rachunku lambda. dr hab. inż. Joanna Józefowska, prof. PP 1

Wykład 21 Funkcje mierzalne. Kostrukcja i własności całki wzglȩdem miary przeliczalnie addytywnej

Semantyka rachunku predykatów

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

System BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10

Programowanie Funkcyjne. Marcin Kubica Świder,

Granica i ciągłość funkcji. 1 Granica funkcji rzeczywistej jednej zmiennej rzeczywsitej

Wykłady ostatnie. Rodzinę P podzbiorów przestrzeni X nazywamy σ - algebrą, jeżeli dla A, B P (2) A B P, (3) A \ B P,

Iteracyjne rozwiązywanie równań

Matematyka i Statystyka w Finansach. Rachunek Różniczkowy

Zbiory, relacje i funkcje

Wstęp do Programowania potok funkcyjny

Teoretyczne podstawy programowania liniowego

WYKŁAD Z ANALIZY MATEMATYCZNEJ I. dr. Elżbieta Kotlicka. Centrum Nauczania Matematyki i Fizyki

Granica i ciągłość funkcji. 1 Granica funkcji rzeczywistej jednej zmiennej rzeczywistej

A i. i=1. i=1. i=1. i=1. W dalszej części skryptu będziemy mieli najczęściej do czynienia z miarami określonymi na rodzinach, które są σ - algebrami.

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA III ZAKRES ROZSZERZONY (90 godz.) , x

Wykłady... b i a i. i=1. m(d k ) inf

7 Twierdzenie Fubiniego

Ciągłość funkcji f : R R

Pojęcie szeregu nieskończonego:zastosowania do rachunku prawdopodobieństwa wykład 1

Adam Meissner.

Robert Kowalczyk. Zbiór zadań z teorii miary i całki

Równania różniczkowe liniowe rzędu pierwszego

Rodzinę spełniającą trzeci warunek tylko dla sumy skończonej nazywamy ciałem (algebrą) w zbiorze X.

F t+ := s>t. F s = F t.

Semantyka rachunku predykatów pierwszego rzędu. Dziedzina interpretacji. Stałe, zmienne, funkcje. Logika obliczeniowa.

Wykład 7. Informatyka Stosowana. 21 listopada Informatyka Stosowana Wykład 7 21 listopada / 27

Korzystając z własności metryki łatwo wykazać, że dla dowolnych x, y, z X zachodzi

Ciągłość funkcji i podstawowe własności funkcji ciągłych.

3.Funkcje elementarne - przypomnienie

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

PRZEDMIOTOWY SYSTEM OCENIANIA PROSTO DO MATURY KLASA 1 ZAKRES PODSTAWOWY

PLAN WYNIKOWY PROSTO DO MATURY KLASA 1 ZAKRES PODSTAWOWY

Rachunek różniczkowy funkcji dwóch zmiennych

Podstawy programowania funkcjonalnego

Obliczanie długości łuku krzywych. Autorzy: Witold Majdak

Matematyka II. Bezpieczeństwo jądrowe i ochrona radiologiczna Semestr letni 2018/2019 wykład 13 (27 maja)

Rachunek prawdopodobieństwa Rozdział 5. Rozkłady łączne

zbiorów domkniętych i tak otrzymane zbiory domknięte ustawiamy w ciąg. Oznaczamy

Funkcja wykładnicza kilka dopowiedzeń

Metalogika (1) Jerzy Pogonowski. Uniwersytet Opolski. Zakład Logiki Stosowanej UAM

O geometrii semialgebraicznej

Pochodna funkcji. Niech f : A R, a A i załóżmy, że istnieje α > 0 taka, że

Logika i teoria mnogości Wykład 14

Matematyczne Podstawy Informatyki

22 Pochodna funkcji definicja

Funkcje dwóch zmiennych, pochodne cząstkowe

Programowanie obiektowe

Dystrybucje. Marcin Orchel. 1 Wstęp Dystrybucje Pochodna dystrybucyjna Przestrzenie... 5

G. Plebanek, MIARA I CAŁKA Zadania do rozdziału 1 28

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych klasa druga zakres rozszerzony

Rodzinę F złożoną z podzbiorów zbioru X będziemy nazywali ciałem zbiorów, gdy spełnione są dwa następujące warunki.

1 Działania na zbiorach

-termami -wyrażeń pre-termami abstrakcją aplikacją zmiennych wolnych zmienną związaną domknięte

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Przykładami ciągów, które Czytelnik dobrze zna (a jeśli nie, to niniejszym poznaje), jest ciąg arytmetyczny:

VII. Elementy teorii stabilności. Funkcja Lapunowa. 1. Stabilność w sensie Lapunowa.

Metody Rozmyte i Algorytmy Ewolucyjne

PRZEDMIOTOWY SYSTEM OCENIANIA Z MATEMATYKI DLA KLASY 3TI ROK SZKOLNY 2018/2019

8 Całka stochastyczna względem semimartyngałów

Teoria miary. Matematyka, rok II. Wykład 1

Struktury formalne, czyli elementy Teorii Modeli

Paradygmaty dowodzenia

O pewnych związkach teorii modeli z teorią reprezentacji

Wstęp do Matematyki (4)

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

S n = a 1 1 qn,gdyq 1

P. Urzyczyn: Materia ly do wyk ladu z semantyki. Uproszczony 1 j. ezyk PCF

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Programowanie w Logice Przykłady programów. Przemysław Kobylański

Przykład 1 W przypadku jednokrotnego rzutu kostką przestrzeń zdarzeń elementarnych

Wykład 10. Stwierdzenie 1. X spełnia warunek Borela wtedy i tylko wtedy, gdy każda scentrowana rodzina zbiorów domkniętych ma niepusty przekrój.

Wstęp do Programowania potok funkcyjny

Wstęp do programowania

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

FUNKCJE. (odwzorowania) Funkcje 1

Poprawność semantyczna

Zagadnienia brzegowe dla równań eliptycznych

1 Zbiory. 1.1 Kiedy {a} = {b, c}? (tzn. podać warunki na a, b i c) 1.2 Udowodnić, że A {A} A =.

Andrzej Wiśniewski Logika II. Wykład 6. Wprowadzenie do semantyki teoriomodelowej cz.6. Modele i pełność

Transkrypt:

R. D. Tennent, The Denotational Semantics of Programming Languages [1976] Programowanie 2009 - seminarium grupy zaawansowanej Instytut Informatyki Uniwersytetu Wrocławskiego 1 lipca 2009

1 Motywacja Funkcje semantyczne 2 Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP 3 Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania

Motywacja Funkcje semantyczne See the little phrases go, Watch their funny antics. The men who make them wiggle so Are teachers of semantics.

Motywacja dla rozwoju semantyk Motywacja Funkcje semantyczne precyzyjna i kompletna referencja niezależność od implementacji standaryzacja terminologii pozwala dostrzec podobieństwa optymalizacja (lub nawet generacja) kompilatorów dowodzenie własności programów

Funkcje semantyczne Motywacja Funkcje semantyczne zdefiniowano bardzo prosty język LOOP, zbiory zmiennych, wyrażeń, instrukcji, programów, itd. wartości funkcji semantycznych zależą od zawartości store (pamięci) np. ξ σ = σ(ξ) (ξ - zmienna) np. ξ = E σ = σ[ξ = E ] np. Γ 1 ; Γ 2 = Γ 2 Γ 1 itd.

LOOP jest prosty i imperatywny Motywacja Funkcje semantyczne nie ma goto i etykiet nie ma λ-wyrażeń nie ma funkcji ani procedur nie ma problemów z dziedzinami funkcji semantycznych Autor na tym przykładzie pokazał podstawy denotacji, abstrahując na razie od pojęć środowiska/kontekstu oraz kontynuacji.

Języki aplikatywne Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Autor definiuje je jako mające właśność referential transparency, czyli wyrażenia bez skutków ubocznych. Inaczej: języki deklaratywne, funkcyjne. Przykłady wyrażeń: 1 let x = 5 in x + 3 2 x + 3 where x = 5 3 let f (x) = x + 3 in f (5) 4 6 i=1 (i + 3) 5 f (5) where f (n) = { 1 jeśli n = 0 n f (n 1) w p. p. W każdym przykładzie identyfikatory są wiązane z wartościami; dlatego wartościowanie wyrażeń odbywa się przy zadanym środowisku (wartościowaniu zmiennych wolnych wyrażenia).

Języki aplikatywne Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Autor definiuje je jako mające właśność referential transparency, czyli wyrażenia bez skutków ubocznych. Inaczej: języki deklaratywne, funkcyjne. Przykłady wyrażeń: 1 let x = 5 in x + 3 2 x + 3 where x = 5 3 let f (x) = x + 3 in f (5) 4 6 i=1 (i + 3) 5 f (5) where f (n) = { 1 jeśli n = 0 n f (n 1) w p. p. W każdym przykładzie identyfikatory są wiązane z wartościami; dlatego wartościowanie wyrażeń odbywa się przy zadanym środowisku (wartościowaniu zmiennych wolnych wyrażenia).

Języki aplikatywne Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Autor definiuje je jako mające właśność referential transparency, czyli wyrażenia bez skutków ubocznych. Inaczej: języki deklaratywne, funkcyjne. Przykłady wyrażeń: 1 let x = 5 in x + 3 2 x + 3 where x = 5 3 let f (x) = x + 3 in f (5) 4 6 i=1 (i + 3) 5 f (5) where f (n) = { 1 jeśli n = 0 n f (n 1) w p. p. W każdym przykładzie identyfikatory są wiązane z wartościami; dlatego wartościowanie wyrażeń odbywa się przy zadanym środowisku (wartościowaniu zmiennych wolnych wyrażenia).

Języki aplikatywne Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Autor definiuje je jako mające właśność referential transparency, czyli wyrażenia bez skutków ubocznych. Inaczej: języki deklaratywne, funkcyjne. Przykłady wyrażeń: 1 let x = 5 in x + 3 2 x + 3 where x = 5 3 let f (x) = x + 3 in f (5) 4 6 i=1 (i + 3) 5 f (5) where f (n) = { 1 jeśli n = 0 n f (n 1) w p. p. W każdym przykładzie identyfikatory są wiązane z wartościami; dlatego wartościowanie wyrażeń odbywa się przy zadanym środowisku (wartościowaniu zmiennych wolnych wyrażenia).

Języki aplikatywne Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Autor definiuje je jako mające właśność referential transparency, czyli wyrażenia bez skutków ubocznych. Inaczej: języki deklaratywne, funkcyjne. Przykłady wyrażeń: 1 let x = 5 in x + 3 2 x + 3 where x = 5 3 let f (x) = x + 3 in f (5) 4 6 i=1 (i + 3) 5 f (5) where f (n) = { 1 jeśli n = 0 n f (n 1) w p. p. W każdym przykładzie identyfikatory są wiązane z wartościami; dlatego wartościowanie wyrażeń odbywa się przy zadanym środowisku (wartościowaniu zmiennych wolnych wyrażenia).

Struktura aplikatywna Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Okazuje się, że (tak jak w λ-rachunku) wystarczy niewiele, aby zadać całą strukturę takich wyrażeń: atomy aplikacje abstrakcje Niech. Exp... - interpretacja wyrażeń. Example (1,2) let x = 5 in x + 3 = x + 3 where x = 5 = (λx.x + 3)(5) Example (3) let f (x) = x + 3 in f (5) = let f = λx.x + 3 in f (5) = (λf.f (5))(λx.x + 3)

A co z sumą i silnią? Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Example (4) 6 i=1 (i + 3) Można to zapisać jako Sigma(1, 6, λi.i + 3), gdzie Sigma zdefiniowano rekurencyjnie, ale nie wiadomo, czy ta definicja jest poprawna.

A co z sumą i silnią? Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Example (5) f (5) where f (n) = { 1 jeśli n = 0 n f (n 1) w p. p. Rozważamy równanie ze względu na zmienną funkcyjną f : f = λn. if n = 0 then 1 else n f (n 1) Niech Y - funkcjonał znajdujący punkt stały, tzn. YF = F (YF ). Np. dla silnii mamy F (g) = λn. if n = 0 then 1 else n g(n 1) Więc silnię można definiować tak: f (5) where f = YF where F (g)(n) = if n = 0 then 1 else n g(n 1), co umiemy interpretować.

Kombinator punktu stałego Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Gdyby ograniczać się do λ-rachunku, to mamy Twierdzenie Istnieje kombinator punktu stałego Y taki, że YF = β F (YF ). Dowód. Np. Y = λf.(λx.f (xx))(λx.f (xx)).

Twierdzenie o punkcie stałym Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Twierdzenie (Kleene) Niech L będzie porządkiem zupełnym, a f L L funkcją ciągłą. Wtedy najmniejszym punktem stałym f jest kres górny ciągu {f n ( ) n N}: f ( ) f (f ( )) f 3 ( )... Do uogólnienia tego wyniku potrzebne są metody teorii dziedzin.

Gramatyka języka AEXP Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP B: Bas (wartości bazowe, literały) z interpretacją Υ I : Ide (identyfikatory zmiennych) E: Exp (wyrażenia) Definicja E = B I λi.e E 1 E 2

Denotacja języka AEXP Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Niech: D - wartości denotowalne ρ U = Ide D - środowiska φ F = D D - funkcje Definicja (. Exp U D) B ρ = Υ(B) I ρ = ρ(i ) λi.e ρ = φ, gdzie φ(δ) = E (ρ[i = δ]) E 1 E 2 ρ = φ(δ), gdzie φ = E 1 ρ oraz δ = E 2 ρ

FAIL Wyrażenia i języki aplikatywne Definicje rekurencyjne Przykładowy język AEXP Ta definicja jest niepoprawna.

Czemu jest źle (1) Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Example λi.e ρ = φ F Ale przeciwdziedziną funkcji. ρ jest D. Example E 1 E 2 ρ = φ(δ), gdzie φ = E 1 ρ oraz δ = E 2 ρ czyli δ D, φ D, ale φ D D, tzn. φ F Można mieć nadzieję, że F D. Możemy stosować injekcje (wstrzyknięcia) (φ in D) projekcje (rzutowania) (ɛ F ) co sformalizujemy później. Ale to nie wystarczy.

Czemu jest źle (2) Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania funkcje wyższego rzędu są problematyczne ze względu na rekursję w AEXP mieliśmy przestrzeń funkcji F = D D skoro F D, to dla każdej funkcji φ znaczenie φ(φ) ma być zdefiniowane, co prowadzi do sprzeczności: Dowód. Niech p będzie predykatem spełnionym wtw, gdy jego argument po zaaplikowaniu do siebie samego zwraca fałsz. Tzn. p(q) = q(q). Wtedy p(p) = p(p).

Czemu jest źle (3) Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Naszej definicji nie da się też zapisać w Haskellu. data Var = X Y Z deriving Eq data LambdaE = Abs Var LambdaE App LambdaE LambdaE Var Var get _ [] = error "dsfargeg" get x ((y,v):ys) x == y = v otherwise = get x ys denot (Var var) store = get var store denot (Abs var lambda) store = \x -> denot lambda ((var,x):store) Już po tej deklaracji dostajemy: Occurs check: cannot construct the infinite type: t = t -> t1 Expected type: [(Var, t)] Inferred type: [(Var, t -> t1)] In the second argument of (:), namely store

Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Teorię dziedzin stworzył Dana Scott w latach 60, korzystając z teorii krat i topologii. dziedzina - typ danych funkcje (w tym wyższego rzędu) wystarczająco ogólne, aby pozwolić na zapis naturalnych modeli obliczeń (np. rekursja, samoaplikacja) ale wystarczająco ograniczone, by system pozostał niesprzeczny podstawowa cecha: ciągi przybliżeń (pewnych częściowych obiektów) w dziedzinie powinny być zbieżne granica też powinna należeć do dziedziny i być zachowywana przez operacje (ciągłe przekształcenia)

Proste dziedziny Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Proste dziedziny to skończone lub przeliczalne zbiory uzupełnione o elementy i. Ozn. A = A {, }. Example N = {..., 2, 1, 0, 1,... } T = {true, false} W takich prostych dziedzinach zadajemy porządek przybliżeń : Definicja ( x) x inne pary są nieporównywalne

Tworzenie dziedzin Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Definicja Niech D, D 1 i D 2 - dziedziny. Definiujemy następujące dziedziny: 1 D 1 D 2 (iloczyn) 2 D 1 + D 2 (suma) 3 D 1 D 2 (funkcje) 4 D n = D D D (listy długości n) 5 D = D 0 + D 1 + D 2 +... (skończone listy) Do każdej dziedziny należą dodatkowo i. Porządek przybliżeń wyprowadzamy ze składowych. Example (D 1 D 2 ) f g ( x D 1 ) f (x) g(x)

Inspekcje, injekcje i projekcje Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Dla sumy X =... + Y +... definiujemy: Definicja (x X ) xey = { T jeśli x odpowiada pewnemu y Y F w p. p. Definicja (x X ) x Y = { y jeśli x odpowiada y Y gdy x nie odpowiada żadnemu y Y Definicja (y Y ) y in X = x, gdzie x X odpowiada y

Ciągłość, strictness Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Na prostych dziedzinach ciągłość monotoniczność: Definicja f jest monotoniczna ( x, y) x y f (x) f (y) Każda funkcja częściowa na zbiorze może być rozszerzona do ciągłej funkcji całkowitej na odpowiadającej dziedzinie: 1 f ( ) =, 2 f ( ) =, 3 f (x) =, jeśli funkcja częściowa jest niezdefiniowana dla x. Taką funkcję nazywamy doubly strict. Funkcje nie muszą takie być: Example if-then-else(true, 2, ) = 2

Rekursja Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Dla ustalonej dziedziny D szukamy kombinatora punktu stałego Y D, który rozwiązuje równania postaci f = F (f ) dla F D D. Mamy z monotoniczności F ( ) F (F ( ))... F i ( )... i ten ciąg, z ciągłości, zbiega do granicy f takiej, że ( i 0) F i ( ) f oraz F (f ) = f Twierdzenie Dla każdej dziedziny D istnieje ciągła funkcja Y D (D D) D taka, że dla każdego ciągłego F D D: 1 Y D (F ) = lim i F i ( ) jest rozwiązaniem równania f = F (f ) 2 Y D (F ) przybliża każde inne rozwiązanie

Samoaplikacja Problem z dziedzinami denotacji Dziedziny Rekursja i zastosowania Można też rekurencyjnie definiować dziedziny i ich elementy. Example Można skonstruować dziedzinę D taką, że: 1 D = B + (D D) 2 B - wartości bazowe czyli każde δ D odpowiada albo wartości bazowej, albo funkcji φ D D, którą można zaaplikować do każdego elementu D, w tym do φ in D.