Cálculo Lâmbda (l – Calculus)

Slides:



Advertisements
Apresentações semelhantes
Python: Funções Claudio Esperança.
Advertisements

Capítulo 1 A linguagem da Lógica Proposicional
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Lógica Proposicional-1
Elsa Carvalho 49 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
Capítulo 2 - Derivadas No final do capítulo 1, já definimos o coeficiente angular de uma curva y = f(x) no ponto onde x = x0. Chamamos esse limite, quando.
Desigualdades e inequações em R.
Nice Maria Americano da Costa
MÉTODOS MATEMÁTICOS EM BIOLOGIA
Ivan Saraiva Silva Aula 1 - Álgebra Booleana
Curso Superior de Tecnologia em Automação Industrial Prof. Leo Weber
Medida do Tempo de Execução de um Programa
autômatos finitos com transições e
Curso Sistemas de Informação Disciplina: Arquitetura de Software
02(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
05(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Construção de Compiladores
Introdução ao -calculus
00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Lógica para Computação
Estudo dos Intervalos.
Introdução aos Sistemas de Controle
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Prolog Programação Lógica Ícaro A. Souza.
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Informática Teórica Engenharia da Computação
Linguagem de Programação II Parte IX
Aula 13 Derivação Implícita, derivadas das funções trigonométricas inversas e derivadas de funções logarítmicas.
Gramáticas Livres de Contexto
Informática Teórica Engenharia da Computação
Introdução a Programação
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
Estudo dos Intervalos.
Ling. Formais e Autômatos AFN-ε
Implementação de Linguagens Funcionais
Estudo dos Conceitos e Paradigmas de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma funcional.
Funções de várias variáveis
1 O  -Cálculo & Linguagens Funcionais Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil.
Polinômios e equações algébricas
Cálculo Lambda (l – Calculus)
Programação Funcional
Lambda Cálculo & Programação Funcional
O que são? (clique para passar os slides)
Fundamentos de linguagens de programação
Aritmética Em Prolog podemos fazer uso de operadores aritméticos não lógicos pré-definidos pelo sistema, como por exemplo >, >=, +, *, -, etc. A interrogação.
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Algoritmos.
Lógica de 1ª Ordem.
Potenciação an = a . a . a a (a ≠ 0) n fatores onde: a: base
Disciplina Engenharia da Qualidade II
Folha de Cálculo Professor: Pedro Lopes Ano Lectivo 2010/2011.
Sintaxe de uma Linguagem
EM406D UNICAMPAula : Torção em Seções Genéricas Torção em Seção Genéricas.
Cálculo Diferencial e Integral I
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Vinicius Ponte Machado
ESCALA.
Álgebra de Boole Circuitos Digitais
1.4 - Limites de Expressões Indeterminadas
Álgebra Booleana e Circuitos Lógicos Em 1854, George Boole introduziu o formalismo que até hoje se usa para o tratamento sistemático da lógica, que é.
Unidade 3 – sistemas lineares
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
Comportamento Assintótico
Resolução de equações EQUAÇÕES DO 1º GRAU.
Trabalhando as funções Colégio Juvenal de Carvalho 2013 Fonte pesquisa :
Transcrição da apresentação:

Cálculo Lâmbda (l – Calculus) João Bosco da Mota Alves Programação Funcional INE/CTC/UFSC Junho/2001

João Bosco da Mota Alves Notação Lâmbda Às vezes, precisa-se definir pequenas funções, sem dar-lhes nomes Exemplo Calcular x2+3x+1, para x Î [1..100] Claro, é possível usar-se Ys = map f [1 .. 100] where f x = x*x + 3 * x + 1 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves Notação Lâmbda Há uma notação (l-notation) que cria função sem dar-lhe nome, \padrão -> expressão Conhecida como Notação Lâmbda O símbolo \ é o mais parecido com l Então \x -> x*x + 3*x + 1 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves Notação Lâmbda Lê-se, \x -> x*x + 3*x + 1, como “a função que, dado o argumento x, calcula o valor x*x + 3*x + 1” Muito usada para a passagem de função como parâmetro; exemplo ys = map (\x -> x*x + 3*x + 1) [1 .. x] INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves Notação Lâmbda Em XLISPWIN > #' (lambda (x) (+ x 3)) #<Closure: #484facad> > (funcall * 5) 8 > (mapcar #' (lambda (x) (+ x 2)) '(1 2 3 4 5)) (3 4 5 6 7) INE/CTC/UFSC João Bosco da Mota Alves

l – Calculus consiste de Uma linguagem, a notação – l Que nos dá expressões lâmbda E regras Para simplificar e manipular essas expressões lâmbda Precisamos, então, aprender tanto a linguagem quanto as regras INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Suponha que f : R -> R seja definida por f(x) = (x + 1)2 Uma função de uma variável, f(x) f(a), para um a específico, é obtido substituindo-se, por a, todas as ocorrências de x Também, f(x) a, aplicação de f(x) a a INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Então f(x) 3 = (3 + 1)2 = 16 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Suponha, agora, f : R´R -> R, definida por f(x,y) = x + y + (2*x*y) Aqui, f é um par de nos reais, (x,y) Dizemos que f é uma função de duas variáveis, x e y f(a,b) pode ser obtido substituindo-se por a e b as ocorrências de x e y, resp INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Então f(x,y) 3 5 = 3 + 5 + (2*3*5) = 38 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Entretanto, há outra forma de se pensar a aplicação de função Ao invés de aplicar-se às duas variáveis simultaneamente, aplica-se à apenas uma de cada vez Primeiro, f(x,y) 3 = 3 + y + (6*y) = g(y) Depois g(y) 5 = 3 + 5 + (6*5) = 38 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus É sempre possível transformar uma função de n variáveis em uma função de (n – 1) variáveis, aplicando-a para um valor de um de seus argumentos Esta importante técnica é conhecida como currying E é usada na aplicação de função em cálculo lâmbda INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Seja, f : R´R ´R -> R, definida por f(x,y,z) = x + y + z Computando f(2,5,4) f(x,y,z) 2 5 4 Þ 2 + y + z Þ f(2,y,z) 5 4 Þ 2 + 5 + z Þ f(2,5,z) 4 Þ 2 + 5 + 4 Þ 11 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus A notação lâmbda é uma linguagem de primeira ordem, com Conjunto de nomes de variáveis, V Conjunto de constantes pré-definidas, C Átomo Todo membro de V e de C é um átomo Ex.: 2, ana INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Expressão lâmbda, L, é definida por Cláusula Básica Todo átomo pertence a L Cláusula Indutiva Se E1, E2 Î L, então (E1 E2) Î L (Regra de aplicação: E1, operador; E2, operando) Se E Î L e v Î V, então (lv.E) Î L (Abstração lâmbda) INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Cláusula Extrema Uma expressão não é uma expressão lâmbda a menos que possa ser mostrada pertencer a L, pela aplicação das cláusulas básica e indutiva, em um número finito de vezes INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Na meta-linguagem BNF <exp> ::= <constante> | <variável> | (<exp> <exp>) aplicação | (l <variável> <exp>) l-abstração INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Ex.: x, z2, 2, 3 e +, são expressões lâmbda que são átomos, pois x, z2 Î V 2, 3, + Î C INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Como x e 2 são expressões lâmbda, então também o são (pela regra da aplicação) (x 2) ((x 2) 2) (x (2 2)) INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Para eliminar parênteses, pode-se estabelecer convenções Associação à esquerda, por exemplo E1 E2 E3 = (E1 E2 E3) = ((E1 E2) E3) Note que (E1 (E2 E3)) ¹ E1 E2 E3 INE/CTC/UFSC João Bosco da Mota Alves

Simplificações (l – Calculus) ((+ x) y) Þ + x y (((+ x) y) z) Þ + x y z ((x (3 (z 5))) 4) Þ x (3 (z 5)) 4 (x (((3 z) 5) 4)) Þ ? INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus O poder expressivo do cálculo lâmbda, vem das expressões lâmbda geradas pelo uso da regra de aplicação Exemplo de abstrações lâmbda (l x. 2) (l x. (+ x 3)) (l x. x) (l x. (l y. (+ x y))) INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus A variável v de uma abstração lâmbda lv. E é chamada de parâmetro formal A expressão E é chamada de corpo da expressão lâmbda Também podemos ter variáveis livres A variável y, abaixo, é livre; x, não lv. (+ x y) INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Informalmente, a proposta de uma abstração lâmbda lv. E é fazer uma função de um argumento, v, a partir de uma expressão lâmbda E A função, propriamente dita é o corpo A expressão lâmbda lx. (+ x 3) é lida como a função de x que adiciona x a 3 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Abstração lâmbda tem associação à esquerda lx. ly. E = lx. (ly. E) = (lx. (ly. E)) lx. ly. (+ x y) 2 = (lx. (ly. (+ x y) 2)) ¹ (lx. ly. (+ x y)) 2 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Já a l-expressão lx. ly. (+ x y) é lida como a função de x que é a função de y que adiciona x a y INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves l – Calculus Seja lx. (+ x 3) Trocando-se x por y, obtem-se a mesma função ly. (+ y 3) Se aplicada a 5, as duas avaliam 8 lx. (+ x 3) 5 = ly. (+ y 3) 5 = 8 Precisa-se de regras de conversão que mostre a equivalência entre l-exp INE/CTC/UFSC João Bosco da Mota Alves

Regras de conversão em l – Calculus a-conversão Uma variável vinculada pode ser consistentemente renomeada, em uma l-expression, se não houver ocorrência livre da mesma lx. (+ x 3) renomeada para ly. (+ y 3) lx. (+ x y) renomeada para lz. (+ z y) Mas não lx. (+ x y) para ly. (+ y y) INE/CTC/UFSC João Bosco da Mota Alves

Regras de conversão em l – Calculus b-conversão A l-expression (lx. E) E’, pode ser reduzida pela substituição, por E’, em todas as ocorrências de x no corpo E, desde que E’ não tenha ocorrência livre da mesma (lx. (+ x 5) 3) reduzida para (+ 3 5) = 8 (lx. ly. (+ x y)) 3 5 para (+ 3 5) = 8 INE/CTC/UFSC João Bosco da Mota Alves

Regras de conversão em l – Calculus (lx. ly. (+ x y)) 3 5 Þ ((lx. (ly. (+ x y))) 3) 5 Þ (ly. (+ 3 y)) 5 Þ (+ 3 5) Þ 8 Viu como a expressão lâmbda tem associação à esquerda? INE/CTC/UFSC João Bosco da Mota Alves

Regras de conversão em l – Calculus A expressão redex significa reducible expression, ou expressão redutível Uma forma normal de redução surge quando se usa a associação à esquerda Ex.: faça por associação à esquerda e à direita, e veja que o resultado é 11 (lx. ly. (+ x y (ly. (+ z 1)) 3)) 2 5 INE/CTC/UFSC João Bosco da Mota Alves

João Bosco da Mota Alves Redex Função identidade como l-expressão (lx. x) 2 = 2 (lx. x) p = p Ou mesmo, INE/CTC/UFSC João Bosco da Mota Alves