lógicas combinatoriais e implementações

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

Upload: raquel

Post on 31-Jan-2016

66 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lógicas Combinatoriais e Implementações

Lógicas Combinatoriais eLógicas Combinatoriais eImplementaçõesImplementações

Rafael Dueire LinsRafael Dueire Lins

Departamento de Informática

Universidade Federal de Pernambuco

Page 2: Lógicas Combinatoriais e Implementações

Lógica CombinatorialLógica Combinatorial

Moses Schönfinkel - 1920• Eliminação das variáveis da lógica Eliminação das variáveis da lógica

de primeira ordemde primeira ordem

• Combinação de funções constantes Combinação de funções constantes ((combinadorescombinadores) através de ) através de aplicaçõesaplicações

Haskell B. Curry• Redescobriu a lógica combinatorialRedescobriu a lógica combinatorial

Page 3: Lógicas Combinatoriais e Implementações

Evita o problema da capturaEvita o problema da captura

x.(x.(y.yy.yxx)) y)) y

[y/x] [y/x] x.(x.(y.yy.yxx)) = )) = y.yy.yyy

Equivalente ao Equivalente ao -Calculus-Calculus• Bracket Abstraction Bracket Abstraction AlgorithmAlgorithm Expressão Expressão em combinadores SKem combinadores SK

Lógica CombinatorialLógica Combinatorial

Page 4: Lógicas Combinatoriais e Implementações

[[xx]] == x x

[[a ba b]] == [[aa]] [[bb]]

[[x.ax.a]] == [[xx]] [[aa]]

[[xx]] x x == S K K S K K

[[xx]] y y == K y K y,, se x se x y é var e Cy é var e Ctete

[[xx]] (ab) (ab) == S ( S ([[xx]] a) ( a) ([[xx]] b) b)

Bracket Abstraction AlgorithmBracket Abstraction AlgorithmSchönfinkel - 1924Schönfinkel - 1924

Page 5: Lógicas Combinatoriais e Implementações

S S == a.a.b.b.c.ac (bc)c.ac (bc)

[[aa] ] (([[bb] ] (([[cc] ] ac (bc)))ac (bc)))

== [ [aa] ] (([[bb] ] (S((S([[cc] ] ac) (ac) ([[cc]] bc))) bc)))

== [ [aa] ] (([[bb] ] (S( S ((S( S ([[cc] ] a) (a) ([[cc] ] c)) c)) (S ((S ([[cc]] b) ( b) ([[cc]] c))) c)))

== [ [aa] ] (([[bb] ] (S( S (K a(S( S (K a) (SKK) ) (SKK) (S (K b) (SKK)))(S (K b) (SKK)))

Bracket Abstraction AlgorithmBracket Abstraction Algorithm

Exemplo:Exemplo:

Page 6: Lógicas Combinatoriais e Implementações

Y Y == f.(f.(y.f(yy))(y.f(yy))(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 AlgorithmBracket Abstraction Algorithm

Exemplo:Exemplo:

Page 7: Lógicas Combinatoriais e Implementações

K a b K a b =>=> a a

S a b c S a b c =>=> a c (b c) a c (b c)

I a => aI a => a

aplicação: associativa a esquerdaaplicação: associativa a esquerda

abc = (ab) cabc = (ab) c

Regras de ReduçãoRegras de Redução

Page 8: Lógicas Combinatoriais e Implementações

SASL (SASL (St. Andrews Static LanguageSt. Andrews Static Language)) Interpretador 1a linguagem para ensino Utilizou SECD

Primeiro a explorar a tradução de Primeiro a explorar a tradução de linguagens funcionais para linguagens funcionais para combinadorescombinadores

Máquina de Turner Máquina de Turner

Page 9: Lógicas Combinatoriais e Implementações

Lógica combinatorial puraLógica combinatorial pura

S, K e I Explosão exponencial do código

Grande conjunto de combinadoresGrande conjunto de combinadores

Evita a geração de K Novo algoritmo de abstração Expansão quadrática do código

Máquina de Turner Máquina de Turner

Page 10: Lógicas Combinatoriais e Implementações

[[xx]] == x x[[a ba b]] == [[aa]] [[bb]][[x.ax.a]] == [[xx]] [[aa]][[xx]] x x == I I[[xx]] y y == K y K y, , xx yy é var e C é var e Ctete

[[xx]] (a b) (a b) == B a ( B a ([[xx]] b) b), se, se aa C Ctete

[[xx]] (a b) (a b) == C ( C ([[xx]] a) b a) b,, se se bb C Ctete

[[xx]] (a b) (a b) == S ( S ([[xx]] a) ( a) ([[xx] ] b)b)

Bracket Abstraction AlgorithmBracket Abstraction AlgorithmTurner - 1979Turner - 1979

Page 11: Lógicas Combinatoriais e Implementações

[[xx]] ((a b) c) ((a b) c) == B1 a b ( B1 a b ([[xx]] c) c), , a a ee b b CCtete

[[xx]] ((a b) c) ((a b) c) == C1 a ( C1 a ([[xx]] b) c b) c, , a a ee c c CCtete

[[xx]] ((a b) c) ((a b) c) == S1 a ( S1 a ([[xx]]b) (b) ([[xx]]c)c), , a a CCtete

Bracket Abstraction AlgorithmBracket Abstraction AlgorithmTurner - 1979Turner - 1979

Page 12: Lógicas Combinatoriais e Implementações

I I x x x x

K K c x c x ccS S f g x f g x f x (g x)f x (g x)

B B f g x f g x f (g x)f (g x)

C C f g x f g x f x gf x g

S1 S1 c f g x c f g x c (f x) (g x)c (f x) (g x)

B1 B1 c f g x c f g x c f (g x)c f (g x)

C1 C1 c f g x c f g x c (f x) gc (f x) g

Y Y x x x (x (YY x) x)

Combinadores de TurnerCombinadores de Turner

Page 13: Lógicas Combinatoriais e Implementações

Máquina de redução de GrafosMáquina de redução de Grafos para interpretar as expressões de combinadores

StackStack: : próximo combinador mais a esquerda

unwindunwind local após cada redução

Máquina de Turner Máquina de Turner

Page 14: Lógicas Combinatoriais e Implementações

Operador de ponto fixo explícito

Y Y xx => => x (x (Y Y x) x)

Estratégia knot-tieingknot-tieing para manipulação de grafos

Máquina de Turner Máquina de Turner

@@

y xy x

@@

y @y @

y xy x

@@

yy

Page 15: Lógicas Combinatoriais e Implementações

De interpretação `a CompilaçãoDe interpretação `a Compilação

Cardelli (1983) - FAMCardelli (1983) - FAM Linguagens Funcionais estritasLinguagens Funcionais estritas

Johnsson (1987) - Máquina GJohnsson (1987) - Máquina GMelhores características da Melhores características da

máquina máquina SECDSECD e a máquina de e a máquina de TurnerTurner

Page 16: Lógicas Combinatoriais e Implementações

A Máquina GA Máquina G

Johnsson (1987) - ChalmersJohnsson (1987) - Chalmers

Funciona como um interpretador com Funciona como um interpretador com geração de grafos preguiçosageração de grafos preguiçosa

Primeira implementação Primeira implementação eficienteeficiente para linguagem funcional preguiçosapara linguagem funcional preguiçosa

O grafo é gerado apenas quando O grafo é gerado apenas quando necessárionecessário

Page 17: Lógicas Combinatoriais e Implementações

A Máquina GA Máquina G

A forma de controlar o fluxo de A forma de controlar o fluxo de execução e avaliação foi seguida por:execução e avaliação foi seguida por:

Spineless G-MachineSpineless G-Machine Spineless Tagless G-MachineSpineless Tagless G-Machine TIMTIM GM-CGM-C

Page 18: Lógicas Combinatoriais e Implementações

listlist 0 0, where, where

listlist n n == squaresquare n n :: list list ((sucsuc n n)) squaresquare x x == x x ** x x sucsuc x x == x x ++ 1 1

0list

@

suc

0@square

@

list

@

::

Page 19: Lógicas Combinatoriais e Implementações

0

suc

0 @list

@: Output: 0

suc

0 @list

@

suc

@square

@

list

@:

0suc

@

0

1

suc

1 @list

@:0

Page 20: Lógicas Combinatoriais e Implementações

Máquinas CategóricasMáquinas Categóricas

Teoria das CategoriasTeoria das Categorias• Teoria de funções útil para Teoria de funções útil para

implementar linguagens funcionaisimplementar linguagens funcionais

Combinadores CategóricosCombinadores Categóricos• CAM: máquina de pilhaCAM: máquina de pilha

Page 21: Lógicas Combinatoriais e Implementações

Lins• Implementações baseadas em Implementações baseadas em

Multi-Combinadores CategóricosMulti-Combinadores Categóricos

• C foi usado como um macro-C foi usado como um macro-assemblerassembler¨ PortabilidadePortabilidade¨ SimplicidadeSimplicidade¨ EficiênciaEficiência

• Controle de Fluxo Controle de Fluxo - - Máquina AbstrataMáquina Abstrata

Máquinas CategóricasMáquinas Categóricas

Page 22: Lógicas Combinatoriais e Implementações

CMCCMC

Controle de fluxo em Controle de fluxo em CC Funções EspeciaisFunções Especiais

• Funções estritas em todos seus Funções estritas em todos seus argumentos que produz tipos argumentos que produz tipos básicos como resultadobásicos como resultado

• Traduzida diretamente para CTraduzida diretamente para C

• Vantagens do rápido chaveamento Vantagens do rápido chaveamento de contexto das máquinas RISCde contexto das máquinas RISC

• Expressões AritméticasExpressões Aritméticas