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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 Programowanie funkcyjne Wykład 13. Siła wyrazu rachunku lambda Zdzisław Spławski Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 1

2 Wstęp Wartości logiczne Liczby naturalne jako liczebniki Churcha Kombinatory punktu stałego Reguły delta Reprezentowalność funkcji rekurencyjnych w λ-rachunku Kombinator punktu stałego w OCamlu Semantyka prostego języka imperatywnego Zadania kontrolne Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 2

3 Wstęp Język funkcyjny można potraktować jak rachunek lambda (beztypowy lub z typami) z wybraną semantyką redukcyjną, dodanymi stałymi (z odpowiednimi regułami redukcji) i dużą ilością lukru syntaktyczego. Te rozszerzenia rachunku lambda stosuje się w celu ułatwienia pisania programów, polepszenia ich czytelności i zwiększenia efektywności. Logicznie nie są one koniecznie. Jako przykłady zostaną zdefiniowane wartości logiczne i liczby naturalne z odpowiednimi funkcjami jako termy rachunku lambda. Zostaną też podane najważniejsze twierdzenia świadczące o sile wyrazu rachunku lambda. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 3

4 Wartości logiczne Specyfikacja algebraiczna: if true M N = M if false M N = N Odpowiednie termy można zdefiniować na przykład tak (Church): true λxy.x false λxy.y if λbuv.buv ( η λb.b) Udowodnimy, że spełnione jest pierwsze równanie specyfikacji. if true M N (λbuv.b u v) true M N β (λuv.true u v)m N β (λv.true M v) N β true M N (λxy.x) M N β (λy.m)n β M Analogicznie wygląda dowód drugiego równania. W celu zwiększenia czytelności czasem zamiast if B M N będziemy pisali if BthenM elsen. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 4

5 Liczby naturalne jako liczebniki Churcha Specyfikacja algebraiczna: { Iter 0 M N = N Iter (suc n) M N = M(Iter n M N) Odpowiednie termy można zdefiniować na różne sposoby, np. liczebniki Churcha są zdefiniowane następująco: 0 λfx.x 1 λfx.fx 2 λfx.f(fx) itd. Możemy to uogólnić i zauważyć, że liczebnik reprezentujący liczbę n będzie miał postać λfx.f n x, czyli jest iteratorem. Wobec tego definiujemy: suc λnfx.f(nfx) Iter λnfa.nfa ( η λn.n) lub suc λnfx.nf(fx) Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 5

6 Kombinatory punktu stałego Równania stałopunktowe w matematyce. Rozważmy równania algebraiczne, np. x = 5/x czy x = 6 x Problem rozwiązania tych równań można też sformułować jako problem znalezienia punktów stałych funkcji: f 1 λx.5/x i f 2 λx.6 x Punktem stałym funkcji jest wartość należąca do dziedziny funkcji, odwzorowywana przez funkcję na siebie. Poszukujemy więc takich wartości w 1 i w 2, że f 1 w 1 = w 1 i f 2 w 2 = w 2 Oczywiście w 1 = 5 i w 2 = 3. Punkt stały może być jeden, może ich być wiele (nawet nieskończenie wiele), może też nie być żadnego. Istnienie i liczba punktów stałych funkcji istotnie zależy od jej dziedziny. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 6

7 Kombinatory punktu stałego Równania stałopunktowe w programowaniu. Podobny problem pojawia się przy definicjach funkcji rekurencyjnych, np. lub inaczej: s(n) = if n = 0 then 1 else n s(n 1) s = λn.if n = 0 then 1 else n s(n 1) Z matematycznego punktu widzenia jest to równanie (wyższego rzędu) z jedną niewiadomą s. Symbol = oznacza tu β (lub βη) konwersję. Problem rozwiązania tego równania, tj. znalezienia lambda termu, spełniającego równanie, sprowadza się do znalezienia punktu stałego funkcjonału: F λfn.if n = 0 then 1 else n f(n 1) Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 7

8 Kombinatory punktu stałego Kombinator punktu stałego Definicja. Kombinatorem punktu stałego nazywamy każdy term M taki, że F.MF = F (MF ). Twierdzenie o punkcie stałym. Dowód. (i) F. X.X = F X (ii) Istnieje kombinator punktu stałego Y λf.(λx.f(xx))(λx.f(xx)) taki, że YF = F (YF ). (i) Niech W λx.f (xx) i X W W. Wówczas X W W (λx.f (xx))w F (W W ) F X (ii) YF (λf.(λx.f(xx))(λx.f(xx)))f β (λx.f (xx))(λx.f (xx)) β F ((λx.f (xx))(λx.f (xx))) = β F ((λf.(λx.f(xx))(λx.f(xx)))f ) F (YF ) Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 8

9 Kombinatory punktu stałego Kombinator Turinga Czasem potrzebujemy kombinatora punktu stałego M z nieco mocniejszą własnością: F.MF β F (MF ). Turing zaproponował następujący kombinator: Θ AA gdzie A λxy.y(xxy). ΘF (λxy.y(xxy))af β (λy.y(aay))f β F (AAF ) F (ΘF ) Zauważ, że dla kombinatora Y można udowodnić tylko YF = β F (YF ). Istnieje nieskończenie wiele kombinatorów punktu stałego. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 9

10 Kombinatory punktu stałego Przykład użycia kombinatora punktu stałego: silnia. Teraz możemy zdefiniować lambda term dla silni jako: s YF (lub ΘF ) gdzie F λfn.if n = 0 then 1 else n f(n 1) Uwaga. Przy ewaluacji tego termu należy stosować redukcję normalną. s n (Y F ) n = β F (Y F ) n (λfn.if n = 0 then 1 else n f(n 1))(Y F ) n β if n = 0 then 1 else n (Y F )(n 1) if n = 0 then 1 else n s(n 1) Oczywiście, możliwa jest inna definicja silni za pomocą iteratora, co odpowiadałoby rekursji ogonowej. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 10

11 Kombinatory punktu stałego Powyższy przykład możemy uogólnić. Twierdzenie. Niech C C[f, x] będzie termem ze zmiennymi wolnymi f i x. Wówczas: (i) F. N.F N = C[F, N] (ii) F. N.F N β C[F, N] Dowód. W obu przypadkach możemy wziąć F Θ(λf x.c[f, x]). Zauważ, że dla przypadku (i) wystarczy wziąć Y. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 11

12 Reguły delta Reguły delta Definicja. (i) Niech δ będzie pewną stałą. Wówczas Λδ jest zbiorem λ-termów zbudowanych ze zmiennych i stałej δ za pomocą aplikacji i abstrakcji w zwykły sposób. (ii) Analogicznie definiuje się Λ δ, gdzie δ oznacza ciąg stałych. (iii) Niech M oznacza ciąg zamkniętych λ-termów w postaci normalnej. δ-redukcja ma postać δ M δ f( M). Dla zadanej funkcji f δ-redukcja nie jest pojedynczą regułą, lecz schematem reguł. Tak wzbogacony system nazywamy rachunkiem λδ. Relacje kontrakcji i redukcji są oznaczane odpowiednio przez βδ i βδ. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 12

13 Reguły delta Reguły delta Twierdzenie. Niech f będzie funkcją na zamkniętych λ-termach w postaci normalnej. Wówczas relacja redukcji βδ spełnia twierdzenie Churcha-Rossera. Pojęcie redeksu, postaci normalnej i strategii redukcji w sposób naturalny uogólnia się na rachunek λδ. Prawdziwe jest też twierdzenie o standardyzacji. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 13

14 Reguły delta Przykład: test na zero W wielu funkcjach konieczne jest sprawdzenie, czy liczba jest równa zeru. Specyfikacja takiego predykatu wygląda następujaco: { iszero 0 = true iszero (suc n) = false Spełnia ona wymagania twierdzenia z poprzedniej strony ( przy założeniu, że n oznacza term zamknięty), więc moglibyśmy dodać do λ-termów stałą iszero oraz dwie reguły redukcji, nie troszcząc się o znalezienie termu, spełniającego powyższą specyfikację. My jednak podamy ten term. iszero λn.iter n (λb.false) true Łatwo pokazać, że spełnia on powyższą specyfikację. Analogicznie należy rozumieć następny przykład. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 14

15 Reguły delta Przykład: poprzednik { pred 0 = 0 pred (suc n) = n Ideę obliczania poprzednika wyjaśnia poniższy program. } y := 0; 0, 0 z := 0; while y n do ( z = pred y ) begin } z := y; n-krotna iteracja operacji q q y, z suc y, y y := suc y; end ( z = pred n ) Teraz ten algorytm możemy zapisać w postaci lambda-termu. pred λn.snd (Iter n (λp.pair(suc(fst p))(fst p)) (pair 0 0)) Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 15

16 Reprezentowalność funkcji rekurencyjnych w λ-rachunku Definicja. Funkcja częściowo rekurencyjna f : N k N jest definiowalna w beztypowym rachunku lambda, jeśli istnieje zamknięty term F, spełniający dla dowolnych n 1... n k N następujące warunki: (i) Jeśli f(n 1... n k ) = m, to F n 1... n k = β m; (ii) Jeśli wartość f(n 1... n k ) jest nieokreślona, to F n 1... n k nie ma postaci normalnej. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 16

17 Reprezentowalność funkcji rekurencyjnych w λ-rachunku Lemat. Funkcje bazowe (początkowe) Z, S, U i n są λ-definiowalne. Dowód. Weźmy następujące kombinatory jako termy definiujące. Z λn.0 suc λnfx.f(nfx) U i n λx 1... x n.x i Lemat. Funkcje λ-definiowalne są zamknięte ze względu na operację składania funkcji. Dowód. Niech funkcje g, h 1,..., h r będą λ-definiowalne odpowiednio za pomocą termów G, H 1,..., H r. Wówczas funkcja f( x) = g(h 1 ( x),..., h r ( x)) jest λ-definiowalna za pomocą termu F λ x.g(h 1 x)... (H r x) Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 17

18 Reprezentowalność funkcji rekurencyjnych w λ-rachunku Lemat. Funkcje λ-definiowalne są zamknięte ze względu na rekursję { prostą. { Rec g h 0 x = g x f(0, x) = g( x), Rec g h (suc n) x = h n (Rec g h n x) x f(s(n), x) = h(n, f(n, x), x), Ideę obliczania rekursora wyjaśnia poniższy program (porównaj z programem dla poprzednika). } y := 0; 0, g( x) z := g( x); while y n do ( z = f(y, x) ) begin } n-krotna iteracja z := h(y, z, x); q y, z suc y, h(y, z, x) operacji q y := suc y; end ( z = f(n, x) ) Teraz ten algorytm możemy zapisać w postaci λ-termu. Rec λghn x.snd (Iter n (λp.pair (suc (fst p)) (h (fst p) (snd p) x)) (pair 0 (g x)) Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 18

19 Reprezentowalność funkcji rekurencyjnych w λ-rachunku Lemat. Funkcje λ-definiowalne są zamknięte ze względu na operację minimum. Dowód. Niech funkcja g będzie λ-definiowalna za pomocą termu G. Wówczas funkcja f( x) = (µm.g( x, m) = 0) jest λ-definiowalna za pomocą termu mi λ x.szukaj 0 x ( η szukaj 0) gdzie szukaj Θ λfm x.if iszero (G x m) then m else f (suc m) x. Ponieważ Θ F F (Θ F ), to szukaj m x if iszero (G x m) then m else szukaj (suc m) x Wobec tego szukaj 0 x zaczynając od zera poszukuje najmniejszej liczby m takiej, że (G x m) = 0, co jest zgodne z definicją operacji minimum. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 19

20 Reprezentowalność funkcji rekurencyjnych w λ-rachunku Twierdzenie. Wszystkie funkcje częściowo rekurencyjne są λ-definiowalne. Teza Churcha [Churcha-Turinga]. Każda funkcja obliczalna w nieformalnym sensie jest λ-definiowalna (rekurencyjna). Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 20

21 Kombinator punktu stałego w OCamlu Kombinator punktu stałego w OCamlu. I Bezpośrednia definicja kombinatora Y λf.(λx.f(xx))(λx.f(xx)) w języku OCaml spowoduje błąd typu. Możemy jednak zdefiniować typ danych: type a self = Fold of ( a self -> a);; let unfold (Fold t) = t;; a następnie funkcjonał fixl : ( a -> a) -> a let fixl f = let w = fun x -> f ( unfold x x) in w (Fold w);; który działa poprawnie dla dla języków z wartościowaniem leniwym. W OCamlu, który stosuje wartościowanie gorliwie, wartościowanie fixl nie kończy się i nie uda się nam zdefiniować np. nieskończonej listy jedynek (sprawdź to!): let ones = fixl (function x -> 1::x);; Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 21

22 Kombinator punktu stałego w OCamlu Kombinator punktu stałego w OCamlu. II Można jednak nieco zmodyfikować powyższy funkcjonał i otrzymać funkcjonał: let fix f = let w = fun x y-> f (unfold x x) y in w (Fold w);; val fix : (( a -> b) -> a -> b) -> a -> b = <fun> który znajduje punkty stałe funkcji (ale już nie list!). Przekonaj się o tym, definiując funkcję obliczającą silnię zadanej liczby bez jawnego użycia rekursji. Funkcjonał fix : (( a -> b) -> a -> b) -> a -> b można też zdefiniować bez użycia typu a self, np. let fix f = let rec fixf x = f fixf x in fixf;; Można go teraz użyć do zdefiniowania silni bez użycia rekursji: let fact = fix (fun f n -> if n=0 then 1 else n*f(n-1));; Przekonaj się, że jest to rzeczywiście funkcja silni. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 22

23 Semantyka prostego języka imperatywnego Składnia i semantyka prostego języka imperatywnego. I Składnia abstrakcyjna V Zmienna N Liczba B ::= true false B&&B B B not B E < E E = E E ::= N V E + E E E E E E C ::= skip C; C V := E if B then C else C fi while B do C od Semantykę denotacyjną języka zadaje się definiując funkcje semantyczne, które opisują, jak semantyka wyrażenia może być otrzymana z semantyki składowych tego wyrażenia (semantyka kompozycyjna). Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 23

24 Semantyka prostego języka imperatywnego Składnia i semantyka prostego języka imperatywnego. II Funkcja semantyczna dla instrukcji C jest funkcją częściową S C [C ], zmieniającą wektor stanu programu S (pamięć operacyjną). Dziedzinę S reprezentujemy za pomocą zbioru funkcji σ : Zmienna Z. Załóżmy dla uproszczenia, że funkcje semantyczne dla wyrażeń logicznych B i arytmetycznych E są znane. Tutaj zdefiniujemy w rachunku lambda funkcję semantyczną S C [C ] : S S dla instrukcji. Na wykładzie 3 zaprogramowaliśmy ją w OCamlu. Semantyka denotacyjna S B [B ] : S {true, false} S E [E ] : S Z S C [skip]σ = σ S C [C 1 ; C 2 ]σ S C [C 2 ](S C [C 1 ]σ) S C [V := E ]σ σ[v S E [E ]σ] { SC [C S C [if B then C 1 else C 2 fi]σ 1 ]σ gdy S E [B ]σ = true S C [C 2 ]σ gdy S E [B ]σ = false Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 24

25 Semantyka prostego języka imperatywnego Składnia i semantyka prostego języka imperatywnego. III Wykonując jednokrotnie pętlę while otrzymujemy poniższe równanie dla funkcji semantycznej S C [while B do C od]: { SC[[while B do C od]](s C[[C]]σ) gdy S B[[B]]σ = true S C[[while B do C od]]σ σ gdy S B[[B]]σ = false Z analogicznym problemem mieliśmy do czynienia w przypadku funkcji silnia. Należy znaleźć najmniejszy punkt stały funkcjonału: { f(sc [C ]σ) gdy S F λf.λσ. B [B ]σ = true σ gdy S B [B ]σ = false czyli, używając kombinatora punktu stałego Θ (lub Y): S C [while B do C od] ΘF Istnienie najmniejszego punktu stałego gwarantuje teoria dziedzin. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 25

26 Zadania kontrolne 1. Wykorzystując term if zdefiniuj pozostałe spójniki logiczne. 2. Udowodnij, że termy 0, suc, Iter spełniają specyfikację algebraiczną ze strony Zdefiniuj lambda wyrażenia pair, fst i snd z następującymi regułami redukcji: fst (pair M N) M snd (pair M N) N 4. Niech Y λf.(λx.f(xx))(λx.f(xx)), S λxyz.xz(yz), I λx.x. Udowodnij, że wszystkie kombinatory zdefiniowane następująco: { Y 0 Y Y n+1 Y n (SI) są kombinatorami punktu stałego. 5. Pokaż, że Y 1 β Θ. 6. Zdefiniuj kombinator Θ w OCamlu. Zdzisław Spławski: Programowanie funkcyjne, Wykład 13. Siła wyrazu rachunku lambda 26

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

Teoretyczne Podstawy Języków Programowania Wykład 4. Siła wyrazu rachunku λ Teoretyczne Podstawy Języków Programowania Wykład 4. Siła wyrazu rachunku λ Zdzisław Spławski Zdzisław Spławski: Teoretyczne Podstawy Języków Programowania, Wykład 4. Siła wyrazu rachunku λ 1 Wstęp Wartości

Bardziej szczegółowo

Programowanie funkcyjne. Wykªad 13

Programowanie funkcyjne. Wykªad 13 Programowanie funkcyjne. Wykªad 13 Siªa wyrazu rachunku lambda Zdzisªaw Spªawski Zdzisªaw Spªawski: Programowanie funkcyjne. Wykªad 13, Siªa wyrazu rachunku lambda 1 Wst p Warto±ci logiczne Liczby naturalne

Bardziej szczegółowo

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka

Bardziej szczegółowo

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

P. Urzyczyn: Materia ly do wyk ladu z semantyki. Uproszczony 1 j. ezyk PCF 29 kwietnia 2013, godzina 23: 56 strona 1 P. Urzyczyn: Materia ly do wyk ladu z semantyki Uproszczony 1 j ezyk PCF Sk ladnia: Poniżej Γ oznacza otoczenie typowe, czyli zbiór deklaracji postaci (x : τ).

Bardziej szczegółowo

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

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość 11. Wykład 11: Rachunek λ. Obliczenia i obliczalność. Rachunek λ jest systemem pozornie bardzo prostym. Abstrakcja i aplikacja wydają się trywialnymi operacjami, i może się zdawać, że niczego ciekawego

Bardziej szczegółowo

Programowanie Funkcyjne. Marcin Kubica Świder,

Programowanie Funkcyjne. Marcin Kubica Świder, Programowanie Funkcyjne Marcin Kubica Świder, 28-04-2015 Czym jest programowanie funkcyjne? Obliczalne pojęcia matematyczne. Definicje stałych i funkcji i relacji. Wszystkie definicje są konstruktywne,

Bardziej szczegółowo

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

Programowanie. Lista zadań nr 15. Na ćwiczenia 11, 19 i 23 czerwca 2008 Programowanie Lista zadań nr 15 Na ćwiczenia 11, 19 i 23 czerwca 2008 Zadanie 1. Pokaż, że w systemie z polimorfizmem parametrycznym można napisać program P n rozmiaru O(n), którego typ ma rozmiar 2 2Ω(n).

Bardziej szczegółowo

Wykład 3 Funkcje wyższych rzędów

Wykład 3 Funkcje wyższych rzędów Wykład 3 Funkcje wyższych rzędów Funkcje jako dane Rozwijanie i zwijanie funkcji Składanie funkcji Funkcjonały dla list Funkcje wyższego rzędu jako struktury sterowania Semantyka denotacyjna prostego języka

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Kilka podstawowych pojęć Definition Programy imperatywne zmieniają stan, czyli wartości zmiennych. Asercja = warunek logiczny, który

Bardziej szczegółowo

Wykład 3 Funkcje wyższych rzędów

Wykład 3 Funkcje wyższych rzędów Wykład 3 Funkcje wyższych rzędów Funkcje jako dane Rozwijanie i zwijanie funkcji Składanie funkcji Funkcjonały dla list Funkcje wyższego rzędu jako struktury sterowania Semantyka denotacyjna prostego języka

Bardziej szczegółowo

Logika i teoria mnogości Wykład 14

Logika i teoria mnogości Wykład 14 Teoria rekursji Teoria rekursji to dział logiki matematycznej zapoczątkowany w latach trzydziestych XX w. Inicjatorzy tej dziedziny to: Alan Turing i Stephen Kleene. Teoria rekursji bada obiekty (np. funkcje,

Bardziej szczegółowo

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

R. D. Tennent, The Denotational Semantics of Programming Languages [1976] 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

Bardziej szczegółowo

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

Elementy rachunku lambda. dr hab. inż. Joanna Józefowska, prof. PP 1 Elementy rachunku lambda λ 1 Notacja λ x 3x + 7 3x + 7 jest różniczkowalna 3x + 7 jest mniejsze od 2 (2,3) 5 f(2, 3) = 2 + 3 g(2) = 2 + 3 λx(3x + 7) 3x + 7 λx λy(x + y) = λxy(x + y) λx(x + 3) 2 Rachunek

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

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

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017 Logika Stosowana Wykład 1 - Logika zdaniowa Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 30 Plan wykładu 1 Język

Bardziej szczegółowo

Wykład 2: Rachunek lambda

Wykład 2: Rachunek lambda 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

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Procedury wyższych rzędów 1 Procedury wyższych rzędów jako abstrakcje konstrukcji programistycznych Intuicje Procedury wyższych rzędów

Bardziej szczegółowo

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

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. 1 Logika Klasyczna obejmuje dwie teorie:

Bardziej szczegółowo

Wykład 5 Listy leniwe

Wykład 5 Listy leniwe Wykład 5 Listy leniwe Listy leniwe Funkcjonały dla list leniwych Przykład: generowanie liczb pierwszych metodą sita Eratostenesa Algorytmy przeszukiwania przestrzeni stanów Przykład: problem ośmiu hetmanów

Bardziej szczegółowo

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Poprawność programów Jeżeli projektujemy algorytmy lub piszemy programy, to ważne jest pytanie, czy nasz algorytm lub program

Bardziej szczegółowo

1 Funkcje uniwersalne

1 Funkcje uniwersalne 1 1 Funkcje uniwersalne 1.1 Konstrukcja funkcji uniweralnej Niech P będzie najmniejszym zbiorem liczb spełniającym warunki 1) 0, 2, 0, 0, 2, 1, 0, 2, 2 P, 2) 0, n, 3, k P dla wszystkich n > 0 oraz k takich,

Bardziej szczegółowo

Ćwiczenia z wyliczania wartości funkcji

Ćwiczenia z wyliczania wartości funkcji Ćwiczenia z wyliczania wartości funkcji 4 października 2011 1 Wprowadzenie Wyliczanie wartości wyrażenia nie jest sprawą oczywistą, szczególnie jeżeli chodzi o aplikację funkcji. Poniższy tekst nie jest

Bardziej szczegółowo

domykanie relacji, relacja równoważności, rozkłady zbiorów

domykanie relacji, relacja równoważności, rozkłady zbiorów 1 of 8 2012-03-28 17:45 Logika i teoria mnogości/wykład 5: Para uporządkowana iloczyn kartezjański relacje domykanie relacji relacja równoważności rozkłady zbiorów From Studia Informatyczne < Logika i

Bardziej szczegółowo

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

Andrzej Wiśniewski Logika II. Wykład 6. Wprowadzenie do semantyki teoriomodelowej cz.6. Modele i pełność Andrzej Wiśniewski Logika II Materiały do wykładu dla studentów kognitywistyki Wykład 6. Wprowadzenie do semantyki teoriomodelowej cz.6. Modele i pełność 1 Modele Jak zwykle zakładam, że pojęcia wprowadzone

Bardziej szczegółowo

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch Wykład 8 Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. Smok podsuszony zmok (patrz: Zmok). Zmok zmoczony smok (patrz: Smok). L. Peter Deutsch Stanisław Lem Wizja lokalna J. Cichoń, P. Kobylański

Bardziej szczegółowo

Matematyka dyskretna dla informatyków

Matematyka dyskretna dla informatyków Matematyka dyskretna dla informatyków Część I: Elementy kombinatoryki Jerzy Jaworski Zbigniew Palka Jerzy Szymański Uniwersytet im. Adama Mickiewicza Poznań 2007 4 Zależności rekurencyjne Wiele zależności

Bardziej szczegółowo

Lista 3 Modele algorytmiczne

Lista 3 Modele algorytmiczne 1 Wprowadzenie Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Teoretyczne Podstawy Informatyki Lista 3 Modele algorytmiczne Współczesne systemy informatyczne to skomplikowane

Bardziej szczegółowo

Struktury formalne, czyli elementy Teorii Modeli

Struktury formalne, czyli elementy Teorii Modeli Struktury formalne, czyli elementy Teorii Modeli Szymon Wróbel, notatki z wykładu dra Szymona Żeberskiego semestr zimowy 2016/17 1 Język 1.1 Sygnatura językowa Sygnatura językowa: L = ({f i } i I, {P j

Bardziej szczegółowo

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5]; 4.3. Przykłady wykorzystania funkcji bibliotecznych 73 MATLAB % definiowanie funkcji function [dx]=vderpol(t,y) global c; dx=[y(2); c*(1-y(1)^2)*y(2)-y(1)]; SCILAB // definiowanie układu function [f]=vderpol(t,y,c)

Bardziej szczegółowo

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

Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność? Semina Nr 3 Scientiarum 2004 Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność? W tym krótkim opracowaniu chciałbym przedstawić dowody obu twierdzeń Gödla wykorzystujące

Bardziej szczegółowo

LOGIKA ALGORYTMICZNA

LOGIKA ALGORYTMICZNA LOGIKA ALGORYTMICZNA 0.0. Relacje. Iloczyn kartezjański: A B := (a, b) : a A i b B} (zak ladamy, że (x, y) i (u, v) s a równe wtedy i tylko wtedy gdy x = u i y = v); A n := (x 1,..., x n ) : x i A}; R

Bardziej szczegółowo

O pewnych związkach teorii modeli z teorią reprezentacji

O pewnych związkach teorii modeli z teorią reprezentacji O pewnych związkach teorii modeli z teorią reprezentacji na podstawie referatu Stanisława Kasjana 5 i 12 grudnia 2000 roku 1. Elementy teorii modeli Będziemy rozważać język L składający się z przeliczalnej

Bardziej szczegółowo

Finanse i Rachunkowość studia niestacjonarne Wprowadzenie do teorii ciągów liczbowych (treść wykładu z 21 grudnia 2014)

Finanse i Rachunkowość studia niestacjonarne Wprowadzenie do teorii ciągów liczbowych (treść wykładu z 21 grudnia 2014) dr inż. Ryszard Rębowski DEFINICJA CIĄGU LICZBOWEGO Finanse i Rachunkowość studia niestacjonarne Wprowadzenie do teorii ciągów liczbowych (treść wykładu z grudnia 04) Definicja ciągu liczbowego Spośród

Bardziej szczegółowo

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań System aksjomatyczny logiki Budując logikę

Bardziej szczegółowo

LOGIKA I TEORIA ZBIORÓW

LOGIKA I TEORIA ZBIORÓW LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja

Bardziej szczegółowo

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

System BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10 System BCD z κ Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna Semestr letni 2009/10 Rozważamy system BCD ze stałą typową κ i aksjomatami ω κ κ i κ ω κ. W pierwszej części tej notatki

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Dystrybucje, wiadomości wstępne (I)

Dystrybucje, wiadomości wstępne (I) Temat 8 Dystrybucje, wiadomości wstępne (I) Wielkości fizyczne opisujemy najczęściej przyporządkowując im funkcje (np. zależne od czasu). Inną drogą opisu tych wielkości jest przyporządkowanie im funkcjonałów

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański

Bardziej szczegółowo

vf(c) =, vf(ft 1... t n )=vf(t 1 )... vf(t n ).

vf(c) =, vf(ft 1... t n )=vf(t 1 )... vf(t n ). 6. Wykład 6: Rachunek predykatów. Język pierwszego rzędu składa się z: symboli relacyjnych P i, i I, gdzie (P i ) oznaczać będzie ilość argumentów symbolu P i, symboli funkcyjnych f j, j J, gdzie (f j

Bardziej szczegółowo

Rekurencyjna przeliczalność

Rekurencyjna przeliczalność Rekurencyjna przeliczalność Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl Funkcje rekurencyjne Jerzy Pogonowski (MEG) Rekurencyjna przeliczalność Funkcje rekurencyjne

Bardziej szczegółowo

2. Definicja pochodnej w R n

2. Definicja pochodnej w R n 2. Definicja pochodnej w R n Niech będzie dana funkcja f : U R określona na zbiorze otwartym U R n. Pochodną kierunkową w punkcie a U w kierunku wektora u R n nazywamy granicę u f(a) = lim t 0 f(a + tu)

Bardziej szczegółowo

Elementy metod numerycznych

Elementy metod numerycznych Wykład nr 5 i jej modyfikacje. i zera wielomianów Założenia metody Newtona Niech będzie dane równanie f (x) = 0 oraz przedział a, b taki, że w jego wnętrzu znajduje się dokładnie jeden pierwiastek α badanego

Bardziej szczegółowo

Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej

Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej Schemat rekursji 1 Schemat rekursji dla funkcji jednej zmiennej Dla dowolnej liczby naturalnej a i dowolnej funkcji h: N 2 N istnieje dokładnie jedna funkcja f: N N spełniająca następujące warunki: f(0)

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Wykład z równań różnicowych

Wykład z równań różnicowych Wykład z równań różnicowych 1 Wiadomości wstępne Umówmy się, że na czas tego wykładu zrezygnujemy z oznaczania n-tego wyrazu ciągu symbolem typu x n, y n itp. Zamiast tego pisać będziemy x (n), y (n) itp.

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

Programowanie w logice Wykład z baz danych dla

Programowanie w logice Wykład z baz danych dla Programowanie w logice Wykład z baz danych dla studentów matematyki 18 maja 2015 Programowanie w logice Programowanie w logice to podejście do programowania, w którym na program patrzymy nie jak na opis

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

Liczby losowe i pętla while w języku Python Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak

Bardziej szczegółowo

Składnia funkcji i Rekurencja w języku Haskell

Składnia funkcji i Rekurencja w języku Haskell Składnia funkcji i w języku Haskell Tomasz Ostrowski, Adrian Niechciał, Michał Workiewicz, Marcin Wilk 26 marca 2015 Składnia funkcji i w języku Haskell Spis treści Składnia funkcji Tomasz Ostrowski Adrian

Bardziej szczegółowo

Porządek symetryczny: right(x)

Porządek symetryczny: right(x) Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)

Bardziej szczegółowo

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel Wstęp do programowania Listy Piotr Chrząstowski-Wachtel Do czego stosujemy listy? Listy stosuje się wszędzie tam, gdzie występuje duży rozrzut w możliwym rozmiarze danych, np. w reprezentacji grafów jeśli

Bardziej szczegółowo

Rozwiazywanie układów równań liniowych. Ax = b

Rozwiazywanie układów równań liniowych. Ax = b Rozwiazywanie układów równań liniowych Ax = b 1 PLAN REFERATU: Warunki istnienia rozwiazań układu Metoda najmniejszych kwadratów Metoda najmniejszych kwadratów - algorytm rekurencyjny Rozwiazanie układu

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Definicje wyższego poziomu

Definicje wyższego poziomu Definicje wyższego poziomu Interpreter Scheme-a nie będzie narzekad w przypadku wystąpienia niezdefionowanej zmiennej w ciele wyrażenia lambda dopóki nie będzie zastosowana Przykład braku informacji o

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

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

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki Andrzej Wiśniewski Logika II Materiały do wykładu dla studentów kognitywistyki Wykład 5. Wprowadzenie do semantyki teoriomodelowej cz.5. Wynikanie logiczne 1 Na poprzednim wykładzie udowodniliśmy m.in.:

Bardziej szczegółowo

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

25 lutego 2013, godzina 23: 57 strona 1. P. Urzyczyn: Materia ly do wyk ladu z semantyki. Logika Hoare a 25 lutego 2013, godzina 23: 57 strona 1 P. Urzyczyn: Materia ly do wyk ladu z semantyki Logika Hoare a Rozważamy najprostszy model imperatywnego jezyka programowania z jednym typem danych. Wartości tego

Bardziej szczegółowo

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

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa Informatyka 1 Wykład III Wyrażenia i instrukcje, złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: składnia wyrażeń, drzewa rozbioru gramatycznego i wyliczenia wartości wyrażeń, operatory

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Literatura David Harel. Rzecz o istocie informatyki. Algorytmika. Wydawnictwa Naukowo-Techniczne. Wydanie trzecie. Seria: Klasyka informatyki. Warszawa 2000. Niklaus Wirth. Algorytmy

Bardziej szczegółowo

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych. Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą

Bardziej szczegółowo

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne dr inż. Marcin Szlenk Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych m.szlenk@elka.pw.edu.pl Paradygmaty

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala

Bardziej szczegółowo

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

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu Problem Hilberta: 9 Czy istnieje ogólna mechaniczna procedura, która w zasadzie pozwoliłaby nam po kolei rozwiązać wszystkie matematyczne problemy (należące do odpowiednio zdefiniowanej klasy)? 2 Przykłady

Bardziej szczegółowo

Analiza funkcjonalna 1.

Analiza funkcjonalna 1. Analiza funkcjonalna 1. Wioletta Karpińska Semestr letni 2015/2016 0 Bibliografia [1] Banaszczyk W., Analiza matematyczna 3. Wykłady. (http://math.uni.lodz.pl/ wbanasz/am3/) [2] Birkholc A., Analiza matematyczna.

Bardziej szczegółowo

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Elementy Logiki i Teorii Mnogości 2015/2016 Zadanie 1. Oblicz iteracyjnie i rekurencyjnie f(4), gdzie f jest funkcją określoną na zbiorze

Bardziej szczegółowo

PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie funkcyjne (w- 9)

PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie funkcyjne (w- 9) PARADYGMATY I JĘZYKI PROGRAMOWANIA Programowanie funkcyjne () Zagadnienia 2 Wstęp Rachunek lambda i programowanie funkcjonalne (Podstawa: An introduc/on to func/onal programming through lambda calculus.

Bardziej szczegółowo

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

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp

Bardziej szczegółowo

Paradygmaty dowodzenia

Paradygmaty dowodzenia Paradygmaty dowodzenia Sprawdzenie, czy dana formuła rachunku zdań jest tautologią polega zwykle na obliczeniu jej wartości dla 2 n różnych wartościowań, gdzie n jest liczbą zmiennych zdaniowych tej formuły.

Bardziej szczegółowo

Semantyka rachunku predykatów

Semantyka rachunku predykatów Relacje Interpretacja Wartość Spełnialność Logika obliczeniowa Instytut Informatyki Relacje Interpretacja Wartość Plan Plan Relacje O co chodzi? Znaczenie w logice Relacje 3 Interpretacja i wartościowanie

Bardziej szczegółowo

Podstawy programowania funkcjonalnego

Podstawy programowania funkcjonalnego Podstawy programowania funkcjonalnego haskell.mariuszrozycki.pl Mariusz Różycki Churchill College, University of Cambridge rev. 2014.03.27.1 Wprowadzenie Materiały haskell.mariuszrozycki.pl Slajdy (w tym

Bardziej szczegółowo

Rekurencja. Przygotowała: Agnieszka Reiter

Rekurencja. Przygotowała: Agnieszka Reiter Rekurencja Przygotowała: Agnieszka Reiter Definicja Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być

Bardziej szczegółowo

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora. 1. Podstawy matematyki 1.1. Geometria analityczna W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora. Skalarem w fizyce nazywamy

Bardziej szczegółowo

JAO - Wprowadzenie do Gramatyk bezkontekstowych

JAO - Wprowadzenie do Gramatyk bezkontekstowych JAO - Wprowadzenie do Gramatyk bezkontekstowych Definicja gramatyki bezkontekstowej Podstawowymi narzędziami abstrakcyjnymi do opisu języków formalnych są gramatyki i automaty. Gramatyka bezkontekstowa

Bardziej szczegółowo

Technologie Informatyczne Wykład VII

Technologie Informatyczne Wykład VII Technologie Informatyczne Wykład VII A. Matuszak (1) 22 listopada 2007 A. Matuszak (1) Technologie Informatyczne Wykład VII A. Matuszak (2) Technologie Informatyczne Wykład VII (Rekursja) albo rekursja

Bardziej szczegółowo

KONKURS MATEMATYCZNY KOMA 2018

KONKURS MATEMATYCZNY KOMA 2018 ELIMINACJE SZKOLNE RACHUNEK LAMBDA NOTATKI Z WYKŁADU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć

Bardziej szczegółowo

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

Wstęp do programowania. Różne różności Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste

Bardziej szczegółowo

B jest globalnym pokryciem zbioru {d} wtedy i tylko wtedy, gdy {d} zależy od B i nie istnieje B T takie, że {d} zależy od B ;

B jest globalnym pokryciem zbioru {d} wtedy i tylko wtedy, gdy {d} zależy od B i nie istnieje B T takie, że {d} zależy od B ; Algorytm LEM1 Oznaczenia i definicje: U - uniwersum, tj. zbiór obiektów; A - zbiór atrybutów warunkowych; d - atrybut decyzyjny; IND(B) = {(x, y) U U : a B a(x) = a(y)} - relacja nierozróżnialności, tj.

Bardziej szczegółowo

składa się z m + 1 uporządkowanych niemalejąco liczb nieujemnych. Pomiędzy p, n i m zachodzi następująca zależność:

składa się z m + 1 uporządkowanych niemalejąco liczb nieujemnych. Pomiędzy p, n i m zachodzi następująca zależność: TEMATYKA: Krzywe typu Splajn (Krzywe B sklejane) Ćwiczenia nr 8 Krzywe Bezier a mają istotne ograniczenie. Aby uzyskać kształt zawierający wiele punktów przegięcia niezbędna jest krzywa wysokiego stopnia.

Bardziej szczegółowo

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

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. 1. Identyfikator funkcji,

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH Transport, studia I stopnia Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Postać ogólna równania nieliniowego Często występującym, ważnym problemem obliczeniowym

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

5. Rozwiązywanie układów równań liniowych

5. Rozwiązywanie układów równań liniowych 5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna wykład 1: Indukcja i zależności rekurencyjne Gniewomir Sarbicki Literatura Kenneth A. Ross, Charles R. B. Wright Matematyka Dyskretna PWN 005 J. Jaworski, Z. Palka, J. Szymański Matematyka

Bardziej szczegółowo

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

Programowanie funkcyjne Wykład 14. Rachunek λ z typami prostymi Programowanie funkcyjne Wykład 14. Rachunek λ z typami prostymi Zdzisław Spławski Zdzisław Spławski: Programowanie funkcyjne, Wykład 14. Rachunek λ z typami prostymi 1 Dowody konstruktywne Dedukcja naturalna

Bardziej szczegółowo

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0 ĆWICZENIE 1 Klasyczny Rachunek Zdań (KRZ): zdania w sensie logicznym, wartości logiczne, spójniki logiczne, zmienne zdaniowe, tabele prawdziwościowe dla spójników logicznych, formuły, wartościowanie zbioru

Bardziej szczegółowo

Zajęcia nr. 3 notatki

Zajęcia nr. 3 notatki Zajęcia nr. 3 notatki 22 kwietnia 2005 1 Funkcje liczbowe wprowadzenie Istnieje nieskończenie wiele funkcji w matematyce. W dodaktu nie wszystkie są liczbowe. Rozpatruje się funkcje które pobierają argumenty

Bardziej szczegółowo

Wstęp do informatyki

Wstęp do informatyki Wstęp do informatyki Algorytmy i struktury danych Piotr Fulmański Wydział Matematyki i Informatyki, Uniwersytet Łódzki, Polska 30 października 2009 Spis treści 1 Algorytm 2 Przetwarzane informacje 3 Struktury

Bardziej szczegółowo

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

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 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 1 Tezy KRZ Pewien system aksjomatyczny KRZ został przedstawiony

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

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

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń Elementy logiki Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń 1 Klasyczny Rachunek Zdań 1.1 Spójniki logiczne Zdaniem w sensie logicznym nazywamy wyrażenie, które jest

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 3

Programowanie komputerowe. Zajęcia 3 Programowanie komputerowe Zajęcia 3 Instrukcje przypisania Poza zwykłą instrukcją przypisania, powodującą ustawienie wartości zmiennej na podane wyrażenie, istnieje wiele innych, np. += dodaj, a+=b jest

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 5 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Zadanie o kotach z poprzedniego wykładu # include < iostream > using namespace std ; int main (){ int rozmiar_ rodzinki,

Bardziej szczegółowo

Układy równań i nierówności liniowych

Układy równań i nierówności liniowych Układy równań i nierówności liniowych Wiesław Krakowiak 1 grudnia 2010 1 Układy równań liniowych DEFINICJA 11 Układem równań m liniowych o n niewiadomych X 1,, X n, nazywamy układ postaci: a 11 X 1 + +

Bardziej szczegółowo