, semestrul 2. Curs 2

Σχετικά έγγραφα
Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

Metode iterative pentru probleme neliniare - contractii

Integrala nedefinită (primitive)

Curs 4 Serii de numere reale

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

riptografie şi Securitate

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Curs 1 Şiruri de numere reale

Sisteme diferenţiale liniare de ordinul 1

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Asupra unei inegalităţi date la barajul OBMJ 2006

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Curs 2 Şiruri de numere reale

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)).

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

Subiecte Clasa a VII-a

Metode de interpolare bazate pe diferenţe divizate

Criptosisteme cu cheie publică III

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

5.4. MULTIPLEXOARE A 0 A 1 A 2

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

Examen AG. Student:... Grupa:... ianuarie 2011

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

Subiecte Clasa a VIII-a

Laborator 11. Mulţimi Julia. Temă

Esalonul Redus pe Linii (ERL). Subspatii.

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

Seminar 5 Analiza stabilității sistemelor liniare

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

f(x) = l 0. Atunci f are local semnul lui l, adică, U 0 V(x 0 ) astfel încât sgnf(x) = sgnl, x U 0 D\{x 0 }. < f(x) < l +

SEMINAR TRANSFORMAREA FOURIER. 1. Probleme

Concurs MATE-INFO UBB, 1 aprilie 2017 Proba scrisă la MATEMATICĂ

CURS 11: ALGEBRĂ Spaţii liniare euclidiene. Produs scalar real. Spaţiu euclidian. Produs scalar complex. Spaţiu unitar. Noţiunea de normă.

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

2 Transformări liniare între spaţii finit dimensionale

MARCAREA REZISTOARELOR


2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

1.3 Baza a unui spaţiu vectorial. Dimensiune

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

Functii Breviar teoretic 8 ianuarie ianuarie 2011

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

Capitolul I. Introducere în l calcul (lambda calcul)

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

Profesor Blaga Mirela-Gabriela DREAPTA

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

TEMA 9: FUNCȚII DE MAI MULTE VARIABILE. Obiective:

2. Circuite logice 2.2. Diagrame Karnaugh. Copyright Paul GASNER 1

Ακαδημαϊκός Λόγος Κύριο Μέρος

III. Reprezentarea informaţiei în sistemele de calcul

CAPITOLUL 4 FUNCŢIONALE LINIARE, BILINIARE ŞI PĂTRATICE

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Curs 4. I.4 Grafuri. Grafuri orientate

6 n=1. cos 2n. 6 n=1. n=1. este CONV (fiind seria armonică pentru α = 6 > 1), rezultă

Arhitectura Calculatoarelor. Fizică - Informatică an II. 2. Circuite logice. Copyright Paul GASNER 1

Ecuatii trigonometrice

Teorema Rezidurilor şi Bucuria Integralelor Reale

8 Intervale de încredere

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

Proiectarea filtrelor prin metoda pierderilor de inserţie

5.1. Noţiuni introductive

prin egalizarea histogramei

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

z a + c 0 + c 1 (z a)

Geometrie computationala 2. Preliminarii geometrice

Al cincilea baraj de selecţie pentru OBMJ Bucureşti, 28 mai 2015

Subiecte Clasa a V-a

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

Criterii de comutativitate a grupurilor

Olimpiada Naţională de Matematică Etapa locală Clasa a IX-a M 1

VII.2. PROBLEME REZOLVATE

( ) ( ) ( ) Funcţii diferenţiabile. cos x cos x 2. Fie D R o mulţime deschisă f : D R şi x0 D. Funcţia f este

Foarte formal, destinatarul ocupă o funcţie care trebuie folosită în locul numelui

Scoruri standard Curba normală (Gauss) M. Popa

a. 11 % b. 12 % c. 13 % d. 14 %

Εμπορική αλληλογραφία Ηλεκτρονική Αλληλογραφία

CONCURSUL DE MATEMATICĂ APLICATĂ ADOLF HAIMOVICI, 2017 ETAPA LOCALĂ, HUNEDOARA Clasa a IX-a profil științe ale naturii, tehnologic, servicii

SEMINAR TRANSFORMAREA LAPLACE. 1. Probleme. ω2 s s 2, Re s > 0; (4) sin ωt σ(t) ω. (s λ) 2, Re s > Re λ. (6)

V O. = v I v stabilizator

1. PROPRIETĂȚILE FLUIDELOR

MULTIMEA NUMERELOR REALE

Transcript:

Paradigme de programare 2010-2011, semestrul 2 Curs 2

Cuprins Teza lui Church Calcul lambda sintaxa si semantica operationala Functii curry/uncurry Forme normale Teorema Church Rosser Strategii de evaluare

Teza lui Church Orice calcul efectiv poate fi modelat in calcul lambda (prin functii recursive)

Teza Church-Turing orice definitie adecvata a calculabilitatii efective se va dovedi echivalenta cu definitiile propuse de Church, respectiv Turing definitia lui Turing a avut un impact mai mare intrucat propunea un model de masina pe care sa se execute algoritmii in acelasi timp, reprezentarea numarului 2 in calcul lambda arata in felul urmator:

Modele de calculabilitate Masina Turing (programare imperativa) Masina Lambda (programare functionala) Masina algoritmica Markov (programare asociativa) Masina de calcul cu FOL (programare logica) Toate modelele sunt echivalente intre ele (aceleasi functii sunt calculabile in oricare din ele).

Calcul Lambda Inventat de Alonzo Church in 1932 ca un formalism matematic menit sa descrie comportamentul functiilor Nu a reusit sa inlocuiasca teoria multimilor ca fundament al matematicii, insa si-a gasit aplicatii semnificative in programare Limbaje bazate pe calcul lambda: Lisp, Scheme, Haskell, ML (intreaga programare functionala)

λ-expresia Sintaxa: e x variabila λx.e functie (unara, anonima) (e e) aplicatie parametru corpul functiei formal parametru efectiv

λ-expresia Semantica: (λx.e 1 e 2 ) = functia cu parametrul formal x si corpul e 1, aplicata asupra lui e 2 pentru evaluare se substituie x cu e 2 in corpul e 1, se evalueaza e 1 si se intoarce rezultatul se noteaza e 1 [e2/x]

λ-expresii - exemple λx.x (x y) λx. λy.(x y) (λx.x a) (λx.y a) (λx.x λx.y)

λ-expresii - exemple λx.x (x y) λx. λy.(x y) (λx.x a) (λx.y a) (λx.x λx.y) functia identitate

λ-expresii - exemple λx.x (x y) aplicatia lui x asupra lui y λx. λy.(x y) (λx.x a) (λx.y a) (λx.x λx.y)

λ-expresii - exemple λx.x (x y) λx. λy.(x y) (λx.x a) (λx.y a) (λx.x λx.y) o functie de un parametru x care intoarce o alta functie de un parametru y care il aplica pe x asupra lui y

λ-expresii - exemple λx.x (x y) λx. λy.(x y) (λx.x a) (λx.y a) (λx.x λx.y) functia identitate aplicata asupra lui a (se va evalua la a)

λ-expresii - exemple λx.x (x y) λx. λy.(x y) (λx.x a) (λx.y a) (λx.x λx.y) functia cu parametrul formal x si corpul y, aplicata asupra lui a (se va evalua la y)

λ-expresii - exemple λx.x (x y) λx. λy.(x y) (λx.x a) (λx.y a) (λx.x λx.y) functia identitate aplicata asupra functiei cu parametrul formal x si corpul y (=> λx.y)

Aparitii ale unei variabile intr-o λ-expresie Fie o variabila x si o aparitie x n a sa intr-o λ-expresie E. Ex: λx.(x λy.x) s-ar putea rescrie ca λx 1.(x 2 λy.x 3 ) dpdv al aparitiilor lui x.

Aparitie legata x n este legata in E daca: E=...λx n.e x = variabila de legare x n = aparitia care leaga E= λx.e si x n apare in e Ex: λx.(x λy.x) Aici toate aparitiile lui x sunt legate.

Aparitie libera O aparitie care nu este legata in E este libera in E. Ex: E = λx.(y λy.(x (y z))) E = (x λx.(λx.y λy.(x z)))

Atentie! Notiunea de aparitie libera/legata are sens in cadrul unei expresii. Ex: E = λx.(y λy.(x (y z))) = notatie λx.e Orice aparitie a lui x e legata in E. In schimb, in e, aparitia lui x este libera! e = (y λy.(x (y z)))

Exercitii (x λy.x) (y λy.x) λz.((+ z) x) (λx. λy.(x y) y)

Exercitii (x λy.x) (y λy.x) λz.((+ z) x) (λx. λy.(x y) y)

Exercitii (x λy.x) (y λy.x) λz.((+ z) x) (λx. λy.(x y) y)

Exercitii (x λy.x) (y λy.x) λz.((+ z) x) (λx. λy.(x y) y)

Exercitii (x λy.x) (y λy.x) λz.((+ z) x) (λx. λy.(x y) y)

Variabila legata/libera O variabila x este legata intr-o λ- expresie E daca toate aparitiile ei sunt legate. Variabilele legate sunt legate fedeles! O variabila care nu e legata intr-o λ- expresie e libera in acea λ-expresie.

Exemple (x λy.x) (y λy.x) λz.((+ z) x) (λx.λy.(x y) y) Obs: Si aici, notiunea are sens in cadrul unei expresii. Daca luam doar o parte din expresie, felul variabilei se poate schimba.

Exemple E = (λx.λy.(x y) y) = notatie (λx.e y) x e legata in E. y e libera in E. Dar in e = λy.(x y)? O imagine face cat 1000 de cuvinte. E exact pe dos!

Algoritm de determinare a variabilelor legate/libere BV(x) = BV(λx.e) = BV((e 1 e 2 )) = FV(x) = FV(λx.e) = FV((e 1 e 2 )) = BV = bound variables FV = free variables

Algoritm de determinare a variabilelor legate/libere BV(x) = Ø BV(λx.e) = {x} U BV(e) BV((e 1 e 2 )) = BV(e 1 ) U BV(e 2 ) \ (FV(e 1 ) BV(e 2 )) \ (FV(e 2 ) BV(e 1 )) FV(x) = FV(λx.e) = FV((e 1 e 2 )) = BV = bound variables FV = free variables

Algoritm de determinare a variabilelor legate/libere BV(x) = Ø BV(λx.e) = {x} U BV(e) BV((e 1 e 2 )) = BV(e 1 ) U BV(e 2 ) \ (FV(e 1 ) BV(e 2 )) \ (FV(e 2 ) BV(e 1 )) FV(x) = {x} FV(λx.e) = FV(e) \ {x} FV((e 1 e 2 )) = FV(e 1 ) U FV(e 2 ) BV = bound variables FV = free variables

β-redex si β-reducere β-redex = λ-expresie de forma (λx.e 1 e 2 ) β-reducere = efectuarea calculului (λx.e 1 e 2 ) β e 1[e2 /x] Ex: (λx.λy.(x y) y) este un β-redex.

Problema cu β-reducerea Ex1: (λx.x t) β x [t/x] = t Ex2: (λx.λy.(x y) y) β λy.(x y) [y/x] = λy.(y y) (perfect!) (oooops!) Nu asta voiam sa se intample! Voiam sa obtinem o functie care il aplica pe y asupra oricarui argument cu care va fi vreodata apelata functia. Acum orice argument este aplicat asupra lui insusi.

Mai clar, ce se intampla? De unde apare problema? La o β-reducere (λx.e 1 e 2 ) β e 1[e 2/x] inlocuiesc aparitiile libere are lui x in e 1 cu e 2. Variabilele libere din e 2 se pot trezi legate in e 1!

Solutia: α-conversia Ideea: numele parametrului formal nu conteaza, deci il putem reboteza. α-conversie = rebotezarea sistematica a variabilelor legate dintr-o λ-expresie a.i. ele sa nu coincida cu variabilele libere din parametrul efectiv pe care aplicam expresia. ( λx.e 1 α λy.e 1[y/x], unde y nu era libera in e 1 ) Ex: (λx.λy.(x y) y) α (λx.λz.(x z) y) β λz.(x z) [y/x] = λz.(y z)

Observatie De ce la o β-reducere (λx.e 1 e 2 ) β e 1[e inlocuiesc 2/x] aparitiile libere are lui x in e 1 cu e 2? Ex: (λx.λy.(x (y λx.x)) t) λy.(t (y λx.x)). trebuie sa devina Functia identitate ramane functia identitate oricum ii zicem parametrului formal, ceea ce trebuie sa devina t este primul x, iar acea aparitie (nu variabila!) e libera in e1, chiar daca e legata in (λx.e 1 e 2 ).

Notatii Pas de reducere: β o α se noteaza Secventa de reducere: Secventa de reducere: *

Exercitiu (λx.(x z) λz.λx.(z x))

Exercitiu (λx.(x z) λz.λx.(z x)) α (λx.(x z) λt.λx.(t x))

Exercitiu (λx.(x z) λz.λx.(z x)) α (λx.(x z) λt.λx.(t x)) β (λt.λx.(t x) z)

Exercitiu (λx.(x z) λz.λx.(z x)) α (λx.(x z) λt.λx.(t x)) β (λt.λx.(t x) z) β λx.(z x)

Zaharel sintactic λx 1. λx 2. λx 3. λx n.e λx 1 x 2 x 3 x n.e se noteaza ( (λx 1. λx 2. λx n.e p 1 ) p 2 ) p m ) se noteaza (λx 1 x 2 x n.e p 1 p 2 p m ) Noi stim ca e vorba de functii unare si de aplicatiile lor.

Functii curry/uncurryuncurry Ati observat apelul: (λx 1 x 2 x n.e p 1 p 2 p m ) Numarul de parametri formali nu coincide cu numarul de parametri efectivi. Se poate una ca asta? DA! Se poate, iar rezultatul unui astfel de apel este o functie de restul de parametri (formali).

Functii curry/uncurryuncurry Functia curry isi ia parametrii pe rand poate fi aplicata partial (doar pe o parte din parametri) rezultand o noua functie (λx 1 x 2 x n.e p 1 p 2 p m ) * λx m+1 x m+2 x n.e [p 1/x1, p2/x2, pm/xm] Functia uncurry Isi ia obligatoriu toti parametrii deodata

Exemplu (in Scheme) Sa urmarim impreuna cate o functie curry/uncurry pentru adunarea a 2 numere si altele.

Functii curry - concluzii Functii curry reutilizare de cod Sunt suportate de majoritatea limbajelor functionale Desi nu exista nici un motiv ca celelalte limbaje sa nu le aiba, in general nu le au

Forme normale O λ-expresie e in forma normala = nu mai contine niciun β-redex. Are orice λ-expresie o forma normala? Are orice λ-expresie o forma normala? Daca o λ-expresie admite o forma normala, pot garanta gasirea ei? Secvente distincte de reducere pot duce la forme normale distincte?

Observatie raspunsurile la toate intrebarile de mai sus ar trebui sa devina evidente daca ne gandim ca avem de-a face cu un model de calculabilitate: lambdaexpresiile sunt practic programe capabile sa ruleze pe o ipotetica masina Lambda

Are orice λ-expresie o forma normala? NU. Ex: (λx.(x x) λx.(x x))?

λ-expresii (i)reductibile (λx.(x x) λx.(x x)) (λx.(x x) λx.(x x)) (λx.(x x) λx.(x x)) λ-expresie reductibila = admite o secventa finita de reducere care se termina cu o forma normala Altfel: ireductibila

Daca o λ-expresie admite o forma normala, pot garanta gasirea ei? DA. Ex: E 1 = (λx.(x x) λx.(x x)) E 2 = (λx.y E 1 ) y Daca incepeam sa reduc in interiorul E 1 nu mai terminam niciodata.

Teorema normalizarii Daca o λ-expresie este reductibila, atunci voi ajunge la forma ei normala aplicand reducere stanga->dreapta (reducand mereu cel mai din stanga β-redex)

Secvente distincte de reducere pot duce la forme normale distincte? NU. Lema caroului (the diamond lemma) e a a d Daca si atunci d a.i. si e b b d a / \ / \ e d \ / \ / b

Teorema Church-Rosser e * a a * d Daca si atunci d a.i. si e * b b * d Se demonstreaza cu ajutorul lemei caroului. Corolar: Daca o λ-expresie este reductibila, atunci forma normala este unica.

Strategii de evaluare = reguli de evaluare a expresiilor intr-un limbaj de programare 2 mari categorii: Strategii stricte Strategii nestricte

Evaluare/functie stricta/nestricta Evaluare stricta = argumentele unei functii sunt evaluate la apel (inainte ca functia sa fie aplicata) Evaluare nestricta = argumentele unei functii nu sunt evaluate pana ce valoarea lor nu e efectiv necesara undeva in corpul functiei Functie stricta/nestricta = functie care isi evalueaza strict/nestrict argumentele

In practica Limbajele care sunt stricte tind sa aiba si cateva functii cu evaluare nestricta Ex: Scheme (if, and, or)

Strategii stricte Evaluare aplicativa: la intalnirea unui redex (λx. e 1 e 2 ), mai intai se reduce e 2 cat de mult se poate Call by value: argumentul e evaluat inainte de a fi pasat functiei; functiei i se da o copie a valorii rezultate in urma evaluarii (Pascal, C, Java, Scheme, Ocaml etc) Call by reference: functiei i se paseaza o referinta la argument; in principiu asta inseamna ca il poate modifica (Perl, Visual Basic; C simuleaza cu ajutorul pointerilor)

Strategii nestricte Evaluare normala: evaluare stanga- >dreapta; difera de call by name prin aceea ca face evaluari in corpul functiilor inca neaplicate Call by name: argumentele nu se evalueaza deloc, se transmit ca atare si, daca e nevoie de ele, se reevalueaza de fiecare data cand e nevoie (lent dar sigur) Call by need: un call by name in care prima evaluare stocheaza rezultatul intr-un cache (va fi luat de acolo cand va mai fi nevoie de el) (Haskell, R)