1 / 22

Lógicas Combinatoriais e Implementações

Lógicas Combinatoriais e Implementações. Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco. Lógica Combinatorial. Moses Schönfinkel - 1920 Eliminação das variáveis da lógica de primeira ordem

raquel
Download Presentation

Lógicas Combinatoriais e Implementações

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. Bracket Abstraction Algorithm Schönfinkel - 1924 [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)

  5. Bracket Abstraction Algorithm Exemplo: S =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)))

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

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

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

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

  10. Bracket Abstraction Algorithm Turner - 1979 [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), sea Cte [x] (a b) = C ([x] a) b, se b Cte [x] (a b) = S ([x] a) ([x] b)

  11. Bracket Abstraction Algorithm Turner - 1979 [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

  12. Combinadores de Turner 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)

  13. Máquina de Turner • Máquina de redução de Grafospara interpretar as expressões de combinadores • Stack: próximo combinador mais a esquerda • unwindlocal após cada redução

  14. Máquina de Turner • Operador de ponto fixo explícito Y x=> x (Y x) • Estratégiaknot-tieingpara manipulação de grafos @ y x @ y @ y x @ y

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

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

  17. A Máquina G • 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. : @ @ @ square list 0 list 0 @ suc • list 0, where list n =square n : list (suc n) • square x = x * x • suc x = x + 1

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

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

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

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

More Related