A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco.

Apresentações semelhantes


Apresentação em tema: "Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco."— Transcrição da apresentação:

1 Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

2 Lógica Combinatorial n n Moses Schönfinkel - 1920 Eliminação das variáveis da lógica de primeira ordem Eliminação das variáveis da lógica de primeira ordem Combinação de funções constantes (combinadores) através de aplicações Combinação de funções constantes (combinadores) através de aplicações n n Haskell B. Curry Redescobriu a lógica combinatorial Redescobriu a lógica combinatorial

3 n Evita o problema da captura  x.( y.yx)) y   [y/x]  x.( y.yx)) = y.yy Equivalente ao -Calculus Equivalente ao -Calculus Bracket Abstraction Algorithm Bracket Abstraction Algorithm  Expressão  em combinadores SK Lógica Combinatorial

4 [ x] = x [ a b] = [ a] [ b] [ x.a ] = [x ] [a ] [x ] x = S K K [x ] y = K y, se x  y é var e Cte [x ] (ab) = S ([x ] a) ([x ] b) Bracket Abstraction Algorithm Schönfinkel - 1924

5 S = a. b. c.ac (bc) [ a] ([ b] ([ c] ac (bc))) [ a] ([ b] ([ c] ac (bc))) = [ a] ([ b] (S([ c] ac) ( [ c] bc))) = [ a] ([ b] (S( S ([ c] a) ([c] c)) (S ( [ c] b) ([c] c))) = [ a] ([ b] (S( S (K a ) (SKK) (S (K b) (SKK))) Bracket Abstraction Algorithm Exemplo:

6 Y = f.( y.f(yy))( y.f(yy)))...... = (S(S(KS)(S(KK)(SKK))) = (S(S(KS)(S(KK)(SKK))) (K(S(SKK)(SKK)))) (K(S(SKK)(SKK)))) (S(S(KS)(S(KK)(SKK))) (S(S(KS)(S(KK)(SKK))) (K(S(SKK)(SKK)))) (K(S(SKK)(SKK)))) Bracket Abstraction Algorithm Exemplo:

7 K a b => a K a b => a S a b c => a c (b c) I a => a aplicação: associativa a esquerda abc = (ab) c Regras de Redução

8 l SASL ( St. Andrews Static Language ) v v Interpretador v v 1a linguagem para ensino v v Utilizou SECD l Primeiro a explorar a tradução de linguagens funcionais para combinadores Máquina de Turner

9 l Lógica combinatorial pura v v S, K e I v v Explosão exponencial do código l Grande conjunto de combinadores v v Evita a geração de K v v Novo algoritmo de abstração v v Expansão quadrática do código Máquina de Turner

10 [ x] = x [ a b] = [ a] [ b] [ x.a ] = [x ] [a ] [x ] x = I [x ] y = K y, x  y é var e Cte [x ] (a b) = B a ([x ] b), se a Cte [x ] (a b) = C ([x ] a) b, se b Cte [x ] (a b) = S ([x ] a) ([x ] b) Bracket Abstraction Algorithm Turner - 1979

11 [x ] ((a b) c) = B1 a b ([x ] c), a e b Cte [x ] ((a b) c) = C1 a ([x ] b) c, a e c Cte [x ] ((a b) c) = S1 a ([x ] b) ([x ] c), a Cte Bracket Abstraction Algorithm Turner - 1979

12 I x  x K c x  c S f g x  f x (g x) B f g x  f (g x) C f g x  f x g S1 c f g x  c (f x) (g x) B1 c f g x  c f (g x) C1 c f g x  c (f x) g Y x  x (Y x) Combinadores de Turner

13 l Máquina de redução de Grafos l Máquina de redução de Grafos para interpretar as expressões de combinadores l Stack: l Stack: próximo combinador mais a esquerda l unwind l unwind local após cada redução Máquina de Turner

14 l l Operador de ponto fixo explícito Y x => x (Y x) Y x => x (Y x) l knot-tieing l Estratégia knot-tieing para manipulação de grafos Máquina de Turner @ y x @ y @ y x y x @y

15 De interpretação `a Compilação n Cardelli (1983) - FAM v Linguagens Funcionais estritas n Johnsson (1987) - Máquina G vMelhores características da máquina SECD e a máquina de Turner

16 A Máquina G l Johnsson (1987) - Chalmers l Funciona como um interpretador com geração de grafos preguiçosa l Primeira implementação eficiente para linguagem funcional preguiçosa l O grafo é gerado apenas quando necessário

17 A Máquina G l A forma de controlar o fluxo de execução e avaliação foi seguida por:  Spineless G-Machine  Spineless Tagless G-Machine  TIM  GM-C

18  list 0, where list n = square n : list (suc n) list n = square n : list (suc n)  square x = x * x  suc x = x + 1 0 list @ suc 0 @ square @ list @ :

19 0 suc 0 @ list @ : Output: 0 suc 0 @ list @ suc @ square @ list @ : 0 suc @ 0 1 1 @ list @ : 0

20 Máquinas Categóricas n Teoria das Categorias Teoria de funções útil para implementar linguagens funcionaisTeoria de funções útil para implementar linguagens funcionais n Combinadores Categóricos CAM: máquina de pilhaCAM: máquina de pilha

21 n n Lins Implementações baseadas em Multi-Combinadores CategóricosImplementações baseadas em Multi-Combinadores Categóricos C foi usado como um macro- assemblerC foi usado como um macro- assembler ¨ Portabilidade ¨ Simplicidade ¨ Eficiência Controle de Fluxo - Máquina AbstrataControle de Fluxo - Máquina Abstrata Máquinas Categóricas

22  CMC n Controle de fluxo em C n Funções Especiais Funções estritas em todos seus argumentos que produz tipos básicos como resultadoFunções estritas em todos seus argumentos que produz tipos básicos como resultado Traduzida diretamente para CTraduzida diretamente para C Vantagens do rápido chaveamento de contexto das máquinas RISCVantagens do rápido chaveamento de contexto das máquinas RISC Expressões AritméticasExpressões Aritméticas


Carregar ppt "Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco."

Apresentações semelhantes


Anúncios Google