35
Objetivos Gerais Conjuntos Indutivos Recurs˜ ao Primitiva Coment´ arios Finais Tipos Indutivos & Recurs˜ ao (Primitiva) Alfio Martini www.inf.pucrs.br/alfio Clube de L´ ogica em Ciˆ encia da Computac ¸˜ ao Faculdade de Inform´ atica - PUCRS 2 de setembro de 2013 Alfio Martini www.inf.pucrs.br/alfio Tipos Indutivos & Recurs˜ ao (Primitiva)

Tipos Indutivos & Recursão (Primitiva)alfio/logic-cs-club-ind-rec.pdf · Conjuntos Indutivos Recurs~ao Primitiva Coment arios Finais Vis~ao Informal De ni˘c~ao Fun˘c~oes Primitivas

  • Upload
    volien

  • View
    220

  • Download
    0

Embed Size (px)

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)