SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Type based termination of recursive definitions
Rodrigo Ribeiro
21 de fevereiro de 2013
Motivação — (I)
I Terminação é indecidı́vel para linguagens Turing complete.
I Sendo assim, quem se importa com terminação?
I Problema interessante!
I Aplicações em verificação formal:
I Prova de corretude total de programas.
I Uso em assistentes de provas.
Motivação — (II)
I Foco da apresentação: Terminação em assistentes de provas.
I O que é um assistente de provas?
I De maneira simplista: uma linguagem funcional pura onde é
possı́vel desenvolver programas e provas.
I Em tal linguagem, programas podem representar “provas”, e
tipos “fórmulas” lógicas.
I E porquê a terminação importante para assistentes de provas?
I Funções que não terminam tornam a lógica associada ao
assistente de provas inconsistente.
Motivação — (III)
I Considere o seguinte trecho (hipotético) de código em Coq,
onde ? representa um tipo qualquer:
I Fixpoint loop(x : ?) : ? := loop x.
Motivação — (IV)
I Podemos substitutir a primeira ocorrência de ? por nat e a
segunda por False, contruindo assim uma função de tipo nat
→ False.
I Fixpoint loop(x : nat) : False := loop x.
I Sendo assim, o termo loop 1, possui o tipo False.
I Tal termo pode ser interpretado como uma prova da
proposição False, o que torna a lógica inconsistente.
Motivação — (V)
I Assistentes de provas impõe restrições sobre o formato de
definições de funções recursivas, para garantir a terminação.
I Para isso, chamadas recursivas devem ser sempre realizadas
sobre componentes do parâmetro para a função em questão.
I Com isso, funções como loop são rejeitadas:
I Fixpoint loop(x : nat) : False := loop x.
Motivação — (VI)
I Porém, essas restrições evitam a definição de funções úteis e
que terminam para qualquer entrada:
Fixpoint div (n m: nat) :=
match n with
| 0 => 0
| S n’ => S (div (n’ - m) m)
end.
I Outros exemplos: algoritmos sobre listas como mergesort e
quicksort.
Motivação — (VII)
I Visando contornar essas limitações diversos autores propõe a
utilização de sistemas de tipos que para garantir a terminação
de definições recursivas.
I De maneira simplista, o sistema de tipos associa um limite
sobre a altura de valores de um determinado tipo.
I Chamadas recusivas são somente permitidas sobre valores cuja
altura é menor que o parâmetro de entrada da função.
Terminação baseada em tipos — (I)
I Cada tipo de dados d possui uma medida associada.
I Sintaxe de medidas é dada por:
s ::= ι | b
s | ∞
onde ι representa uma variável de medida, o operador b
− é
uma função que associa uma medida a seu sucessor e ∞
corresponde ao limite superior de medidas.
I Relação de subtipagem de medidas: fecho reflexivo e
transitivo das regras
s ≤ b
s s ≤ ∞
Terminação baseada em tipos — (II)
I A sintaxe de tipos é dada por:
τ ::= α | τ → τ | ds τ
onde a representa uma sequência de elementos do conjunto
A = {a1, a2..., an}.
I Relação de subtipagem para tipos: fecho reflexivo e transitivo
das regras
s ≤ r τi v τ0
i 1≤i≤ar(d)
ds τ v dr τ0
τ0
1 v τ1 τ2 v τ0
2
τ1 → τ2 v τ0
1 → τ0
2
Terminação baseada em tipos — (III)
I Exemplos: Considere o tipo Nat que representa números
naturais na representação de Peano:
data Nat = 0 : Natb
s | S : Nats → Natb
s
I O valor S (S 0) possui tipo Nat
b
b
s.
I Mas por subtipagem, possui também os tipos:
I Nat
b
b
b
s
.
I Nat
b
b
b
b
s
.
I . . .
I Nat∞
.
I O tipo Nat∞ é equivalente ao tipo Nat definido em uma
linguagem sem terminação baseada em tipos.
Terminação baseada em tipos — (IV)
I Definições de novos tipos de dados são restritas.
I O tipo de dados:
data D τ =
c1 : A1
...
cn : An
I deve ser tal que cada Ai é da forma:
I B1 → ... → D
I onde cada argumento Bi é tal que
I não menciona o tipo de dados D
I ou possui a forma C1 → ... → D, onde D não ocorre em
nenhum Ci .
Terminação baseada em tipos — (V)
I Condições anteriores evitam que possamos construir loops a
partir de tipos recursivos.
I Exemplo (em Haskell):
data Evil = VeryEvil (Evil -> Evil)
bad :: Evil -> (Evil -> Evil)
bad (VeryEvil f) = f
hell :: Evil -> Evil
hell f = (bad f) f
loop :: Evil
loop = hell (VeryEvil hell)
Terminação baseada em tipos — (VI)
I Evidentemente loop não termina. . .
loop =
hell (VeryEvil hell) =
bad (VeryEvil hell) (VeryEvil hell) =
hell (VeryEvil hell) =
loop = ...
Terminação baseada em tipos — (VII)
I Primeiramente devemos considerar apenas tipos de dados que
respeitam as condições anteriores.
I Tais tipos de dados são ditos possuir ocorrências estritamente
positivas e são normalmente denominados tipos de dados
indutivos.
I Coq e Agda permitem apenas definições de tipos de dados
indutivos.
Terminação baseada em tipos — (VIII)
I Com isso vimos a intuição do sistema de tipos para
terminação:
I Associar medidas a definições de tipos.
I Somente permitir tipos de dados indutivos.
I Basicamente o sistema de tipos consiste do λ−cálculo tipado
simples com subtipagem, recursão e tipos de dados algébricos.
I Única modificação necessária: Permitir a chamadas recursivas
somente a termos de medida menor.
Terminação baseada em tipos — (IX)
I Sistema de tipos.
I Regras idênticas ao do λ-cálculo.
x : τ ∈ Γ
Γ ` x : τ
(var)
Γ ` e : τ τ v τ0
Γ ` e : τ0
(sub)
Γ , x : τ ` e : τ0
Γ ` λx.e : τ → τ0
(abs)
Γ ` e1 : τ → τ0 Γ ` e2 : τ
Γ ` e1 e2 : τ0
(app)
Terminação baseada em tipos — (X)
I Regras para lidar com recursão e tipos de dados.
C(ck) = τ1 → ... → Db
s α
Γ ` ck : τ1 → ... → Db
s α
(con)
Γ ` e : D
b
i τ
C(ck) = τ1 → ... → Db
s α
Γ ` ek : τ1 → ...[α 7→ τ, i 7→ s] → τ0
Γ ` case e of {c1 ⇒ e1 | ... | cn ⇒ en} : τ0
(case)
Γ, f : Di τ → ... → τ0 ` D
b
i τ → ... → τ0[i 7→ b
i]
Γ ` let f = e : Ds τ → ... → τ0[i 7→ s]
(rec)
Terminação baseada em tipos — (XI)
I Propriedades do sistema de tipos
I Subject Reduction: Se Γ ` e : τ e e →βιµ e0
então Γ ` e0
: τ.
I Normalização forte: Todo termo bem tipado pode ser reduzido
a sua forma normal em um número finito de passos.
I Demonstrações detalhadas de todas as propriedades do sistema
de tipos.
I Formalização das restrições sintáticas utilizadas atualmente
em assistentes de provas
Terminação baseada em tipos — (XII)
I Idéias para trabalhos
I Iniciar a implementação de uma linguagem com dependent
types utilizando terminação baseada em tipos.
I Perguntas?

Mais conteúdo relacionado

Mais procurados (12)

Resolução 2ª questão lista de exercícios
Resolução 2ª questão lista de exercíciosResolução 2ª questão lista de exercícios
Resolução 2ª questão lista de exercícios
 
Teorema da recursão
Teorema da recursãoTeorema da recursão
Teorema da recursão
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Units
UnitsUnits
Units
 
1 exercicio de vectores em C
1 exercicio de vectores em C1 exercicio de vectores em C
1 exercicio de vectores em C
 
Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação Dinâmica
 
Lista af1 - 3º bimestre - 9º ano - 2015
Lista   af1 - 3º bimestre - 9º ano - 2015Lista   af1 - 3º bimestre - 9º ano - 2015
Lista af1 - 3º bimestre - 9º ano - 2015
 
Revisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRevisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas Embarcados
 
Função malloc
Função mallocFunção malloc
Função malloc
 
Linguagem em c
Linguagem em cLinguagem em c
Linguagem em c
 
Estruturas de dados aulas - bloco 1
Estruturas de dados   aulas - bloco 1Estruturas de dados   aulas - bloco 1
Estruturas de dados aulas - bloco 1
 
Noção de limite
Noção de limiteNoção de limite
Noção de limite
 

Destaque

la recuperación de fotos digital
la recuperación de fotos digitalla recuperación de fotos digital
la recuperación de fotos digitalnancyjonson
 
Programming methodology lecture18
Programming methodology lecture18Programming methodology lecture18
Programming methodology lecture18NYversity
 
Portal institucional y GÉNESIS
Portal institucional y GÉNESISPortal institucional y GÉNESIS
Portal institucional y GÉNESISSaru Verasuquesu
 
New microsoft office power point presentation
New microsoft office power point presentationNew microsoft office power point presentation
New microsoft office power point presentationAsma Smile
 
Realizaciond De Ejemplos 1
Realizaciond De Ejemplos 1Realizaciond De Ejemplos 1
Realizaciond De Ejemplos 1samy90
 
วันครูแห่งชาติ พุทธศักราช 2557
วันครูแห่งชาติ พุทธศักราช 2557วันครูแห่งชาติ พุทธศักราช 2557
วันครูแห่งชาติ พุทธศักราช 2557arjarntoey
 
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Hiroki Mizuno
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門Kyoko Kadowaki
 

Destaque (9)

la recuperación de fotos digital
la recuperación de fotos digitalla recuperación de fotos digital
la recuperación de fotos digital
 
Programming methodology lecture18
Programming methodology lecture18Programming methodology lecture18
Programming methodology lecture18
 
Portal institucional y GÉNESIS
Portal institucional y GÉNESISPortal institucional y GÉNESIS
Portal institucional y GÉNESIS
 
New microsoft office power point presentation
New microsoft office power point presentationNew microsoft office power point presentation
New microsoft office power point presentation
 
Realizaciond De Ejemplos 1
Realizaciond De Ejemplos 1Realizaciond De Ejemplos 1
Realizaciond De Ejemplos 1
 
วันครูแห่งชาติ พุทธศักราช 2557
วันครูแห่งชาติ พุทธศักราช 2557วันครูแห่งชาติ พุทธศักราช 2557
วันครูแห่งชาติ พุทธศักราช 2557
 
Tema 5
Tema 5Tema 5
Tema 5
 
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門
 

Semelhante a Type based termination for recursive definitions

Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosgjpbg
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2Leandro Lopes
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2Julian Correa
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Universidade de São Paulo
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaLeinylson Fontinele
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao rubyFrancis Wagner
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
C#4 – O que há de novo
C#4 – O que há de novoC#4 – O que há de novo
C#4 – O que há de novoGiovanni Bassi
 
As Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoAs Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoPaulo Morgado
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoesYuri Passos
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5PeslPinguim
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxLemosManuel
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funçõesCarla Lee
 
5 expressoes logicas - operadores - base binaria - operadores de bits
5   expressoes logicas - operadores - base binaria - operadores de bits5   expressoes logicas - operadores - base binaria - operadores de bits
5 expressoes logicas - operadores - base binaria - operadores de bitsRicardo Bolanho
 

Semelhante a Type based termination for recursive definitions (20)

Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 
Amarração e escopo
Amarração e escopoAmarração e escopo
Amarração e escopo
 
C++200
C++200C++200
C++200
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
C#4 – O que há de novo
C#4 – O que há de novoC#4 – O que há de novo
C#4 – O que há de novo
 
As Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoAs Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPonto
 
Algop - aula 03
Algop - aula 03Algop - aula 03
Algop - aula 03
 
Questesdetecnologia ano2002
Questesdetecnologia ano2002Questesdetecnologia ano2002
Questesdetecnologia ano2002
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoes
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptx
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funções
 
5 expressoes logicas - operadores - base binaria - operadores de bits
5   expressoes logicas - operadores - base binaria - operadores de bits5   expressoes logicas - operadores - base binaria - operadores de bits
5 expressoes logicas - operadores - base binaria - operadores de bits
 

Último

E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
Universidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumUniversidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumPatrícia de Sá Freire, PhD. Eng.
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxKtiaOliveira68
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaJúlio Sandes
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 

Último (20)

E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
Universidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumUniversidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comum
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptx
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 

Type based termination for recursive definitions

  • 1. Type based termination of recursive definitions Rodrigo Ribeiro 21 de fevereiro de 2013
  • 2. Motivação — (I) I Terminação é indecidı́vel para linguagens Turing complete. I Sendo assim, quem se importa com terminação? I Problema interessante! I Aplicações em verificação formal: I Prova de corretude total de programas. I Uso em assistentes de provas.
  • 3. Motivação — (II) I Foco da apresentação: Terminação em assistentes de provas. I O que é um assistente de provas? I De maneira simplista: uma linguagem funcional pura onde é possı́vel desenvolver programas e provas. I Em tal linguagem, programas podem representar “provas”, e tipos “fórmulas” lógicas. I E porquê a terminação importante para assistentes de provas? I Funções que não terminam tornam a lógica associada ao assistente de provas inconsistente.
  • 4. Motivação — (III) I Considere o seguinte trecho (hipotético) de código em Coq, onde ? representa um tipo qualquer: I Fixpoint loop(x : ?) : ? := loop x.
  • 5. Motivação — (IV) I Podemos substitutir a primeira ocorrência de ? por nat e a segunda por False, contruindo assim uma função de tipo nat → False. I Fixpoint loop(x : nat) : False := loop x. I Sendo assim, o termo loop 1, possui o tipo False. I Tal termo pode ser interpretado como uma prova da proposição False, o que torna a lógica inconsistente.
  • 6. Motivação — (V) I Assistentes de provas impõe restrições sobre o formato de definições de funções recursivas, para garantir a terminação. I Para isso, chamadas recursivas devem ser sempre realizadas sobre componentes do parâmetro para a função em questão. I Com isso, funções como loop são rejeitadas: I Fixpoint loop(x : nat) : False := loop x.
  • 7. Motivação — (VI) I Porém, essas restrições evitam a definição de funções úteis e que terminam para qualquer entrada: Fixpoint div (n m: nat) := match n with | 0 => 0 | S n’ => S (div (n’ - m) m) end. I Outros exemplos: algoritmos sobre listas como mergesort e quicksort.
  • 8. Motivação — (VII) I Visando contornar essas limitações diversos autores propõe a utilização de sistemas de tipos que para garantir a terminação de definições recursivas. I De maneira simplista, o sistema de tipos associa um limite sobre a altura de valores de um determinado tipo. I Chamadas recusivas são somente permitidas sobre valores cuja altura é menor que o parâmetro de entrada da função.
  • 9. Terminação baseada em tipos — (I) I Cada tipo de dados d possui uma medida associada. I Sintaxe de medidas é dada por: s ::= ι | b s | ∞ onde ι representa uma variável de medida, o operador b − é uma função que associa uma medida a seu sucessor e ∞ corresponde ao limite superior de medidas. I Relação de subtipagem de medidas: fecho reflexivo e transitivo das regras s ≤ b s s ≤ ∞
  • 10. Terminação baseada em tipos — (II) I A sintaxe de tipos é dada por: τ ::= α | τ → τ | ds τ onde a representa uma sequência de elementos do conjunto A = {a1, a2..., an}. I Relação de subtipagem para tipos: fecho reflexivo e transitivo das regras s ≤ r τi v τ0 i 1≤i≤ar(d) ds τ v dr τ0 τ0 1 v τ1 τ2 v τ0 2 τ1 → τ2 v τ0 1 → τ0 2
  • 11. Terminação baseada em tipos — (III) I Exemplos: Considere o tipo Nat que representa números naturais na representação de Peano: data Nat = 0 : Natb s | S : Nats → Natb s I O valor S (S 0) possui tipo Nat b b s. I Mas por subtipagem, possui também os tipos: I Nat b b b s . I Nat b b b b s . I . . . I Nat∞ . I O tipo Nat∞ é equivalente ao tipo Nat definido em uma linguagem sem terminação baseada em tipos.
  • 12. Terminação baseada em tipos — (IV) I Definições de novos tipos de dados são restritas. I O tipo de dados: data D τ = c1 : A1 ... cn : An I deve ser tal que cada Ai é da forma: I B1 → ... → D I onde cada argumento Bi é tal que I não menciona o tipo de dados D I ou possui a forma C1 → ... → D, onde D não ocorre em nenhum Ci .
  • 13. Terminação baseada em tipos — (V) I Condições anteriores evitam que possamos construir loops a partir de tipos recursivos. I Exemplo (em Haskell): data Evil = VeryEvil (Evil -> Evil) bad :: Evil -> (Evil -> Evil) bad (VeryEvil f) = f hell :: Evil -> Evil hell f = (bad f) f loop :: Evil loop = hell (VeryEvil hell)
  • 14. Terminação baseada em tipos — (VI) I Evidentemente loop não termina. . . loop = hell (VeryEvil hell) = bad (VeryEvil hell) (VeryEvil hell) = hell (VeryEvil hell) = loop = ...
  • 15. Terminação baseada em tipos — (VII) I Primeiramente devemos considerar apenas tipos de dados que respeitam as condições anteriores. I Tais tipos de dados são ditos possuir ocorrências estritamente positivas e são normalmente denominados tipos de dados indutivos. I Coq e Agda permitem apenas definições de tipos de dados indutivos.
  • 16. Terminação baseada em tipos — (VIII) I Com isso vimos a intuição do sistema de tipos para terminação: I Associar medidas a definições de tipos. I Somente permitir tipos de dados indutivos. I Basicamente o sistema de tipos consiste do λ−cálculo tipado simples com subtipagem, recursão e tipos de dados algébricos. I Única modificação necessária: Permitir a chamadas recursivas somente a termos de medida menor.
  • 17. Terminação baseada em tipos — (IX) I Sistema de tipos. I Regras idênticas ao do λ-cálculo. x : τ ∈ Γ Γ ` x : τ (var) Γ ` e : τ τ v τ0 Γ ` e : τ0 (sub) Γ , x : τ ` e : τ0 Γ ` λx.e : τ → τ0 (abs) Γ ` e1 : τ → τ0 Γ ` e2 : τ Γ ` e1 e2 : τ0 (app)
  • 18. Terminação baseada em tipos — (X) I Regras para lidar com recursão e tipos de dados. C(ck) = τ1 → ... → Db s α Γ ` ck : τ1 → ... → Db s α (con) Γ ` e : D b i τ C(ck) = τ1 → ... → Db s α Γ ` ek : τ1 → ...[α 7→ τ, i 7→ s] → τ0 Γ ` case e of {c1 ⇒ e1 | ... | cn ⇒ en} : τ0 (case) Γ, f : Di τ → ... → τ0 ` D b i τ → ... → τ0[i 7→ b i] Γ ` let f = e : Ds τ → ... → τ0[i 7→ s] (rec)
  • 19. Terminação baseada em tipos — (XI) I Propriedades do sistema de tipos I Subject Reduction: Se Γ ` e : τ e e →βιµ e0 então Γ ` e0 : τ. I Normalização forte: Todo termo bem tipado pode ser reduzido a sua forma normal em um número finito de passos. I Demonstrações detalhadas de todas as propriedades do sistema de tipos. I Formalização das restrições sintáticas utilizadas atualmente em assistentes de provas
  • 20. Terminação baseada em tipos — (XII) I Idéias para trabalhos I Iniciar a implementação de uma linguagem com dependent types utilizando terminação baseada em tipos. I Perguntas?