View
220
Download
0
Category
Preview:
Citation preview
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Tipos Indutivos & Recursao (Primitiva)
Alfio Martiniwww.inf.pucrs.br/alfio
Clube de Logica em Ciencia da ComputacaoFaculdade de Informatica - PUCRS
2 de setembro de 2013
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Sumario
1 Objetivos Gerais
2 Conjuntos IndutivosVisao InformalNumeros NaturaisListasLogica Proposicional (LP)
3 Recursao PrimitivaVisao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
4 Comentarios FinaisAlfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Sumario
1 Objetivos Gerais
2 Conjuntos IndutivosVisao InformalNumeros NaturaisListasLogica Proposicional (LP)
3 Recursao PrimitivaVisao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
4 Comentarios FinaisAlfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Objetivos
Apresentar os princıpios gerais que envolvem construcoes indutivasde tipos de dados:
Princıpio geral destas definicoes (Construtores)
Definicoes de funcoes totais por recursao primitiva
Esquema de inducao para prova de propriedades
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Sumario
1 Objetivos Gerais
2 Conjuntos IndutivosVisao InformalNumeros NaturaisListasLogica Proposicional (LP)
3 Recursao PrimitivaVisao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
4 Comentarios FinaisAlfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Conjuntos Indutivos:Ideia Geral
Definicao
Uma definicao indutiva de um conjunto S consiste sempre dosseguintes passos:
Base Listar alguns elementos especıficos (constantes) deS . Pelo menos um elemento deve ser listado.
Inducao Definir uma ou mais regras para a construcao denovos elementos de S a partir dos elementos jaexistentes.
Fecho Declarar que S consiste exatamente dos elementosproduzidos pelos passos da base e inducao.
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Construtores de Dados
Definicao
Os construtores de um conjunto indutivo S sao todos elementoslistados no passo da base juntamente com todas as regrasapresentadas no passo da inducao.
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Definicao Indutiva dos Naturais
Definicao
Os elementos do conjunto indutivo Nat sao todos os valoresgerados pelas seguintes regras:
NatZerozero ∈ Nat
x ∈ NatNatSuc
suc x ∈ Nat
Nat e isomorfico a N, onde N = {0, 1, 2, . . .}suc : Nat→ Nat e zero : Nat (operadores)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Uma outra definicao de Nat
Definicao
[NatZero] zero ∈ Nat.
[NatSuc] Se x ∈ Nat, entao suc x ∈ Nat.
[Fecho] Nada mais esta em Nat.
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Linguagem Nat
Termos
zerosuc zerosuc (suc zero)suc (suc (suc zero))...suck zero (k ∈ N)...
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Uma Gramatica para Nat
N : Nat ::= zero| suc N (N ∈ Nat)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Naturais: Princıpio de Inducao
Princıpio de Inducao
Cada elemento em Nat tem a seguinte forma:
zero
Suc k , k ∈ Nat
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Regra de Inducao para Nat
Conjunto Indutivo Nat
...P zero
x0 : Nat,P(x0)...
P(suc x0)
(x0 arbitraria)
∀n : Nat.P nIndNat
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Definicao Indutiva de Listas
Definicao
ListEmptynil ∈ List(A)
h ∈ A T ∈ List(A)ListCons
h � T ∈ List(A)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Linguagem List(A)
Termos
List(A) List(N) List(Nat)
nil nil nilx � nil 5 � nil (suc zero) � nila� b � nil 2 � 0 � nil zero � (suc3 zero)nil...
......
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Uma Gramatica para List(A)
L : List(A) ::= nil| h � L (h ∈ A, L ∈ List(A))
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Listas: Princıpio de Inducao
Princıpio de Inducao
Cada elemento em List(A) tem a seguinte forma:
nil
h � T , h ∈ A,T ∈ List(A)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Regra de Inducao para List(A)
Conjunto Indutivo List(A)
...P nil
e0 : A, l0 : List(A),P l0...
P (e0 � l0)
(e0, l0 arbitrarias)
∀l : List(A). P lIndList
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalNumeros NaturaisListasLogica Proposicional (LP)
Definicao Indutiva da Logica Proposicional
Definicao
Exercıcio. . .
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Sumario
1 Objetivos Gerais
2 Conjuntos IndutivosVisao InformalNumeros NaturaisListasLogica Proposicional (LP)
3 Recursao PrimitivaVisao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
4 Comentarios FinaisAlfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Funcoes Primitivas Recursivas: Visao Geral
Ideia Geral
Dada uma definicao de um conjunto indutivo S ,f : S × . . .× S → S e definida por recursao da seguinte forma:Escolher um dos argumentos (posicoes) de entrada de S e, nesteargumento:
definir f para cada elemento do conjunto base (constantes)
definir f para cada um dos construtores restantes (regras deconstrucao)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Funcoes Computaveis (FC)
Funcoes Recursivas (FR)
A classe de FC e a classe de FR (Church)
Classe FR primitivas e uma subclasse das FR
FR Primitivas sao todas funcoes TOTAIS
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
FR Primitivas
Construcao
Funcoes Basicas (zero, sucessor e projecoes)
Regra da Composicao (Substituicao)
Regra da Recursao Primitiva
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Classe de Funcoes Primitivas Recursivas
Funcoes Basicas
A classe de funcoes primitivas recursivas sobre os numeros naturais N e definidapelas seguintes regras:
Funcao Constante: a funcao constante zero z(x) = 0 e primitivarecursiva.
Funcao Sucessor: a funcao sucessor Suc(x) = x + 1 e primitiva recursiva.
Funcao de Projecao: para todo n ≥ 1 e 1 ≤ i ≤ n, a funcao n-aria deprojecao Pn
i que retorna o i-esimo argumento, e primitiva recursiva.
Pni (x1, . . . , xn) = xi
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Classe de Funcoes Primitivas Recursivas
Regra de Composicao
f (x1, . . . , xk)y1 = g1(z1, . . . , zm)...yk = gk(z1, . . . , zm)
h(z1, . . . , zm)= f (y1, . . . , yk)= f (g1(z1, . . . , zm), . . . , gk(z1, . . . , zm))
h = Cn[f , g1, . . . , gk ]
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Classe de Funcoes Primitivas Recursivas
Recursao Primitiva
h(x , 0) = f (x)h(x ,Suc(y)) = g(x , y , h(x , y))
h = Pr [f , g ]
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Classe de Funcoes Primitivas Recursivas
Recursao Primitiva (Adicao)
x + 0 = x x + Suc(y) = Suc(x + y)
sum(x , 0) = x sum(x ,Suc(y)) = Suc(sum(x , y))
sum(x , 0) = P11 (x) sum(x ,Suc(y)) = Suc(P3
3 (x , y , sum(x , y)))= Cn[Suc,P3
3 ](x , y , sum(x , y))
sum , Pr [P11 ,Cn[Suc,P3
3 ]]
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Uma bijecao entre Nat e N
Nat2nat : Nat→ N, ondeNat2nat zero = 0 (Nat2nat01)
Nat2nat (suc x) = Suc (Nat2nat x) (Nat2nat02)
0 ∈ NSuc : N→ N tal que Suc x , x + 1
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Adicao em Nat
add : Nat→ Nat→ Nat, ondeadd x 0 = x (add01)
add x (suc y) = suc (add x y) (add02)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Concatenacao em Listas
cat : List(A)→ List(A)→ List(A), ondecat nil l = l (cat01)
cat (h � T ) l = h � (cat T l) (cat02)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Comprimento de Listas
length : List(A)→ N, ondelength nil = 0 (len01)
length (h � T ) = (length T ) + 1 (len02)
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Teoremas sobre add
∀x : Nat.∀y : Nat.∀z : Nat.add x (add y z) = add (add x y) z Th-add-01∀x : Nat.∀y : Nat.add x y = add y x Th-add-02∀x : Nat.add(Z , x) = x Th-add-03∀x : Nat.∀y : Nat.add x (suc y) = add (suc x) y) Th-add-04∀x : Nat.∀y : Nat.add (suc x) y) = suc (add x y) Th-add-05
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Visao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
Teoremas sobre List(A)
∀l1 : List(A).∀l2 : List(A).∀l3 : List(A).cat l1 (cat l2 l3) = cat (cat l1 l2) l3 Th-cat-01∀l1 : List(A).∀l2 : List(A).len (cat l1 l2) = add (len l1) (len l2) Th-cat-02∀l : List(A).cat l nil = l Th-cat-03∀l : List(A).rev (rev l) = l Th-rev-01∀l1 : List(A).∀l2 : List(A).rev (cat l1 l2) = cat (rev l2) (rev l1)) Th-rev-02
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Sumario
1 Objetivos Gerais
2 Conjuntos IndutivosVisao InformalNumeros NaturaisListasLogica Proposicional (LP)
3 Recursao PrimitivaVisao InformalDefinicaoFuncoes Primitivas Recursivas sobre NaturaisFuncoes Primitivas Recursivas sobre ListasTeoremas sobre NatTeoremas sobre List
4 Comentarios FinaisAlfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Objetivos GeraisConjuntos IndutivosRecursao PrimitivaComentarios Finais
Comentarios Finais
Tipos Indutivos sao definidos por Construtores
Tipos Indutivos podem ser equipados com Funcoes
Funcoes sao definidas por Recursao Primitiva
Tipos Indutivos + Funcoes = (Abstract) Datatypes
Provas por Inducao e definicoes de Funcoes sao feitas sobre osConstrutores do Tipo.
Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recursao (Primitiva)
Recommended