1 O  -Cálculo & Linguagens Funcionais Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil.

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Advertisements

Departamento de Informática Universidade Federal do Espírito Santo
Lógica de Predicados e Representação de Conhecimento
Software Básico Silvio Fernandes
Computação Gráfica I Conteúdo: Professor: - Objetos gráficos espaciais
Programação em Java Prof. Maurício Braga
3 Paradigmas e Linguagens de Programação
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
Unidade 7 SEQUÊNCIAS E REGULARIDADES
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Linguagem de Montagem Visão geral.
Protótipo de Simulador de Elevadores
Linguagens Formais e Autômatos
Teoria da Computação FIC– Ciência da Computação
Lógica de Primeira Ordem -1
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
Ivan Saraiva Silva Aula 1 - Álgebra Booleana
Lógicas em Dedução Natural
Teste em Esquemas de Dados Maria Cláudia Figueiredo Pereira Emer Universidade Federal do Paraná Departamento de Informática Seminário.
Recursividade Inhaúma Neves Ferraz
BCC 101– Matemática Discreta
Programação em lógica e lógica
LINGUAGEM C.
INTRODUÇÃO À PROGRAMAÇÃO
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
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.
Introdução ao -calculus
00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Linguagem de 1ª ordem da teoria de conjuntos
Expressão algébrica a partir da representação gráfica da função
Como aplicar leis da lógica
Lógica de Predicados Teorema de Herbrand.
Estrutura de dados, pseudocódigo
Gramáticas Livres de Contexto
Informática Teórica Engenharia da Computação
Conceitos de Lógica Digital
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Capítulo 11 Programação Lógica
Conjuntos (continuação)
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 Apresentação de LF1.
Linguagem de Expressões 2
Teorema de Herbrand e Unificação
Objectivos, Programa, Bibliografia e Avaliação
1.
Máquina de Turing Universal
Paradigma funcional.
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Campus de Caraguatatuba
1 TEORIA DA COMPUTAÇÃO Motivação Licenciatura em Ciência e Tecnologia da Computação Licenciatura em Engenharia Informática e de Computadores (Prep.)
Cálculo Lambda (l – Calculus)
Lambda Cálculo & Programação Funcional
Cálculo Lâmbda (l – Calculus)
Noções de lisp Lisp: LISp Processing J.M.Barreto INE-CTC-UFSC.
Sintaxe de uma Linguagem
Semântica em Linguagens de Programação Semântica Denotacional
Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos Parte 2.
Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.
Universidade Estadual de Santa Cruz Conceitos de Linguagens de Programação Aluno: Pedro Arthur M. Nascimento Ilhéus-Ba, 05 de Novembro de 2012.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
LÓGICA DE PROGRAMAÇÃO Curso: Técnico em Informática Professor: Ronaldo Disciplina: Lógica de Programação.
Transcrição da apresentação:

1 O  -Cálculo & Linguagens Funcionais Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil

2 Motivação: O  -Cálculo é fundamental para o conceito de computabilidade. O  -Cálculo é fundamental para o conceito de computabilidade. n Ele servirá como linguagem intermediária no nosso estudo. Uma linguagem funcional será descrita sobre o  -Cálculo. Uma linguagem funcional será descrita sobre o  -Cálculo. n Serão analisados mecanismos de avaliação de expressões.

3 Programa: Lunes: Introdução ao -Cálculo. Lunes: Introdução ao -Cálculo. Martes: O -Cálculo como uma linguagem de programação. Martes: O -Cálculo como uma linguagem de programação. n Miercoles: Lógica Combinatorial. n Jueves: Garbage Collection. n Viernes:The Fall and Rise of Functional Programming.

4 Introdução l l John Backus Crise de SoftwareCrise de Software Gargalo de von-NeumannGargalo de von-Neumann l l Linguagens Funcionais Sintaxe mais agradável do que a do Lambda-CalculusSintaxe mais agradável do que a do Lambda-Calculus Programação com funçõesProgramação com funções LISP (1960) foi a primeira linguagem funcionalLISP (1960) foi a primeira linguagem funcional

5 Programação Funcional l l Funções de Alta-Ordem Funções são cidadãs de primeira classeFunções são cidadãs de primeira classe l l Transparência Referencial Ausência de assinaladores destrutivos (Linguagens Puras)Ausência de assinaladores destrutivos (Linguagens Puras)

6 O -Cálculo l l Alonzo Church (1930) l Lógica de Alta-Ordem l Parte de um sistema para Lógica de Alta-Ordem l Peano-Russell l Fundação matemática (Peano-Russell) l l Inconsistente como Teoria Fundacional

7 O -Cálculo l l Subconjunto funcional consistente. definibilidade no -Cálculo computabilidade Turing (1936) unificou os conceitos de definibilidade no -Cálculo e de computabilidade l l Linguagens funcionais são sintaxes “mais bonitas”

8 O -Cálculo l Sintaxe:  expr  ::   variável   expr  ::   variável  |  constante  |  expr  expr  | variavel .  expr  Exemplos: id x  x  x.x id x  x  x.x Proj x y z  y  x y z.y Proj x y z  y  x y z.y

9 O -Cálculo l l Semântica Operacional: Variáveis Livres e Ligadas - x é dita livre em uma expressão- M se: - x é dita livre em uma expressão- M se: 1. M = x 2. M = y.N se x ocorrer livre em N e x!= y 3. M = N O se x ocorrer livre tanto em N quanto em O

10 O -Cálculo l l Semântica Operacional: A Conversão-  - Trocando o nome de uma variável - Trocando o nome de uma variávelligada x.x  y.y

11 O -Cálculo l l Semântica Operacional: A Conversão-  - Substituição de parâmetros reais por parâmetros formais - Substituição de parâmetros reais por parâmetros formais ( x.t ) s   [ s / x ] t onde [ s / x ] t significa t com cada ocorrência livre de x substituída por s

12 O -Cálculo l Semântica Operacional: A Conversão- A Conversão- Exemplo: ( x y z.xyz)( a b c.a(bc))( f.f)   ( y z.( a b c.a(bc)yz)( f.f)   ( z.( a b c.a(bc))( f.f)z)   ( z.( b c.( f.f)(bc))z)

13 O -Cálculo l Semântica Operacional: A Conversão- A Conversão-  - Condição de extensionalidade do sistema - Condição de extensionalidade do sistema ( x.  x )    se não houver nenhuma ocorrência de x livre em 

14 O -Cálculo l Exemplos de redução: 1. ( a. b.a)( i.i)c 2. ( a.aa) ( a.aa) 3. ( a.aaa) ( a.aaa) 4. ( a. b.a)( i.i) (( a.aaa) ( a.aaa)) 8

15 O -Cálculo l Teoremas de Church-Rosser 1. Formas normais são únicas (módulo conversão-  ) 2.  -reduzir a expressão mais externa e mais à esquerda a cada ponto numa sequência de reduções leva a forma normal, se ela existir.

16 O -Cálculo l Captura Reduções-  realizadas de forma incorretaReduções-  realizadas de forma incorreta Exemplo: ( x.( y.yx))y  [y/x]( y.yx)  y.yy Solução trivial: conversão- 

17 O -Cálculo de DeBruijn: l Evita Captura. l O nome das variáveis não é importante. l O que importa é a distância sintática entre as variáveis e seus limitadores. l Utilizado em Provadores de Teoremas (Automath) e linguagens de programação.

18 Amanhã: O -Cálculo servirá como base para uma linguagem de programação. O -Cálculo servirá como base para uma linguagem de programação.