lógicas combinatoriais e implementações rafael dueire lins departamento de informática...

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: luciana-alvarenga-chaves

Post on 07-Apr-2016

219 views

Category:

Documents


3 download

TRANSCRIPT

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

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

Rafael Dueire LinsRafael Dueire LinsDepartamento de Informática

Universidade Federal de Pernambuco

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

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

Evita o problema da capturaEvita o problema da capturax.(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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

[[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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 esquerdaabc = (ab) cabc = (ab) c

Regras de ReduçãoRegras de Redução

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

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

[[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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

[[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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 gS1 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) gY Y x x x (x (YY x) x)

Combinadores de TurnerCombinadores de Turner

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

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

0

suc0 @list

@: Output: 0

suc0 @list

@

suc

@square

@list

@:

0suc

@

0

1

suc1 @list

@:0

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

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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 Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco

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