Wykład 2: Rachunek lambda



Podobne dokumenty
Programowanie. Lista zadań nr 15. Na ćwiczenia 11, 19 i 23 czerwca 2008

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

Programowanie funkcyjne. Wykªad 13

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

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

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Rachunek lambda CBN i CBV

Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność?

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

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

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

Semantyka rachunku predykatów

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne

1. Składnia. Logika obliczeniowa - zadania 1 SKŁADNIA Teoria

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Struktury formalne, czyli elementy Teorii Modeli

Programowanie komputerowe. Zajęcia 4

Języki, automaty i obliczenia

Drobinka semantyki KRP

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

Semantyka i Weryfikacja Programów - Laboratorium 3

Interpretacja Niech U będzie zbiorem formuł takim, że zbiór {p 1,..., p k } jest zbiorem wszystkich symboli predykatywnych, {f 1,..., f l } jest zbior

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

Common Lisp - funkcje i zmienne

Metody Kompilacji Wykład 1 Wstęp

Logika Matematyczna (1)

Rachunek predykatów. Formuły rachunku predykatów. Plan wykładu. Relacje i predykaty - przykłady. Relacje i predykaty

Obliczenia i wnioskowanie w systemie Coq

Wstęp do programowania

Logika Matematyczna (1)

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Formalizacja podstawowych pojęć rachunku lambda

Języki, automaty i obliczenia

Lista 3 Modele algorytmiczne

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

FUNKCJE. (odwzorowania) Funkcje 1

λ parametry. wartość funkcji suma = λ x y. x + y kwadrat = λ x. x * x K.M. Ocetkiewicz, 2008 WETI, PG 2 K.M. Ocetkiewicz, 2008 WETI, PG 3

Jak wiernie odzwierciedlić świat i zachować występujące w nim zależności? Jak implementacja fizyczna zmienia model logiczny?

Zadania do Rozdziału X

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

Rezolucja w rachunku predykatów. Przedrostkowa koniunkcyjna postać normalna. Formu ly ustalone. Joanna Józefowska. Poznań, rok akademicki 2009/2010

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Rachunek Lambda i J zyki Programowania

Paradygmaty dowodzenia


CsPL, system do weryfikacji bezpieczeństwa programów p.1/20

Teoria gier. wstęp Teoria gier Zdzisław Dzedzej 1

Programowanie funkcyjne Wykład 14. Rachunek λ z typami prostymi

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 13

Matematyka dyskretna. Andrzej Łachwa, UJ, A/10

Wykład 16. P 2 (x 2, y 2 ) P 1 (x 1, y 1 ) OX. Odległość tych punktów wyraża się wzorem: P 1 P 2 = (x 1 x 2 ) 2 + (y 1 y 2 ) 2

Składnia rachunku predykatów pierwszego rzędu

LOGIKA ALGORYTMICZNA

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Andrzej Wiśniewski Logika II. Wykłady 10b i 11. Semantyka relacyjna dla normalnych modalnych rachunków zdań

Programowanie komputerów

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Zależności funkcyjne

Jan Olek. Uniwersytet Stefana Kardynała Wyszyńskiego. Procesy z Opóźnieniem. J. Olek. Równanie logistyczne. Założenia

Systemy baz danych. Notatki z wykładu

Matematyka dyskretna

Wstęp do programowania

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

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

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

3. Wykład 3: Dowody indukcyjne, strategie dowodowe Dowody indukcyjne. Dotychczas zobaczyliśmy w jaki sposób można specyfikować definicje

RACHUNEK LAMBDA DLA POCZĄTKUJĄCYCH

Wykład z Technologii Informacyjnych. Piotr Mika

Wstęp do programowania. Różne różności

Programowanie deklaratywne

Wyuczalność w teorii modeli

Paradoks wszechwiedzy logicznej (logical omniscience paradox) i wybrane metody jego unikania

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 10. Twierdzenie o pełności systemu aksjomatycznego KRZ

Zestaw 1 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb)!!!

Elementy języka Scheme

Statystyka w pracy badawczej nauczyciela Wykład 4: Analiza współzależności. dr inż. Walery Susłow walery.suslow@ie.tu.koszalin.pl

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Zestaw 1: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb i.ads)!!! Zad. 1: Zad. 2: 2,2,2 5,5,5,5,5,5 Zad.

Algebra i jej zastosowania konspekt wyk ladu, czȩść druga

LOGIKA Dedukcja Naturalna

Programowanie Funkcyjne. Marcin Kubica Świder,

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

Podstawy Automatyki. Wykład 12 - synteza i minimalizacja funkcji logicznych. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Rachunek prawdopodobieństwa Rozdział 3. Prawdopodobieństwo warunkowe i niezależność zdarzeń.

STATYSTYKA. Rafał Kucharski. Uniwersytet Ekonomiczny w Katowicach 2015/16 ROND, Finanse i Rachunkowość, rok 2

Prawdopodobieństwo i statystyka

Programowanie 2009 Programming 2009

25 lutego 2013, godzina 23: 57 strona 1. P. Urzyczyn: Materia ly do wyk ladu z semantyki. Logika Hoare a

Obliczenia inspirowane Naturą

rachunku kombinatorów logiką kom- binatoryczną Zmienne przedmiotowe Podstawienie słabej redukcji kombinatorami

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

Praktyczne metody weryfikacji. Wykład 9: Weryfikacja ograniczona.. p.1/40

Architektura komputerów. Asembler procesorów rodziny x86

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Co to są liczby naturalne i czemu ich nie ma?! Adam Kolany

Transkrypt:

Wykład 2: Rachunek lambda Systemy typów, II UWr, 2010 20 października 2010

λ-termy zmienne (Var) {x, y, z,...} nieskończony, przeliczalny zbiór zmiennych termy (Term) t ::= x λx.t t t skróty notacyjne λx 1 x 2... x n.t λx 1.λx 2.... λx n.t t 1 t 2 t 3... t n (... ((t 1 t 2 ) t 3 )... )t n

α-równoważność i konwencja Barendregta λ-abstrakcja λx.t wiąże zmienną x w termie t zmienne wolne FV(x) = {x} FV(λx.t) = FV(t) {x} FV(t 0 t 1 ) = FV(t 0 ) FV(t 1 ) termy t i u są α-równoważne, jeżeli różnią się wyłącznie nazwami zmiennych związanych α-równoważność jest relacją równoważności utożsamiamy α-równoważne termy konwencja Barendregta zakładamy, że zmienne wolne są różne od zmiennych związanych w rozważanych termach (zmienne związane można zawsze odpowiednio przemianować)

Podstawienie x{s/x} = s y{s/x} = y x y (λy.t){s/x} = λy.t{s/x} x y, y FV(s) (t 0 t 1 ){s/x} = t 0 {s/x} t 1 {s/x} implementując podstawienie trzeba przemianować zmienne związane w termie, w którym wykonuje się podstawienie na świeże zmienne

β-redukcja relacja β-redukcji (λx.t) s β t{s/x} t β t λx.t β λx.t t β t t s β t s s β s t s β t s (λx.t) s β-redex t jest w postaci normalnej, jeżeli nie istnieje s taki, że t β s

β-redukcja, c.d. relacja β wielokrokowej β-redukcji przechodnio-zwrotne domknięcie β relacja = β β-równości przechodnio-zwrotno-symetryczne domknięcie β Twierdzenie (Churcha-Rossera) Jeżeli t β r i t β s, to istnieje u taki, że r β u i s β u. (Jeżeli r = β s, to istnieje u taki, że r β u i s β u.) Wniosek Każdy term t ma co najwyżej jedną postać normalną u (tj. taką, że t β u). Uwaga Istnieją termy, które nie mają postaci normalnej, np. Ω = ω ω, gdzie ω = λx.x x.

Reprezentacja struktur danych w rachunku λ liczby naturalne (numerały Churcha) c n = λs.λz.s (n) (z) gdzie t (0) (s) = s, t (n+1) (s) = t (t (n) (s)) suc = λm.λs.λz.m s (s z) add = λm.λn.λs.λz.m s (n s z) mul = λm.λn.λs.λz.m (n s) z succ c n β c n+1 add c m c n β c m+n mul c m c n β c m n

Reprezentacja struktur danych w rachunku λ, c.d. wartości logiczne pary, listy, drzewa, etc. rekursja true = λx.λy.x false = λx.λy.y cond = λb.λx.λy.b x y cond true t s β t cond false t s β s Y = λf.(λx.f (x x)) (λx.f (x x)) t (Y t) = β Y t

Strategie redukcji normalizacja postać normalna v ::= λx.v x v 1... v n (n 0) leftmost-outermost (porządek normalny) w każdym kroku wybierany jest najbardziej na lewo położony redeks niezawarty w żadnym redeksie leftmost-innermost (porządek aplikatywny) w każdym kroku wybierany jest najbardziej na lewo położony redeks niezawierający żadnego redeksu Twierdzenie Jeżeli term ma postać normalną, to redukcja w porządku normalnym ją znajdzie, a redukcja w porządku aplikatywnym niekoniecznie.

Ewaluacja w porządku normalnym (call by name) słaba czołowa postać normalna v ::= λx.t x t 1... t n (n 0) relacja redukcji w porządku normalnym n (λx.t) s n t{s/x} t n t t s n t s relacja ewaluacji n w stylu semantyki naturalnej x n x t n λx.u u{s/x} n v t s n v t n v t s n v s λx.t n λx.t (v λx.u)

Ewaluacja w porządku normalnym (call by name), c.d. Twierdzenie t n v wtw t n v. Dowód Indukcja po długości ciągu redukcji t n v. Indukcja po wyprowadzeniu t n v.

Maszyna Krivine a (wariant z podstawieniem) reprezentacja termu (t, t 1 : : t n ) reprezentuje term t t 1... t n przejścia maszyny konfiguracja początkowa (λx.t, s : s) n (t{s/x}, s) (t 0 t 1, s) n (t 0, t 1 : s) (t, ɛ) konfiguracje końcowe (λx.t, ɛ) (x, t) Twierdzenie t n v wtw (t, ɛ) n (v 0, t 1 : : t n ) gdzie v = v 0 t 1... t n.

Ewaluacja w porządku aplikatywnym (call by value) słaba postać normalna v ::= λx.t x v 1... v n (n 0) relacja redukcji w porządku aplikatywnym v (λx.t) v v t{v/x} t v t t s v t s s v s v s v v s relacja ewaluacji v w stylu semantyki naturalnej x v x λx.t v λx.t t v v s v w t s v v w t v λx.u s v w u{w/x} v v t s v v (v λx.u)

Maszyna CK stos przejścia maszyny s ::= ɛ arg(t) : s fun(v) : s (x, s) v (s, x) (λx.t, s) v (s, λx.t) (t 0 t 1, s) v (t 0, arg(t 1 ) : s) (arg(t 1 ) : s, v 0 ) v (t 1, fun(v 0 ) : s) (fun(λx.t) : s, v 1 ) v (t{v 1 /x}, s) (fun(x v 1... v n ) : s, v) v (s, x v 1... v n v) konfiguracja początkowa (t, ɛ) konfiguracja końcowe (ɛ, v)

Indeksy de Bruijna Cel reprezentacja termów, która nie wymaga przemianowania zmiennych przy podstawieniu α-równoważne termy są identyczne Rozwiązanie zmienne reprezentowane za pomocą liczb naturalnych (indeksy de Bruijna) indeks de Bruijna określa odległość (liczba dzielących je λ) zmiennej od wiążącej ją lambdy przykłady λx.x λ.0 λx.λy.x (y x) λ.λ.1 (0 1)

Indeksy de Bruijna, c.d. termy t ::= n λ.t t t termy otwarte mają sens w pewnym kontekście Γ = x n, x n 1,..., x 1, x 0 wiążącym nazwę x i z indeksem i przykład (Γ = c, b, a) a (b c) 0 (1 2) λx.a x λ.1 0 λx.λy.c λ.λ.4

Indeksy de Bruijna, c.d. podstawienie przesunięcie indeksów k{s/k} = s k{s/j} = k, k j (λ.t){s/j} = λ.t{ 1 0 (s)/j + 1} (t 0 t 1 ){s/j} = t 0 {s/j} t 1 {s/j} d c (k) = k, k < c d c (k) = k + d, k c d c (λ.t) = λ. d c+1 (t) d c (t 0 t 1 ) = d c (t 0 ) d c (t 1 ) β-redukcja (λ.t) s β 1 0 (t{ 1 0 (s)/0})

Modelowy język funkcyjny (CBV) składnia t ::= x λx.t t t 0 suc t case t of 0 t suc x t fix x.t syntaktyczny cukier let x = t 1 in t 2 (λx.t 2 ) t 1 letrec x = t 1 in t 2 let x = fix x.t 1 in t 2 program = zamknięty term przykład programu letrec add = λm.λn.case m of 0 n suc k add k (suc n) in add 2 3

Modelowy język funkcyjny (CBV), c.d. wartości semantyka programów (λx.t) v v t{v/x} v ::= nv λx.t nv ::= 0 suc nv t v t t s v t s t v t suc t v suc t s v s v s v v s case 0 of 0 t suc x s v t case (suc nv) of 0 t suc x s v s{nv/x} t v t case t of 0 r suc x s v case t of 0 r suc x s fix x.t v t{fix x.t/x}