capítulo 4 - faculdade de ciências exatas e da engenhariacee.uma.pt/edu/ed/textosp/texto4.pdf ·...

44
95 Capítulo 4 - Funções Neste capítulo abordaremos um dos conceitos matemáticos mais importantes: o conceito de função. Falaremos em particular: de funções (funções parciais) e aplicações (funções totais); composição de funções; aplicações injectivas, sobrejectivas e bijectivas; inversa de uma aplicação bijectiva; operação num conjunto e estruturas algébricas (simples); e famílias indexadas. Tópicos como morfismos e isomorfismos entre estruturas e cardinalidade de um conjunto, serão deixados para capítulos específicos, ulteriores. Secção 1: Funções (funções parciais) e aplicações (funções totais). Uma função f entre um conjunto A e um conjunto B (ou uma função f de A para B) é uma associação entre A e B que a cada elemento de A faz corresponder no máximo um elemento de B. Podemos assim ver uma função f entre A e B como uma relação binária entre A e B que satisfaz a seguinte propriedade (dita propriedade funcional) xA y1,y2B ((x,y1)f (x,y2)f y1=y2) No entanto, quando consideramos uma tal relação binária como uma função, a terminologia e as notações usadas mudam, de forma a salientar a noção de movimento que está intuitivamente associado às funções 1 (para além de se usarem letras como f, g, ..., em vez de R, R1, ..., como nomes genéricos usuais de funções). Assim: Ao conjunto A chama-se o conjunto de partida. Ao conjunto B chama-se o conjunto de chegada. Quando um elemento x de A não está associado por f a nenhum elemento de B, i.e, quando x não pertence ao domínio de f, diz-se que f não está definida em x. Quando x pertence ao domínio de f, existe então um e um só elemento de B que está associado a x por f, elemento que se diz a imagem por f de x e se denota por f(x). E, para designar que um elemento y de B é a imagem por f de um elemento x de A, escreve-se y=f(x), em vez de se escrever que (x,y)f (ou x f y, a outra notação usual nas relações binárias) 2 . 1 Associado a uma função não só há uma direcção clara no relacionamento que se estabelece entre dois conjuntos, como decorre da expressão “f é uma função de A para B”, como uma função f é intuitivamente vista como uma entidade que nos permite passar de elementos de A para elementos de B. A distinção entre uma relação binária (satisfazendo a propriedade funcional) e a correspondente função transparece também da forma como nos referimos a ambas em português. Considere-se p.ex. a associação que se pode estabelecer entre cada pessoa e o seu pai. Se virmos esssa associação como uma relação binária no conjunto das pessoas, então poderemos dizer que ela é descrita pela expressão p.ex. “é_filho/a_do_Sr.”, ao passo que a designação natural da corrrespondente função será “o_pai_de” (tendo-se “x é_filho/a_do_Sr. y” sse o_pai_de(x) = y). 2 Saliente-se que, quando se escreve y=f(x), assume-se que f está definida em x, e que a imagem de x por f é y. Refira-se ainda, a propósito, que em certas áreas da matemática se usa os termos "váriável independente" e "variável dependente" no contexto de funções: se f é uma função, então para os pares (x,y)f (i.e. tais que y = f(x)), x é chamada a variável independente e y a variável dependente.

Upload: trannga

Post on 08-Nov-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

95

Capítulo 4 - Funções

Neste capítulo abordaremos um dos conceitos matemáticos mais importantes: o conceito de função.

Falaremos em particular: de funções (funções parciais) e aplicações (funções totais); composição de

funções; aplicações injectivas, sobrejectivas e bijectivas; inversa de uma aplicação bijectiva; operação num

conjunto e estruturas algébricas (simples); e famílias indexadas. Tópicos como morfismos e isomorfismos

entre estruturas e cardinalidade de um conjunto, serão deixados para capítulos específicos, ulteriores.

Secção 1: Funções (funções parciais) e aplicações (funções totais).

Uma função f entre um conjunto A e um conjunto B (ou uma função f de A para B) é uma associação

entre A e B que a cada elemento de A faz corresponder no máximo um elemento de B.

Podemos assim ver uma função f entre A e B como uma relação binária entre A e B que satisfaz a

seguinte propriedade (dita propriedade funcional)

∀x∈A ∀y1,y2∈B ((x,y1)∈f ∧ (x,y2)∈f ⇒ y1=y2)

No entanto, quando consideramos uma tal relação binária como uma função, a terminologia e as

notações usadas mudam, de forma a salientar a noção de movimento que está intuitivamente associado às

funções1 (para além de se usarem letras como f, g, ..., em vez de R, R1, ..., como nomes genéricos

usuais de funções). Assim:

• Ao conjunto A chama-se o conjunto de partida.

• Ao conjunto B chama-se o conjunto de chegada.

• Quando um elemento x de A não está associado por f a nenhum elemento de B, i.e, quando x não

pertence ao domínio de f, diz-se que f não está definida em x.

• Quando x pertence ao domínio de f, existe então um e um só elemento de B que está associado a x por

f, elemento que se diz a imagem por f de x e se denota por f(x).

• E, para designar que um elemento y de B é a imagem por f de um elemento x de A, escreve-se y=f(x),

em vez de se escrever que (x,y)∈f (ou x f y, a outra notação usual nas relações binárias) 2.

1 Associado a uma função não só há uma direcção clara no relacionamento que se estabelece entre dois conjuntos, como

decorre da expressão “f é uma função de A para B”, como uma função f é intuitivamente vista como uma entidade que nos

permite passar de elementos de A para elementos de B. A distinção entre uma relação binária (satisfazendo a propriedade

funcional) e a correspondente função transparece também da forma como nos referimos a ambas em português. Considere-se

p.ex. a associação que se pode estabelecer entre cada pessoa e o seu pai. Se virmos esssa associação como uma relação binária

no conjunto das pessoas, então poderemos dizer que ela é descrita pela expressão p.ex. “é_filho/a_do_Sr.”, ao passo que a

designação natural da corrrespondente função será “o_pai_de” (tendo-se “x é_filho/a_do_Sr. y” sse o_pai_de(x) = y).2 Saliente-se que, quando se escreve y=f(x), assume-se que f está definida em x, e que a imagem de x por f é y.

Refira-se ainda, a propósito, que em certas áreas da matemática se usa os termos "váriável independente" e "variável

dependente" no contexto de funções: se f é uma função, então para os pares (x,y)∈f (i.e. tais que y = f(x)), x é chamada a

variável independente e y a variável dependente.

96

Observação 1 :

Esta visão de uma função como uma relação binária entre dois conjuntos (satisfazendo a propriedade

funcional) tem a grande vantagem de permitir capitalizar, de modo imediato, nos conceitos já introduzidos

a propósito de tais relações (dando “de borla” p.ex. as noções de domínio e contradomínio de uma função).

No entanto, esta visão de uma função como um conjunto de pares ordenados (de elementos de dois

conjuntos) apresenta a desvantagem de obscurecer (ou não realçar) a ideia de movimento e o carácter

operacional que está intuitivamente associado a uma função.

Alternativamente, podemos considerar que embora se possa representar uma função através de uma

relação binária, se trata de entidades conceptualmente distintas.

Uma função f entre A e B pode ser simplesmente vista como uma entidade (um processo de natureza

qualquer) que permite “passar de”/”levar de”/”transformar “ certos objectos do conjunto A (que formam o

domínio onde tal função está definida) em objectos do conjunto B, através da associação a cada um desses

objectos, x, de um e um só objecto y de B, que se diz a imagem de x por f, e se denota por f(x).

Uma tal entidade continua a poder ser representada (em termos da teoria de conjuntos) pela relação

binária entre A e B que lhe está naturalmente associada:

{(x, y) : y = f(x)}

conjunto de pares ordenados que é designado, por vezes, de gráfico 3 da função f (o termo grafo de f

também é usado, em certos contextos, para designar esta relação).

Mas o facto de se poder representar naturalmente uma função por um conjunto de pares ordenados não

nos obriga a que (pelo menos conceptualmente) identifiquemos as duas entidades como sendo “a mesma

coisa” 4. De qualquer forma, não aprofundaremos aqui esta hipotética distinção entre os dois conceitos5.

As noções de domínio e contradomínio de uma função definem-se, então, tal como para as relações

binárias:

3 Tendo em mente a sua representação gráfica num plano euclideano, como é usual fazer-se em Análise Matemática, no caso

das funções reais de variável real.4 Em particular, e se quisermos ser precisos, nunca identificaremos, simplesmente, uma função f entre A e B com um conjunto

de pares ordenados. Supondo que se usa Rf para designar o conjunto de pares ordenados {(x,y): y = f(x)}, não é correcto, na

nossa opinião, uma identificação pura e simples de f e Rf. É fundamental saber quais são os conjuntos A e B que se supõe que Rf

está a relacionar. O mesmo conjunto Rf poderá representar relacionamentos entre diferentes pares de conjuntos, em cujo caso,

como salientaremos à frente, ele estará a designar diferentes funções. O máximo que podemos fazer, se quisermos ser

correctos, é identificar uma função f entre A e B com a relação binária entre A e B expressa pelo conjunto de pares ordenados

Rf, relação binária que poderemos traduzir p.ex. pelo triplo (A,B,Rf).5 Saliente-se apenas, a propósito, que é possível formular grande parte da Matemática vendo as funções como entidades

primitivas (em vez de as ver como conjuntos de pares ordenados). Tal é feito no âmbito da teoria das categorias. Uma

introdução muito sucinta a esse tópico será efectuada no apêndice 1.

97

Definição 1 :

Seja f uma função entre A e B.

a) O domínio de f é o conjunto, que se denota por dom(f), domf ou Df, dado por

{x∈A: ∃y∈B y=f(x)}

(O domínio de f representa o conjunto dos elementos de A onde a função está definida.)

b) O contradomínio de f é o conjunto, que se denota por cod(f), codf ou Cf, dado por:

{y∈B: ∃x∈A y=f(x)}

(O contradomínio de f representa o conjunto dos elementos de B que são imagem por f de algum

elemento do domínio da função.)

Para que duas funções sejam iguais não basta que tenham o mesmo domínio e que associem o mesmo

objecto y a cada elemento x do seu domínio. É necessário, para além disso, que tenham o mesmo

conjunto de partida e o mesmo conjunto de chegada6:

Definição 2 :

Duas funções, f e g, são iguais, o que se denota escrevendo f = g, sse

• têm o mesmo conjunto de partida

• têm o mesmo conjunto de chegada

• têm o mesmo domínio

• e associam o mesmo elemento a cada elemento do seu domínio

(i.e., simbolicamente, designando por D o domínio de ambas, ∀x∈D f(x) = g(x))

Assim, para definir uma função (chamemos-lhe f) é necessário indicar: o seu conjunto de partida

(chamemos-lhe A), o seu conjunto de chegada (chamemos-lhe B), e a regra de cálculo de tal associação.

Os conjuntos de partida (A) e de chegada (B) de uma função (f) são tipicamente descritos dizendo “seja f

uma função de A para B”, ou “seja f uma função entre A e B”. Alternativamente pode dizer-se p.ex. seja f

uma função com valores em B e de variável com valores em A. Esta última descrição, aparentemente mais

complexa e menos usual, é contudo muito utilizada no contexto de funções numéricas (com argumentos e

resultados em conjuntos de números), embora de uma forma simplificada, em que a expressão “com

valores em ...” é sustituída por um termo que identifica o “tipo” desses valores (o conjunto ao qual esses

valores pertencem). Por exemplo, a expressão “seja f uma função real de variável real” significa que f é

6 Por exemplo, as funções (que introduziremos à frente, na secção 2) de identidade num conjunto A e de inclusão de um

conjunto A num conjunto B (que contenha estritamente A), têm o mesmo domínio (A) e associam a cada elemento x de A o

mesmo elemento (x), mas apesar disso são consideradas funções diferentes. Refira-se, a propósito, que a posição expressa pelo

Professor Campos Ferreira em [19], com a identificação de uma função com um conjunto de pares ordenados, leva a considerar

tais funções como sendo iguais (veja-se o exercício 10 da pág. 34 de [19]), com o que não concordamos.

98

uma função de |R para |R, a expressão “seja f função real de variável natural” significa que f é uma função

de |N0 para |R, e “seja f função inteira de variável real” significa que f é uma função de |R para Z.

Fixados os conjuntos de partida e de chegada de uma função, esta é muitas vezes caracterizada

descrevendo-se uma expressão explícita que permite calcular a imagem de cada ponto x, sem explicitar o

domínio da função. Assume-se em tais casos (se nada se disser em contrário) que o domínio da função é o

maior possível (i.e. o subconjunto do conjunto de partida formado por todos os pontos x para as quais a

expressão indicada está definida), também chamado o domínio natural da função.

Por exemplo, quando se diz seja f a função real de variável dada por7

f(x) = 2x

assume-se implícito que f está definida em todo o |R, e quando se diz seja g a função real de variável dada

por

g(x) =

x

assume-se implícito que o domínio de g é |R+0 (o conjunto dos reais não negativos).

Refira-se, a propósito, que embora na prática seja muito usual, sobretudo em análise e álgebra, as

funções serem definidas por meio de expressões explícitas, como nos exemplos anteriores, não é contudo

necessário conhecer uma expressão explícita para poder definir uma função. Existem muitos exemplos de

funções sobre as quais não conhecemos expressões analíticas explícitas (muitas vezes, delas apenas

sabemos que existem e possuem determinadas propriedades).

A título ilustrativo, suponha-se p.ex. que P(n) designa uma condição sobre uma variável inteira

(informalmente, podemos ver P(n) como descrevendo um problema sobre inteiros). Mesmo que não

saibamos quais são os inteiros que satisfazem essa condição (i.e. que são solução do problema em causa),

podemos sempre falar da função de Z em {0, 1} dada por8

f(n) = 1, se P(n) é verdadeira

= 0, no caso contrário

Como um outro exemplo, suponha-se que dispomos de um programa de computador P, que sabemos

que recebendo um natural, como "input", retorna outro natural, como "output". Um tal programa pode ser

visto como calculando uma função: a função (a seguir designada por fP), de |N0 para |N0, assim definida:

y=fP(x) sse P recebendo o "input" x retorna 9 como "output" y. Mesmo que não saibamos interpretar o

código de tal programa (p.ex. por desconhecermos a linguagem de programação em que ele está descrito),

7 Em vez de se escrever f(x) = 2x também se escreve, com o mesmo significado, f: x a 2x.8 De acordo com a terminologia a introduzir na secção 2, a função a seguir não é mais do que a função característica do

conjunto das soluções do problema (descrito pela condição) P(n). Refira-se, a propósito, que o problema P(n) diz-se decidível se

for possível construir um programa de computador que calcule a função f referida, i.e. um programa que recebendo como input

um natural n, qualquer, retorna o valor de f(n) (i.e. 1 , se n é solução do problema e 0 se não é). Diz-se que uma função é

computável se existe um programa de computador que a calcula (no sentido indicado). A caracterização das funções

computáveis é abordada na Teoria da Computabilidade.9 Se se admitir que o programa em causa possa não terminar para certos valores do input (não retornando, portanto, qualquer

resultado, para esses valores do input), pode à mesma falar-se da função que o programa calcula, considerando que fP não está

definida para os valores de x para os quais P não termina.

99

nada nos impede de falarmos da função fP que ele calcula, embora obviamente não saibamos caracterizar a

expressão de cálculo do valor fP(x) do resultado de tal função.

Observação 2 (funções e expressões e a notação lambda):

Como referimos, fixados os conjuntos de partida e de chegada de uma função, esta é muitas vezes

caracterizada descrevendo-se uma expressão explícita que permite calcular o valor de f(x). Por exemplo,

assumindo que f é uma função real de variável real, diz-se “seja f a função dada por f(x) = 2x”. Mais ainda,

por vezes simplica-se e diz-se mesmo apenas “seja f a função 2x” (ou “considere-se a função 2x”).

É de ter cuidado com esta simplificação, pois uma expressão e uma função são entidades

conceptualmente distintas10 e, nomeadamente, o que se pode fazer com uma não coincide com o que se

pode fazer com a outra. Por exemplo, numa expressão pode substituir-se uma variável por um valor, mas

não se pode aplicar uma expressão a um valor, ao contrário do que pode ser feito com uma função.

A distinção entre uma expressão e a função que ela "define" (permite abstrair) é claramente evidenciada

quando se recorre, por exemplo, à notação lambda para a definição de funções. A título ilustrativo, usando

esta notação (introduzida na Ciência da Computação), escreve-se11

λx.2x ( ou λx.(2x) )

para designar a função cuja regra de cálculo é dada pela expressão 2x.

Assim, faz sentido escrever

(λx.2x)(2) = 2*2=4 (bem como12 f = λx.2x )

embora não faça sentido escrever

(2x)(2)

A simplificação atrás referida poderá ser utilizada (e usá-la-emos por vezes), desde que estejamos

conscientes das imprecisões em que incorremos com ela.

Antes de passarmos à definição da principal operação sobre funções (a composição de funções),

vejamos alguns conceitos e notações associados a funções.

Definição 3 :

a) Sendo f uma função entre A e B e E ⊆ A, designa-se por imagem de E, por f, o conjunto, que se

denota por f[E] 13, formado pelas imagens (por f) de todos os objectos em E. Mais precisamente:

f[E] = {f(x): x∈dom(f) ∧ x∈E} (i.e. f[E] = {y(∈B): ∃x∈dom(f)∩E y = f(x)})

10 Para além de uma mesma função poder ser descrita por expressões explícitas diferentes.11 Na linguagem de programação Mathematica tal entidade seria descrita por Function[x,2x].12 A notação lambda (tal como a construção "Function[...]" da linguagem Mathematica) permite construir funções

anónimas, no sentido de que não têm de ter um nome próprio associado. Mas, naturalmente, nada impede que se atribua a tal

entidade (função) um nome, escrevendo (por exemplo) f = λx.2x.13 Há quem escreva mesmo f(E), mas aqui preferimos escrever f[E], uma vez que (e para salientar que) E não é um objecto do

domínio da função f.

100

b) Sendo f uma função entre A e B e E ⊆ B, designa-se por imagem inversa ou imagem recíproca ou pré-

imagem de E, por f, o conjunto, que se denota por f-1[E], formado por todos os elementos de A cuja

imagem por f está em E. Isto é:

f-1[E] = {x ∈ A: f(x) ∈ E}

(embora a notação f(x) já signifique que f está definida em x, podemos ser mais explícitos e escrever

f-1[E] = {x ∈ dom(f): f(x) ∈ E}) )

c) Sendo f uma função entre A e B e E ⊆ A, chama-se restrição de f ao conjunto E, à função que se

designa por f|E assim definida:

f|E é uma função de E para B

dom(f|E) = dom(f) ∩ E

∀x∈ dom(f|E) f|D(x) = f(x)

Saliente-se, antes de prosseguir, que o contradomínio de uma função f entre A e B não é mais do que o

conjunto f[A], e que f-1[B] coincide com o seu domínio.

Exemplo 1 :

Sejam f, g, h e j as funções reais de variável real dadas por f(x) = x+1, g(x) = x4, h(x) =

x +1 e14 j(x) = 1.

Então:

a) f[{3, 5, 8}] = {f(3), f(5), f(8)} = {4, 6, 8}

b) f-1[{3, 9}] = {x ∈ |R: f(x) = 3 ∨ f(x) = 9} = {x ∈ |R: f(x) = 3} ∪ {x ∈ |R: f(x) = 9} = {2, 8}

c) g[{-1, 1, 2}] = {g(-1), g(1), g(2)} = {1, 1, 16} = {1, 16}

d) g[|R] = |R+0

e) g-1[{-1, 16}] = {x ∈ |R: g(x) = -1} ∪ {x ∈ |R: g(x) = 16} = ∅ ∪ {-2, 2} = {-2, 2}

f) g-1[{-5, -2}] = ∅

g) g-1[|R] = |R

h) h[{-3, 4, 9}] = (pois h não está definida em –3) {h(4), h(9)} = {3, 4}

i) h[|R] = [1, +∝[

j) h-1[{-3, 1, 10}] = {0, 81}

k) h-1 [|R] = |R+0

l) j[{-12, 0, 3, 7}] = {1}

m) j[|R] = {1}

n) j -1[{4,16}] = ∅

o) j -1[{1}] = |R

p) j -1[|R] = |R

14 Embora a expressão que define o resultado de uma função, num ponto genérico x, dependa em geral de x, tal não é

obrigatório. Por exemplo, a função j, a seguir, aplica cada ponto (cada real) x no valor 1.

101

A principal operação sobre funções é a chamada composição de funções:

f A x f(x) B

g o f g

g(f(x)) C

Definição 4 :

Sendo f uma função de A para B e g uma função de B para C, chama-se aplicação composta de f e g (ou de

f com g) à aplicação, que se designa por g º f, assim definida15:

g º f é uma função de A para C

dom(g º f) = {x: x ∈ dom(f) ∧ f(x) ∈ dom(g)}

∀x∈dom(g º f) g º f (x) = g(f(x))

Exemplo 2 :

a) Sejam f e g as funções reais de variável real dadas por f(x) = sen x e g(x) = x2.

Tem-se dom(f) = |R e dom(g) = |R.

Então:

• g º f é a função real de variável real (i.e. g º f é uma função entre |R e |R), de domínio |R, dada por

gºf(x) = g(f(x)) = g(sen x) = (sen x)2 = sen2 x (∀x∈|R)

• f º g é a função real de variável real, de domínio |R, dada por fºg(x) = sen(x2)

• f º f é a função real de variável real, de domínio |R, dada por fºf(x) = sen(sen x)

• g º g é a função real de variável real, de domínio |R, dada por gºg(x) = (x2)2 = x4

15 Para realçar que g º f é o nome da função, escreve-se por vezes (g º f) (x) em vez de g º f (x). Por outro lado, como forma

mnemónica de recordar que na função g º f, primeiro se aplica f e depois g, há quem leia (informalmente) g º f como "g após f".

Refira-se, a propósito, que em alguns textos (mais da área da Ciência da Computação), em vez de usar gºf para denotar a

composição de f com g, usa-se a notação f;g (notação que relembra a noção de composição de comandos em sequência e que

pretende salientar, precisamente, que na aplicação composta primeiro aplica-se f e depois aplica-se, ao resultado obtido, g).

É possível generalizar a noção de função composta e definir a composta g º f mesmo quando o conjunto de chegada de f

não coincide com o conjunto de partida de g. Não consideraremos aqui tais generalizações (veja-se p.ex. [19], pág. 32).

102

b) Sejam f e g as funções reais de variável real dadas por f(x) = x e g(x) =

1x2

.

Tem-se dom(f) = |R+0 e dom(g) = |R-{0}.

Assim:

• g º f é uma função entre |R e |R

dom(g º f) = {x: x ∈ dom(f) ∧ f(x) ∈ dom(g)} = {x: x ∈ |R+0 ∧ x ∈ |R-{0}} = |R+

e a expressão de gºf(x) para cada ponto x do domínio é dada por

gºf(x) = g(f(x)) = g( x ) =

1( x )2

=

1x

Note-se que gºf(x) =

1x

somente nos pontos x onde gºf está definida. Assim apesar da expressão

1x

estar definida em todo o real diferente de zero, o domínio de gºf é |R+, e não |R-{0}.

• f º g é uma função entre |R e |R

dom(fºg) = {x: x ∈ dom(g) ∧ g(x) ∈ dom(f)} = {x: x ∈ |R-{0} ∧

1x2

∈ |R+0} = |R-{0}

e a expressão de fºg (x) para cada ponto x do domínio é dada por

fºg(x) = f(

1x2

) =

1x2

=

1| x |

c) Seja f a função entre |N0 e |R dada por f(n) =

n (pelo que dom(f) = |N0), e g a função entre |R e |R dada

por g(x)= x2 (pelo que dom(g) = |R).

Então:

• g º f é uma função entre |N0 e |R, de domínio |N0, dada por gºf(n) = n (∀n∈|No)

• f º g não está definida (de acordo com a definição 4).

As funções mais utilizadas em matemática são aquelas em que o domínio coincide com o conjunto de

partida, não sendo, portanto, de espantar que se introduza terminologia e notações específicas para nos

referirmos a tais funções.

Definição 5 :

Uma função f entre A para B que está definida em todo o ponto de A (i.e. em que o domínio coincide com

o conjunto de partida) diz-se uma uma aplicação entre A e B.

Em vez de dizer que f é uma aplicação entre A e B também se diz que f é uma aplicação de A em B, ou

que f aplica A em B, ou que f é uma função definida em A e com valores em B.

Escreve-se f : A → B para denotar que f é uma aplicação entre A e B

Observação 3:

Quando consideramos apenas aplicações, algumas das definições anteriores podem simplificar-se, uma vez

que se sabe que tais funções estão definidas em todo o seu conjunto de partida. Assim, por exemplo:

103

• Sendo f: A → B e g: C → D, então f = g sse

i) A = C, ii) B = D e iii) ∀x∈A f(x) = g(x)

• Sendo f : A → B e E ⊆ A, então f[E] = {f(x): x ∈ E} (i.e. f[E] = {y(∈B): ∃x∈E y = f(x)})

• Sendo f : A → B e E ⊆ B, então f-1[E] = {x ∈ A: f(x) ∈ E}

• Sendo f : A → B e E ⊆ A, então a restrição de f ao conjunto E é a aplicação f|D : D → B, dada por

∀x∈E f|E(x) = f(x)

• A composta de duas aplicações ainda é uma aplicação. Mais precisamente, dadas f: A→B e g: B→C,

a aplicação composta de f e g (ou de f com g) é a aplicação gºf : A → C dada por ∀x∈A gºf (x) = g(f(x)).

Saliente-se, antes de prosseguir, que se pode ter f: A → B com A = ∅: tal função16 pode designar-se

por a aplicação vazia em B.

Por outro lado, é imediato que só se pode ter f: A→B com B = ∅, se também se tiver A = ∅, uma vez

que se f aplica A em B, então para cada x em A tem de existir algum y em B tal que y=f(x).

Terminologia (funções parciais e funçõ es totais) e notações :

Por vezes diz-se que f designa uma função parcial ("partial function") entre A e B, se se trata de uma

função que poderá estar apenas parcialmente definida no conjunto de partida A, e que f designa uma função

total ("total function") entre A e B, se f é uma função que está totalmente definida no conjunto de partida

A ( está definida em todos os pontos desse conjunto).

Na escola matemática portuguesa usa-se o termo aplicação entre A e B para se referir a uma função

total entre A e B. Por seu turno, as funções parciais são normalmente designadas (como fizemos atrás)

simplesmente de funções.

Refira-se, contudo, que como na maioria das disciplinas de Matemática apenas se trabalha com

aplicações17, acontece, quer em textos quer em aulas, se falar em funções quando se está, de facto, a falar

estritamente de aplicações. Aqui procuraremos usar o termo aplicação sempre que nos quisermos referir

estritamente a uma função total, e usaremos os termos função, função (parcial) ou função parcial 18,

quando nos quisermos referir a uma função entre dois conjuntos que poderá ser ou não uma aplicação.

Note-se que o dizer que f é uma função parcial entre A e B não exclui a hipótese de f estar definida em

todo o A; simplesmente não o garante (nem o impõe). Assim, embora os termos “função total” e “função

parcial” possam sugerir que uma função total não é parcial, tal não é o caso: uma função total (i.e. uma

aplicação) entre A e B é um caso particular de uma função parcial entre A e B (em que o domínio da função

coincide com o conjunto de partida A).

16 Que satisfaz {(x,y): x∈A ∧ y∈B ∧ y=f(x)} = ∅.17 O mesmo não é verdade em Computação. Pense-se, por exemplo, na função que um programa calcula (atrás mencionada) e

o caso em que tal programa não termina, para um dado "input" x, por envolver p.ex. um ciclo infinito (ver nota de rodapé 9).18 A inclusão, ou não, da palavra "parcial" (entre parênteses, ou sem ser entre parênteses) dependerá de sentirmos, ou não, que

é essencial salientar que se está a falar de uma função que poderá não ser uma aplicação.

104

Refira-se, ainda, que alguns textos de Matemática de língua inglesa19 usam o termo "function

(function between A and B)" para se referir a uma função parcial entre A e B, e "function from A to B"

para se referir a uma aplicação entre A e B.

Em termos notacionais, é praticamente generalizada a notação f:A→B para expressar que f é uma

aplicação entre A e B. Para expressar que f é uma função (parcial) entre A e B nem sempre se considera

uma notação específica (não existindo uma notação genericamente aceite). No entanto, é útil dispormos de

uma notação simbólica, que nos permita expressar, de forma sintética, que “f é uma função (parcial) entre

A e B”. Assim, daqui em diante, passaremos a utilizar a notação f:A / → B para designar que f é uma

função (parcial) entre A e B.

Observação 4 (Relações e funções):

Como observámos no início desta secção, qualquer função entre A e B pode ser vista como uma relação

binária entre A e B satisfazendo a propriedade funcional, e vice-versa.

Se quisermos distinguir as duas entidades, usando designações distintas para as duas, podemos dizer que

uma função f:A / → B pode ser representada por uma relação binária entre A e B (a que na observação 1

chamámos de gráfico de f e que designaremos, a seguir, por Rf), que satisfaz a propriedade funcional,

assim definida20

(x,y) ∈ Rf sse 21 y = f(x)

e, reciprocamente, qualquer relação binária R entre A e B, satisfazendo a propriedade funcional

∀x∈A ∀y1,y2∈B ((x,y1)∈R ∧ (x,y2)∈R ⇒ y1=y2)

pode ser vista como representando uma função22 entre A e B (que designaremos, a seguir, por fR 23) assim

definida

fR : A / → B

dom(fR) = dom(R)

fR(x) = y sse (x,y) ∈ R (∀x∈A, y∈B)

19 Veja-se p.ex [32], onde se usa o termo "codomain" para se referir o conjunto de chegada B, de uma função f entre A e B, e

"range" para designar o contradomínio (sendo o domínio designado por "domain").20 Se a função f for uma aplicação, f: A → B, então a relação Rf satisfaz mesmo a propriedade ∀x∈A ∃1

y∈B (x,y)∈Rf, que é

equivalente a ∀x∈A∀y1,y2∈B ((x,y1)∈Rf ∧ (x,y2)∈Rf ⇒ y1=y2) ∧ ∀x∈A ∃y∈B (x,y)∈Rf.21 Poderíamos escrever (x,y)∈Rf sse (x∈dom(f) ∧ y=f(x)), mas tal não é necessário, pois, como referimos atrás, quando se

escreve y=f(x), assume-se logo (em geral) que f está definida em x (e que a imagem de x por f é y).

Refira-se, a propósito, que por vezes se introduzem também notações específicas para denotar que “f não está definida em

x”. Aqui escreveremos às vezes “f(x) = -“ com esse fim (em vez de escrever “x ∉ dom(f)”, que é a forma natural de descrever

simbolicamente que “f não está definida em x”). Sobre isto veja-se também a observação 5 a seguir.22 Que será uma aplicação, se R satisfizer a propriedade (ver nota de rodapé 20) ∀x∈A ∃1

y∈B (x,y)∈R.23 Naturalmente terá de ter-se (como se tem) que

R fR = R e

fR f= f .

105

Suponha-se, agora, que R é uma relação binária entre A e B que não satisfaz a propriedade funcional.

Então, a alguns elementos de A estarão associados mais do que um elemento de B, pelo que R não poderá

ser vista como uma função.

No entanto, tal não significa que não se possa representar uma tal relação como (ou através de) uma

função, não entre A e B, mas sim entre A e ℘(B) 24. De facto, qualquer relação binária R entre A e B pode

ser mesmo representada através de uma aplicação f assim definida:

f : A → ℘(B)

f(x) = {y∈B: (x,y) ∈ R} 25

E, reciprocamente, qualquer aplicação f: A → ℘(B) pode ser representada por uma relação binária R

entre A e B, definindo: (x,y)∈R sse y∈f(x).

Em conclusão: uma função entre A e B pode ser vista como (representada por) uma relação binária

funcional entre A e B, e vice-versa; e uma relação binária, funcional ou não, entre A e B pode ser

representada como (uma função que é) uma aplicação (agora) entre A e ℘(B), e vice-versa.

Mais uma vez nos encontramos perante uma situação em que um conceito pode ser representado à custa

de outro e, por vezes, de mais do que uma maneira. Tal permite-nos que num dado contexto, ou para um

dado problema, se escolha a representação que se lhe adeque melhor (por ser a mais simples, ou a de mais

fácil manipulação nesse contexto).

Observação 5 (transformação de funções parciais em aplicações):

Por vezes “dá jeito” transformar uma função parcial f: A / → B numa aplicação que disponibilize a mesma

informação que essa função parcial. Tal pode ser feito muito facilmente, mantendo o mesmo conjunto de

partida, e alargando o conjunto de chegada com um elemento que não pertença a B (que a seguir

designaremos por) "-", que intuitivamente pode ser visto como codificando o valor "indefinido".

De facto, considerando tal interpretação, é imediato que uma função parcial f: A / → B pode ser

"traduzida" pela aplicação fT (designação escolhida aqui como mnemónica de "f total") assim definida26:

fT: A → (B ∪ {-})

∀x∈dom(f) fT(x) = f(x)

∀x∈(A-dom(f)) fT(x) = -

24 Igualmente podemos representar tal relação como uma aplicação entre AxB e {0,1}, através da chamada função

característica da relação (ver secção 2, a seguir).25 Se x∉dom(R), então f(x)=∅. Se R for uma relação funcional, então a imagem por f de qualquer elemento do domínio de R

será um conjunto singular.26 Naturalmente, uma outra maneira imediata de "transformar" uma função parcial f numa aplicação consiste em manter o

conjunto de chegada e restringir o conjunto de partida ao domínio de f, isto é, em considerar a restrição de f ao conjunto

D=dom(f). No entanto, é discutível se a aplicação assim obtida disponibiliza a mesma informação que a função parcial inicial f

(uma vez que tal aplicação f|D não “guarda” a informação que f não está definida em A-D).

106

No resto deste capítulo, com uma ou outra excepção, não falaremos em geral de funções parciais,

concentrando-nos nas aplicações. No entanto, alguns dos conceitos introduzidos (em secções ulteriores)

para aplicações são facilmente generalizáveis a funções parciais.

Exercícios :

1. Considere a função f: |R / → |R dada por f(x) = x −1x −1

. Diga qual é o seu domínio e o seu

contradomínio.

2. Considere as funções reais de variável real dadas por f(x) = 1x +1

e g(x) = x2, e diga a que são iguais as

funções g º f e f º g.

3. Considere a função f: |R / → |R dada por f(x) = x e a função g: |R / → |R dada por g(x) = x2.

Caracterize as funções: g º f e f º g.

4. Considere a função f: |R / → |R dada por f(x) = x . Diga a que são iguais f[{-2, 2}] e f-1[{-4, 0, 2}].

5. Prove que a composição de funções é associativa, i.e. prove que, quaisquer que sejam as funções

f:A / → B, g:B / → C e h:C / → D, se tem h º (g º f) = (h º g) º f.

6. Sendo f : A / → B, demonstre que:

a) Quaisquer que sejam X,Y⊆A, tem-se X ⊆ Y ⇒ f[X] ⊆ f[Y]

b) Quaisquer que sejam X,Y⊆B, tem-se X ⊆ Y ⇒ f-1[X] ⊆ f-1[Y]

7. Seja f: |R → |R tal que f(x) = x+1, g: |R → |R tal que g(x) = x3 e h: |R → |R tal que g(x) = |x|.

a) Diga a que são iguais:

g º f , f º g , f º f , g º g , f º h , h º f , g º h , h º g , (g º f) º h , g º (f º h)

b) Sendo C = {-1, 0, 1} e D = {x: x∈|R ∧ -2 ≤ x < 3}, diga a que são iguais:

f[C] , g[C] , h[C] , f[D] , g[D] , h[D] , f[|N0] , g[|N0] , h[|N0] , f[|R] , g[|R] , h[|R]

8. Seja f: |R → |R tal que f(x) = x+1, e g: |R → |R tal que g(x) = x4. Diga a que são iguais:

f[{3,5,8}] , f-1[{3,5,8}] , g[{3,7}] , g-1[{4,16}]

9. Uma aplicação f : A → B diz-se constante sse ∃c∈B∀x∈A f(x) = c, e diz-se que f é constantemente igual a

c(∈B) sse ∀x∈A f(x) = c.

Considere a aplicação f : |N0 → |N0, constantemente igual a 1, e diga a que é igual:

a) f[{5, 7, 8}]

b) f-1[{1}]

c) f-1[|N0]

d) f-1[{3}]

10. Considere a linguagem de programação Mathematica. Construa um programa (nessa linguagem) que:

a) Recebendo um conjunto finito A e uma aplicação definida em A, retorna (a representação da relação

que é) o gráfico de tal função.

b) Recebendo uma relação binária R, satisfazendo a condição ∀x∈A ∃1y∈B (x,y)∈R, retorna a aplicação fR

de que tal relação é o gráfico (ver observação 4).

c) Recebendo uma aplicação f e um subconjunto E do seu conjunto de partida, retorna f[E].

d) Recebendo uma aplicação f e um subconjunto E do seu conjunto de chegada, retorna f-1[E].

107

11.Considere a linguagem de programação Mathematica. Construa um programa (nessa linguagem) que

recebendo duas aplicações, para as quais está definida a composta, retorna a respectiva aplicação

composta. Ilustre o programa construído, aplicando a duas funções (nas condições requeridas),

previamente definidas, e indicando expressão da sua aplicação composta para um ponto genérico x.

Secção 2: Algumas aplicações (concretas e classes de aplicações) importantes.

O conceito de função é um conceito já relativamente bem conhecido dos alunos, que com ele trabalharam

ao longo do Ensino Secundário27. E, em particular, os alunos já conhecem bem, do Secundário, algumas

funções reais de variável real importantes, como p.ex. as funções polinomiais, as funções racionais, as

funções exponenciais e logarítmicas e as funções trignométricas.

No entanto, para além dessas funções de resultado real, existem muitas outras funções importantes e de

interesse nomeadamente para a chamada "matemática do discreto". A título ilustrativo, referem-se duas

funções de resultado inteiro que são utilizadas p.ex. no âmbito da análise da eficiência de algoritmos (veja-

se o capítulo 12).

A função tecto - "ceiling function" - é a aplicação de |R em Z que aplica cada real no seu "tecto", onde

o tecto de um número x é denotado por x e define-se como se segue:

x = menor inteiro maior ou igual a x

Segue-se o gráfico desta função no intervalo ]-3, 3]:

3

2 1

-3 -2 -1 0 1 2 3 -1

-2

Por sua vez, a função característica (de um número) - "floor function" (que sugere uma designação,

mais apropriada, como função soalho ou função chão) - é a aplicação de |R em Z que aplica cada real na

sua característica, onde a característica28 de um número x é denotada por x e define-se como se segue:

x = maior inteiro menor ou igual a x

27 Onde os alunos trabalharam não só com aplicações, mas também com funções (parciais). Por exemplo, um exercício típico

do Secundário consiste em perguntar “qual é o domínio da função real de variável real, f, dada por f(x) = xx −1

?”.

28 A designação de x como a característica de x parece advir do seguinte: qualquer real x pode ser decomposto, de uma única

maneira, na soma de um inteiro n com um real θ entre 0 e 1 (mais precisamente, 0≤θ<1), tendo-se que n = x e θ = x - x. Se x

for maior ou igual a 0, n corresponde à chamada parte inteira de x e θ à parte decimal; no entanto, se x<0, então designa-se

usualmente por parte inteira de x, não x, mas sim x (ver exemplos a seguir).

108

Segue-se o gráfico desta função (agora) no intervalo [-3, 4[:

3

2 1

-3 -2 -1 0 1 2 3 4 -1

-2

-3

Tem-se, por exemplo:

2.3 = 2 e 2.3 = 3

-2.3 = -3 e -2.3 = -2

Seguem-se algumas propriedades interessantes destas funções (cuja verificação deixamos ao cuidado do

leitor), onde x designa um qualquer real e n designa um qualquer inteiro:

i) x = x ⇔ x ∈ Z ⇔ x = x

ii) x -1 < x ≤ x ≤ x < x+1

iii) - x = - x e - x = - x

iv) x = n ⇔ n ≤ x < n+1

x = n ⇔ x-1 < n ≤ x

x = n ⇔ n-1 < x ≤ n

x = n ⇔ x ≤ n < x+1

v) x + n = x + n e x + n = x + n

vi) x < n ⇔ x < n

n < x ⇔ n < x

x ≤ n ⇔ x ≤ n

n ≤ x ⇔ n ≤ x

e com n designando um qualquer inteiro e a e b inteiros não nulos (e / a operação de divisão real):

vii) n/2 + n/2 = n

viii) n/a /b = n/(ab)

ix) n/a /b = n/(ab)

Observação :

A função tecto e a função característica (de um número) estão disponíveis na linguagem de programação

Mathematica, sendo aí designadas, respectivamente, por Ceiling e Floor.

Para além destas (e de muitas outras) funções particulares que são importantes, importa também

conhecer certos tipos/classes de funções relevantes, que têm inclusivamente designações específicas. O

resto desta secção tem esse objectivo.

109

Definição 1 :

a) Dado um conjunto A, chama-se função identidade em A, à aplicação que se designa por idA (ou IA)

assim definida:

idA : A → A

∀x∈A idA(x) = x

b) Dado um conjunto B e um seu subconjunto A, chama-se função de inclusão de A em B à aplicação,

que designaremos a seguir29 por incAB (ou só por inc, se A e B forem evidentes pelo contexto), assim

definida:

incAB : A → B

∀x∈A incAB(x) = x

Definição 2 :

Por função Booleana, ou predicado, entende-se qualquer função com resultado nos valores de verdade

(valores lógicos) 0 e 1 (i.e. cujo conjunto de chegada é {0, 1}).

Embora um predicado possa ser uma função parcial, têm particular interesse os predicados que

correspondem a funções totais (i.e. aplicações). Em particular, podemos recorrer a tais predicados para

caracterizar, de forma alternativa, outros conceitos matemáticos. Por exemplo, em vez de vermos uma

relação binária entre A e B como um conjunto de pares ordenados (pertencentes a AxB), podemos também

"vê-la" como um predicado que recebendo um qualquer par (x,y) (pertencente a AxB) retorna 1 ou 0

(consoante tal par pertence ou não à relação). Predicados, como este, que nos permitem obter uma

caracterização alternativa de um certo conceito (ou construção) matemático, são usualmente designados de

funções características (desses conceitos)30.

Seguem-se dois exemplos importantes de funções características.

Definição 3 :

Dado um conjunto A e um subconjunto S de A, chama-se função característica de S em A, à aplicação

Booleana, que designaremos a seguir por cS (em A), assim definida:

cS (em A) : A → {0,1}

∀x∈A ( (x ∈ S ⇒ cS (em A)(x) = 1) ∧ (x ∉ S ⇒ cS (em A)(x) = 0) )

Quando o conjunto A é evidente pelo contexto (como p.ex. quando fixamos um determinado universo de

trabalho e A é esse universo), pode falar-se simplesmente na função característica de S e escrever apenas cS.

29 No que respeita a esta alínea e às definições 3 e 4 abaixo, deve realçar-se que a notação usada aqui para designar as

funções em causa não é uma notação padrão.30 A função característica de um número, atrás introduzida, não corresponde à noção de função característica que estamos a

procurar intuir agora.

110

Assim, dado um conjunto A, qualquer seu subconjunto pode ser caracterizado por uma aplicação de A

em {0,1}. E, vice-versa, é fácil verificar que qualquer aplicação de A em {0,1} “define”, de modo análogo,

um subconjunto de A (formado pelos elementos que são aplicados em 1) 31.

Exemplo 1 :

a) A função característica de S = {0, 1, 2, 3} em |N0 é a aplicação cS: |N0 → {0,1} assim definida

cS(0) = cS(1) = cS(2) = cS(3) = 1

∀n≥4 cS(n) = 0

b) A aplicação c: |N0 → {0,1} dada por c(2) = 1 e ∀n≠2 c(n) = 0 caracteriza o subconjunto singular de |N0,

formado apenas pelo 2, e a aplicação c: |N0 → {0,1} dada por ∀n≥0 c(n) = 0 caracteriza o conjunto vazio.

Definição 4 :

Dada uma relação n-ária R (n≥1) entre os conjuntos A1, ..., An chama-se32 função característica da relação

R à aplicação Booleana, que designaremos a seguir por cR, assim definida33:

cR : A1x...xAn → {0,1}

cR(x1,...,xn) = 1 ⇔ (x1,...,xn) ∈ R (∀(x1,...,xn) ∈ A1x...xAn)

Tem-se, assim, que qualquer relação n-ária, entre n conjuntos, pode ser representada por uma aplicação

de A1x...xAn em {0,1} (a sua função característica) e, vice-versa, é fácil verificar que qualquer aplicação de

A1x...xAn em {0,1} define, do mesmo modo, uma relação (formada pelos tuplos que são aplicados em 1).

Exemplo 2 :

Seja R a relação binária em A = {1, 2, 3} dada por R = {(1,1), (1,2), (3,2)}. A função característica de R é

a aplicação cR: A2 → {0,1} assim definida

cR(1,1) = 1 cR(1,2) = 1 cR(1,3) = 0

31 Sem pretender entrar em detalhes, e mais como curiosidade (atendendo aos objectivos deste texto), refira-se que tal facto

está na base da notação 2A que (como se referiu na nota de rodapé 10 do capítulo 2) também é usada para referir o conjunto

℘(A), das partes de A. De facto:

• pelo que se disse acima, o conjunto das partes de A pode ser "identificado" com o conjunto das aplicações de A em {0, 1}

• pelas razões que exporemos na observação 2-b) da secção 4, à frente, pode usar-se BA para designar o conjunto de todas as

aplicações de um conjunto A num conjunto B, pelo que o conjunto das aplicações de A em {0, 1} pode ser designado por

{0,1}A

• e, como se observou na nota de rodapé 16 do capítulo 3, pode-se "identificar" cada natural com o conjunto dos naturais

precedentes (pelo que 2 pode ser “identificado” com {0,1})

e, juntando tudo isto, facilmente se chega à notação 2A.32 É imediato constatar que a função característica da relação R (entre os conjuntos A1, ..., An) coincide com a função

característica do conjunto R no conjunto A1x...xAn, usando a terminologia da definição 3.33 cR(x1,...,xn) é uma abreviatura de cR((x1,...,xn)) (veja-se a secção 3).

111

cR(2,1) = 0 cR(2,2) = 0 cR(2,3) = 0

cR(3,1) = 0 cR(3,2) = 1 cR(3,3) = 0

Exercícios :

1. Sendo B = |N0 e A = {1, 3, 5}, diga a que é igual (onde inc designa a função de inclusão de A em B):

a) inc[{3, 5}] b) inc-1[{1, 5, 7}] c) inc-1[{4, 8}]

2. Sendo A = |N0 e S = {1, 3, 5}, diga a que é igual (onde cS designa a função característica de S em A):

cS[{3, 5}] , cS[{0, 1, 5}] , cS-1[{1}] , cS

-1[{0}] , cS-1[{0, 1}]

Diga ainda a que é igual a função inc{0,1}A º cS.

3. Considere a relação binária R, em {0, 1, 2, 3}, dada por R = {(0 , 1) , (0 , 0) , (0 , 2)}, e diga a que é

igual a sua função característica.

4. Considere a relação binária R, em |R2, dada por R = ∅, e diga a que é igual a sua função característica.

5. Considere a relação ternária R, entre |N0, Z e |N1, dada por R = {(0,0,1), (0,-1,1), (1,-2,2)}, e diga a que

é igual a sua função característica.

6. Sendo f : A → B, verifique que f º idA = idB º f = f

7. Considere a linguagem de programação Mathematica. No exercício 3.2.10-a), pediu-se que construísse

um programa que recebendo uma relação de equivalência num certo conjunto, retornasse o respectivo

conjunto quociente. Construa, agora, um programa que recebendo um conjunto finito e a função

característica de uma relação de equivalência nesse conjunto, retorna o respectivo conjunto quociente.

Secção 3: Funções de aridade n (≥1), operações e estruturas algébricas (simples).

Por aridade de uma função entende-se o número de argumentos desta. Diz-se que uma função é n-ária se

tem n (≥1) argumentos (unária se n=1, binária se n=2, e assim sucessivamente).

Considere-se uma função f de aridade n superior a um, e suponha-se que os argumentos de f tomam

valor nos conjuntos, respectivamente, A1, ..., An, e o resultado toma valor num conjunto B. Como,

intuitivamente, tal entidade (função) pode ser vista como associando a cada tuplo (x1,...,xn), com x1∈A1,

..., xn∈An, (no máximo) um elemento de B, ela é usualmente representada em Matemática como se segue:

f : A1 x...x An / → B (ou, se se tratar de uma aplicação, f : A1 x...x An → B)

isto é, como uma função (unária) cujo conjunto de partida é o produto cartesiano de A1, ..., An. No

entanto, em vez de se escrever f((x1,...,xn)), escreve-se simplesmente f(x1,...,xn).

112

Esta notação não é ideal, pois não permite distinguir claramente uma função n-ária, com argumentos

em A1, ..., An, de uma função unária com argumento em A1 x ... x An 34.

Pelo contrário, uma notação como

f : A1 ... An / → B (ou, se f for uma aplicação, f : A1 ... An → B)

já nos permite distinguir tais funções35. Não iremos, contudo, considerar aqui tal notação alternativa para

a descrição de funções, seguindo, assim, a tradição matemática usual.

Definição 1 :

a) Por operação n-ária (n≥1) num conjunto não vazio A entende-se 36 uma aplicação entre An e A.

b) Se θ é uma operação n-ária (n≥1) num conjunto (não vazio) A, diz-se que um subconjunto de A, não

vazio, S, é fechado para a operação θ sse sempre que aplicamos a operação a elementos de S ainda

obtemos um elemento de S. Simbolicamente:

∀x1,...,xn∈S θ(x1,...,xn) ∈ S

Dito de outra forma, S é fechado para θ sse a "restrição de θ a S" for uma operação em S; nesse caso

também se diz que a "restrição de θ a S" é a operação em S induzida por θ. (Informalmente, quando S é

fechado para θ também se diz que θ é uma operação em S, em vez de dizer, como seria mais correcto,

que a "restrição de θ a S" é uma operação em S.)

34 Embora apresente, precisamente por isso, a vantagem de permitir codificar funções que possam receber qualquer número de

argumentos, num certo conjunto E, como funções da forma

f : ∪n≥1En / → B

assumindo que se continua a escrever f(x1,...,xn) como abreviatura de f((x1,...,xn)).35 Em Ciência da Computação, no âmbito dos tipos abstractos, estas distinções são clarificadas. Ao especificar um tipo

descreve-se (em particular) a "assinatura das operações". Informalmente, a assinatura de uma operação especifica a “sintaxe”

desta. A assinatura de uma operação toma a forma genérica f : a1 ... an → b, com a1, ..., an, b nomes (nomes que são vistos como

identificadores de conjuntos). A semântica de um tipo abstracto envolve a definição de uma interpretação para este, em que tais

nomes, a1, ..., an, b, são interpretados como conjuntos, A1, ..., An, B, e f é interpretada como uma aplicação entre A1x...xAn e B.

O aprofundamento deste tópico está, contudo, fora do âmbito deste texto.36 Este é o entendimento usual, embora se possa também estender a noção de operação (n-ária) em A a funções parciais entre

An e A (nesse sentido se pode dizer que a divisão é uma operação nos reais).

Igualmente se pode estender a noção de operação a funções envolvendo diferentes conjuntos (como nos tipos abstractos:

ver nota de rodapé anterior): pense-se p.ex. numa operação "acrescenta", que recebendo um subconjunto B de um conjunto A e

um elemento y de A, "acrescenta y a B", i.e. retorna o conjunto B∪{y} - tal hipotética "operação" corresponde a uma aplicação

entre ℘(A) x A e ℘(A).

Refira-se, por último, que por vezes também se identifica as constantes (elementos de um conjunto A) com operações 0-

árias (nesse conjunto A). Contudo, não tomaremos aqui essa opção: apesar de ela ter vantagens em alguns contextos, pensamos

que seria desajustada neste texto.

113

Se considerarmos a operação de adição (+) nos inteiros, tem-se que o conjunto dos naturais é fechado

para essa operação (+ é também uma operação nos naturais); no entanto, p.ex. o conjunto {-1, 0, 1, 2,...},

dos inteiros maiores ou iguais a -1, já não é fechado para a adição (uma vez -1 + (-1) = -2 e -2 já não

pertence a esse conjunto).

Notação :

i) Usaremos normalmente a letra grega θ (θ1, θ2, ...), ou ρ (ρ1, ρ2, ...), para nos referirmos genericamente

a uma operação num conjunto. (Naturalmente, operações específicas, como soma, subtracção, etc.,

serão designadas pelos símbolos usuais.)

ii) De acordo com o que se observou atrás, se θ é uma operação n-ária (n≥1) num conjunto (A), escreve-se

θ(x1,...,xn), em vez de θ((x1,...,xn)), para se referir ao resultado de aplicarmos θ ao tuplo (x1,...,xn)(∈An)

iii) Se θ é uma operação binária num conjunto A, escreve-se normalmente xθy, em vez de θ(x,y), para se

referir ao resultado de aplicarmos a operação θ ao par (x,y) (∈A2). Isto é, no caso das operações binárias

usa-se em geral a notação infixa 37 para expressar o resultado da operação.

As operações binárias são particularmente usadas em Matemática (pense-se por exemplo nas operações

de adição e multiplicação em conjuntos de números, ou nas operações de intersecção e união nas partes de

um conjunto). Seguem-se algumas propriedades que tais operações podem (ou não) possuir.

Definição 2 :

a) Seja θ uma operação binária num conjunto (não vazio) A. Então:

i) Diz-se que dois elementos, x e y, de A, são permutáveis para θ sse x θ y = y θ x

ii) Diz-se que θ é comutativa sse ∀x,y∈A x θ y = y θ x

iii) Diz-se que θ é associativa sse ∀x,y,z∈A (x θ y) θ z = x θ (y θ z)

(em cujo caso se pode escrever simplesmente x θ y θ z, em vez de (x θ y) θ z)

iv) Diz-se que um elemento e (∈ A) é elemento neutro para θ (ou que θ tem elemento neutro e) sse

∀x∈A (x θ e = e θ x = x)

v) Diz-se que um elemento e (∈ A) é elemento absorvente para θ sse ∀x∈A (x θ e = e θ x = e)

vi) Se θ tem elemento neutro e, diz-se que um elemento x (de A):

- tem inverso direito (ou que é invertível à direita) sse existe um elemento y de A tal que x θ y = e

(e y diz-se inverso direito de x)

- tem inverso esquerdo (ou que é invertível à esquerda) sse existe um elemento y de A tal que yθx=e

(e y diz-se inverso esquerdo de x)

- tem inverso (ou que é invertível) sse existe um elemento y de A tal que x θ y = y θ x = e

(e y diz-se inverso de x: como é imediato, y é inverso de x sse x é inverso de y)

37 Na notação infixa o símbolo da operação ocorre entre os seus argumentos; na notação prefixa o símbolo da operação ocorre

antes dos argumentos (é a notação que é usualmente usada para expressar o resultado de uma função); finalmente, na notação

sufixa o símbolo da operação ocorre após os argumentos.

114

b) Sejam θ1 e θs duas operações binárias num mesmo conjunto (não vazio) A. Então, diz-se que:

θ1 é distributiva em relação a θ2 à direita sse

∀x,y,z∈A x θ1 (y θ2 z) = (x θ1 y) θ2 (x θ1 z)

θ1 é distributiva em relação a θ2 à esquerda sse

∀x,y,z∈A (y θ2 z) θ1 x = (y θ1 x) θ2 (z θ1 x)

(Se θ1 for comutativa, então θ1 é distributiva em relação a θ2 à direita sse θ1 é distributiva em relação a

θ2 à esquerda (demonstre!), podendo dizer-se simplesmente que θ1 é distributiva, ou verifica a

propriedade distributiva, em relação a θ2)

Antes de vermos alguns exemplos, enunciemos e demonstremos (apenas) dois resultados.

Teorema 1 :

Seja θ uma operação binária num conjunto (não vazio) A. Então θ tem no máximo um elemento neutro.

Demonstração:

Suponha-se, por absurdo, que θ admitia dois elementos neutros, e1 e e2, distintos (i.e. e1 ≠ e2). Então:

i) e1 θ e2 = e2 Justificação: e1 é elemento neutro (e e2 ∈ A)

ii) e1 θ e2 = e1 Justificação: e2 é elemento neutro (e e1 ∈ A)

Logo e1 = e2, o que contradiz e1 ≠ e2 (c.q.d.)∇

Teorema 2 :

Seja θ uma operação binária num conjunto (não vazio) A, que é associativa e admite elemento neutro e.

Então: ∀x,y,z ∈ A ((x θ y = e ∧ z θ x = e) ⇒ y = z)

isto é, em notação mais condensada (e salientando apenas no fim que as variáveis estão a ser

universalmente quantificadas):

x θ y = z θ x = e ⇒ y = z (∀x,y,z ∈ A)

Demonstração:

Sejam x, y e z quaisquer elementos de A, tais que x θ y = e e z θ x = e. Ora:

z θ (x θ y) = (z θ x) θ y

⇓ (x θ y = e e z θ x = e)

z θ e = e θ y

⇓ (e é elemento neutro para θ)

z = y

Logo, como z θ (x θ y) = (z θ x) θ y, em virtude de θ ser associativa, podemos concluir que z = y (c.q.d.)

Observação (inverso de um elemento):

Do teorema 2 anterior, decorre imediatamente que se a operação θ for associativa, então se um elemento x

tem inverso direito (y) e inverso esquerdo (z), os inversos esquerdo e direito são iguais e x é invertível.

115

E igualmente se conclui (porquê?) que, se a operação θ for associativa (e admitir elemento neutro),

então o inverso de um elemento x, quando existe, é único (e o inverso do inverso de x é x: porquê?)

Nestes casos, é frequente denotar o inverso de x por x-1, embora se considerem outras notações para

certo tipo de operações. Por exemplo, para a adição de números (e para outras operações de "tipo aditivo"),

o inverso de x é designado de simétrico de x, e denotado por -x.

Exemplos :

1) A operação de adição (por exemplo) nos reais é comutativa e associativa, tem elemento neutro (0), mas

não tem elemento absorvente, e qualquer real x tem inverso em relação a essa operação (-x).

Por sua vez, a multiplicação nos reais é comutativa e associativa, tem elemento neutro (1), tem

elemento absorvente (0), e qualquer real x diferente de 0 tem inverso em relação à multiplicação (x-1).

A operação de multiplicação é distributiva em relação à operação de adição, mas a operação de

adição não é distributiva em relação à operação de multiplicação.

2) A operação de intersecção no conjunto ℘A, das partes de um conjunto A, é comutativa e associativa,

tem elemento neutro (A) e elemento absorvente (∅). O único elemento (subconjunto de A) que admite

inverso é o próprio A (qual é o seu inverso?).

A operação de união, no mesmo conjunto ℘A, é comutativa e associativa, tem elemento neutro

(∅) e elemento absorvente (A). O único elemento (subconjunto de A) que admite inverso é o ∅ (qual é

o seu inverso?).

Qualquer das duas operações é distributiva em relação à outra.

3) Se considerarmos a linguagem de programação Mathematica e a operação Join (por exemplo) no

conjunto das listas de inteiros, tem-se que essa operação não é comutativa, mas é associativa, tem

elemento neutro (a lista vazia), mas não tem elemento absorvente. O único elemento (lista) que admite

inverso é o próprio elemento neutro (i.e. a lista vazia).

No capítulo anterior, já falámos de estruturas (em vez de estruturas também se fala em "conjuntos

equipados com estrutura", ou mesmo em "conjuntos com estrutura"). Em particular, dissemos que um

conjunto A e uma relação binária R em A formava uma estrutura (que se representa por (A,R) ou por

(A;R)), e como exemplos importantes dessas estruturas falámos dos conjuntos parcialmente ordenados.

Trata-se de casos particulares de um tipo de estruturas conhecidas por estruturas relacionais.

Em vez de se considerar um conjunto e relações nele definidas, podemos também considerar estruturas

formadas por um conjunto e operações definidas nesse conjunto: diz-se então que estamos em presença de

uma estrutura algébrica.

Um dos casos mais simples e importantes de estruturas algébricas consiste em considerar um conjunto

(não vazio) equipado com uma operação binária, estrutura que se designa genericamente de grupóide:

116

Definição 3 :

Uma estrutura (A,θ) (ou (A;θ)) formada por um conjunto não vazio (A) e uma operação binária em A (θ)

diz-se um grupóide (e A o seu suporte).

Conforme as propriedades que a operação θ (em A) possui, particulares designações são dadas ao

grupóde (A,θ).

Por exemplo, se θ for associativa, diz-se que estamos em presença de um semi-grupo:

Definição 4 :

Um grupóide (A,θ) diz-se um semi-grupo sse θ é associativa.

Quando, além disso (i.e. além de θ ser associativa), θ tem elemento neutro e, diz-se que estamos em

presença de um monóide. Neste caso, é costume identificar qual é o elemento neutro na descrição da

própria estrutura e descrever esta na forma (A, θ, e) em vez de simplesmente como um par (A, θ):

Definição 5 :

Um monóide é um triplo (A, θ, e), que satisfaz:

i) (A, θ) é um semi-grupo;

ii) e é elemento neutro para θ.

Como exemplo de um monóide tem-se (N0,+,0); outro exemplo é (Z,+,0). Neste último monóide, ao

contrário do que se passa com o monóide (N0,+,0), todos os elementos têm inverso (designado, no caso

em questão, por simétrico). A tais monóides chama-se de grupo:

Definição 6 :

Um grupo é um monóide (A, θ, e) no qual todo o elemento é invertível.

Na descrição de um grupo evidencia-se, por vezes, não só o elemento neutro, mas também a aplicação,

do suporte em si mesmo (i.e. uma operação unária), que a cada elemento faz corresponder o seu inverso

(que é único, como já referimos). Usando "inv" para designar essa operação unária (mas escrevendo, como

é usual, x-1 para designar inv(x)), pode então dizer-se que um grupo é uma estrutura (A, θ, inv, e), onde:

i) (A, θ, e) é um monóide;

ii) inv é uma operação unária em A que aplica cada elemento (x) de A no seu inverso (x-1).

Refira-se ainda que qualquer uma das estruturas anteriores diz-se comutativa, ou abeliana, sse a

respectiva operação binária (θ) for comutativa.

117

As estruturas anteriores envolvem apenas uma operação. Existem, naturalmente, muitas outras outras

classes de estruturas algébricas de interesse, envolvendo nomeadamente mais do que uma operação. Não as

discutiremos, contudo, neste capítulo38.

Exercícios :

1. Considere a operação θ no conjunto |N0, dos naturais, assim definida: xθy é igual ao menor valor entre

x e y (i.e. xθy = min{x,y}. Esta operação tem elemento neutro ? (Justifique.)

2. Considere a operação θ no conjunto dos inteiros, assim definida: xθy é igual ao menor valor entre x e

y. Esta operação tem elemento neutro ? (Justifique.)

3. Demonstre que num monóide, o inverso de um elemento, quando existe, é único.

4. Considere um grupo (A, θ, e), e demonstre que se tem (onde se usa a-1 para designar o inverso de um

elemento a de A 39):

a) ∀a∈A (aθa = a ⇒ a = e)

b) Lei do corte à esquerda: ∀a,b,c∈A (aθb = aθc ⇒ b = c)

Lei do corte à direita: ∀a,b,c∈A (bθa = cθa ⇒ b = c)

c) ∀a∈A (a-1)-1 = a

d) ∀a,b∈A (aθb)-1 = b-1θa-1

e) Quaisquer que sejam a e b pertencentes a A, as equações aθx = b e yθa = b têm solução única em

A, dada por: x = a-1θb e y = bθa-1

5. Considere um semi-grupo (A, θ) que satisfaz:

existe um elemento e em A tal que:

i) ∀a∈A eθa = a (e é elemento neutro à esquerda)

ii) ∀a∈A ∃b∈A bθa = e (b é inverso esquerdo de a e será a seguir designado por a-1)

Demonstre que se trata de um grupo, provando, sucessivamente:

a) ∀a∈A (aθa = a ⇒ a = e)

b) ∀a∈A aθa-1 = e (i.e. o inverso esquerdo é também inverso direito)

(Sugestão: Desenvolva (aθa-1)θ(aθa-1) e utilize a alínea a).)

c) ∀a∈A aθe = a (i.e. e é também elemento neutro à direita e, portanto, é elemento neutro)

6. Demonstre que um semi-grupo (A, θ) é um grupo sse, quaisquer que sejam a,b∈A, as equações aθx = b

e yθa = b têm soluções em A. (Sugestão: use o exercício anterior.)

7. Dê vários exemplos de grupos, de monóides que não sejam grupos e de semi-grupos que não sejam

monóides.

38 Alguns exemplos de classes importantes de estruturas algébricas envolvendo p.ex. duas operações serão referidas em

capítulo ulterior. Como se ilustrará aí, para além de estruturas relacionais e estruturas algébricas, podemos também considerar

outro tipo de estruturas: desde estruturas "mistas" em que um conjunto é "equipado" quer com relações quer com operações, a

estruturas onde se considera outro tipo de componentes na estrutura.39 Que existe sempre por se tratar de um grupo, e que é único pelo exercício anterior.

118

Secção 4: Famílias, sucessões e sequências. Axioma da escolha.

A linguagem e as notações que introduzimos para as aplicações sofre por vezes algumas modificações,

úteis em certos contextos, para as quais devemos estar alertados (para entendermos o seu significado).

Nomeadamente, é frequente chamar a uma função u definida num conjunto I e com valores num

conjunto E (i.e. a uma aplicação u: I → E) uma família de elementos de E indexada (ou com índices) em I

(conjunto que se designa então pelo conjunto dos índices da família).

Definição 1 :

Uma família u de elementos de E indexada (ou com índices) em I não é mais que uma aplicação u: I → E.

No entanto, quando vemos uma aplicação u: I → E como uma família de elementos de E, costumamos

alterar as designações e notações associadas, como se segue:

• Para cada i∈I, em vez de u(i) escreve-se ui, que se diz o termo (ou o elemento) de índice i da família;

• Para a família u, usa-se a notação (ui)i∈I, ou (ui: i∈I) (ou até só (ui), se não houver risco de confusão,

i.e. se o conjunto dos índices I for evidente pelo contexto);

• E o contradomínio de u, dado por u[I] = {ui: i∈I}, diz-se o conjunto dos elementos da família.

Na visão das aplicações como famílias dá-se igualmente outros nomes a certas aplicações. Por exemplo

a restrição de uma aplicação u: I → E a um subconjunto J do seu domínio diz-se uma subfamília de u:

Definição 2 :

Se u = (ui)i∈I é uma família de elementos de E, a restrição de u a um conjunto qualquer J ⊆ I é uma família

de elementos de E com índices em J, (ui)i∈J, e diz-se uma subfamília de (ui)i∈I.

Uma família (ui)i∈I diz-se finita se o conjunto dos índices é finito40. O número de elementos de I

(índices) diz-se o número de elementos da família. Se o conjunto dos índices é vazio, a família é vazia.

Certas famílias tomam nomes especiais, alguns dos quais já bem conhecidos dos alunos. Por exemplo:

A uma família u = (un)n∈{1,...k}, com índices no conjunto {1,2,...,k} (com k≥1), também se chama de

sequência (de k elementos, ou de comprimento k), representando-se tal família por41 (un)1≤n≤k, ou (un)n=1,..,k,

ou (u1, u2, ..., uk), ou ainda por u1, u2, ..., uk.

40 A noção de conjunto finito será caracterizada mais à frente. Até lá, continuaremos a usar esta e outras noções (como número

de elementos de um conjunto) no sentido intuitivo.41 Embora a notação (un)n∈{1,...k} não o imponha, quando se visualiza uma aplicação u: {1,...,k} → E como uma sequência (de k

elementos de um conjunto E), assume-se que ela é "apresentada" sempre seguindo a ordem natural de enumeração do conjunto

dos índices; daí que nesse caso se descreva em geral u na forma (u1, u2, ..., uk). (Comentários análogos podem ser feitos para as

sucessões.)

119

E chama-se42 sucessão a uma família com índices no conjunto |N1 (={1,2,...,n,...}). Uma sucessão43

u = (un)n∈|N1 representa-se também por (un)n≥1, ou por (u1, u2, ..., un, ...), ou ainda por u1, u2, ..., un, ... .

Exemplo 1 :

Considere-se a sucessão de naturais (un)n≥1 em que un = n MOD 2 (resto da divisão inteira por 2). Tem-se:

• u = (1, 0, 1, 0, 1, 0, 1, 0, ...)

• u3 = 3 MOD 2 = 1

• Conjunto dos elementos da família = contradomínio de u = {0 , 1}.

Observação 1 ( Generalização da noção de sucessão e designação considerada ):

Considere-se por exemplo a sucessão dos pares positivos, a seguir designada de x, que podemos descrever

“extensivamente” como se segue

x = (2, 4, 6, 8, 10,...)

Nada nesta descrição nos fala dos índices que estão a ser considerados para a família x. Intuitivamente,

o que é essencial no conceito de sucessão é que é uma apresentação44 de um conjunto de elementos (o

conjunto dos elementos da família/sucessão), onde se pode dizer que há um primeiro elemento, seguido de

um segundo elemento, e assim sucessivamente (ad infinitum).

A necessidade dos índices advém de pretendermos ter uma maneira de poder identificar (sinteticamente)

um determinado elemento na sucessão à custa de um nome dado à sucessão (no caso acima x) e de um

certo índice (i) que identifique a posição desse elemento na sucessão. Como o primeiro elemento é o que

está na posição 1, a maneira mais natural de estabelecer tal identificação é dizer que o primeiro elemento de

uma sucessão é o seu termo de índice 1, que o segundo elemento da sucessão é o seu termo de índice 2, e

42 Há quem chame às sequências de sucessões finitas, assim como há quem chame às sucessões de sequências infinitas. Aqui

não tomaremos qualquer uma dessas opções, usando os termos sequência e sucessão para cada um dos casos.43 Informalmente, uma subsucessão de uma sucessão u = (un)n≥1 é uma subfamília de u que ainda é uma sucessão.

No entanto, a noção (muito simples) de subfamília, dada acima, teria de ser adaptada (se quisermos ser rigorosos) para

obtermos a caracterização anterior de subsucessão, uma vez que se assume que uma subsucessão é uma sucessão (tal como se

assume que uma subsequência é uma sequência) e, como tal, o seu conjunto dos índices é |N1 (e, no caso das sequências, o seu

conjunto dos índices toma a forma {1,...,k}, para algum k≥1). Naturalmente, dada uma sucessão u = (un)n≥1 podemos (e é vulgar)

falar, por exemplo, da sua subsucessão formada pelos termos de índice par, e descrevê-la através de (u2 n)n≥1 (abreviatura de

(ui)i∈{2,4,6,...}). No entanto, se quisermos ser rigorosos, a subsucessão em causa é uma sucessão x = (xn)n≥1 que satisfaz xn = u2 n,

para qualquer n≥1. Embora a sucessão x possa ser obtida compondo a subfamília (u2 n)n≥1 com um isomorfismo (conceito a

definir à frente) entre os conjuntos dos seus índices equipados com a sua ordenação usual, não entraremos aqui em detalhes que,

de momento, só serviriam para obscurecer aquilo que é intuitivamente simples. De qualquer modo, fica aqui a chamada de

atenção para os problemas que existem no tratamento rigoroso destes conceitos, que são compatíveis com simplificações

apropriadas, desde que estejamos conscientes das imprecisões em que incorremos. (Uma definição de subsequência, facilmente

extensível às subsucessões, foi apresentada na nota de rodapé 26 do capítulo 2, recorrendo à noção, a introduzir no capítulo 6,

de aplicação estritamente crescente entre os respectivos conjuntos de índices.)44 Eventualmente com repetições.

120

assim sucessivamente (tendo-se então, na sucessão acima, que x1=2, x2=4, etc.). Daí que, em princípio,

surja natural ver uma sucessão u como uma família indexada por |N1 (o que corresponde formalmente a

identificar uma sucessão u, de elementos de E, como uma aplicação u: |N1→E).

Embora esta seja a solução natural, nada impede que para descrever uma sucessão se fixe outro

conjunto de índices, com certas características45.

Em particular, em certos contextos e aplicações facilita poder considerar-se que os índices de uma

sucessão começam em zero (considerando que o seu conjunto de índices é |N0), em cujo o caso o primeiro

elemento da sucessão será o termo de índice 0, o segundo elemento o termo de índice 1, e assim

sucessivamente46 (tomando tal opção na sequência x acima, diríamos então que x0=2, x1=4, etc.)

E, embora menos frequentemente, em alguns contextos “dá jeito” poder considerar mesmo que o

conjunto dos índices de uma sucessão pode ser um qualquer conjunto formado por todos os inteiros

maiores ou iguais que um dado inteiro k (i.e. o conjunto Zk = {k, k+1, k+2, k+3, ...}).

Assim, embora em sentido estrito, se possa continuar a considerar que uma sucessão é uma família

indexada por |N1, facilita poder referir-nos a uma sucessão, em sentido lato, como uma qualquer família

indexada por um conjunto da forma Zk (liberdade que utilizaremos neste texto).

Mas tal liberdade de utilização ampla do termo sucessão torna conveniente que disponhamos também de

uma designação sucinta que identifique imediatamente qual o conjunto dos índices das sucessões em

consideração, quando tal for importante saber e não for evidente pelo contexto. Com esse fim chamaremos

às famílias indexadas por Zk de sucessõesk (ou k-sucessões):

Seja k um qualquer inteiro.

Uma sucessãok (ou k-sucessão) será neste texto entendida como uma família indexada por

Zk = {k, k+1, k+2, k+3, ...} (i.e. uma sucessãok u de elementos de E é uma aplicação u: Zk → E).

Repare-se que é imediato “transformar” uma sucessãok u = (un)n≥k numa correspondente “sucessão em

sentido estrito (do termo)”47 v = (vn)n≥1: basta transladar apropriadamente o seu conjunto de índices.

Mais precisamente, sendo u: Zk → E a sucessãok (de elementos de um conjunto E), em causa, basta

considerar a “transladação” dada pela aplicação f: |N1 → Zk, definida por f(n) = n+k-1, e definir a

correspondente sucessão v: |N1 → E como a aplicação composta u o f (tendo-se então, portanto, que v(n) =

u(f(n)) = u(n+k-1), i.e. na notação das famílias, vn = un+k-1, para qualquer n≥1).

Na prática as sucessões mais utilizadas são as sucessões0 e as sucessões1.

45 Sem querermos, para já, entrar em grandes pormenores, podemos dizer que podemos escolher para conjunto de índices de

uma sucessão, um qualquer conjunto I no qual os seus elementos estejam ordenados por uma ordem p tal que (I, p ) seja

isomorfo a (|N1,≤) (conceito a definir no capítulo 6).46 Uma situação análoga acontece também por vezes com as sequências (embora menos frequentemente). Por exemplo, nas

linguagens de programação C ou C++, os “array’s” de k elementos de um conjunto E podem ser vistos como sequências de

elementos indexadas por {0,...,k-1}, uma vez que nessas linguagens o primeiro elemento de um “array” u é o elemento de

índice 0 de u (que se denota aí por u[0]), e não o de índice 1.47 Isto é, de acordo com a terminologia introduzida, uma “sucessão1”.

121

Para além das sucessões e sequências, existem ainda outros tipos de famílias que tomam nomes

específicos, e para as quais se consideram notações especiais, que convém conhecer.

Uma família u com índices num conjunto I de pares ordenados diz-se uma família dupla. Neste caso,

para cada par (k,l)∈I, o elemento u(k,l) representa-se, normalmente, simplesmente por ukl (ou uk,l) e a

família u por (ukl)(k,l)∈I. Definem-se de modo análogo famílias triplas, quádruplas, etc., e usam-se

convenções análogas.

Finalmente, convém ainda falar um pouco das chamadas famílias de conjuntos.

Quando os elementos de uma família u são eles próprios conjuntos (i.e. u é uma aplicação u : I → E

com E o conjunto das partes de um conjunto, ou um qualquer outro conjunto de conjuntos), diz-se que

estamos em presença de uma família de conjuntos.

Sobre uma família de conjuntos podemos definir várias operações, e nomeadamente a intersecção e a

união da família. Tirando partido de já termos definido, no capítulo 2, a intersecção e união de um

conjunto de conjuntos (a que também chamámos de intersecções e uniões generalizadas), podemos agora

definir a intersecção de uma família de conjuntos u : I → E, como sendo a intersecção do contradomínio de

u, i.e. do conjunto {ui: i∈I}. E analogamente para a união da família.

Isto é, usando letras maiúsculas para os elementos da família (apenas para chamar a atenção de que se

trata de conjuntos), e denotando a intersecção de uma família de conjuntos (Ai)i∈I por 48

i∈II Ai

tem-se (só definido para I não vazio):

48 Alguns autores designam uma família de conjuntos (Ai)i∈I por {Ai: i∈I}, não distinguindo assim, notacionalmente, a família do

conjunto dos elementos (no caso conjuntos) da família. Tal notação {Ai: i∈I} para a família parece-nos perigosa, pois pode

sugerir que dois elementos da família que sejam iguais (i.e. que sejam o mesmo conjunto) sejam vistos como um só elemento.

Embora tal identificação não tenha qualquer impacto no âmbito do cálculo da união e da intersecção de uma família de

conjuntos, ela vai contra o que se pretende com a noção de família de conjuntos (que pode ser vista, intuitivamente, como uma

listagem de conjuntos, eventualmente com repetições, que são distinguidas pelos seus índices), e é relevante p.ex. no contexto da

definição do produto cartesiano generalizado a uma família de conjuntos (a introduzir a seguir).

Por outro lado, é de referir que também se poderia ter definido primeiro a noção de intersecção (e união) de uma família de

conjuntos, e a partir daí definir a noção de intersecção (e união) de um conjunto de conjuntos, uma vez que qualquer conjunto

pode ser visto como uma família, ou mais precisamente, qualquer conjunto B dá origem naturalmente a uma família (da qual ele

é o contradomínio): a família definida pela aplicação identidade em B (em que o próprio conjunto B funciona como o conjunto

dos seus índices). Sem pretendermos aprofundar este aspecto, saliente-se apenas que as notações introduzidas no capítulo 2 para

as intersecções (e uniões) generalizadas estão de acordo com esta ideia: se B é um conjunto de conjuntos, então podemos ver B

como o contradomínio da família (idB(A))A∈B = (A)A∈B, usando-se qualquer uma das notações a seguir para designar a

intersecção de B:( A∈βI idB(A) = )

A∈βI A ou ∩B (i.e. ∩{A: A∈B} )

122

i∈II Ai = ∩{Ai: i∈I}

E, analogamente: i∈IU Ai = ∪{Ai: i∈I}

Exemplo 2 :

Considere-se a sucessão de conjuntos (An)n≥1 = ({1}, {2}, {1}, {2}, {1}, {2}, ...). Então:

• Contradomínio da sucessão (An)n≥1 = {{1}, {2}} (= conjunto dos elementos da família)

• n ≥1I An = A1 ∩ A2 ∩ ... ∩ An ∩ ... = {1} ∩ {2} = ∅

• n ≥1U An = A1 ∪ A2 ∪ ... ∪ An ∪ ... = {1} ∪ {2} = {1, 2}

E, para terminar esta nossa introdução às famílias, vejamos agora como também se pode estender a

operação de produto cartesiano a famílias de conjuntos.

Definimos, no capítulo 2, o produto cartesiano de n conjuntos A1, ..., An, como sendo o conjunto, que

se representa por A1 x ... x An, assim definido

A1 x ... x An = {(a1, ..., an): a1 ∈ A1 ∧ ... ∧ an ∈ An}

Ora, à luz do conceito de família, podemos ver (A1,...,An) como uma família de conjuntos indexada por

{1,...,n} (uma sequência de n conjuntos), e os elementos de A1x...xAn como sendo as famílias indexadas

por {1,...,n} (i.e. as sequência de n elementos), a = (an)n∈{1,...k}, que satisfazem a condição ∀1≤i≤n ai∈Ai

Surge assim natural a seguinte extensão do produto cartesiano a quaisquer famílias de conjuntos:

Definição 3 :

a) Chama-se produto cartesiano de uma família de conjuntos (Ai)i∈I ao conjunto, que se representa por

i∈I∏ Ai

formado por todas as famílias indexadas por I, a = (ai)i∈I, que satisfazem a condição ∀i∈I ai ∈ Ai

(informalmente, as famílias que são formadas por um elemento de cada um dos conjuntos Ai).

b) Se todos os conjuntos Ai são iguais a um conjunto A, então designa-se o conjunto

i∈I∏ Ai

por AI e chama-se a AI a potência cartesiana de A de expoente I.

Observação 2 :

a) Dissemos acima que os elementos de A1x...xAn podem ser vistos como sendo as famílias indexadas por

{1,...,n} (i.e. as sequência de n elementos), a = (an)n∈{1,...k}, que satisfazem a condição ∀1≤i≤n ai∈Ai, sem

contudo precisar a que conjunto pertencem os elementos dessas famílias a = (an)n∈{1,...k}.

Ora, podemos considerar que esses elementos pertencem ao conjunto

123

E = 1≤ i≤ nU Ai

e precisar que os elementos de A1x...xAn são as famílias de elementos de E indexadas por {1,...,n}, o

que nos permite definir o produto cartesiano A1x...xAn, em termos de aplicações, como sendo o

conjunto formado por todas as aplicações a:{1,...,n}→ 1≤ i≤ nU Ai que satisfazem ∀i∈{1,...,n} a(i)∈ Ai

Analogamente, podemos formular o produto cartesiano de uma família de conjuntos (Ai)i∈I, em

termos de aplicações, como se segue:

i∈I∏ Ai é o conjunto formado por todas as aplicações a: I →

i∈IU Ai que satisfazem ∀i∈I a(i) ∈ Ai.

b) Se todos os conjuntos Ai são iguais a um conjunto A, então i∈IU Ai = A e (tendo em conta a

observação a) anterior) é fácil de verificar que

AI designa o conjunto de todas as aplicações de I em A.

c) Se o conjunto dos índices I é vazio, então existe uma só aplicação a de I em i∈IU Ai: a função vazia em

i∈IU Ai (a qual satisfaz "vacuosamente" a condição ∀i∈I a(i) ∈ Ai).

Assim, neste caso i∈I∏ Ai tem um e um só elemento (essa aplicação vazia) 49.

d) Suponha-se agora que I≠∅ e que para um certo k∈I, Ak=∅.

Então não pode existir nenhuma aplicação a : I → i∈IU Ai que satisfaça ∀i∈I ai∈Ai.

Logo, neste caso, i∈I∏ Ai = ∅.

De posse do conceito de produto cartesiano de uma família de conjuntos, podemos então formular o

famoso axioma da escolha, como se segue:

Axioma da escolha :

Se todo o conjunto Ai da família (Ai)i∈I é não vazio, então o produto cartesiano da família é não vazio:

Se ∀i∈I Ai ≠ ∅, então i∈I∏ Ai ≠ ∅

49 Se designarmos a aplicação vazia em

i∈IU Ai simplesmente por ∅ (omitindo a referência ao conjunto de chegada), como é

usual fazer-se quando se identifica uma aplicação com a relação que é o seu gráfico, então podemos escrever i∈∅∏ Ai = {∅}.

Em particular, qualquer que seja o conjunto A, ter-se-á então: A∅ = {∅}.

Refira-se, a propósito, que a notação A0, introduzida na definição 2.5.4, onde se definiu A0 = {()}, pode ser vista como

significando o mesmo que A∅, representando a aplicação vazia em A como a sequência vazia () (o que está de acordo com a

notação introduzida nesta secção para representar as famílias).

124

Informalmente, o axioma da escolha 50 diz-nos que dada uma qualquer família (Ai)i∈I, de conjuntos não

vazios, é sempre possível escolher um elemento de cada conjunto da família, de modo a obter uma família

(ai)i∈I formada por um elemento ai de cada conjunto Ai (o que, continuando a falar informalmente,

envolverá uma "infinidade de escolhas" se o conjunto dos índices for infinito).

Secção 5: Aplicações injectivas, sobrejectivas e bijectivas

Para terminar esta introdução às funções, recordaremos os conceitos de aplicação injectiva, sobrejectiva e

bijectiva, e enunciaremos e demonstraremos certos resultados relevantes (e nomeadamente alguns que serão

utilizados no próximo capítulo, relativo à cardinalidade de um conjunto).

Definição 1 :

Considere-se uma aplicação (qualquer) f : A → B.

a) Diz-se que f é injectiva (ou que f é uma injecção) sse quaisquer dois elementos distintos de A têm

imagens distintas por f 51. Simbolicamente:

∀x,y∈A (x ≠ y ⇒ f(x) ≠ f(y)) (ou, de forma equivalente, ∀x,y∈A (f(x) = f(y) ⇒ x = y) )

b) Diz-se que f é sobrejectiva (ou que f é uma sobrejecção) sse o cod(f)=B, i.e. sse qualquer elemento do

conjunto de chegada for imagem por f de algum elemento do conjunto de partida52. Simbolicamente:

∀y∈B ∃x∈A y = f(x)

c) E diz-se que f é bijectiva (ou que f é uma bijecção) sse f é injectiva e sobrejectiva53.∇

É ainda de referir que a uma bijecção f : A → A , i.e. a uma bijecção de um conjunto A sobre si

próprio, se chama uma permutação de A.

Exemplos :

1. Seja f: |R → |R tal que f(x) = x2. Então f não é injectiva (pois p.ex. f(-1) = f(1)), nem sobrejectiva

(pois p.ex. -1 não é imagem de qualquer real por f).

2. Seja f: |R → |R+0 (onde |R+

0 designa o conjunto dos reais não negativos) tal que f(x) = x2. Então f não é

injectiva, mas é sobrejectiva.

3. Seja f: |R+0 → |R tal que f(x) = x2. Então f é injectiva mas não sobrejectiva.

50 Para mais detalhes sobre este axioma, e discussão sobre a sua aceitação (ou não), veja-se p.ex. [41], pág. 139 e seguintes.51 Em inglês os termos "injective", "injection" e "one-to-one" (ou, abreviadamente, "1 - 1") são usados para designar asaplicações injectivas.

Por outro lado, é de referir que este conceito se pode estender de modo imediato a funções parciais, dizendo que umafunção parcial é injectiva sse não existirem dois elementos distintos do seu domínio que tenham a mesma imagem por essafunção.52 O termo aplicação de A sobre B (em inglês "function from A onto B") pode também ser usado para se indicar que se está areferir a uma aplicação sobrejectiva de A em B. Em inglês os termos "surjective" ou "surjection" são também usados paradesignar as aplicações sobrejectivas.53 Às aplicações bijectivas de A em B chama-se também correspondências biunívocas entre A e B. Em inglês os termos"bijective", "bijection" e "one-to-one correspondence" são também usados para designar as aplicações bijectivas.

125

4. Seja f: |R+0 → |R+

0 tal que f(x) = x2. Então f é uma bijecção.

5. A aplicação D: |R → {0, 1} que aplica cada racional em 0 e cada irracional em 1 (também chamada de

função de Dirichlet) não é injectiva, mas é sobrejectiva.

6. A aplicação g: |R → |R definida por g(x) = x3 é bijectiva.

7. A aplicação s: |N0 → |N0 definida por s(x) = x+1 é injectiva, mas não sobrejectiva.

8. A aplicação s: |N0 → |N1 definida por s(x) = x+1 é bijectiva.

9. A aplicação g: {1, 2, 3, 4} → {1, 2, 3, 4} definida por g(1) = 2, g(2) = 3, g(3) = 4 e g(4) = 1 (isto é,

g(n) = (resto da divisão inteira de n por 4) + 1) constitui uma permutação de {1, 2, 3, 4}.

10.A aplicação g: {1, 2, 3, 4} → {1, 2, 3, 4} definida por g(1) = 2, g(2) = 1, g(3) = 4 e g(4) = 3 constitui

também uma permutação de {1, 2, 3, 4}.

11.A aplicação identidade, em {1, 2, 3, 4}, constitui igualmente uma permutação de {1, 2, 3, 4}.

(Quantas permutações de {1, 2, 3, 4} pode definir ?)

Quando f: A → B é uma bijecção, então cada elemento y de B é imagem por f de um e um só elemento

x de A (como f é sobrejectiva, existe pelo menos um elemento x de A que é aplicado por f nesse elemento

y de B; e, como f é injectiva, não poderá existir mais do que um elemento de A que seja aplicado por f em

y). Podemos assim falar na aplicação de B em A que para cada elemento y de B retorna o elemento x de A

de que y é imagem por f. A tal função chama-se a aplicação inversa de f:

Definição 2 :

Dada uma bijecção f : A → B, designa-se por aplicação inversa (ou função inversa54) de f, a aplicação (que

se denota por f-1), assim definida:

f-1 : B → A

f-1(y) = x sse f(x) = y (∀y∈B, x∈A)∇

Diremos que uma aplicação f: A → B é invertível sse admite aplicação inversa (i.e. sse f for bijectiva).

54 É fácil verficar que a noção de função inversa se pode estender a aplicações f: A → B não bijectivas. O requisito essencial éque f seja injectiva: dado um elemento y de B, se este for imagem, por f, de algum elemento de A, então, como f é injectiva,existirá um e um só elemento x de A tal que f(x) = y, definindo-se f- 1(y) como sendo esse x; se y não for imagem por f denenhum elemento de A, então f- 1(y) não está definido. Naturalmente, como decorre do que se acabou de observar, se f forinjectiva, mas não não sobrejectiva, então a inversa de f não será uma aplicação.

Mais ainda, a ideia de função inversa de uma função pode mesmo definir-se para quaisquer funções que sejam injectivas, e

não apenas para aplicações: a inversa de uma função f : A / → B, injectiva, é a função f- 1 : B / → A, dada por dom(f- 1) =cod(f) e ∀y∈cod(f), x∈dom(f) (f- 1(y) = x ⇔ f(x) = y) (donde sai que cod(f- 1) = dom(f)).

Note-se, também, que se identificarmos uma função f com a relação Rf (a que chamámos de gráfico de f), facilmente seconstata que f- 1 corresponde à relação inversa de Rf (mais precisamente, R( f-1) = (Rf)- 1, i.e. o gráfico de f- 1 coincide com arelação inversa do gráfico de f). Naturalmente, a inversa de Rf está sempre definida (pois qualquer relação binária admite umarelação inversa). No entanto, (Rf)-1 só corresponderá a uma função se se tratar de uma relação funcional, o que só se verifica sef for injectiva.

126

Observação 1 :

Na secção 1 definimos a noção de imagem e de pré-imagem de um conjunto por uma aplicação.

Recordando: dado f : A → B, a imagem por f de um subconjunto D de A é o conjunto f[D] = {f(x): x∈D},

e a pré-imagem por f de um subconjunto E de B é o conjunto f-1[E] = {x ∈ A: f(x) ∈ E}.

Ora, embora a noção de pré-imagem esteja definida independentemente de existir a aplicação inversa de

f, para que a notação f-1[E] não seja problemática, é fundamental que no caso em que existe tal aplicação

inversa f-1 (i.e. quando f é uma bijecção), a pré-imagem de E por f coincida com a imagem por f-1 de E 55,

e de facto tal verifica-se, como se mostra a seguir:

a (∈A) pertence à imagem por f-1 de E

sse

∃x (x ∈ E ∧ a = f-1(x))

sse

∃x (x ∈ E ∧ f(a) = x)

sse

f(a) ∈ E

sse

a pertence à pré-imagem por f de E∇

As bijecções desempenham um papel importante em matemática. O facto de existir uma bijecção entre

um conjunto A e um conjunto B significa que os elementos de A e B podem ser postos em

correspondência de um para um. No próximo capítulo tiraremos partido deste importante facto. Antes

porém, nesta secção, iremos enunciar e demonstrar alguns resultados relacionados com este tipo de

aplicações.

Quando compomos uma bijecção com a sua inversa obtemos a aplicação identidade; resta a questão: a

identidade em que conjunto? O diagrama a seguir ajuda a visualizar a resposta a esta questão (ao identificar

a origem e o destino das setas que denotam as diferentes funções em causa):

f A B idB

f o f-1

f-1 f-1

f-1 o f B A idA

55 A noção de imagem e de pré-imagem de um conjunto define-se também (como fizemos na secção 1) para funções que nãosejam necessariamente aplicações. O comentário efectuado nesta observação (devidamente adaptado) permanece válido em talcaso: a pré-imagem de um conjunto por uma função injectiva coincide com a imagem desse conjunto pela respectiva funçãoinversa (definida como na nota de rodapé anterior).

127

Com o mesmo fim, podemos também recorrer ao diagrama mais simples, a seguir, onde se omite as

setas correspondentes às composições de funções em causa56:

idA f A B idB f-1

Teorema 1 :

Se f : A → B é uma bijecção, então a aplicação inversa f-1 : B → A é também uma bijecção e tem-se

f º f-1 = idB e f-1 º f = idA

Demonstração 57:

Suponha-se que f: A → B é uma bijecção (qualquer).

a) Demonstremos que f-1: B → A é injectiva.

Sejam y1,y2∈B quaisquer tais que y1≠y2. Queremos provar que f-1(y1)≠ f-1(y2).

Ora, como f é sobrejectiva, existem x1,x2∈A tais que f(x1)=y1 e f(x2)=y2.

E, como y1≠y2 e f é uma função, tem de ter-se x1≠x2 (caso contrário x1 teria duas imagens por f).

Logo f-1(y1) = x1 ≠ x2 = f-1(y2) (c.q.d.)

b) Demonstremos que f-1: B → A é sobrejectiva.

Sejam x∈A qualquer. Seja y = f(x). Então (por definição de f-1) tem-se f-1(y) = x.

Logo ∀ x∈A ∃ y∈B x = f-1(y) (c.q.d.)

c) Finalmente, demonstremos que f º f-1 = idB (a demonstração de que f-1 º f = idA é análoga).

Por definição da composição de funções e de idB, é imediato que f º f-1 e idB têm o mesmo conjunto de

partida (B) e mesmo conjunto de chegada (no caso, também B).

Resta-nos portanto provar que f º f-1 e idB atribuem o mesmo valor a cada elemento do seu conjunto de

partida (B):

Seja y∈B qualquer.

Por definição de idB, tem-se idB(y) = y.

Seja x∈A tal que f(x)=y (a existência de um tal x é garantida pelo facto de f ser sobrejectiva). Então

(por definição de f-1) f-1(y)=x e tem-se: fºf-1(y) = f(f-1(y)) = f(x) = y.

Logo idB(y) = fºf-1(y) = y (c.q.d.)

56 Tais setas podem ser visualizadas muito facilmente, se atendermos a que a seta que denota uma composição de funções g o fpode ser obtida começando por seguir f e depois seguindo g. (Como já se referiu, há quem leia "g o f" como "g após f" de modo afacilitar esta memorização.) Logo a origem da seta que denota g o f é a origem da seta que denota f, e o destino da seta quedenota g o f é o destino da seta que denota g. No caso do diagrama a seguir, como (a seta que denota) f vai de A para B e a setaf- 1 vai de B para A, tem-se que a seta f o f- 1 vai de B para B e a seta f- 1 o f vai de A para A.57 Repare-se que a injectividade de f não é usada nesta demonstração. Ela é contudo necessária para f- 1 ser uma função.

128

Teorema 2 :

Sejam f : A → B e g : B → C duas aplicações. Então:

a) Se f e g são injectivas, g º f também é injectiva.

b) Se f e g são sobrejectivas, g º f também é sobrejectiva.

c) Se f e g são bijecções, então g º f também é uma bijecção e tem-se: (g º f)-1 = f-1 º g

-1

Demonstração:

a) Exercício.

b) Exercício.

c) Suponha-se que f : A → B e g : B → C são bijecções.

Por a) e b), é imediato que g º f : A → C é uma bijecção.

Resta-nos provar que (g º f)-1 = f-1 º g

-1

O diagrama a seguir ajuda-nos a visualizar quais são os conjuntos de partida e de chegada de cada

aplicação relevante:

f A B f-1

f-1 o g-1

(g o f)-1 g-1 g

g o f C

diagrama que podemos também representar, de uma forma talvez mais clara, como a seguir:

(g o f)-1

g o f

f g

A B C f-1 g-1

f-1 o g-1

Como decorre do diagrama anterior, é imediato que (g º f)-1 e f-1

º g-1 têm o mesmo conjunto de

partida (C) e o mesmo conjunto de chegada (A). Mas tal não chega para que as duas aplicações sejam

iguais. Temos ainda de provar que elas aplicam cada elemento de C no mesmo elemento de A, como é

feito a seguir.

Seja c ∈ C qualquer.

Como gºf é bijectiva, existe um e um só a ∈ A tal que c = gºf(a) = g(f(a)).

Por definição de função inversa, tem-se então (gºf)-1(c) = a.

E:

129

c = g(f(a))

g-1(c) = g-1(g(f(a))) = f(a)

f-1(g-1(c)) = f-1(f(a)) = a

Logo (gºf)-1(c) = g(f(a)) (c-q.d.)

Observação 2 :

A demonstração de que (g º f)-1 = f-1 º g-1 (alínea c) do teorema anterior) poderia ser feita de uma forma

diferente, alternativa (não necessariamente mais simples, mas de tipo diferente), trabalhando

algebricamente, e usando as propriedades já conhecidas da composição de aplicações.

Tal é feito a seguir, usando a associatividade da composição, o facto da composição de uma aplicação

com a sua inversa dar origem à (aplicação) identidade no conjunto apropriado, e o facto das identidades

"apropriadas" serem elementos neutros para a composição de funções (à esquerda ou à direita, conforme

faça sentido compor a identidade com a função em causa à esquerda, ou à direita):

- Pelo teorema 1: (g º f)-1 º (g º f) = idA

- Logo: ((g º f)-1 º (g º f)) º (f

-1 º g-1) = idA º (f

-1 º g-1)

- Mas (exercício 2.6, i.e. exercício 6 da secção 2): idA º (f-1 º g

-1) = f-1 º g-1

- Logo: ((g º f)-1 º (g º f)) º (f

-1 º g-1) = f-1 º g

-1

- E (com todo o pormenor):

((g º f)-1 º (g º f)) º (f

-1 º g-1)

= (associatividade de º : exercício 1.5)

(((g º f)-1 º (g º f)) º f

-1) º g-1

= (associatividade de º)

((g º f)-1 º ((g º f) º f

-1)) º g-1

= (associatividade de º)

((g º f)-1 º (g º (f º f

-1))) º g-1

= (teorema 1)

((g º f)-1 º (g º idB)) º g

-1

= (exercício 2.6)

((g º f)-1 º g) º g

-1

= (associatividade de º)

(g º f)-1 º (g º g

-1)

= (teorema 1)

130

(g º f)-1 º idC

= (exercício 2.6)

(g º f)-1

Logo: (g º f)-1 = f-1 º g

-1 (c.q.d.)∇

Teorema 3 :

Se f : A → B e g : B → A são duas aplicações tais que g º f = idA , então f é injectiva e g é sobrejectiva.

Isto é, dito de outra maneira, se ao compormos uma aplicação f de A em B e uma aplicação g de B em

A, obtivermos a identidade (necessariamente no primeiro conjunto A), então a primeira aplicação58 é

injectiva e a segunda sobrejectiva:

g o f

f gA B A idA

injectiva sobrejectiva

Demonstração:

Sejam f e g (quaisquer) aplicações f : A → B e g : B → A tais que g º f = idA.

i) Tese: f é injectiva.

Dem:

Sejam x1 e x2 pertencentes a A, quaisquer. Tem-se (com todo o pormenor):

f(x1) = f(x2)

g(f(x1)) = g(f(x2))

⇓ (definição de (g º f))

(g º f)(x1) = (g º f)(x2)

⇓ (g º f = idA)

idA(x1) = idA(x2)

⇓ (definição de idA)

x1 = x2

Logo (pela transitividade da implicação): f(x1) = f(x2) ⇒ x1 = x2.

E, como x1 e x2 eram quaisquer, conclui-se que f é injectiva.

ii) Tese: g é sobrejectiva.

Dem.:

Seja y∈A qualquer.

Tem-se (usando g º f = idA): y = idA(y) = g º f(y) = g(f(y)).

Logo, como pretendíamos demonstrar, existe x∈B tal que g(x) = y (basta considerar x=f(y)).

58 Isto é, a aplicação da esquerda no diagrama a seguir (mas a da direita, na notação da composição g o f).

131

Observação 3 :

a) Note-se que se f e g estiverem nas condições do enunciado anterior (i.e. g º f = idA), não se pode

concluir que nenhuma dessas aplicações seja bijectiva (por exemplo, as aplicações f:|N0→|N0 e g:|N0→|N0,

dadas por f(n)=n+1, para qualquer natural n, g(0)=0 e g(n)=n-1 para qualquer natural positivo n, não são

bijectivas, mas verificam g º f = id|No).

No entanto, se também se verificar que f o g = idB, então (por aplicação do teorema anterior, obtém-se

que) f e g são ambas bijecções, sendo uma a inversa da outra (ver exercício 7 à frente).

b) Suponha-se, agora, que só consideramos aplicações de um conjunto A em si próprio.

Então a composição dessas aplicações está sempre definida e a aplicação identidade em A é o elemento

neutro da composição, para além da composição ser associativa (isto é, usando59 AA para denotar o

conjunto das aplicações de A em A, tem-se que (AA, º , idA) é um monóide).

Assim, por aplicação directa do teorema 2 da secção 3, tem-se automaticamente (sem necessidade de

demonstração) que:

"Se f, g e h são (quaisquer) aplicações de um conjunto (qualquer) A em si próprio, tais que

f º h = g º f = idA

então h = g e f é invertível, sendo g a sua inversa60".

O teorema a seguir embora não seja o recíproco do teorema anterior (porquê ?), é uma "espécie" de

recíproco (o "recíproco possível", falando informalmente).

Teorema 4 :

Seja f uma aplicação de um conjunto A num conjunto B (i.e. f : A → B). Então:

a) se f é injectiva e A ≠ ∅, existe uma aplicação g : B → A tal que g º f = idA

Diagramaticamente:

g o f

f gA B A idA

injectiva

(Nota: E, naturalmente, pelo teorema anterior, tal aplicação g será sobrejectiva.)

b) se f é sobrejectiva, existe uma aplicação g : B → A tal que f º g = idB

59 Ver observação 2-b) da secção anterior..

60 Dizer aqui que g é a inversa de f, significa apenas que f º g = g º f = idA. À partida, isso não implica, só por si, que f tenha de

ser uma bijecção e que g seja igual à aplicação f- 1. Que tal se verifica, i.e. que nesse caso f é uma bijecção e g = f- 1, pode

mostrar-se como se segue: que f:A→A é invertível para a composição de aplicações (de A em A) sse é uma bijecção, decorre

dos teoremas (desta secção) 1 e 3 (ver a) desta observação); que a inversa de f tem de ser igual a f- 1, decorre de o inverso ser

único (ver observação da secção 3) e de f- 1 (quando está definida, i.e. quando f é bijectiva) ser inversa de f, pelo teorema 1

desta secção (uma demonstração directa, de um resultado "mais geral", é sugerida no exercício 6 à frente).

132

Diagramaticamente:

f o g

g fB A B idB

sobrejectiva

(Nota: E, naturalmente, pelo teorema anterior, tal aplicação g será injectiva 61.)

Demonstração:

a) Suponha-se que f é injectiva e que A ≠ ∅.

Se f[A] = B (i.e. se cod(f) = B) então f é bijectiva e a função g = f-1 serve (pelo teorema 1) 62.

Se f[A] ≠ B, escolhe-se um elemento a∈A (A é diferente do ∅) e define-se uma aplicação g : B → A

como se segue:

" qualquer que seja x∈B,

se x∈f[A] (i.e. se x∈cod(f)), então g(x) é o elemento y (de A) que é aplicado por f em x 63

se x∉f[A], então g(x) = a "

Resta-nos provar que: g º f = idA.

Seja então y∈A. Queremos provar (g º f)(y) = y. Ora:

(g º f)(y)

=

g(f(y))

= (pois x = f(y) ∈ f[A])

y

b) Suponha-se que f é sobrejectiva. Defina-se uma aplicação g : B → A como se segue:

Para cada x∈B, define-se g(x) como sendo um dos elementos da pré-imagem por f de x, i.e. g(x) é um

dos elementos de f-1[{x}], conjunto que é não vazio, uma vez que f é sobrejectiva64.

Resta-nos provar que: f º g = idB. Mas, por definição de f-1[{x}], é imediato que (qualquer que seja x∈B)

f(g(x)) = x (c.q.d.)

61 Ao aplicar aqui o teorema anterior, o leitor não deverá "olhar" para os nomes dados às funções, mas sim para a posição que

ocupam no diagrama.62 A demonstração a seguir, para o caso em que f[A]≠B, tsambém serviria para este caso (em que se considera que f[A]=B).63 Isto é, g(x) = f- 1(x). Apesar de só termos definido f- 1 para funções bijectivas, como se observou na nota de rodapé 54, a

noção de função inversa de f pode ser definida para qualquer função f injectiva, tendo-se então que f- 1(x) só está definido para

os elementos x que pertencem ao contradomínio de f.64 A possibilidade de fazermos estas múltiplas escolhas de elementos de conjuntos não vazios (infinitas esolhas, se B for infinito)

é-nos garantida pelo axioma da escolha referido na secção anterior (repare-se que (f- 1[{x}])x∈B é uma família de conjuntos não

vazios).

133

Saliente-se que, como decorre da demonstração anterior, a aplicação g cuja existência é garantida (quer

na alínea a), quer na alínea b)) não é, em geral, única.

Refira-se, ainda, que, combinando os resultados enunciados nos teoremas 3 e 4, se obtêm os seguintes

resultados:

Teorema 5 (corolário dos teoremas 3 e 4):

a) Se A ≠ ∅, então f : A → B é injectiva sse existe uma aplicação g : B → A tal que g º f = idA

b) f : A → B é sobrejectiva sse existe uma aplicação g : B → A tal que f º g = idB

Teorema 6 (corolário dos teoremas 3 e 4):

Sejam A e B dois conjuntos, com A ≠ ∅.

Então existe uma aplicação injectiva entre A e B sse existe uma aplicação sobrejectiva entre B e A.

A propósito da restrição "A≠∅" no enunciado do teorema anterior, note-se que se A=∅ então (qualquer

que seja o conjunto B) existe uma e uma só aplicação de A em B - a aplicação vazia em B - a qual é

necessariamente injectiva, mas, nessa situação, só existirá uma aplicação de B em A(=∅) se B for também

vazio (em cujo caso essa aplicação será naturalmente sobrejectiva).

O teorema 6 anterior estabelece um resultado importante e que será utilizado no âmbito da abordagem à

cardinalidade de um conjunto, que será efectuada no próximo capítulo.

Para terminar esta introdução a este tópico, refira-se ainda um outro resultado importante e de grande

aplicação, e que também será utilizado na análise da cardinalidade de um conjunto (nomeadamente para

estabelecer que dois conjuntos têm o mesmo cardinal: ver próximo capítulo). A sua demonstração é mais

complexa e pode ser omitida pelo leitor (uma vez que para os objectivos desta disciplina é mais importante

saber da existência do resultado, para o poder aplicar, do que propriamente conhecer a sua demonstração).

Teorema 7 (teorema de Cantor - Schröder - Bernstein) 65:

Quaisquer que sejam os conjuntos A e B, se existe uma injecção entre A e B e existe uma injecção entre B

e A, então existe uma bijecção entre A e B.

Demonstração (a sua leitura pode ser omitida):

a) Comecemos por provar que este teorema fica demonstrado, se provarmos que

"se existir uma injecção entre um conjunto e um seu subconjunto, então existe uma bijecção entre

ambos"

(resultado a seguir designado por (*)).

65 A importância deste resultado advém de que é mais fácil, em geral, mostrar que existem (p.ex. exibindo) injecções de A para

B e de B para A, do que descobrir uma bijecção entre A e B.

134

Suponha-se que existem duas injecções f : A → B e g : B → A. Quer-se provar que existe uma

bijecção entre A e B (assumindo que se verifica o resultado (*)).

Ora, como g : B → A é injectiva, é imediato que existe uma bijecção j entre B e g[B] (basta considerar

a função j : B → g[B], dada por ∀x∈B j(x)=g(x)).

Logo, para provar que existe uma bijecção entre A e B, basta provar que existe uma bijecção k entre A

e g[B] (pois se k : A → g[B] for bijectiva, então, pelo teorema 2-c), j-1 o k : A → B será uma

bijecção).

Mas, g[B] ⊆ A e jof : A → g[B] é uma injecção (pelo teorema 2-a)).

Logo, pelo resultado (*) (que estamos a supor que se verifica), existe uma bijecção k entre A e g[B]

(c.q.d.)

b) Demonstremos então que se verifica o resultado atrás designado de (*).

Seja A um conjunto qualquer e B um qualquer subconjunto de A e suponha-se que existe uma injecção

f : A → B.

Quer-se provar que existe uma bijecção66 h : A → B.

Podemos supor que B está estritamente contido em A, pois se B=A, então a identidade em A é uma

bijecção entre A e B.

Defina-se, por recorrência, a seguinte sucessão de conjuntos C1, C2, C3, ... (as definições por

recorrência serão abordadas, mais desenvolvidamente, à frente nestas folhas):

C1 = A - B (≠ ∅)

Cn+1 = f[Cn], qualquer que seja n≥1

É imediato verificar (por indução em n) que ∀n≥1 Cn ⊆ A e que ∀n≥2 Cn ⊆ B.

Defina-se h : A → B como se segue:

h(x) = f(x) , se x ∈ n ≥1U Cn

h(x) = x , caso contrário (i.e. se x ∉ n ≥1U C)

Isto é, informalmente:

• h(x) coincide com f(x) para os pontos x que pertencem a A-B, ou que resultam desses pontos

por sucessivas aplicações da função f.

• Para os restantes pontos x de A, h(x) define-se como sendo o próprio x.

E, para terminar a demonstração, mostre-se que h é bijectiva.

66 Note-se que essa bijecção não tem de coincidir com a injecção f. Por exemplo, a aplicação f:Z→ |N0, dada por f(n) = -2n,

se n<0 e f(n)=2n+1, se n≥0, é injectiva, mas não é bijectiva (pois 0∉ f[Z]).

135

h é injectiva:

Sejam x e y quaisquer elementos distintos de A. Quer-se provar que h(x)≠h(y)

Caso 1: x e y pertencem ambos a n ≥1U Cn. Então:

h(x) = f(x) ≠ f(y) = h(y) (tem-se f(x) ≠ f(y), por f ser injectiva).

Caso 2: nem x nem y pertencem a n ≥1U Cn. Então:

h(x) = x ≠ y = h(y) (x ≠ y, por hipótese).

Caso 3: existe n≥1 tal que x∈Cn e y ∉ n ≥1U Cn. Então:

Por definição de h e de Cn+1: h(x) = f(x) ∈ Cn+1.

E, por definição de h, h(y) = y.

Logo, como y ∉ Cn+1, tem-se que h(x) ≠ h(y).

Caso 4: existe n≥1 tal que y∈Cn e x ∉ n ≥1U Cn: análogo ao caso 3 anterior.

h é sobrejectiva:

Seja z um qualquer elemento de B. Quer-se provar que existe um elemento x de A tal que h(x)=z.

Há a considerar os casos seguintes (note-se que como x∈B não se pode ter x∈C1, pois C1=A-B)

Caso 1: existe n≥1 tal que z∈Cn+1.

Então, por definição de Cn+1, existe x∈Cn(⊆A) tal que f(x) = z e (por definição de h)

h(x) = f(x) (= z).

Caso 2: z ∉ n ≥1U Cn.

Então, por definição de h, h(z) = z (e z∈A, pois z∈B e B⊆A).

Exercícios :

1. Dê exemplos de aplicações de |R em |R que sejam:

a) bijectivas;

b) injectivas, mas não sobrejectivas;

c) sobrejectivas, mas não injectivas;

b) nem injectivas, nem sobrejectivas.

2. Dê exemplos de aplicações de |N0 em |N0 que sejam:

a) bijectivas;

b) injectivas, mas não sobrejectivas;

c) sobrejectivas, mas não injectivas;

b) nem injectivas, nem sobrejectivas.

3. Seja g : |R → |R assim definida: g(x) = x2 + 2 (∀x ∈ |R)

136

a) Diga, justificando, se g é injectiva.

b) Diga, justificando, se g é sobrejectiva.

c) Determine g-1[{4}] e g-1[{1}]

4. Diga quais das seguintes aplicações são injectivas, sobrejectivas e bijectivas:

a) f : |R → |R, f(x) = x

b) g : |N1 → |R, g(x) = x-1

c) h : |N0 → |N0, h(x) = x2 + 2

5. Das aplicações seguintes diga quais são invertíveis, e para essas caracterize a sua aplicação inversa:

a) f : |R → |R, f(x) = x3

b) g : |R → |R, g(x) = 2x+3

c) h : |R → |R, h(x) = | x |

6. Demonstre que se f : A → B é uma bijecção e se g : B → A é uma aplicação que satisfaz f º g = idB,

então g é necessariamente igual a f-1.

(Sugestão: Basta desenvolver f-1 º (f º g) = f-1 º idB.)

7. Demonstre que, para qualquer aplicação f : A → B, as duas condições seguintes são equivalentes:

i) f é uma bijecção

ii) existe uma aplicação g : B → A tal que f o g = idB e g o f = idA

(Sugestão: use os teoremas 1 e 3.)

(Nota: usando o exercício 6, facilmente se conclui, ainda, que se ii) se verifica então g = f-1.)

8. Demonstre a alínea a) do teorema 2.

9. Demonstre a alínea b) do teorema 2.

10. Demonstre que

se existe uma injecção entre A e B, então existe uma bijecção entre A e uma parte de B.

11. Demonstre que

uma aplicação f : A → B é injectiva

sse

para quaisquer X,Y⊆A, f[X∩Y] = f[X]∩f[Y].

12. Demonstre que

se f : A → B é sobrejectiva, então {f-1[{y}]: y∈B} constitui uma partição de A.

(Nota: À pré-imagem por uma aplicação f de um conjunto singular {y}, i.e. a f-1[{y}], há quem chame

a fibra de f em y. Usando esta terminologia, podemos enunciar o resultado deste exercício como se

segue: "se f : A → B é sobrejectiva, então as fibras de f constituem uma partição de A".)

13. Dada uma aplicação f : A → B, seja R a relação binária no conjunto A definida por:

x R y sse f(x) = f(y)

a) Mostre que se trata de uma relação de equivalência (por vezes chamada da relação de equivalência

137

induzida por f).

b) Quais são as classes de equivalência se f for injectiva ?

14. Seja R uma relação de equivalência num conjunto A.

Chama-se de aplicação natural (ou canónica) de A em A/R à aplicação f : A → A/R assim definida

∀x∈A f(x) = [x]R.

a) A aplicação natural de A em A/R é sobrejectiva ?

b) Mostre que a aplicação natural de A em A/R pode não ser injectiva.

c) Diga qual é a condição que R deve satisfazer para que tal aplicação seja injectiva.

15. Dada uma aplicação (qualquer) h : A → B, demonstre que é possível "decompor" h numa composição

de aplicações g o f, em que f é sobrefectiva e g é injectiva.

Isto é, dito de outra forma, existe um conjunto C e aplicações f : A → C e g : C → B, tais que:

i) f é sobrejectiva

ii) g é injectiva

iii) h = g o f

(Sugestão:

Designando por R a relação de equivalência induzida por h (ver exercício 13),

comece por considerar

• que C = A/R

• e que f é a aplicação natural de A em A/R (ver exercício 14).

Defina, em seguida, g : A/R → B como se segue:

g([x]R) = h(x) (para cada classe [x]R em A/R)

e mostre que:

a) g está bem definida, no sentido de que o valor de g([x]R) não depende do representante escolhido

para identificar a classe [x]R (isto é, quaisquer que sejam x,y∈A, se [x]R=[y]R, então g([x]R)=g([y]R));

b) g é injectiva;

c) h = g o f

Fim da sugestão.)

Observação 4 :

Em vez de dizer (como no enunciado deste exercício) que é possível decompor h numa composição gof,

como significando que existem f e g tais que h = g o f, também se diz, com o mesmo sentido, que h é

factorizável numa composição67 g o f.

67 Refira-se, aliás, que alguns autores dizem mesmo, com o mesmo sentido, que h é factorizável num "produto" fg, identificando

o produto fg com a composição g o f. (Note-se, contudo, que esta noção de "produto" de aplicações não se pode considerar

standard.) Por outro lado, como já se referiu (ver nota de rodapé 15), alguns autores (mais da área da Ciência da Computação)

usam antes a notação f;g para referir a composição g o f.

138

Por outro lado, em linguagem diagramática, a condição h = gof, pode ser expressa dizendo que o

diagrama a seguir é comutativo (ou que o diagrama "comuta"):

h A B

f g C

entendendo-se (informalmente) que um diagrama deste tipo é comutativo se quando podemos ir nele de

um conjunto para outro seguindo diferentes sequências de setas, então as correspondentes aplicações são

iguais68 (subentendendo-se que a aplicação que correspode a uma sequência de duas setas, identificadas

por f e g, é a composição g o f).

68 Utilizando a terminologia de "produto" de aplicações, referida na nota de rodapé anterior, pode dizer-se (continuando a usar

uma linguagem informal) que um diagrama deste tipo é comutativo se quando podemos ir nele de um conjunto para outro

seguindo diferentes sequências de setas, então o "produto" das correspondentes aplicações é sempre o mesmo.