Sobre Equações Recursivas e Construções de Ponto Fixo Parte I

Documentos relacionados
sumário 1 introdução e conceitos básicos 1 2 noções de lógica e técnicas de demonstração introdução à matemática discreta...

Funções Recursivas. Prof.: Edson Holanda Teoria da computação - Diverio e Menezes

Uma memória é uma função total de identificadores para valores inteiros: se x=y σ(y) caso contrário

Curso: Ciência da Computação Disciplina: Matemática Discreta RELAÇÕES. Prof.: Marcelo Maraschin de Souza

4.1 Preliminares. No exemplo acima: Dom(R 1 ) = e Im(R 1 ) = Dom(R 2 ) = e Im(R 2 ) = Dom(R 3 ) = e Im(R 3 ) = Diagrama de Venn

Revisões de Conjuntos

Matemática para Ciência de Computadores

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Matemática Discreta Parte 11

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 2. Conceitos Básicos da Teoria da Computação

Produto Cartesiano. Exemplo: Dados os conjuntos A = {5,6} e B = {2,3,4}, vamos determinar o produto cartesiano AXB;

Matemática para Ciência de Computadores

Criptografia e Segurança das Comunicações. das Comunicações Bases Matemáticas - Relações e Ordens

xy 2 (b) A função é contínua na origem? Justique sua resposta! (a) Calculando o limite pela reta y = mx:

complemento para a disciplina de Matemática Discreta versão 1 - Jerônimo C. Pellegrini Relações de Equivalência e de Ordem

Cálculo Lambda Sem Tipos

INE0003 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Prova. t ::= t t. t 1 t 4 t 2 t 3 (t 1 t 2 ) (t 3 t 4 ) (t 2 t 1 ) (t 4 t 3 )

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

MCTB Álgebra Linear Avançada I Claudia Correa Exercícios sobre corpos e espaços vetoriais sobre corpos

Paradigmas de Programação

3.4 Álgebra booleana, ordens parciais e reticulados

Estruturas de dados. Pedro Vasconcelos. 3 de Março de 2014

Programação Funcional - Introdução a Cálculo Lambda

Programação Funcional Cálculo Lambda - Aula Nº 3

Denotational Semantics

Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação

Matemática Discreta - Departamento de Matemática - EST-IPV / III

MAT TEORIA DOS CONJUNTOS 1 o SEMESTRE 2014 BACHARELADO - IME

Linguagens Formais - Preliminares

DANIEL V. TAUSK. se A é um subconjunto de X, denotamos por A c o complementar de

Estrutura de Dados Conceitos Iniciais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Cálculo Numérico / Métodos Numéricos. Solução de equações: Método do ponto fixo (iterativo linear - MIL) 15:01

Sistemas de Tipos. Cristiano Damiani Vasconcellos.

GRAFOS Aula 02 Formalização: definições Max Pereira

1.1 Conjuntos parcialmente ordenados (c.p.o. s)

Método do Gradiente Projetado Para Funções Convexas Generalizadas

Capítulo 3. Fig Fig. 3.2

Matemática para Ciência de Computadores

A2. Cada operação é distributiva sobre a outra, isto é, para todo x, y e z em A, x (y + z) = (x y) + (x z) e x + (y z) = (x + y) (x + z)

Bacharelado em Ciência da Computação Matemática Discreta

Compiladores. Simão Melo de Sousa. Computer Science Department University of Beira Interior, Portugal. S. Melo de Sousa Compiladores

Relações binárias. Relações binárias. Discrete Mathematics with Graph Theory Edgar Goodaire e Michael Parmenter, 3rd ed 2006.

INE Fundamentos de Matemática Discreta para a Computação

FUNÇÕES. Prof.ª Adriana Massucci

Matemática Discreta para Computação: Prova 1 06/09/2017

V Workshop de Álgebra UFG-CAC. Só Funções. Francismar Ferreira Lima. Universidade Tecnológica Federal do Paraná (UTFPR) 09 de novembro de / 43

Pedro Vasconcelos DCC/FCUP. Programação Funcional 3 a Aula Definição de funções

AXB = {(x, y) x A e y B}

LINGUAGENS FORMAIS E AUTÔMATOS

Intuição da sintaxe de L2 (35)

Prova: Usando as definições e propriedades de números reais, temos λz = λx + iλy e

if not(isinstance(a, int)) or a < 0: raise ValueError ("misterio: arg nao e inteiro nao negativo") else: return misterio_aux(a, a + 1)

Aulas 10 e 11 / 18 e 20 de abril

INE0003 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Números Reais. Gláucio Terra. Departamento de Matemática IME - USP. Números Reais p. 1/2

GABARITO. Prova 3 (points: 142/100; bonus: 16 ; time: 90 ) FMC2, (Turmas T56+N12 do Thanos) Regras: Boas provas! Gabarito 23/06/2017

2 Espaços Vetoriais. 2.1 Espaços Vetoriais Euclidianos

LÓGICA TEMPORAL COM RAMIFICAÇÕES (Branching time temporal logics)

Redução de grafos. Pedro Vasconcelos. 4 de Março de 2014

n. 28 RELAÇÕES BINÁRIAS ENTRE CONJUNTOS

GABARITO. Prova 1.2 (points: 72/100; bonus: 16 ; time: 100 ) FMC2, (Turma T56 do Thanos) Regras: Lembre-se: Boas provas! Gabarito 08/05/2017

I.2 Introdução a Teoria da Computação

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Fundamentos de Programação

Combinando relações. Exemplo Seja A = {1, 2, 3} e B = {1, 2, 3, 4}. As relações

E-books PCNA. Vol. 1 MATEMÁTICA ELEMENTAR CAPÍTULO 3 FUNÇÕES

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

Função: parte 1. Prof. Santos Alberto Enriquez Remigio. 26 de março de 2018 FAMAT/UFU

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Teoria Ingênua dos Conjuntos (naive set theory)

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Esta disciplina auxilia em todas as outras áreas da Matemática. Isso porque veremos noções de lógica e de demonstrações matemáticas.

Matemática Discreta para Ciência da Computação

O grau de saída d + (v) de um vértice v é o número de arcos que tem

UNIVERSIDADE FEDERAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA. Medida e Probabilidade

Centro de Informática UFPE

BCC465 - TÉCNICAS DE MULTI-OBJETIVO. Gladston Juliano Prates Moreira 22 de novembro de 2017

Matemática Discreta para Ciência da Computação

Teoria da Computação

Teoria da Computação Exame 1 30 de Junho de 2003

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Programação imperativa

Matemática para Ciência de Computadores

Linguagens Formais e Problemas de Decisão

puras um ou mais apenas mesmos

FUNÇÃO. Regra. Lei de Formação. Propriedade

Universidade Federal de Viçosa Centro de Ciências Exatas Departamento de Matemática MAT Introdução à Álgebra 2015/I

Capítulo 0: Conjuntos, funções, relações

Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos

Reviso de Teoria da Medida e Elementos Bsicos de Probabilidade

Sumário Algumas Demonstrações CONCLUSÃO RESUMO ATIVIDADES... 34

Lógica e Programação - Folha de trabalho n. 3

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

Sistemas de Tipos. Cristiano Damiani Vasconcellos.

Funções, Seqüências, Cardinalidade

Transcrição:

Sobre Equações Recursivas e Construções de Ponto Fixo Parte I Alfio Martini www.inf.pucrs.br/alfio Clube de Lógica em Ciência da Computação Faculdade de Informática - PUCRS 19 de setembro de 2013

Sumário 1 2 3 4 5 6 7

Sumário 1 2 3 4 5 6 7

Sumário 1 2 3 4 5 6 7

Produtos Cartesianos Dados conjuntos X e Y Conjunto Potência Produto Cartesiano (X ) {A X } X Y {(x, y) x X y Y } X é chamado de origem (source) e Y de destino (target) da relação Relações (Binárias): f é uma relação binária entre X e Y se e somente se f X Y O conjunto de todas as relações binárias entre X e Y é denotado por (X Y ) e é definido por (X Y ) (X Y )

Funções Parciais Domínio Se f X Y, o domínio de f é definido como dom(f ) {x (x, y) f } Uma relação f X Y é uma função parcial se e somente se x, y, y.(x, y) f (x, y ) f y = y Uma função parcial f A B é representada como f : X Y O conjunto de todas as funções parciais entre X e Y é denotado por (X Y )

Fato Básico (X Y ) (X Y ) (X Y )

Funções Totais Uma função parcial f : X Y é dita total se e somente se dom(f ) = X Uma função total entre X e Y é representada como f : X Y O conjunto de todas as funções totais entre X e Y é denotado por (X Y )

Funções Parciais como Funções Totais A A { } representa n~ao-terminaç~ao ou nenhum valor Seja f : X Y, então f : X Y é definida como { f f (x) se x dom(f ) (x) = caso contrário (X Y ) = (X Y )

Função Parcial Totalmente Indefinida : N N é a função parcial totalmente indefinida, onde (n) = para todo n 0

Iteração de Funções Totais Seja f : X X uma função total. Então definimos f 0 (x) = id(x) f n+1 (x) = f n (f (x))

Currying and Uncurrying curry(ing) é um operação que toma uma função que recebe uma tupla de argumentos e retorna uma cadeia de funções onde cada uma recebe um argumento de cada vez. uncurry(ing) é o processo inverso. Por exemplo, seja f : A B C, então curry(f ) : A (B C) é a função tal que f (a, b) = curry(f )(a)(b) Para f : A B C e g : A (B C) uncurry(curry(f )) = f curry(uncurry(g)) = g

Currying and Uncurrying Para a A fixo e arbitrário, f : A B C curry(f )(a) : B C Note que (A B C) = (A (B C)) Na Ciência da Computação, currying fornece uma forma de estudar funções em um modelo teórico simples, conhecido como cálculo-λ. No cálculo-λ funções recebem um argumento de cada vez.

Currying and Uncurrying Seja sqsum : N N N, tal que sqsum(x, y) x 2 + y 2 Então tal que curry(sqsum) : N (N N) curry(sqsum) x y = sqsum(x, y)

Cálculo Lambda Tipado in a Nutshell Sistema formal para expressão computação (de funções) baseado em nos conceitos de abstração e aplicação. Os únicos tipos são os tipos básicos os tipos função σ τ. Gramática para termos e tipos x Variable t ::= σ nat int... t t M ::= x λx : t. M M M

Cálculo Lambda Tipado in a Nutshell Se M, N são termos lambda e x é uma variável abstração λx. M aplicação M N Regras de Tipagem Se x : σ, M : τ, então λx : σ. M : σ τ Se M : σ τ, N : σ, então M N : τ

Cálculo Lambda Tipado in a Nutshell Assumindo x + y : N, então λx : N. x + y : N N Assumindo y : N temos λy : N. λx : N. x + y : N (N N)

Avaliação de Expressões Lambda Seja λx : σ. M : σ τ e M : τ. Então λx : σ. M N M[x/N] isto é, M, onde todas as ocorrências livres de x são substituídas por N.

Avaliação de Expressões Lambda (λy : N. λx : N. x + y 4) 5 = λx : N. x + 4 5 = 5 + 4 = 9

Sumário 1 2 3 4 5 6 7

Equação Recursiva Uma definição recursiva é uma equação da forma x =... x... onde... x... designa uma expressão matemática que contém ocorrências da variável definida x.

Soluções de Equações Recursivas Solução Uma solução para uma equação recursiva é um valor que torna a equação verdadeira quando substituído por todas as ocorrências da variável definida. Uma equação recursiva pode ter um conjunto (possivelmente vazio) de soluções, que é nomeado como SS (Solution Set)

Exemplos de Soluções Suponha x : Z. Então x = 1 + x não tem nenhuma solução (SS(x) = ) x = 4 x possui uma única solução (SS(x) = {2}) x = 9 x possui duas soluções (SS(x) = {3, 3}) x = x possui um conjunto infinito de soluções (SS(x) = {x x Z})

Exemplos de Soluções Considere a equação x = 1 16x 3 SS(x) =, se x : Z SS(x) = { 1 2 }, se x : Q+ SS(x) = { 1 2, 1 2 }, se x Q SS(x) = { 1 2, 1 2, i 2, i 2 }, se x : C

Observação Essencial Conjunto de soluções de uma equação recursiva depende do tipo da variável que está sendo definida

Equações Recursivas com Variáveis do Tipo Função As equações abaixo definem uma, várias ou nenhuma função? Se forem funções, são totais ou parciais? f = λx : N. f (x + 1) f (x) = f (x + 1) h = λx : N. if x = 0 then 1 else h(x + 1) h(x) = if x = 0 then 1 else h(x + 1) g = λx : N. if x = 0 then 1 else x g(x 1) g(x) = if x = 0 then 1 else x g(x 1)

Candidatos para h : N N h = λx : N. if x = 0 then 1 else h(x + 1) h(x) = if x = 0 then 1 else h(x + 1) h 1 (x) = { 1 se x = 0 caso contrário h 2 (x) = { 1 se x = 0 2 caso contrário h 3 (x) = 1

h 1, h 2, h 3 solucionam h Por exemplo, Portanto { 1 se x = 0 h 1 (x) = caso contrário = if x = 0 then 1 else = if x = 0 then 1 else h 1 (x + 1) h 1 (x) = if x = 0 then 1 else h 1 (x + 1)

Considerações Essenciais Observações Fundamentais h 1, h 2, h 3 são pontos fixos de h SS(h) é infinito! Qualquer função que fixe 0 1 está em SS(h). Qual delas é de fato a solução que adere à interpretação computacional? Computacionalmente, h não-termina sempre que x > 0! Como formalizar precisamente uma equação (especificação) recursiva?

Sumário 1 2 3 4 5 6 7

Funções Geradoras Funções Geradoras Seja d : D. Então, uma definição recursiva d = (... d...) podem ser sempre codificadas como uma função total D D τ = λd : D. (... d...)

Exemplos de Funções Geradoras x = 4 x τ = λx : Z. 4 x f = λx : N. f (x + 1) τ = λf. (N N ). λx : N. f (x + 1) h = λx : N. if x = 0 then 1 else h(x + 1) τ = λh : N N. λx : N. if x = 0 then 1 else h(x + 1) g = λx : N. if x = 0 then 1 else x g(x 1) τ = λg : N N. λx : N. if x = 0 then 1 else x g(x 1)

Ponto Fixo Um ponto fixo de uma função τ : D D é um elemento d D tal que τ(d) = d

Ponto Fixo (Intuição) Se uma função D D é vista como movimentando elementos dentro do espaço D, então elementos que satisfazem a definição recursiva são os únicos que permanecem estacionários. Portanto, o nome ponto fixo.

Ponto F (Solução de Equações Recursivas) Seja uma definição recursiva d = (... d...) com a correspondente função geradora D D τ = λd : D. (... d...) Então k D é uma solução da definição recursiva se e somente se τ(k) = k

Ponto Fixo (Exemplos) Considere h = λx : N. if x = 0 then 1 else h(x + 1) τ = λh : N N. λx : N. if x = 0 then 1 else h(x + 1) Então, temos que τ(h 1 ) = h 1 τ(h 2 ) = h 2 τ(h 3 ) = h 3

Sumário 1 2 3 4 5 6 7

Idéia Fundamental da Técnica Iterativa Solução de uma equação de ponto fixo τ(f ) = f é tal que: é o limite de uma sequência de funções (conjuntos) f 0, f 1,..., f n,... tal que f 0 : N N f i+1 = τ(f i ) cada f i é uma função parcial, não-recursiva, que aproxima a solução verdadeira da equação de ponto fixo. para cada i 0 temos que f i f i+1 na cadeia f 0 f 1... f n... diz-se que f i aproxima f i+1 ou que f i+1 carrega mais informação do que f i

Idéia Fundamental da Técnica Iterativa para i 0, f i (x) = f i+1 (x), x dom(f i f i+1 ) o limite desta sequência é a união de todas estas funções f = n 0 f n

Definição Recursiva de Fatorial g = λx : N. if x = 0 then 1 else x g(x 1) τ = λg : N N. λx : N. if x = 0 then 1 else x g(x 1) f 0 τ 0 ( )(x) = f 1 τ 1 ( )(x) = if { x = 0 then 1 else x (x 1) 1 se x = 0 = caso contrário f 2 τ 2 ( )(x) = if x = 0 then 1 else x f i (x 1) 1 se x = 0 = 1 se x = 1 caso contrário

Definição Recursiva de Fatorial f 3 τ 3 ( )(x) = if x = 0 then 1 else x f 2 (x 1) 1 se x = 0 1 se x = 1 = 2 se x = 2 caso contrário f 4 τ 4 ( )(x) = if x = 0 then 1 else x f 3 (x 1) 1 se x = 0 1 se x = 1 = 2 se x = 2 6 se x = 3 caso contrário

. =.. f n τ n ( )(x) = if { x = 0 then 1 else x f n 1 (x 1) f = τ ( )(x) (x 1)! 0 x < n = caso contrário = ( n 0 τ n ( ))(x) = x! = ( n 0 f n )(x) = x!

f como ponto fixo de τ τ(f )(x) = if x = 0 then 1 else x f (x 1) = if x = 0 then 1 else x (x 1)! = x! = f (x)

Resumo Extensão Sejam f, g (X Y ). Dizemos que g estende f (f aproxima g) se e somente se f g. Note que isso obriga que para todo x dom(f ) dom(g) f (x) = g(x)

Resumo Especificação Recursiva Seja D = (X Y ). Um especificação recursiva em D é uma função total τ : D D tal que Neste caso, a sequência τ 0 ( ) τ 1 ( ) τ 2 ( )... τ 0 ( ), τ 1 ( ), τ 2 ( ),... é chamada de semântica de Kleene de τ, a qual é a função parcial τ em D tal que dom(τ ) = k 0 dom(τ k ( )) enquanto τ (x) = τ k ( )(x) para qualquer k e x dom(τ k ( ))

Resumo A computação iterativa do ponto fixo constrói uma cadeia de funções ordenadas por inclusão de conjuntos Nesta cadeia, o menor elemento é a função parcial totalmente indefinida. Cada função na cadeia é uma função parcial que está definida para alguns elementos do domínio de definição da função O ponto fixo é a união de todas as funções desta cadeia

Sumário 1 2 3 4 5 6 7

Ordens Parciais (Posets) Uma relação binária em um conjunto D é chamada de ordem parcial se e somente se é: reflexiva : d D.d d anti-simétrica : d, d D.d d d d = d transitiva : d, d, d D.d d d d d O par (D, ) é chamado de conjunto parcialmente ordenado ou poset.

Diagrama Hasse de um Poset Diagrama Hasse O diagrama Hasse de um poset é um grafo dirigido onde vértices do grafo são os elementos do conjunto base do poset e no qual existe um arco entre vértices x e y se e somente se x y e z.(x z z y) (z = x z = y)

Elementos Mínimos em um Poset Elementos Mínimos Suponha que D é um poset e S um subconjunto de D. Um elemento d S é um elemento mínimo de S se satisfaz x S.d x se o elemento mínimo existe, é escrito como D. Logo d D. d

Cadeias em um Poset Uma cadeia crescente e contável em um poset D é uma sequência de elementos que satisfaz d 0 d 1 d 2... Um limite superior (upper bound) para a cadeia é qualquer d D que satisfaz n 0.d n d Se existir, o limite superior mínimo (least upper bound ou lub) é escrito como n 0 d n

Propriedades do lub Por definição Todos elementos aproximam o lub m 0.d m n 0 d n O lub é o menor na presença de outros candidatos, i.e., para qualquer d D, se m 0.d m d então d n d n 0

Ordens Parciais Completas (CPO s) Uma ordem parcial completa (cpo, ccpo) é um poset (D, ) na qual todas as sequências contáveis d 0 d 1 d 2... possuem lubs n 0 d n Um domínio é um cpo que possuem um elemento mínimo, i.e., d D. d

Monotonicidade, Continuidade e Rigidez Sejam (D, D ), (E, E ) ordens parciais. Uma função total f : D E é dita monotônica se e somente se d, d D.d d f (d) f (d ) Se D e D são cpo s, f : D E é contínua se e é monotônica e preserva lubs de cadeias, isto é, para todas as cadeias d 0 d 1 d 2... f ( d n ) = n 0 n 0 f (d n ) em E Se D e E possuem elementos mínimos, então f : D E é dita rígida (strict) se e somente se f ( ) =

Sumário 1 2 3 4 5 6 7

de Traski Um ponto fixo para uma função f : D D é é um elemento d D tal que f (d) = d

Pontos Pré-fixos (Pre-fixed Points) Se D é um poset, é suficiente considerar a noção mais fraca de ponto fixo. Seja D um poset e f : D D uma função total. Então Um elemento d D é um ponto pré-fixo de f se satisfaz f (d) d O ponto pré-fixo mínimo, se existir, é escrito como fix(f ) fix(f ) é especificado unicamente pelas seguintes propriedades: lfp1 f (fix(f )) fix(f ) lfp2 d D.f (d) d fix(f ) d

Pré-pontos fixos induzem Suponha D um poset e f : D D uma função total que possua um ponto pré-fixo mínimo fix(f ). Se f for monotônica, então fix(f ) é também um ponto fixo, i.e., f (fix(f )) = fix(f ) (e consequentemente o menor ponto fixo dentre todos os pontos fixos de f )

de Tarski Seja f : D D uma função contínua em um domínio D. Então f tem um ponto fixo mínimo, dado por fix(f ) = f n ( ) n 0

Prova f (fix(f )) = f ( n 0 f n ( )) (def. fix(f ) = n 0 (f (f n ( ))) (f é contínua) = n 1 f n ( ) (def. composição) = n 1 f n ( ) { } ( C { } = C, C é cadeia) = n 0 f n ( ) (f 0 ( ) = ) = fix(f ) (def. fix(f ))

Definição Recursiva dos Naturais Pares Even = {0} {n + 2 n Even} τ : (N) (N) = λs. {0} {n + 2 n s} Agora, considere a seguinte sequência: τ 0 ( ) = id( ) = τ 1 ( ) = {0} τ 2 ( ) = {0} {2} = {0, 2} τ 3 ( ) = {0} {2, 4} = {0, 2, 4} τ 4 ( ) = {0} {2, 4, 6} = {0, 2, 4, 6}. =. τ n ( ) = {0, 2, 4,..., 2n 2 n 1} τ n 0 τ n ( ) = {2n n 0}

Definição Recursiva de Silly Então silly(x) = silly(x + 1) τ : (N N ) (N N ) = λf. λx. f (x + 1) τ 0 ( )(n) = id( )(n) = ( )(n) = τ 1 ( )(n) = (n + 1) = τ (n) =

Questão Essencial (Final) Qual é o tipo do operador fix?