Você está na página 1de 64

Terminologia, Técnicas de Prova, Enumerabilidade

Área de Teoria DCC/UFMG

Fundamentos de Teoria da Computação

2020/01

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 1 / 64
Terminologia, Técnicas de Prova, Enumerabilidade

Aqui vamos revisar alguns conceitos fundamentais de matemática discreta


que serão úteis na disciplina:
1 conjuntos,
2 sequências e tuplas,
3 funções e relações,
4 grafos,
5 lógica Booleana.

Além disso, vamos rever a noção de definição, teoremas e provas, além de


algumas técnicas de prova importantes.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 2 / 64
Noções e Terminologia
Matemáticas

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 3 / 64
Conjuntos
Um conjunto é uma coleção de objetos, chamados de elementos ou
membros do conjunto.
Conjuntos podem conter qualquer tipo de objeto, como números, sı́mbolos, e
até outros conjuntos.
Conjuntos podem ser descritos formalmente de várias maneiras, como:
1 Listando seus elementos entre chaves:

{a, b, c}.

2 Expecificando uma propriedade que define o conjunto, como em


S = {x | P(x)}:
{x ∈ N | x é primo e x > 431}.

3 Provendo uma definição recursiva:


(
1 ∈ A,
se x ∈ A e x + 2 < 10, então x + 2 ∈ A.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 4 / 64
Conjuntos
Os sı́mbolos ∈ e ∈
/ denotam pertinência e não-pertinência a conjuntos,
respectivamente:

a ∈ {a, b, c}, mas d∈


/ {a, b, c}.

Um conjunto A é subconjunto de um conjunto B, denotado por A ⊆ B, se


todo elemento de A está em B.
Um conjunto A é subconjunto próprio de um conjunto B, denotado por
A ⊂ B, se A ⊆ B mas A 6= B.
A ordem e repetição de elementos em um conjunto é irrelevante:

{a, b, c} = {c, b, a} = {a, b, b, c, c, c}.

Em um multiconjunto a repetição de elementos é relevante (mas


não a ordem):

{{a, b, c}} = {{c, b, a}} 6= {{a, b, b, c, c, c}}.


Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 5 / 64
Conjuntos

Alguns conjuntos importantes:


1 ∅ = {} é o conjunto vazio, ou seja, que tem zero elementos.
2 N = {0, 1, 2, 3, 4, 5, . . .} é o conjunto dos números naturais.
3 Z = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .} é o conjunto dos números inteiros.
4 Z+ = {1, 2, 3, 4, 5 . . .} é o conjunto dos números inteiros positivos.
5 Q = {p/q | p ∈ Z, q ∈ Z, e q 6= 0} é o conjunto dos números racionais.
6 R é o conjunto dos números reais.
7 R+ é o conjunto dos números reais positivos.
8 C é o conjunto dos números complexos.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 6 / 64
Conjuntos
Sendo A, B subconjuntos do conjunto universal U, definimos as operações:

União: A∪B = {x ∈ U | x ∈ A ∨ x ∈ B}

Alternativamente: x ∈A∪B ↔ x ∈A ∨ x ∈B
Sn
Notação: i=1 Ai = A1 ∪ A2 ∪ . . . ∪ An

Interseção: A∩B = {x ∈ U | x ∈ A ∧ x ∈ B}

Alternativamente: x ∈A∩B ↔ x ∈A ∧ x ∈B
Tn
Notação: i=1 Ai = A1 ∩ A2 ∩ . . . ∩ An

Diferença: A−B = {x ∈ U | x ∈ A ∧ x 6∈ B}

Alternativamente: x ∈A−B ↔ x ∈ A ∧ x 6∈ B

Complemento: A = {x ∈ U | x 6∈ A}

Alternativamente: x ∈A ↔ x 6∈ A

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 7 / 64
Conjuntos

Dado um conjunto A, o conjunto potência de A (ou conjunto das partes


de A) é o conjunto de todos os subconjuntos de A.
Denotamos por P(A) o conjunto potência de A.
1 Dado o conjunto S = {x, y , z}, seu conjunto potência é

P(S) = {∅, {x}, {y }, {z}, {x, y }, {x, z}, {y , z}, {x, y , z}}.

2 P(∅) = {∅}.

Teorema: Se um conjunto finito A tem n elementos, então P(A) tem 2n


elementos.

Prova. Para formar um subconjunto S qualquer de A, podemos percorrer


cada elemento ai ∈ A (1 ≤ i ≤ n), decidindo se ai ∈ S ou se ai 6∈ S. Como
para cada elemento há duas opções (pertence ou não pertence), e há um
total de n elementos em A, há 2n maneiras de se formar um subconjunto S
de A. Logo, |P(A)| = 2n .

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 8 / 64
Sequência e tuplas
Uma sequência de objetos é uma lista ordenada destes objetos.
Normalmente representamos sequências como uma lista entre parênteses:
(a, b, c).

Ao contrário de em conjuntos, numa sequência


a ordem dos elementos é relevante:
(a, b, c) 6= (c, a, b) 6= (b, c, a),
mesmo que os conjuntos abaixo sejam equivalentes:
{a, b, c} = {c, a, b} = {b, c, a}.

Assim como os conjuntos, as sequências podem ser finitas ou infinitas.


Uma sequência finita é chamada de tupla (ou upla).
Uma sequência finita com k elementos é chamada de k-tupla:
(a, b, c) é uma 3-tupla.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 9 / 64
Sequências e tuplas

O produto cartesiano (ou produto cruzado) de dois conjuntos A e B,


denotado A × B, é o conjunto de todos os pares ordenados (i.e., 2-tuplas)
(a, b), onde a ∈ A e b ∈ B.
Formalmente:
A × B = {(a, b) | a ∈ A e b ∈ B}.

Exemplo 1 Sejam A = {1, 2} e B = {a, b, c}.

A × B = {(1, a), (1, b), (1, c), (2, a), (2, b), (2, c)}

B × A = {(a, 1), (a, 2), (b, 1), (b, 2), (c, 1), (c, 2)}

A × A = A2 = {(1, 1), (1, 2), (2, 1), (2, 2)}


Note que, em geral, A × B 6= B × A. 

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 10 / 64
Sequências e tuplas
O produto cartesiano (ou produto cruzado) de vários conjuntos
A1 , A2 , . . . , An , denotado por
A1 × A2 × . . . × An ,
é o conjunto de todas as n-tuplas ordenadas (a1 , a2 , . . . , an ), onde ai ∈ Ai
para i = 1 . . . n.
Formalmente:

A1 × A2 × . . . × An = {(a1 , a2 , . . . , an ) | ai ∈ Ai para i = 1 . . . n}

Exemplo 2 Sejam A = {0, 1}, B = {a, b}, C = {γ, δ}.


A × B × C = {(0, a, γ), (0, a, δ), (0, b, γ), (0, b, δ),
(1, a, γ), (1, a, δ), (1, b, γ), (1, b, δ)}, e

A × A × A = A3 = {(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1),


(1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)}.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 11 / 64
Funções e relações

Sejam A e B conjuntos não-vazios.


Uma função (ou mapeamento) f de A para B é uma associação de
exatamente um elemento de B a cada elemento de A.
Escrevemos

f (a) = b

se b for o único elemento de B associado através de f ao elemento a de A.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 12 / 64
Funções e relações

Se f é uma função de A para B, escrevemos

f :A→B
para denotar o tipo da função.
O conjunto A é chamado de domı́nio de f .
O conjunto B é chamado de co-domı́nio ou contra-domı́nio de f .
A imagem de f é o conjunto de valores que f pode assumir:

imagem de f = {b ∈ B | b = f (a) para algum a ∈ A}

A imagem inversa de um elemento b ∈ B é o conjunto de valores a ∈ A que


são mapeados a b via f :

imagem inversa de b = {a ∈ A | f (a) = b}

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 13 / 64
Funções e relações
Exemplo 3 Sejam os conjuntos A = {x, y , z} e B = {1, 2, 3, 4}.
Seja a função f : A → B definida pelo diagrama abaixo.

f (x) = 2 f (z) = 2
f (y ) = 4

Imagem inversa de 1: ∅
Imagem inversa de 2: {x, z}
Imagem inversa de 3: ∅
Imagem inversa de 4: {y }

A função f pode ser representada


Domı́nio de f : {x, y , z} como o conjunto de pares
Co-domı́nio de f : {1, 2, 3, 4} ordenados:
Imagem de f : {2, 4} f = {(x, 2), (y , 4), (z, 2)}

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 14 / 64
Funções e relações
Um predicado ou propriedade é uma função cujo contradomı́nio é
{verdadeiro, falso}.
1 Por exemplo,

Impar : Z → {verdadeiro, falso}

é o predicado que é verdadeiro se seu argumento for ı́mpar, e falso em caso


contrário.
Logo Impar(3) = verdadeiro, mas Impar(6) = falso.

Uma propriedade cujo domı́nio é um conjunto de k-tuplas A × . . . × A é


chamada de uma relação, relação k-ária, ou relação k-ária sobre A.
Se R é uma relação k-ária,
R(a1 , . . . , ak )
significa que
R(a1 , . . . , ak ) = verdadeiro.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 15 / 64
Funções e relações

Uma relação binária tem como domı́nio pares ordenados.


Normalmente usamos notação infixada para representar relação binária:
1 3 < 5 é o mesmo que

< (3, 5) = verdadeiro.

2 2 + 2 = 4 é o mesmo que

= (2 + 2, 4) = verdadeiro.

Uma relação binária R é dita ser uma relação de equivalência se ela


satisfaz três condições:

1. R é reflexiva: para todo x, xRx;


2. R é simétrica: para todo x, y , se xRy então yRx; e
3. R é transitiva: para todo x, y , z, se xRy e yRz então xRz.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 16 / 64
Funções e relações
Exemplo 4 Seja a relação R no conjunto dos reais tal que a R b se, e
somente se, a − b é um inteiro. R é uma relação de equivalência?

Solução: Temos que verificar se R é reflexiva, simétrica e transitiva.

Reflexiva: Sim, já que a − a = 0 é um inteiro para todo real a. Logo

∀a ∈ R : a R a.

Simétrica: Sim, já que se a − b é inteiro, então b − a também é um inteiro


(apenas com o sinal oposto). Logo

∀a, b ∈ R : a R b → b R a.

Transitiva: Sim, se a − b e b − c são ambos inteiros, então a − c = (a − b) +


(b − c) é a soma de dois inteiros e, portanto, a − c também é inteiro. Logo

∀a, b, c ∈ R : (a R b) ∧ (b R c) → (a R c).


Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 17 / 64
Grafos

Um grafo não-direcionado (ou simplesmente grafo) é um conjunto de


vértices com arestas conectando alguns destes vértices.

Um grafo G pode ser descrito como G = (V , E ) em que V = {v1 , v2 , . . . , vn }


é o conjunto de vértices de G , e E é o conjunto de arestas. Uma aresta
(não-direcionada) entre o vértice vi e o vértice vj é representada por {vi , vj }.

1 O grafo ao lado pode ser representado por


G = (V , E ), onde

V = {1, 2, 3, 4, 5} é o conjunto de vértices


E = { {1, 2}, {1, 5}, {2, 3}, {3, 4}, {4, 5} }
é o conjunto de arestas não-direcionadas.

O número de arestas em um vértice especı́fico é o grau do vértice.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 18 / 64
Grafos

Um grafo rotulado é um grafo


em que vértices e/ou arestas re-
cebem rótulos.

Um grafo G = (V , E ) é um
subgrafo de um grafo H =
(V 0 , E 0 ) se:

1. V ⊆ V 0 , e

2. E ⊆ E 0 .

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 19 / 64
Grafos

Um caminho em um grafo é
uma sequência de vértices co-
nectados por arestas.
Um caminho simples é um ca-
minho que não repete nenhum
vértice.

Um grafo é conexo se entre cada dois vértices do grafo existe um caminho.

Um ciclo é um caminho que


começa e termina no mesmo
vértice.
Um ciclo simples é aquele que
contém pelo menos três vértices
e repete somente o primeiro e o
último vértice.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 20 / 64
Grafos

Uma árvore é um grafo conexo


e sem ciclos.
Uma árvore pode conter um
vértice designado raiz, e os
vértices de grau 1 são chama-
dos folhas.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 21 / 64
Grafos

Em um grafo direcionado cada aresta tem um vértice de saı́da e um


vértice de entrada.
Um aresta saindo do vértice vi e chegando ao vértice vj é representada por
uma tupla (vi , vj ).
1 O grafo ao lado pode ser representado
por G = (V , E ), onde

V = {1, 2, 3, 4, 5, 6} é o conjunto de
vértices,
E = { (1, 2), (1, 5), (2, 1),
(2, 4), (5, 4), (5, 6), (6, 1), (6, 3) }
é o conjunto de arestas direcionadas.

Um caminho direcionado é aquele em que toda aresta aponta na mesma


direção.

Um grafo é fortemente conexo se um caminho direcionado conecta cada


dois vértices.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 22 / 64
Lógica Booleana

A lógica Booleana é definida sobre valores Booleanos T (verdadeiro) e


F (falso), e operadores lógicos como os abaixo:

Conjunção Disjunção
Negação p q p∧q p q p∨q
p ¬p T T T T T T
T F T F F T F T
F T F T F F T T
F F F F F F

Ou exclusivo Implicação Implicação dupla


p q p⊕q p q p→q p q p↔q
T T F T T T T T T
T F T T F F T F F
F T T F T T F T F
F F F F F T F F T

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 23 / 64
Definições, Teoremas e
Provas

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 24 / 64
Definições e Provas: Terminologia
Uma definição é uma descrição de objetos ou noções que usamos.
Um enunciado matemático, no geral, é uma afirmação de que um objeto
tem uma certa propriedade.
Uma prova é uma demonstração matemática da certeza a respeito de um
enunciado matemático.
O nı́vel de detalhamento de uma prova pode depender do tipo de leitor ao
qual ela se destina, levando em conta fatores como:
1. o conhecimento do leitor;
2. a maturidade do leitor;
3. o nı́vel de rigor almejado.

Adotamos o rigor matemático esperado de profissionais da área de exatas.


Provas são importantes em várias áreas da Ciência da Computação:

1 correção de programas; 3 propriedades de segurança de


sistemas;
2 análise de complexidade de
algoritmos; 4 ...
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 25 / 64
Provas e Teoremas: Terminologia
Um axioma (ou postulado) é afirmação assumida como verdadeira sem a
necessidade de uma prova; axiomas são considerados “verdades
auto-evidentes”.
Um teorema é uma afirmação que se pode demonstrar ser verdadeira. Um
teorema é um resultado considerado interessante em si mesmo.
Uma proposição é também uma afirmação que se pode demonstrar
verdadeira, mas considerada um teorema “de menor interesse”.
Um lema é uma afirmação auxiliar a ser provada, geralmente para quebrar a
prova de um teorema grande em pedaços menores.
Uma prova (ou demonstração) é um argumento que mostra que uma
afirmação (teorema, proposição ou lema) segue de um conjunto de premissas.
Um corolário é afirmacão derivável facilmente a partir de um teorema já
provado. Colorários são consequências imediatas de outros resultados.
Uma conjectura é suposição bem fundada, porém (ainda) sem prova. Uma
vez provada, uma conjectura se torna um teorema ou uma proposição.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 26 / 64
Como escrever uma prova

Escreva claramente qual a afirmação que se deseja provar. (É comum


preceder a afirmação com a palavra Teorema ou Lema.)

Delimite claramente o escopo da prova.


Indique o inı́cio da prova com a palavra Prova.
Indique o fim da prova com um marcador. Podem-se usar:

um quadradinho , ou
a abreviação Q.E.D. (do latim “quod erat demonstrandum”), ou
sua tradução em português, C.Q.D. (“conforme querı́amos demonstrar”).

Escreva a prova de tal forma que ela seja autocontida. Use linguagem natural
(português) de forma clara, empregando sentenças completas e bem
estruturadas. Podem-se utilizar fórmulas matemáticas, equações, etc.,
quando necessário.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 27 / 64
Como escrever uma prova

Identifique cada variável usada na prova juntamente com seu tipo. Exs.:

1 Seja x um número real maior que 2.

2 Suponha que m e n sejam inteiros sem divisores comuns.

Importante:
O objetivo principal de uma prova é convencer o leitor de que o resultado
(teorema, proposição, lema) é verdadeiro.
Não basta que você mesmo esteja convencido!
Certifique-se de que está sendo conciso, mas claro.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 28 / 64
Como escrever uma prova: Exemplo
Exemplo 5 Mostre que se m e n são quadrados perfeitos, então mn é um
quadrado perfeito.
(Obs: Um inteiro a é um quadrado perfeito se existe um inteiro b tal que
a = b 2 .)

Prova. Para provar esta proposição, vamos assumir que m e n sejam


quadrados perfeitos. Pela definição de quadrado perfeito, devem existir
inteiros s e t tais que m = s 2 e n = t 2 .
O objetivo da prova é mostrar que mn será um quadrado perfeito quando m
e n o forem. Para ver isto, podemos calcular

mn = s 2t 2 = (st)2 .

Mas é claro que st também é um inteiro, logo mn satisfaz a definição de


quadrado perfeito (já que mn = (st)2 ), e a conclusão da implicação também
é verdadeira.
Logo concluı́mos a prova de que a afirmação é verdadeira.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 29 / 64
Técnicas de Prova

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 30 / 64
Técnicas de prova

Construir uma prova é uma arte.


Cada caso é um caso: não existe uma “receita fechada” para construir provas
para todas as afirmações.

Existem, entretanto, técnicas que são úteis para provar uma grande
quantidade de afirmações.
Aqui vamos rever as seguintes técnicas de prova:

1. prova por construção;


2. prova por contradição (ou prova por redução ao absurdo);
3. prova por indução.

Outras técnicas de prova (e.g., prova por contra-exemplo, por divisão em


casos, etc.) serão revistas à medida em que forem necessárias.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 31 / 64
Prova por construção

Muitos teoremas enunciam que um tipo particular de objeto existe.


Uma maneira de provar um teorema destes é demonstrar como construir o
objeto.
Esta técnica de prova é chamada de prova por construção.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 32 / 64
Prova por construção: Exemplo
Exemplo 6 Mostre que para cada número par n maior que 2, existe um
grafo 3-regular com n vértices.

Prova. Seja n um número par maior que 2. Construa o grafo G = (V , E )


com n vértices da seguinte forma.
O conjunto de vértices é V = {0, 1, . . . , n − 1}, e o conjunto de arestas é
E = { {i, i + 1} | para 0 ≤ i ≤ n − 2 } ∪
{ {n − 1, 0} } ∪
{ {i, i + n/2} | para 0 ≤ i ≤ n/2 − 1 } .
Desenhe os vértices desse grafo escritos consecutivamente ao redor da
circunferência de um cı́rculo:
As arestas do tipo { {i, i + 1} | para 0 ≤ i ≤ n − 2 } ligam pares adjacentes
ao longo do cı́rculo.
As arestas do tipo { {i, i + n/2} | para 0 ≤ i ≤ n/2 − 1} ligam vértices em
lados opostos do cı́rculo.

Isto claramente mostra que todo vértice em G tem grau 3.


Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 33 / 64
Prova por contradição

Uma forma comum de provar um teorema é seguir os seguintes passos:

1. assumir que o teorema é falso;


2. em seguida, demonstrar que esta suposição leva a uma consequência
obviamente falsa, chamada de contradição,
3. concluir que o teorema, então, deve ser necessariamente verdadeiro.

Esta técnica de prova é chamada de prova por contradição ou prova por


redução ao absurdo.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 34 / 64
Prova por contradição: Exemplo

Exemplo 7 Mostre que 2 é irracional.

Prova. Suponha o contrário do que queremos provar, ou seja, que 2 é
racional.

Neste caso, existem p, q ∈ Z, com mdc(p, q) = 1, tais que 2 = p/q.
Elevando os dois lados ao quadrado, obtemos 2 = p 2 /q 2 , ou seja, p 2 = 2q 2 .
Note que 2q 2 é par, portanto pela igualdade acima p 2 também tem que ser
par. Isto implica que p deve ser par.
Agora, já que p é par, existe algum s ∈ Z tal que p = 2s. Isso implica que
2q 2 = p 2 = (2s)2 = 4s 2 , o que resulta em q 2 = 2s 2 . Note que então q 2 é
par, portanto q deve ser par.
Mas se ambos p e q são pares, isto contradiz a suposição de que o
mdc(p, q) = 1: encontramos uma contradição.

√ não existem p, q ∈√Z, com q 6= 0 e


Logo podemos concluir que
mdc(p, q) = 1, tais que 2 = p/q. Portanto 2 é irracional.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 35 / 64
Prova por indução

Imagine que você esteja diante de uma escada de infinitos degraus, e você se
pergunta: “Será que eu consigo alcançar qualquer degrau dessa escada?”

Você sabe que


1. você consegue alcançar o primeiro degrau, e
2. se você alcançar um degrau qualquer, você consegue alcançar o próximo
degrau.

Usando as regras acima, você pode deduzir que:


1 você consegue alcançar o primeiro degrau: pela regra 1;
2 você consegue alcançar o segundo degrau: pela regra 1, depois regra 2;
3 você consegue alcançar o terceiro degrau: regra 1, depois regra 2 por duas
vezes;
4 ...
5 você consegue alcançar o n-ésimo degrau: regra 1, depois regra 2 por n − 1
vezes.

Logo, você pode concluir que pode alcançar todos os degraus da escada!

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 36 / 64
Prova por indução
Para mostrar que uma propriedade P(n) vale para todos os inteiros positivos
n, uma prova que utilize o princı́pio da indução matemática (fraca)
possui duas partes:
Prova por indução fraca:

Passo base: Prova-se P(1).

Passo indutivo: Prova-se que, para qualquer inteiro positivo k, se P(k) é


verdadeiro, então P(k + 1) é verdadeiro.

A premissa do passo indutivo (P(k) é verdadeiro) é chamada de hipótese de


indução ou I.H.
O princı́pio da indução matemática pode ser expresso como uma regra de
inferência sobre os números inteiros:

[ P(1) ∧ ∀k ≥ 1 : (P(k) → P(k + 1))] → ∀n ≥ 1 : P(n)


|{z} | {z } | {z }
Passo base Passo indutivo Conclusão

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 37 / 64
Prova por indução: Exemplo
Exemplo 8 Mostre que para todo inteiro não-negativo n,
Pn i n+1
i=0 2 = 2 − 1.
Pn
Prova. Seja P(n) a proposição “ i=0 2i = 2n+1 − 1”.

Passo base: P(0) é verdadeiro porque:


0
X
2i = 20+1 − 1,
i=0

já que o lado esquerdo da igualdade acima pode ser escrito


como
0
X
2i = 20 = 1,
i=0

e o lado direito pode ser escrito como


20+1 − 1 = 21 − 1 = 1.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 38 / 64
Prova por indução: Exemplo

Exemplo 8 (Continuação)

Passo indutivo: Assuma que P(k) seja verdadeiro para um inteiro


não-negativo arbitrário k, ou seja, assuma como verdadeira a
hipótese de indução
k
X
2i = 2k+1 − 1.
i=0

Queremos mostrar que, se a hipótese acima for verdadeira,


então P(k + 1) também é verdadeiro, ou seja, que
k+1
X
2i = 2(k+1)+1 − 1 = 2k+2 − 1.
i=0

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 39 / 64
Prova por indução: Exemplo

Exemplo 8 (Continuação)

Para isto, podemos derivar


k+1 k
!
X X
i i
2 = 2 + 2k+1
i=0 i=0
k+1
− 1 + 2k+1

= 2 (pela I.H.)
k+1
=2·2 −1
k+2
=2 − 1,

de onde concluı́mos o passo indutivo.


Logo, por indução mostramos que ∀n ∈ N : P(n), ou seja, que
P n i n+1
i=0 2 = 2 − 1 para todo inteiro n ≥ 0.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 40 / 64
Erros comuns em provas

Argumentar a partir de exemplos.

Exemplo 9 Teorema: “Se m + n é par então m − n é par.”

Prova incorreta: Se m = 14 e n = 6 então m + n = 20 que é par e m − n = 8


que também é par.

Pular para uma conclusão; ou alegar a verdade de alguma coisa sem dar uma
razão adequada.

Exemplo 10 Teorema: “Se m + n é par então m − n é par.”

Prova incorreta: Suponha que m e n sejam inteiros e que m + n é par. Pela


definição de par, m + n = 2k para algum inteiro k. Então m = 2k − n e assim
m − n é par.

Exercı́cio: Corrija as provas dadas acima, provando corretamente a afirmação:


“Se m + n é par então m − n é par”.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 41 / 64
Enumerabilidade

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 42 / 64
Cardinalidade de conjuntos

O tamanho de um conjunto finito é dado pelo número de seus elementos.


Podemos comparar o tamanho de conjuntos finitos verificando qual conjunto
tem mais elementos.

Entretanto, quando lidamos com conjuntos infinitos, os conceitos de


“tamanho” e de “comparação” são mais complexos.

Aqui estudaremos a cardinalidade (i.e., “tamanho”) de conjuntos infinitos, e


maneiras de comparar se conjuntos infinitos são “maiores”, “menores”, ou
“de igual tamanho” a outros conjuntos infinitos.

Em particular, definiremos o conceito de conjunto infinito enumerável, que


é a base da Matemática Discreta.
Estes conjuntos estão em contraste com os conjuntos não-enumeráveis, que
são objetos de estudo da matemática contı́nua.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 43 / 64
Cardinalidade de conjuntos infinitos

A cardinalidade de um conjunto finito é o número de elementos deste


conjunto.
Por exemplo:
1 O conjunto finito A = {a, b, c} tem cardinalidade |A| = 3.

Podemos dividir os conjuntos finitos em classes de acordo com sua


cardinalidade:

a classe de conjuntos com 0 elementos,


a classe de conjuntos com 1 elementos,
a classe de conjuntos com 2 elementos,
...
a classe de conjuntos com k elementos,
...

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 44 / 64
Cardinalidade de conjuntos infinitos

Mas e quanto a conjuntos infinitos como N, Z e R?


Poderı́amos dizer que estes conjuntos pertencem à

“classe de conjuntos com ∞ elementos”?


Mais precisamente:

Será que esta classe existe?


Será que esta classe é única?

Temos que ter cuidado com as perguntas acima: o conceito de “infinito”


pode ser bastante contraintuitivo!

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 45 / 64
Infinito bizarro: O Hotel de Hilbert
Exemplo 11 Imagine um hotel com infinitos quartos acomodando infinitos
hóspedes, de modo que cada quarto esteja ocupado por um único hóspede.
Suponha que um novo hóspede chegue ao hotel procurando por um quarto.
É possı́vel acomodar este novo hóspede em algum quarto, sem expulsar
nenhum hóspede que já estava no hotel?

Solução.
Se o hotel tivesse um número finito de quartos, a resposta seria negativa...
Mas o Hotel de Hilbert tem infinitos quartos... E o infinito é bizarro!
Podemos acomodar o novo hóspede se fizermos cada hóspede em um quarto n
mudar-se para o quarto n + 1:
o hóspede do quarto 1 muda-se para o quarto 2,
o hóspede do quarto 2 muda-se para o quarto 3,
o hóspede do quarto 3 muda-se para o quarto 4,
etc...
Assim podemos acomodar o novo hóspede no quarto 1! 
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 46 / 64
Infinito bizarro: O Hotel de Hilbert
Exemplo 12 Imagine ainda o mesmo hotel com infinitos quartos
acomodando infinitos hóspedes, estando um hóspede em cada quarto.
Suponha que é alta-estação, e um ônibus trazendo um número infinito de
hóspedes chega ao hotel, todos procurando por um quarto.
É possı́vel acomodar todos os infinitos hóspedes em algum quarto, sem
expulsar nenhum hóspede que já estava no hotel?

Solução.
Sim! Podemos acomodar os infinitos hóspedes assim se fizermos cada hóspede
em um quarto n mudar-se para o quarto 2n:
o hóspede do quarto 1 muda-se para o quarto 2,
o hóspede do quarto 2 muda-se para o quarto 4,
o hóspede do quarto 3 muda-se para o quarto 6,
etc...

Assim todos os quartos ı́mpares ficam vagos, e podemos acomodar os infinitos


novos hóspedes nos quartos ı́mpares! 
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 47 / 64
Infinito bizarro: O Hotel de Hilbert

Exemplo 13 Imagine ainda o mesmo hotel com infinitos quartos


acomodando infinitos hóspedes, estando um hóspede em cada quarto.
Agora imagine que cheguem ao hotel um número infinito de ônibus, cada
ônibus com um número infinito de hóspedes procurando por um quarto.
É possı́vel acomodar todos os novos hóspedes no hotel, sem expulsar nenhum
hóspede que já estava no hotel?

Solução.
Desafio para o aluno!
(Dica: é possı́vel. E, dependendo de como você fizer, ainda sobram quartos!)


Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 48 / 64
Cardinalidade de conjuntos

O conceito de cardinalidade estende o conceito de “tamanho” para conjuntos


infinitos.
A cardinalidade é uma medida de tamanho relativo de um conjunto em
comparação com outro conjunto.
Formalmente, sejam A e B dois conjuntos quaisquer. A tem a mesma
cardinalidade de B sse existe uma correspondência um-para-um (ou seja,
uma função bijetiva) de A para B.

Note que a definição acima captura a noção de número de elementos para


conjuntos finitos.

Além disso, a definição acima também é válida para conjuntos infinitos.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 49 / 64
Conjuntos enumeráveis
Um conjunto é chamado enumerável ou contável se ele é finito ou se ele
possui a mesma cardinalidade que o conjunto dos inteiros positivos Z+ .
Caso contrário o conjunto é chamado não-enumerável ou não-contável.

Exemplo 14 O conjunto P dos números pares positivos é enumerável?

Solução.
Considere a bijeção entre os dois conjuntos:
P: 2 4 6 8 10 ...
l l l l l
Z+ : 1 2 3 4 5 ...
Esta bijeção é uma maneira de enumerar ou contar os elementos de P:
2, 4, 6, 8, 10, . . .
+
Podemos mostrar a bijeção de Z para P, ou inversamente a bijeção de P
para Z+ .

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 50 / 64
Conjuntos enumeráveis

Exemplo 15 O conjunto Z de todos os números inteiros é enumerável?

Solução.
Considere a bijeção entre os dois conjuntos:
Z: ... −3 −2 −1 0 1 2 3 ...
l l l l l l l
Z+ : ... 7 5 3 1 2 4 6 ...

Logo Z é enumerável, e podemos enumerar seus elementos assim:

0, 1, −1, 2, −2, 3, −3, 4, −4, ...

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 51 / 64
Conjuntos enumeráveis
Exemplo 16 O conjunto Q+ dos racionais positivos é enumerável?

Solução. Vamos representar o conjunto Q+ como uma tabela em que cada


linha representa um possı́vel numerador (um inteiro positivo) e cada coluna
representa um possı́vel denominador (também um inteiro positivo). A tabela
abaixo mostra uma bijeção entre Q+ (frações) e Z+ (números circulados).
(As frações não-simplificadas são redundantes e não entram na bijeção.)

Num./Den. 1 2 3 4 5 ...

1 1/1 1 1/2 2 1/3 4 1/4 6 1/5 11 ...

2 2/1 3 2/2 ×
2/3 7 2/4 ×
2/5 . . . ...

3 3/1 5 3/2 8 3/3 ×


3/4 . . . 3/5 . . . ...

4 4/1 9 4/2 ×
4/3 . . . 4/4 . . . 4/5 . . . ...

5 5/1 12 5/2 . . . 5/3 . . . 5/4 . . . 5/5 . . . ...


... ... ... ... ... ... ...

Logo Q+ é enumerável. 
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 52 / 64
Conjuntos enumeráveis
Exemplo 17 O conjunto Q de todos os racionais é enumerável?

Solução.
Método 1: Adaptando a técnica do exemplo anterior, fazemos linhas e
colunas corresponderem todos os inteiros positivos e negativos. A tabela
abaixo mostra uma bijeção entre Q (frações) e Z+ (números circulados). (As
frações não-simplificadas são redundantes e não entram na bijeção.)

Num./Den. 1 2 3 4 5 ...

0 0/1 1 0/2 ×
0/3 ×
0/4 ×
0/5 × ...

1 1/1 2 1/2 3 1/3 5 1/4 8 1/5 . . . ...

-1 −1/1 4 −1/2 6 −1/3 9 −1/4 . . . −1/5 . . . ...

2 2/1 7 2/2 × 2/3 . . . 2/4 . . . 2/5 . . . ...

-2 −2/1 10 −2/2 . . . −2/3 . . . −2/4 . . . −2/5 . . . ...


... ... ... ... ... ... ...

Logo Q é enumerável.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 53 / 64
Conjuntos enumeráveis
Exemplo 17 (Continuação)

Método 2: Considere a seguinte enumeração dos racionais no intervalo [0, 1]


(em que as frações aparecem em ordem crescente de denominador, depois de
numerador, tomando o cuidado de eliminar frações redundantes (em cinza)):
1 1 2 1 2 3 1 2 3 4
0, , , , , , , , , , , ...
1 2 2 3 3 3 4 4 4 4
Para incluir os racionais maiores que 1, podemos estender a lista acima,
listando cada fração inversa após a fração original:
1 1 2 1 3 2 3 1 4 3 4
0, , , , , , , , , , , , . . .
1 2 1 3 1 3 2 4 1 4 3
Por fim, para obter uma enumeração completa dos racionais Q, podemos
estender a lista acima ao enumerar após cada fração, sua oposta:
1 1 1 1 2 2 1 1 3 3 2 2 3 3 1 1 4 4
0, , − , , − , , − , , − , , − , , − , , − , , − , − , ...
1 1 2 2 1 1 3 3 1 1 3 3 2 2 4 4 1 1
Como obtivemos uma enumeração de Q, este conjunto é enumerável. 
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 54 / 64
Propriedades dos conjuntos enumeráveis

Teorema: A união de dois conjuntos enumeráveis é enumerável.

Prova. Sejam A e B conjuntos enumeráveis. Portanto existe uma


enumeração a1 , a2 , a3 , . . . para A e uma enumeração b1 , b2 , b3 , . . . para B.
Podemos construir uma enumeração para A ∪ B tomando
a1 , b1 , a2 , b2 , a3 , b3 . . . (com o cuidado de não listar elementos repetidos, i.e.,
elementos que estejam em A ∩ B.)

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 55 / 64
Propriedades dos conjuntos enumeráveis

Teorema: Qualquer subconjunto de um conjunto enumerável é enumerável.

Prova. Seja B um conjunto enumerável, e tome A ⊆ B. Por hipótese, existe


uma enumeração b1 , b2 , b3 , . . . para B. Eliminando os termos bi ∈
/ A desta
enumeração, obtém-se uma enumeração para A.

Corolário: Se um conjunto B tem um subconjunto A ⊆ B tal que A é


não-enumerável, então B é não-enumerável.

Prova. Este resultado é apenas o contrapositivo do teorema que diz que


qualquer subconjunto de um conjunto enumerável é enumerável.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 56 / 64
Um conjunto não enumerável: R

Para verificar que o conjunto R de todos os números reais não é enumerável,


vamos usar o resultado auxiliar abaixo.

Teorema: O conjunto de todos os números reais no intervalo [0, 1) é


não-enumerável.

Prova. Por contradição. Suponha que [0, 1) seja enumerável. Então, por
definição de enumerabilidade, existe uma lista r1 , r2 , r3 , . . . , ri , . . . em que
constam todos os elementos de [0, 1).
Esta lista pode ser representada por uma matriz, em que cada linha
representa um número real em [0, 1), ordenada de acordo com a enumeração
acima, e cada coluna representa os dı́gitos decimais deste número.
Mais precisamente, já que cada ri nesta lista pertence ao intervalo [0, 1),
podemos escrever
ri = 0 . ri1 ri2 ri3 . . . rin . . . ,
onde rin é o n-ésimo dı́gito decimal do número ri .

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 57 / 64
Um conjunto não enumerável: R
Prova (Continuação).
Esta tabela tem o formato abaixo:
Enumeração 1o dec. 2o dec. 3o dec. ... n-ésimo dec. ...
r1 r11 r12 r13 ... r1n ...
r2 r21 r22 r23 ... r2n ...
r3 r31 r32 r33 ... r3n ...
.. .. .. .. .. .. ..
. . . . . . .
ri ri1 ri2 ri3 ... rin ...
.. .. .. .. .. .. ..
. . . . . . .

Se encontrarmos um número rα no intervalo [0, 1) que não esteja listado na


tabela acima, chegamos a uma contradição (pois assumimos por hipótese que
a lista está completa).
Vamos construir rα definindo cada uma de suas casas decimais da seguinte
forma:
rαk = (rkk + 5) mod 10.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 58 / 64
Um conjunto não enumerável: R
Prova (Continuação).
Assim o número α é tal que:

Enumeração 1o dec. 2o dec. 3o dec. ... k-ésimo dec. ...


r1 r11 r12 r13 ... r1k ...
r2 r21 r22 r23 ... r2k ...
r3 r31 r32 r33 ... r3k ...
.. .. .. .. .. .. ..
. . . . . . .
rk rk1 rk2 rk3 ... rkk ...
.. .. .. .. .. .. ..
. . . . . . .
(r11 + 5) (r22 + 5) (r33 + 5) (rkk + 5)
rα ... ...
mod 10 mod 10 mod 10 mod 10

Mas note que o número rα não pode estar na lista, pois ele é diferente de
todos os demais números da lista (para qualquer ri na lista, o i-ésimo dı́gito
de rα é diferente do i-ésimo dı́gito de ri , logo temos que rα 6= ri ).
Logo, a lista não pode estar completa, pois rα não se encontra nela, e
chegamos a uma contradição.
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 59 / 64
Um conjunto não enumerável: R

Corolário: O conjunto R não é enumerável.

Prova. Nesta aula provamos se A ⊆ B e A não é enumerável, então B não é


enumerável.
Portanto, observando que [0, 1) ⊆ R, e sabendo que [0, 1) não é enumerável,
segue-se que R não é enumerável.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 60 / 64
Apêndice -
O Teorema de Cantor

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 61 / 64
O Teorema de Cantor

Cantor produziu várias contribuições importantes para a matemática.


Em particular, seu método de diagonalização é utilizado em vários
resultados fundamentais em ciência da computação (vamos revisitá-lo neste
curso!).

Uma das contribuições mais relevantes de Cantor foi mostrar que existem
infinitos de tamanhos diferentes.
Em particular, os reais têm cardinalidade maior que os naturais.

Mas Cantor foi além: ele generalizou o método da diagonalização para


mostrar que existem conjuntos de cardinalidade ainda maior que a dos reais.

No Teorema de Cantor, ele demonstrou que:

existe um número infinito de infinitos diferentes, cada um maior que o outro!

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 62 / 64
O Teorema de Cantor

Teorema (Teorema de Cantor) Dado qualquer conjunto A, seu conjunto


potência P(A) tem cardinalidade maior:

card(A) < card(P(A)).

Prova.
Primeiro vamos mostrar que a cardinalidade de A não pode ser maior que a
de seu conjunto potência P(A).
Para isto, basta notar que existe uma função injetiva f : A → P(A) definida
como f (a) = {a} para todo a ∈ A. Logo, P(A) tem pelo menos tantos
elementos quando A.
O segundo passo da prova é mostrar que a cardinalidade de A não pode igual
à de seu conjunto potência P(A).
Para isto, vamos mostrar que nenhuma função f de um conjunto A para seu
conjunto potência P(A) pode ser bijetiva.

Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 63 / 64
O Teorema de Cantor
Demonstração. (Continuação)

Por contradição, assuma que exista uma bijeção f entre A e P(A).


Considere o conjunto

B = {a ∈ A | a ∈
/ f (a)}.

Como B ∈ P(A), então deve existir um x ∈ A tal que f (x) = B, uma vez
que f é bijetiva.
Há duas possibilidades a se considerarem:

1. Se x ∈ B, então x ∈
/ f (x), ou seja, x ∈
/ B, o que é uma contradição.
2. Se x ∈
/ B, então x ∈ f (x), ou seja, x ∈ B, o que é uma contradição.

Logo, f não é uma função sobrejetiva, e chegamos a uma contradição.


Para concluir, note que como mostramos que card(A) ≤ card(P(A)) e que
card(A) 6= card(P(A)), podemos concluir que card(A) < card(P(A)).
Fundamentos de Teoria da Computação Terminologia, Técnicas de Prova, Enumerabilidade Área de Teoria DCC/UFMG - 2020/01 64 / 64

Você também pode gostar