Capítulo 6 - Estruturas e morfismos entre estruturas Neste capítulo abordaremos os conceitos de estrutura e de morfismo e isomorfismo entre duas estruturas. Considerar-se-á, nomeadamente, as estruturas relacionais e seus morfismos (e, com particular ênfase, as aplicações monótonas entre cpo’s) e isomorfismos, bem como as estruturas algébricas e seus homomorfismos e isomorfismos. Secção 1: Estruturas, morfismos e isomorfismos entre estruturas: ideia essencial. Uma das principais formas de relacionar dois conjuntos consiste em estabelecer uma aplicação entre eles. Mas, na maioria das situações, não trabalhamos simplesmente com conjuntos, mas sim com conjuntos aos quais estão associadas certas operações, ou relações específicas. A esse todo (formado pelo conjunto e operações/relações associadas) chamamos genericamente de estruturas, ou conjuntos equipados com estrutura ou, ainda, conjuntos com estrutura, dizendo-se que o conjunto em causa é o suporte da estrutura. Por exemplo, quando dizemos que "vamos trabalhar" com os inteiros, não pensamos apenas no conjunto dos números inteiros, mas sim em toda a estrutura que habitualmente o equipa: automaticamente assumimos, como implícito, que esses números estão ordenados da forma usual, que dispomos das habituais operações aritméticas no conjunto dos inteiros, etc. Naturalmente, quando procuramos relacionar dois conjuntos com estrutura, não nos limitamos apenas a estabelecer uma aplicação entre os respectivos conjuntos suporte: procuramos em geral saber como é que essa aplicação relaciona a estrutura de um com a estrutura do outro. Quando uma aplicação entre os conjuntos suportes de duas estruturas ("do mesmo tipo") preserva a estrutura do conjunto origem, diz-se genericamente que estamos em presença de um morfismo (existindo por vezes, como veremos, nomes específicos para os morfismos entre estruturas de certo tipo). O que significa preservar a estrutura ? A ideia é a seguinte: uma aplicação f: A → B é um morfismo, se sempre que alguns objectos de A estão relacionados, de acordo com alguma "componente" da estrutura associada a A, então as suas imagens estão também relacionadas, de acordo com a correspondente "componente" da estrutura associada a B. Nas próximas secções iremos caracterizar melhor esta ideia. Para já apenas alguns exemplos de morfismos entre dois tipos de estruturas muito simples: • Suponha-se que (A, θ) e (B, ρ) são dois grupóides. Então uma aplicação f: A → B será um morfismo entre (A, θ) e (B, ρ) sse f preserva a operação θ "ao passar" para (B, ρ), no sentido (falando informalmente) de que ρ opera com as imagens por f de dois elementos de A "tal como" θ opera com esses elementos; mais precisamente, quaisquer que sejam os elementos a1, a2 e a3 de A: se a3 = a1 θ a2 então f(a3) = f(a1) ρ f(a2) o que é equivalente a dizer, mais simplesmente, que quaisquer que sejam os elementos a1 e a2 de A: 183 f(a1 θ a2) = f(a1) ρ f(a2) (f associa ρ a θ: informalmente tudo se passa como se “f(θ) = ρ” e se pudesse escrever f(a1 θ a2) = f(a1) f(θ) f(a2) = f(a1) ρ f(a2) ) Por exemplo, se considerarmos o conjunto dos naturais e o conjunto dos naturais pares, ambos equipados com a usual operação de adição, então a bijecção f : |N0 → Pares, dada por f(x) = 2x, preserva a operação de adição (dos naturais), no sentido de que, quaisquer que sejam os naturais n e k: f(n+k) = 2(n+k) = 2n+2k = f(n)+f(k) Assim, f é um morfismo entre (|N0, +) e (Pares, +). Mas, a mesma bijecção já não será um morfismo entre (|N0 , *) e (Pares, *) (onde * designa a usual operação de multiplicação). E a aplicação (exponencial) f: |R→|R, dada por f(x) = ex , não é um morfismo entre (|R, +) e (|R, +) (pois, p.ex., e1+1≠ e1 +e1 ), mas já é um morfismo entre (|R, +) e (|R, *) (pois ex+y= ex ey ). • Suponha-se agora que (A, p A) e (B, p B) são dois cpo's (i.e. dois conjuntos parcialmente ordenados). Então uma aplicação f: A → B será um morfismo entre o cpo (A, ordem p A) e o cpo (B, p B) sse f preserva a p A, isto é, f ao "passar" os elementos de A para B preserva a ordem porque eles estavam ordenados em A; mais precisamente, f: A → B será um morfismo entre (A, p A) e (B, p B) sse quaisquer que sejam os elementos a1 e a2 de A: se a1 (f associa p A a2 então f(a1) p B f(a2) p B a p A: informalmente tudo se passa como se “f( p A) = p B” e se pudesse escrever se a1 p A a2, então f(a1) f( p A) f(a2), interpretado como f(a1) p B f(a2) ) Por exemplo, a função de inclusão de |N1 em Z preserva (em Z) a forma como os naturais positivos estão usualmente ordenados: tal função será, portanto, um morfismo entre (|N1, ≤) e (Z , ≤) (onde ≤ designa a usual ordenação desses conjuntos de números). Por outro lado, a função f: |N1 → Z, definida por f(n) = -n, não é um morfismo entre (|N1,≤) e (Z,≤) (pois 2 ≤ 3, mas f(2) = -2 ≤/ -3 = f(3)), mas já será um morfismo entre (|N1, ≤) e (Z , ≥). Finalmente, uma bijecção f entre |N1 e Z, como a indicada no exemplo 1 da secção 5 do capítulo anterior, que a seguir se recorda: Z: 0 |N1: 1 € 1 -1 2 -2 3 -3 ... 2 3 4 5 6 7 ... também não é um morfismo entre (|N1, ≤) e (Z, ≤): p.ex., apesar de 2 ≤ 3, não se tem f(2) ≤ f(3) (pois f(2) = 1 > -1 = f(3)). Este último exemplo ilustra bem a diferença entre pensarmos apenas em conjuntos, ou nesses conjuntos equipados com uma certa estutura. É possível definir uma bijecção entre o conjunto dos naturais positivos e o conjunto dos inteiros. E a existência de tal bijecção significa que podemos ver os elementos de um conjunto como meras designações diferentes dos elementos do outro conjunto. Nesta perspectiva |N1 e 184 Z não são conjuntos essencialmente distintos (e, em particular, devemos concluir, como fizemos no capítulo anterior, que têm o mesmo número de elementos). Mas, como já referimos, quando pensamos no conjunto dos naturais positivos e no conjunto dos inteiros, pensamos nesses conjuntos com toda a estrutura que habitualmente os equipa: automaticamente assumimos, como implícito, que esses números estão ordenados da forma usual, que dispomos das habituais operações aritméticas, etc. E, nessa perspectiva, |N1 e Z já são conjuntos essencialmente distintos: não há um primeiro inteiro, mas há um primeiro natural positivo; a operação de adição tem elemento neutro em Z, mas não em |N1; etc. Se pegarmos nos naturais positivos, ordenados da forma usual 1 2 3 4 5 6 7 ... e os substituirmos pelas suas "novas designações" como inteiros, dadas pela bijecção f acima, o que obtemos são os inteiros ordenados como se segue 0 1 -1 2 -2 3 -3 ... e não a ordenação usual dos inteiros ! A situação já é diferente quando conseguimos definir uma bijecção entre os conjuntos suportes de duas estruturas do mesmo tipo, tal que quer ela quer a sua inversa são morfismos. Nesse caso dizemos que tal bijecção é um isomorfismo e que as duas estruturas são isomorfas. Nesse caso as duas estruturas são essencialmente idênticas: não só os elementos de um conjunto podem ser vistos como meras designações diferentes dos elementos do outro conjunto (por termos uma bijecção entre os dois conjuntos), como (falando informalmente) cada componente (relação ou operação) de uma das estruturas pode ser vista como "idêntica" (à parte a sua designação) à correspondente componente da outra estrutura (no sentido de que ela "opera" com as imagens dos elementos da outra estrutura tal como a correspondente operação na outra estrutura opera com esses elementos). Como tal bijecção e a sua inversa são morfismos, toda a estrutura é preservada quando passamos de um conjunto para outro, em qualquer um dos sentidos, através dessas bijecções: um objecto satisfaz uma certa propriedade numa das estruturas sse a sua imagem satisfaz a correspondente propriedade na outra estrutura; etc. • Se f: A → B for um isomorfismo entre (A, θ) e (B, ρ) então cálculos numa estrutura podem ser substituídos por cálculos na outra estrutura (trabalhando com as suas imagens e retornando o resultado à estrutura inicial): a1 θ a2 = f-1(f(a1 θ a2)) = f-1(f(a1) ρ f(a2)) e, vice-versa, b1 ρ b2 = f(f-1(b1 ρ b2)) = f(f-1(b1) θ f-1(b2)) Por exemplo, como a bijecção (exponencial) f : |R → |R+, dada por f(x) = ex , é um isomorfismo entre (|R, +) e (|R+, *), para multiplicar dois números positivos, x e y, podemos somar os respectivos logaritmos naturais e calcular o valor de eln x + ln y logaritmos para passar de produtos para somatórios ! 185 . E tiramos partido deste facto, quando usamos • Se f: A → B for um isomorfismo entre (A, e a2 de A, a1 sse f-1(b1) p A) e (B, p B) então, quaisquer que sejam os elementos a1 p A a2 sse f(a1) p A f(a2) (e, quaisquer que sejam os elementos b1 e b2 de B, b1 p B b2 p A f-1(b2)). Logo, existirá um primeiro elemento x de acordo com a ordenação p A de A sse f(x) for primeiro elemento de acordo com a ordenação p B de B; etc. A função (sucessor) suc: |N0 → |N1, com suc(n) = n+1, constitui um exemplo de um isomorfismo entre (|N0, ≤) e (|N1, ≤). Ela já não será, contudo, um isomorfismo1 entre as estruturas (|N0, ≤, +) e (|N1, ≤, +) (para o ver basta atender a que |N0 tem elemento neutro para a adição, ao passo que |N1 não). Por sua vez, a bijecção f: |R→ |R+, dada por f(x) = ex , é não só um isomorfismo entre (|R,+) e (|R+,*), como já observámos, mas é mesmo um isomorfismo entre (|R, ≤, +) e (|R, ≤, *). Nas próximas secções vamos precisar estas definições e estabelecer alguns resultados, considerando vários tipos de estruturas (e, nomeadamente, estruturas relacionais e estruturas algébricas, para as quais, nalguns casos, há nomenclatura própria). Secção 2: Estruturas relacionais e seus morfismos (e as aplicações monótonas). No capítulo 3 falámos pela primeira vez (neste texto) de estruturas. Em particular, dissemos que um conjunto A e uma relação binária R em A constituía uma estrutura, que se representava por (A,R) ou por (A;R), e como exemplos importantes dessas estruturas falámos dos conjuntos parcialmente ordenados. Outras estruturas, muito importantes e com muitas aplicações fora da Matemática, que podem ser vistas ("modeladas matematicamente") como estruturas da forma (A,R), são os grafos: Exemplo 1 (Grafos): Intuitivamente, um grafo (ou grafo orientado) pode ser visto como um conjunto (que podemos considerar finito2) de pontos (os seus vértices) e um conjunto de setas entre esses pontos. Podemos também falar em grafos não orientados, como sendo formados por um conjuntos de pontos (vértices) e um conjunto de arestas entre esses vértices. No entanto, os grafos não orientados podem ser vistos como casos particulares dos grafos orientados (vendo uma aresta como duas setas de sentido oposto); mais precisamente, podemos ver um grafo não orientado como um grafo (orientado) que satisfaz a seguinte condição: "quaisquer que sejam os vértices c e d do grafo, se existe uma seta de c para d, então também existe uma seta (inversa) de d para c". Matematicamente, podemos representar um grafo como uma estrutura G = (V, R), em que V é um conjunto não vazio (o conjunto dos vértices) e R é uma relação binária em V (que denota o conjunto das setas). Se (c,d)∈R, diz-se que (c,d) é (ou representa) uma seta que se dirige de c (dito o vértice origem dessa seta) para d (o seu vérice destino). (Um grafo não orientado pode então ser visto como um grafo G = (V, R) em que R é necessariamente uma relação simétrica.) 1 Nem mesmo um morfismo: verifique ! 2 Tal restrição não é, contudo, essencial, podendo conceptualmente considerar-se grafos com um conjunto infinito de vértices. 186 Por exemplo, G = ({a, b, c, d}, {(a,b), (b,a), (b,c)}) denota o grafo, com 4 vértices (designados por a, b, c e d) e três setas, que se pode visualizar, graficamente, como se segue: Dado um grafo G a b c d = (V, R), diz-se que um vértice d é um sucessor de um vértice c (e que c é um antecessor de d) sse existe uma seta de c para d, i.e. sse (c,d)∈R. Existem muitos problemas interessantes (e importantes) sobre grafos, como saber quais os caminhos que existem, num grafo, entre dois vértices (pense-se, por exemplo, num mapa de uma cidade e no problema de saber quais as alternativas que nos permitem ir de um ponto a outro ponto da cidade). Não iremos, contudo, neste texto abordar tais problemas (à parte uma ou outra referência, em exercícios). ∇ As estruturas da forma (A,R), com A um conjunto e R uma relação binária em A, são casos particulares de uma classe de estruturas conhecidas por estruturas relacionais: Definição 1: a) Uma estrutura relacional (ou sistema relacional) é formada por um conjunto A (dito o conjunto suporte da estrutura) e por uma sequência, R1, ..., Rn (n≥1)3, de relações em A (não necessariamente binárias), representanto-se normalmente essa estrutura na forma (A, R1, ..., Rn), ou (A; R1, ..., Rn). b) Por duas estruturas relacionais do mesmo tipo entenderemos duas estruturas relacionais (A, R 1, ..., R n) e (B, S1, ..., Sk) tais que: • n=k • e, qualquer que seja j=1,...,n, a aridade de Rj é igual à aridade de Sj (i.e. se Rj é uma relação unária em A então Sj é uma relação unária em B, se Rj é uma relação binária em A então Sj é uma relação binária em B, e assim sucessivamente). ∇ Por morfismo entre duas estruturas relacionais do mesmo tipo entendemos (informalmente) uma aplicação entre os respectivos conjuntos suporte que preserva as relações associadas ao conjunto origem quando passa para o conjunto destino. Mais precisamente: 3 O número de relações na estrutura não tem de ser necessariamente finito, embora aqui só consideremos esse caso (igual comentário pode ser feito em relação às estruturas a discutir nas próximas secções). Por outro lado, na prática só se considera estruturas cujo (conjunto) suporte é não vazio. 187 Definição 2: Um morfismo entre duas estruturas relacionais do mesmo tipo, (A, R 1, ..., R n) e (B, S 1, ..., S n), é uma aplicação f : A → B que satisfaz: qualquer que seja j = 1, ..., n, (f preserva Rj , no sentido de que:) se a aridade de Rj é k (i.e. se Rj é uma relação k-ária em A), com k≥1, então: ∀x1,...,xk∈A ((x1,...,xk)∈Rj ⇒ (f(x1),...,f(xk))∈Sj ) ∇ Notação: a) Para designar que uma aplicação f : A → B é um morfismo entre duas estruturas relacionais (do mesmo tipo), A = (A, R1, ..., Rn) e B = (B, S1, ..., Sn), pode escrever-se simplesmente que f : A → B. b) A notação anterior é válida (é generalizável) para quaisquer estruturas do mesmo tipo, e não apenas para estruturas relacionais. Isto é, se A e B são duas quaisquer estruturas do mesmo tipo, então podemos escrever f : designar que f é uma aplicação entre o conjunto suporte de A e o conjunto suporte de A B, → B para que é um morfismo entre A e B. ∇ Um dos tipos de estruturas relacionais mais importante é o constituído simplesmente por um conjunto e uma relação binária nesse conjunto. Quando consideramos apenas tais estruturas relacionais, podemos "reformular" a definição de morfismo como a seguir, usando as notações usuais para as relações binárias: Definição 2 (caso particular): Se R e S são duas relações binárias em, respectivamente, A e B, então um morfismo entre (A, R) e (B, S) é uma aplicação f : A → B que satisfaz ∀x,y∈A (x R y ⇒ f(x) S f(y)) (e, como se referiu, pode escrever-se f: (A,R) → (B,S) para denotar que f é morfismo entre (A,R) e (B,S)). ∇ Exemplo 2: a) Seja A um (qualquer) conjunto finito. Então a aplicação f : ℘(A) → |N0, dada por ∀B⊆A f(B) = #B é um morfismo entre (℘(A), ⊆) e (|N0, ≤). b) A função de inclusão de |N0 em Z é um morfismo entre (|N0, ≤) e (Z , ≤). c) A função de inclusão de |N0 em Z é um morfismo entre (|N0, <) e (Z, ≠). d) A aplicação de |N0 em Z constantemente igual a 1 é um morfismo entre (|N0, ≤) e (Z , ≤). e) A aplicação de |N0 em Z constantemente igual a 1 é um morfismo entre (|N0, ≤) e (Z, =). f) Seja G1 = (V1, R 1) = ({1, 2, 3}, {(1,2), (2,3)}) o grafo que podemos representar graficamente (usando agora cruzes, em vez de bolas, para denotar os vértices) por: 188 3x 2x 1x e seja G2 = (V2, R2) = ({a, b, c, d}, {(a,b), (a,c), (b,d)}) o grafo que podemos representar graficamente por: xd bx xc xa Então a aplicação f : V1 → V2, dada por f(1) = a, f(2) = b e f(3) = d é um morfismo entre G1 e G 2, pois (do ponto de vista gráfico, e informalmente) f faz corresponder a cada "seta de G1" uma "seta de G2" com a mesma orientação (no sentido de que se há uma seta de i para j em G 1, então há uma seta de f(i) para f(j) em G2): 3x xd 2x bx 1x f xc x a Por sua vez, a aplicação f : V1 → V2, dada por f(1) = a, f(2) = b e f(3) = c já não é um morfismo entre G1 e G2 (pois 2 R 1 3 e b = f(2) R/ 2 f(3) = c, isto é, do ponto de vista gráfico, há uma seta de 2 para 3, mas não há uma seta de f(2) para f(3)). A aplicação f : V1 → V2, dada por € =b f(1) = a, f(2) = d e f(3) não é igualmente um morfismo. ∇ Os morfismos entre conjuntos parcialmente ordenados têm particular interesse para algumas aplicações, sendo objecto de nomenclatura própria. Terminologia (aplicações monótonas): a) Em vez de dizer que f é um morfismo entre um cpo (A, p A) e um cpo (B, p B), ou que f é uma aplicação entre A e B que preserva a ordem, também se diz que f é uma aplicação monótona entre A e B 189 b) Às aplicações f : A → B entre dois conjuntos, A e B, aos quais estão associados relações de ordem (a seguir designadas, respectivamente, por p A e p B), dá-se ainda (por vezes) outros nomes específicos, de modo a traduzir melhor o tipo de ordem que preservam 4: • f é estritamente crescente sse ∀x,y∈A (x p A y ⇒ f(x) p B f(y)) (i.e., na terminologia dos morfismos, f é estritamente crescente sse f: (A, é um morfismo entre (A, p A) e (B, p B)) • f é estritamente decrescente sse ∀x,y∈A (x p A y ⇒ f(x) (i.e., sse f: (A, p A) → (B, p B), i.e. sse f f B f(y)) p A) → (B, f B)) • f é estritamente monótona sse f é estritamente crescente ou estritamente decrescente. • f é crescente (ou crescente em sentido lato) sse 5 ∀x,y∈A (x (i.e., sse f: (A, p A y ⇒ f(x) p B f(y)) p A) → (B, p B)) • f é decrescente (ou decrescente em sentido lato) sse ∀x,y∈A (x (i.e., sse f: (A, p A y ⇒ f(x) f B f(y)) p A) → (B, f B)) • f é monótona sse f é crescente ou decrescente 6. ∇ Exemplo 3: a) Sejam A e B conjuntos parcialmente ordenados. Então toda a aplicação constante de A em B é crescente, e também decrescente. b) A aplicação (passagem ao simétrico) f: |R → |R, dada por f(x) = -x, é estritamente decrescente (considerando a ordenação usual dos reais). ∇ A título ilustrativo, seguem-se alguns resultados que podemos estabelecer para este tipo de aplicações. Teorema 1: Sejam (A, p A) e (B, p B) dois cpo's e suponha-se que a ordem p A é uma ordem total, i.e. A é um conjunto totalmente ordenado (também se diz, recorde-se, linearmente ordenado) pela ordem p A. Então: a) Se f : A → B é estritamente monótona, então f é injectiva. b) Se f : A → B é uma bijecção estritamente crescente (respectivamente estritamente decrescente), então a inversa f-1 : B → A também é estritamente crescente (resp. estritamente decrescente). Demonstração: Sejam A e B nas condições do enunciado. 4 Saliente-se que o sentido de aplicação monótona dado em a) não coincide com o sentido de aplicação monótona, de acordo com a terminologia a seguir (dada nesta alínea b)), mas sim com o sentido de aplicação crescente. 5 Condição que, como facilmente se verifica, é equivalente a ∀ x,y∈A (x pA y ⇒ f(x) p B f(y)). 6 Atendendo a esta definição de aplicação monótona, também se refere as aplicações crescentes como sendo as aplicações nonótonas não decrescentes, e as aplicações decrescentes como sendo as aplicações nonótonas não crescentes. 190 a) Suponha-se que f:A→B é estritamente crescente (o caso em que f é estritamente decrescente é análogo). Sejam a1 e a2 quaisquer elementos de A, tais que a1 ≠ a2. Queremos provar que (tese): f(a1) ≠ f(a2). Ora, como p A é uma ordem total, ou a1 p Aa2 ou a2 p Aa1. Logo (pois a1≠a2) ou a1 p A a2 ou a2 p Aa1. E portanto, como f é estritamente crescente, ou f(a1) p B f(a2) ou f(a2) p B f(a1). Logo (em qualquer dos casos) tem-se f(a1) ≠ f(a2) (c.q.d.) b) Suponha-se que f:A→B é uma bijecção estritamente crescente (o caso em que f é estritamente decrescente é análogo). Quer-se provar que (tese) f-1 : B → A também é estritamente crescente. Sejam b1 e b2 (quaisquer) elementos de B tais que b1 p B b2. Quer-se provar que (nova tese): f-1(b1) p A f-1(b2). Ora, como p A é uma ordem total, ou f-1(b1) = f-1(b2) ou f-1(b1) p A f-1(b2) ou f-1(b2) p A f-1(b1) (justifique esta afirmação!). No primeiro caso tem-se f(f-1(b1)) = f(f-1(b2)), isto é, b1 = b2, o que contradiz b1 p B b2. No terceiro caso, como f é estritamente crescente, tem-se f(f-1(b2)) p B f(f-1(b1)), isto é, b2 p B b1, o que contradiz b1 p B b2 (justifique pormenorizadamente esta última afirmação!). Logo (por exclusão de partes) terá de ter-se f-1(b1) p A f-1(b2) (c.q.d.) ∇ Teorema 2 (teorema do ponto fixo): Seja (A, p ) um cpo, tal que todo o subconjunto de A possui supremo (com respeito à ordem p ) 7. Se f: A → A é crescente, então existe um ponto fixo de f, isto é, existe y∈A tal que f(y) = y. Demonstração: Seja B = {x(∈A): x p f(x)} e seja m = sup(B). Comecemos por mostrar que f(m) é um majorante de B: Seja x∈B qualquer. Tem-se x p m (por m ser supremo de B e x pertencer a B). E portanto, por f ser crescente, f(x) p f(m). Mas x p f(x) (por x∈B). Logo, pela transitividade de p , tem-se x p f(m). Assim, como x∈B era qualquer, pode concluir-se que f(m) é um majorante de B. Mas então, como m é supremo de B, conclui-se que m p f(m). Acontece que, devido a f ser crescente, esta condição arrasta que f(m) p f(f(m)), o que implica que f(m) também pertence ao conjunto B, o que por sua vez implica (pois m = sup(B)) que f(m) Mas então m p m. p f(m) e f(m) p m, o que, pela anti-simetria de p , implica que f(m) = m (c.q.d.) ∇ 7 Note-se que tal implica que A é não vazio, pois o supremo de um subconjunto de A tem de pertencer a A (e existe sempre um subconjunto de A, quer A seja vazio ou não: o próprio A). 191 Exercícios: 1. Demonstre que uma aplicação estritamente crescente, entre dois conjuntos parcialmente ordenados, é também uma aplicação crescente. 2. Mostre que o recíproco da afirmação feita no exercício 1 (anterior) nem sempre é verdadeiro. 3. Sejam (A1, R1), (A2, R2) e (A3, R3) três estruturas relacionais do mesmo tipo. Demonstre que a composição de um morfismo entre (A1, R 1) e (A2, R 2) com um morfismo entre (A2, R 2) e (A3, R3) ainda é um morfismo (entre as estruturas óbvias, que deverá, naturalmente, explicitar). 4. Seja f um morfismo entre (A, p A) e (B, p B). Será que se um subconjunto X de A admite mínimo, então f[X] também admite mínimo ? (Se for esse o caso, demonstre; caso contrário, dê um contra-exemplo). 5. Seja f um morfismo entre (A, p A) e (B, p B). Será que c ser um elemento minimal de um subconjunto X de A implica que f(c) é um elemento minimal de f[X] ? (Se for esse o caso, demonstre; caso contrário, dê um contra-exemplo). 6. Dado um grafo G = (V, R), defina a aplicação sucG (dita a função sucessor do grafo G) que aplica cada vértice de G no conjunto dos seus sucessores. Concretize a definição dada, dizendo a que é igual sucG para o grafo: G = ({1, 2, 3, 4}, {(1,2), (2,1), (2,3)}). 7. Como se referiu no exemplo 1, existem muitos problemas interessantes (e importantes) sobre grafos. Um primeiro problema em grafos é o de saber se existe um caminho entre dois vértices, onde por caminho, num grafo G = (V, R), se entende uma sequência de k+1 vértices (com k>0): v1, ...., vk+1 que satisfaz a seguinte condição: (vi , vi+1) ∈ R, para todo o i = 1, ..., k (ao número k de setas envolvidas num caminho é chamado o seu comprimento). E diz-se que um vértice c está ligado a um vértice d se existe algum caminho de c para d (i.e. um caminho em que o primeiro vértice é c e o último é d). Por exemplo, no grafo 1 2 3 4 apesar de 3 não ser um sucessor de 1, existe um caminho de 1 para 3 (embora não de 3 para 1). Nesse mesmo gafo, o vértice 4 pode ser visto intuitivamente como um ponto isolado, uma vez que não existe qualquer seta nele incidindo, ou dele saindo. Neste exercício pretende-se abordar computacionalmente o problema da existência de um caminho entre dois vértices dum grafo, recorrendo ao sistema computacional Mathematica. Mais concretamente: 192 a) Diga como representaria um grafo G = (V, R) no sistema computacional Mathematica. Considere o caso em que V pode ser um qualquer conjunto finito (não vazio), e o caso em que V toma a forma {1, ..., j} para algum inteiro positivo j. b) Elabore um programa (função) Mathematica que recebendo um grafo G (representado da forma que indicou em a)) e dois vértices, c e d, desse grafo, determina se existe algum caminho de c para d. ∇ Secção 3: Estruturas algébricas e seus morfismos (ditos homomorfismos). Na secção anterior abordámos as estruturas relacionais, formadas por um conjunto e uma sequência de relações nesse conjunto, e os morfismos entre esse género de estruturas. Outro género de estruturas muito importantes são as chamadas estruturas algébricas, formadas por um conjunto (dito o suporte da estrutura) e uma sequência de operações definidas nesse conjunto. Na secção 3 do capítulo 4 já falámos de algumas classes específicas, importantes, de estruturas algébricas, que a seguir se recordam. Definição 1 (revisão da secção 3 do capítulo 4): a) Um grupóide é uma estrutura (A, θ), ou (A; θ), formada por um conjunto não vazio A (o suporte da estrutura)) e uma operação binária (θ) em A. b) Um semi-grupo é um grupóide (A, θ) em que a operação θ é associativa. c) Um monóide é uma estrutura (um triplo) (A, θ, e) em que: i) (A, θ) é um semi-grupo; ii) e é um elemento de A que é elemento neutro para a operação θ. d) Um grupo é uma estrutura (um quádruplo8) (A, θ, inv, e) em que: i) (A, θ, e) é um monóide; ii) inv é uma operação unária em A (i.e. inv é uma aplicação inv: A → A) que aplica cada elemento x de A no seu inverso (que se denota genericamente9 por) x-1 (i.e. inv(x) = x-1, ou de outra forma, recorrendo à notação lambda, inv = λx.x-1). ∇ As estruturas anteriores dizem-se comutativas (ou abelianas) se a respectiva operação binária (θ) for comutativa. 8 Em vez de dizer, simplesmente, que um grupo é um monóide (A, θ, e) no qual todo o elemento é invertível, está-se aqui a optar por incluir explicitamente na estrutura do grupo a operação (que designámos acima) de “inv” que aplica cada elemento do suporte no seu inverso, evidenciando assim, na descrição da estrutura, todos os elementos que a caracterizam. Por outro lado, quando tivermos em presença de mais do que um grupo, podemos escrever “invA ” (em vez de “inv”) para explicitar que nos estamos a referir à operação de “passagem ao inverso” no conjunto A. 9 Embora, como se referiu na secção 3 do capítulo 4, outras denotações sejam usadas para certas operações θ (como –x, se θ é uma operação “de tipo aditivo”). 193 As estruturas anteriores envolvem apenas uma operação. Mas, como referimos, as estruturas algébricas podem envolver mais do que uma operação. Na definição a seguir refere-se (a título meramente ilustrativo) outras classes de estruturas algébricas, importantes, envolvendo agora duas operações. Definição 2: a) Um anel é uma estrutura10 (A, θ1, θ 2, inv1, e1) que satisfaz: i) (A, θ1, inv1, e1) é um grupo comutativo. ii) (A, θ2) é um semi-grupo. iii) θ2 é distributiva em relação a θ1 à esquerda e à direita Num anel, usa-se em geral a notação aditiva para designar a operação θ 1 (designando-a por "+" e chamando-lhe de soma), denota-se e1 por 0 (chamando-se-lhe o elemento zero, ou elemento nulo, do anel) e denota-se o inverso de x por –x (chamando-lhe o simétrico de x). À componente (A, +, λx.-x, 0) (i.e. (A, θ1, inv1, e1)) chama-se o grupo aditivo do anel. Por sua vez, usa-se a notação multiplicativa para designar a operação θ2 (designando-a por "x", ou ".", e chamando-lhe de multiplicação)11. Quando esta operação tem elemento neutro, costuma-se designar este de elemento um, ou elemento unidade, do anel, e representá-lo por 1. Quando esta operação é comutativa, diz-se que o anel é comutativo. b) Um corpo é um anel comutativo, que tem elemento unidade (i.e. elemento neutro para a operação dita de multiplicação), diferente do elemento zero, e em que todos os elementos distintos de zero são invertíveis em relação à (operação dita de) multiplicação. c) Uma álgebra de Boole, ou álgebra Booleana, pode ser definida como uma estrutura (A, θ1, θ2, e1, e2) que satisfaz: i) (A, θ1, e1) e (A, θ2, e2) são monóides comutativos. ii) qualquer uma das operações (θ1 e θ2) é distributiva em relação à outra iii) ∀x∈A ∃ y∈A x θ1 y = e2 ∀x∈A ∃ y∈A x θ2 y = e1 Numa álgebra de Boole, as operações θ1 e θ2 são em geral designadas por ∨ e ∧ (ou por ∪ e ∩), e os elementos e1 e e2 por 0 e 1 (estas designações usuais têm fins mnemónicos, uma vez que se virmos os 10 Em geral, na descrição de um anel deixa-se implícita a operação inv de passagem ao inverso, dizendo-se simplesmente que 1 um anel é uma estrutura (A, θ1 , θ2 , e1 ) que satisfaz: i) (A, θ1 , e1 ) é um grupo comutativo; ii) (A, θ2 ) é um semi-grupo; e iii) θ2 é distributiva em relação a θ1 à esquerda e à direita. A opção tomada acima (notacionalmente mais pesada) justifica-se (apenas) para manter a coerência com a opção tomada para a descrição de um grupo (na definição 1 anterior). 11 Chama-se a atenção que embora esta prática notacional esteja generalizada, ela envolve certos perigos e, nomeadamente, pode sugerir que a operação θ2 tem todas as propriedades da usual multiplicação de números, o que não é necessariamente o caso. Nomeadamente, tal operação pode não ser comutativa. 194 conectivos de disjunção e conjunção como operações no conjunto dos valores lógicos, facilmente se verifica que eles satisfazem as propriedades indicadas)12. ∇ Como os exemplos de estruturas algébricas referidos ilustram, ao descrever uma estrutura algébrica, para além de indicar o conjunto suporte e a sequência de operações nele consideradas, indica-se também, por vezes, alguns elementos do conjunto suporte que se pretende distinguir, por possuirem alguma propriedade importante, normalmente relacionada com as operações em causa. Tal leva-nos à seguinte definição geral de estrutura algébrica (onde esses elementos são designados de elementos "distinguíveis", no sentido de que se pretende distinguir esses elementos). Definição 3: a) Uma estrutura algébrica (sistema algébrico ou álgebra) é formada por: • um conjunto não vazio A (dito o conjunto suporte da estrutura, ou simplesmente o suporte da estrutura), • uma sequência de operações em A (não necessariamente binárias), θ1, ..., θ n (n≥1) • e, eventualmente13, uma sequência de elementos "distinguíveis"14 de A, e1,...,e j (j≥1), representanto-se normalmente essa estrutura na forma (A, θ1, ..., θ n, e1,..., ej ), ou (A; θ1, ..., θ n, e1, ..., ej ). (Usaremos letras como A (B, ...) para designar uma estrutura, escrevendo15 A = (A,θ1,...,θ n,e1,...,ej ).) b) Por duas estruturas algébricas do mesmo tipo entenderemos duas estruturas algébricas (A, θ1, ..., θ n, e1, ..., ej ) e (B, ρ1, ..., ρ k, c1, ..., cr) tais que: • j = r, • n = k, • e, qualquer que seja i=1,...,n, a aridade de θi é igual à aridade de ρi (i.e. se θi é uma operação unária em A então ρi é uma operação unária em B, se θi é uma operação binária em A então ρi é uma operação binária em B, e assim sucessivamente). ∇ 12 É de referir que as álgebras de Boole têm importantes e interessantes ligações com os circuitos digitais (também chamados de circuitos lógicos). Sai, contudo, fora do âmbito deste texto, explorar tais ligações. Sobre este assunto, o leitor interessado poderá consultar p.ex. o livro [30] (secção 10.2), ou o livro [34] (capítulo 9), da bibliografia referida. 13 Em vez de dizer "e, eventualmente, uma sequência de elementos distinguíveis de A, e ,...,e (j≥1)", poderíamos dizer "e uma 1 j sequência de elementos distinguíveis de A, e1 ,...,ej, com j≥0", entendendo a sequência e1 ,...,ej, com j=0, como a sequência vazia. 14 Se virmos as constantes como operações 0-árias (ver nota de rodapé 36 do capítulo 4), então podemos dizer que uma estrutura algébrica é formada simplesmente por um conjunto não vazio e uma sequência de operações nesse conjunto (como dissemos no início desta secção). 15 Quando as operações θ , ..., θ e (eventuais) elementos e , ..., e são evidentes pelo contexto, refere-se muitas vezes a 1 n 1 j estrutura através da simples referência ao seu suporte, escrevendo-se mesmo, às vezes, A = (A,θ1 ,...,θn ,e1 ,...,ej), identificando assim o suporte com a "estrutura que o equipa". 195 Passemos agora aos morfismos entre estruturas algébricas do mesmo tipo. Informalmente, tal morfismo será uma aplicação entre os respectivos conjuntos suporte que preserva a estrutura associada ao conjunto origem. Antes de darmos a definição para o caso geral, vejamos o que são os morfismos entre estruturas algébricas de certos tipos (simples). Começando pelas estruturas algébricas mais simples (os grupóides), recorde-se a definição de morfismo entre dois grupóides, que já se descreveu na secção 1 (deste capítulo). Definição 4: Um morfismo f entre um grupóide (A, θ) e um grupóide (B, ρ) é uma aplicação f : A → B que preserva a operação θ, no sentido que satisfaz: quaisquer que sejam os elementos a1, a2 e a3 de A, se a3 = a1 θ a2 então f(a3) = f(a1) ρ f(a2) o que é equivalente a dizer, mais simplesmente, que: quaisquer que sejam os elementos a1 e a2 de A, f(a1 θ a2) = f(a1) ρ f(a2) Tal como para os morfismos entre estruturas relacionais, podemos escrever f : (A, θ) → (B, ρ) para denotar que f é morfismo entre (A, θ) e (B, ρ). ∇ Pensemos agora no que deve ser um morfismo entre dois monóides. Como um monóide é um grupóide (A, θ), em que a operação θ é associativa e admite elemento neutro, poderíamos supor que a definição dada de morfismo entre grupóides serviria também para os monóides (no sentido de que um morfismo f entre dois monóides (A, θ, e) e (B, ρ, c) não seria mais do que um morfismo f : (A, θ) → (B, ρ) entre tais grupóides). No entanto tal eventual definição não garantiria que tal morfismo preservasse o elemento neutro, como se ilustra a seguir: As estruturas (|R, +, 0) e (|R, *, 1) consituem dois monóides, e a aplicação f: |R → |R, dada por f(x)=0 (para qualquer x∈|R) consitui um morfismo entre os grupóides (|R, +) e (|R, *) (pois, quaisquer que sejam os reais x e y, f(x+y) = 0 = 0 * 0 = f(x) * f(y)). No entanto, f(0) = 0 ≠ 1 (pelo que o elemento neutro não é preservado). Ora, o elemento neutro faz parte da estrutura do monóide e nós pretendemos que um morfismo entre duas estruturas (do mesmo tipo) preserve toda a estrutura16. Daí que surja natural exigir, como a seguir, que um 16 Repare-se que, de acordo com a definição dada de estruturas algébricas do mesmo tipo, embora os semi-grupos e os grupóides sejam vistos como estruturas algébricas do mesmo tipo (os semi-grupos são uma classe particular de grupóides, mas são encarados como estruturas do mesmo tipo), os monóides e os grupóides já são vistos como estruturas algébricas de tipos distintos, em virtude de nos primeiros distinguirmos um particular elemento do suporte na descrição da sua estrutura. Naturalmente, como um monóide é um grupóide, nada nos impede de estabelecer um morfismo entre um monóide e um grupóide (que poderá ou não ser também um monóide), visto como um morfismo entre dois grupóides. No entanto, quando falamos de morfismos entre monóides queremos que eles preservem também o elemento neutro, para além de preservarem a operação do grupóide. Daí a vantagem de encararmos os monóides e os grupóides como estruturas algébricas de tipos distintos, para efeitos da definição dos morfismos entre estruturas algébricas. 196 morfismo entre dois monóides preserve também o elemento neutro17 (no sentido de fazer corresponder ao elemento neutro do conjunto de partida, o elemento neutro do conjunto de chegada): Definição 5 18: Um morfismo f entre um monóide (A, θ, e) e um monóide (B, ρ, c) é uma aplicação f : A → B • que preserva a operação θ, no sentido que satisfaz ∀a1,a2∈A f(a1 θ a2) = f(a1) ρ f(a2) • e que preserva o elemento neutro e, no sentido que satisfaz f(e) = c Tal como anteriormente, podemos escrever f : (A, θ, e) → (B, ρ, c) para denotar que f é um morfismo entre (A, θ, e) e (B, ρ, c). ∇ Estamos agora em condições de dar a definição genérica de morfismo entre duas estruturas algébricas do mesmo tipo. Antes, porém, apenas uma breve referência aos morfismos entre grupos. No caso dos grupos, faz parte da sua caracterização não só a existência de elemento neutro, mas também o facto de cada elemento ter inverso. Assim, um morfismo entre dois grupos deverá também ter de "preservar os inversos" (ou, de outra forma, deverá preservar a operação de “passagem ao inverso” 19). No entanto, como se mostra a seguir, qualquer morfismo f: (A, θ, e) → (B, ρ, c) entre dois monóides preserva os inversos, pelo que neste caso: uma aplicação f: A → B é um morfismo f: (A, θ, invA, e) → (B, ρ, invB, c) entre dois grupos sse é um entre morfismo f: (A, θ, e) → (B, ρ, c) entre os monóides subjacentes20. 17 Se virmos as constantes como operações 0-árias, então a preservação do elemento neutro pode ser vista como um caso particular da preservação de uma operação (ver nota de rodapé 14). 18 Esta é a definição que ocorre em textos como p.ex. [1], página 53, ou [2], página 28. Por sua vez, outros textos, como [17], página 19, definem um morfismo (homomorfismo: ver terminologia à frente) f entre dois monóides (A, θ, e) e (B, ρ, c) simplesmente como um morfismo f : (A, θ) → (B, ρ) entre tais grupóides. As diferenças entre as duas definições não têm um impacto muito significativo, pois existem várias condições (ver à frente) debaixo das quais um morfismo f : (A, θ) → (B, ρ) entre tais grupóides preserva automaticamentte o elemento neutro (caso este exista): por exemplo, basta que tal morfismo seja sobrejectivo (o que garante, nomeadamente, que, com qualquer uma das definições, se (A, θ) é um monóide e f: A → B é um isomorfismo entre os grupóides (A, θ) e (B, ρ), então (B, ρ) é um monóide e f é um isomorfismo entre os dois monóides). 19 Isto é, um morfismo f: (A, θ, inv , e) → (B, ρ, inv , c), entre dois grupos, deverá ser um morfismo f: (A, θ, e) → (B, ρ, c) A B entre os monóides subjacentes que também preserva a operação invA (no sentido de que ∀a∈A f(invA (a)) = invB(f(a)), isto é mais simplesmente, usando x- 1 para denotar o inverso de x no conjunto relevante ∀a∈A f(a- 1) = f(a)-1 ). 20 Daí que, do ponto de vista dos morfismos, se pudesse ter omitido da estrutura dos grupos a operação de passagem ao inverso (dizendo-se simplesmente que um grupo era um monóide (A,θ,e) em que todo o elemento admite inverso), considerando assim que um grupo e o monóide subjacente eram estruturas do mesmo tipo. No entanto, há algumas vantagens na opção tomada (na definição 1): nomeadamente ela garante que uma subestrutura de um grupo ainda é um grupo (ver última secção deste capítulo). 197 Teorema 1: Seja f : (A, θ, e) → (B, ρ, c) um morfismo entre dois monóides. Então f preserva os inversos, no sentido de que: qualquer que seja o elemento a de A, se a tem inverso (em A), então a imagem do inverso de a é inverso (em B) da imagem de a, isto é (usando x-1 para denotar o inverso de x no conjunto relevante): qualquer que seja a ∈A, se a tem inverso (em A), então f(a) tem inverso em B e f(a-1) = f(a)-1 Demonstração: Seja f : (A, θ, e) → (B, ρ, c) um morfismo entre dois monóides e seja a um qualquer elemento de A que possui inverso (a-1) em A. Então: f(a-1) ρ f(a) = (f preserva θ) -1 f(a θ a) = (a-1 é inverso de a para θ) f(e) = (f preserva o elemento neutro) c e, analogamente: f(a) ρ f(a-1) = f(a θ a-1) = f(e) = c Logo f(a-1) = f(a)-1 (c.q.d.) ∇ Vejamos, então, a definição genérica de morfismo entre quaisquer duas estruturas algébricas do mesmo tipo (onde se usa a notação prefixa para denotar o resultado das operações, e não a notação infixa, uma vez que as operações poderão não ser operações binárias): Definição 6: Um morfismo f entre duas estruturas algébricas do mesmo tipo: (A, θ1, ..., θ n, e1, ..., ej ) e (B, ρ1, ..., ρ n, c1, ..., cj ) é uma aplicação f : A → B • que preserva as operações θ1, ..., θ n, isto é, qualquer que seja i=1,...,n, se θi é uma operação k-ária (com k≥1), então ∀a1,...,ak∈A f(θi (a1,...,ak)) = ρi (f(a1),...,f(ak)) • e que preserva os elementos "distinguíveis", no sentido de que, qualquer que seja i=1,...,j: f(ei ) = ci Podemos escrever f : (A, θ1,...,θ n, e1,...,ej ) → (B, ρ 1,...,ρ n, c1,...,cj ) para denotar que f é um morfismo entre (A, θ1,...,θ n, e1,...,ej ) e (B, ρ1,...,ρ n, c1,...,cj ). ∇ 198 Terminologia (homomorfismos): a) A um morfismo f entre duas estruturas algébricas (do mesmo tipo) chama-se um homomorfismo. b) A um homomorfismo injectivo chama-se um monomorfismo21. c) A um homomorfismo sobrejectivo chama-se um epimorfismo. d) A um homomorfismo bijectivo chama-se um isomorfismo (ver próxima secção). e) A um homomorfismo de uma estrutura em si própria chama-se um endomorfismo. f) A um endomorfismo bijectivo (i.e. que também é isomorfismo) chama-se um automorfismo. ∇ Para terminar esta nossa introdução aos morfismos entre estruturas algébricas (isto é, aos homomorfismos), vejamos alguns exemplos e um ou outro resultado. Exemplo 1 (homomorfismos): a) A aplicação f: |R→|R, dada por f(x) = ex , é um homomorfismo entre os monóides (|R,+,0) e (|R,*,1) b) A bijecção f: |R→|R+, dada por f(x) = ex , é um homomorfismo entre os monóides (|R,+,0) e (|R+,*,1) c) A aplicação f: |R→|R, dada por f(x) = 2x , é um homomorfismo entre os monóides (|R,+,0) e (|R,*,1) d) Seja A um (qualquer) conjunto. Então a aplicação f : ℘(A) → ℘(A), dada por ∀B⊆A f(B) = A - B é um morfismo (um homomorfismo) entre (℘(A), ∩, ∪) e (℘(A), ∪, ∩). e) A aplicação f: {T, F} → {0, 1}, dada por f(T) = 1 e f(F) = 0 é um homomorfismo entre ({T, F}, ∧, ¬) e ({0, 1}, *, s) (com: T∧T=T, T∧F=F, F∧T=F, F∧F=F, ¬T=F, ¬F=T, * a usual multiplicação e s:{0,1}→{0,1}, dada por s(0)=1 e s(1)=0) f) A aplicação f: Z → Z, dada por f(n) = -n, é um homomorfismo entre (Z, +) e (Z, +). ∇ Vimos atrás que o facto de f: (A, θ) → (B, ρ) ser um morfismo entre dois grupóides não garantia que f preservasse o eventual elemento neutro de θ (e daí, aliás, que se tivesse imposto essa condição na definição de morfismo entre dois monóides). Mostraremos agora que, contudo, debaixo de algumas condições (não muito restritivas) se obtém essa preservação. Teorema 2: Sejam G1=(A, θ, invA, e) e G2=(B, ρ, invB, c) dois grupos e seja f:A→B uma aplicação que preserva a operação θ, i.e.: ∀a1,a2∈A f(a1 θ a2) = f(a1) ρ f(a2) Então, f preserva o elemento neutro, i.e. f(e) = c 21 O termo mergulho também é usado por alguns autores. 199 Demonstração: Sejam G1=(A, θ, e, invA) e G2=(B, ρ, c, invB) e f nas condições do enunciado. Então f(e) ρ f(e) = (f preserva θ) f(e θ e) = (e é elemento neutro de θ) f(e) Logo, pelo exercício 4, alínea a), da secção 3 do capítulo 4, f(e) = c. ∇ Portanto, embora o facto de (A, θ, e) e (B, ρ, c) serem dois monóides não garanta que qualquer homomorfismo f: (A, θ) → (B, ρ), entre os grupóides em causa, preserve a estrutura do monóide (podendo não preservar o elemento neutro), se esses monóides (A, θ, e) e (B, ρ, c) forem mesmo grupos, então qualquer homomorfismo f: (A, θ) → (B, ρ) preserva (mesmo) toda a estrutura do grupo22: Teorema 3 (corolário): Se G1 = (A, θ, invA, e) e G2 = (B, ρ, invB, c) são dois grupos e se f: A → B é um homomorfismo f: (A, θ) → (B, ρ) (entre os grupóides em causa, subjacentes), então f: (A, θ, invA, e) → (B, ρ, invB, c) (i.e. f é um homomorfismo entre os grupos (A, θ, invA, e) e (B, ρ, invB, c)). ∇ Igualmente se verifica (teorema a seguir) que se existir um homomorfismo f: (A, θ) → (B, ρ), entre dois grupóides, que é sobrejectivo, então: se θ for associativa, ρ também o é; se θ for comutativa, ρ também o é; se θ admitir elemento neutro e, então ρ também admite elemento neutro f(e) (pelo que f preserva o elemento neutro); e f preserva os eventuais inversos existentes em A. Logo, os homomorfismos sobrejectivos (i.e. os epimorfismos), entre grupóides, levam de grupóides comutativos a grupóides comutativos, de semi-grupos a semi-grupos, de monóides a monóides e preservam os inversos. Assim, e em particular, se f : (A, θ) → (B, ρ) é um homomorfismo sobrejectivo entre dois grupóides, então se (A,θ) é um monóide, (B, ρ) também o é e f é um homomorfismo entre esses monóides. Teorema 4: Seja f : (A, θ) → (B, ρ) um homomorfismo entre dois grupóides, que é sobrejectivo. Então: a) Se θ é associativa, ρ também é associativa. b) Se θ é comutativa, ρ também é comutativa. c) Se e (∈A) é elemento neutro para θ, f(e) é elemento neutro para ρ d) Qualquer que seja a ∈A, se a tem inverso (em A), então f(a) tem inverso em B e f(a-1) = f(a)-1 Demonstração: a) Suponha-se que θ é associativa,. Quer-se provar que ρ é associativa. 22 Preservando também os inversos, como seria necessário para ser um morfismo entre grupos (ver teorema 1). 200 Sejam, então, b1, b2 e b3 quaisquer elementos de B. Quer-se provar que (b1 ρ b2) ρ b3 = b1 ρ (b2 ρ b3) Ora, como f é sobrejectiva, existem elementos de A, a1, a2 e a3, tais que b1=f(a1), b2=f(a2) e b3=f(a3). E tem-se: (b1 ρ b2) ρ b3 = (f(a1) ρ f(a2)) ρ f(a3) = (f preserva θ) f(a1 θ a2) ρ f(a3) = (f preserva θ) f((a1 θ a2) θ a3) = (θ é associativa) f(a1 θ (a2 θ a3)) = (f preserva θ) f(a1) ρ f(a2 θ a3)) = (f preserva θ) f(a1) ρ (f(a2) ρ f(a3)) = b1 ρ (b2 ρ b3) b) Demonstração análoga à de a). c) Suponha-se que e (∈A) é elemento neutro para θ. Quer-se provar que f(e) é elemento neutro para ρ. Seja b um qualquer elementos de B. Quer-se provar que b ρ f(e) = f(e) ρ b = b. Ora, como f é sobrejectiva, existe a∈A tal que b=f(a). E tem-se: b ρ f(e) = f(a) ρ f(e) = (f preserva θ) f(a θ e) = (e é elemento neutro para θ) f(a) = b E analogamente se prova que f(e) ρ b = b. d) Sai de c) pelo teorema 1. ∇ Finalmente, e antes de passarmos à próxima secção dedicada aos isomorfismos, uns breves comentários sobre a construção de estruturas algébricas baseadas em conjuntos quocientes e respectivos homomorfismos naturais (ou canónicos) entre a estrutura de base e a estrutura construída (sobre o conjunto quociente). Suponha-se que temos um conjunto A e que R é uma relação de equivalência em A. Então podemos (como sabemos) construir o conjunto quociente de A (segundo R, ou módulo R) dado por: A/R = {[x]R: x∈A} (ou, deixando implícita a referência a R na denotação das classes, {[x]: x∈A}) Suponha-se, agora, que temos uma operação n-ária (não tem de ser necessariamente binária) θ em A, operação que vamos a seguir designar por θA para salientar que é uma operação em A. 201 Então, quando (por alguma razão) construímos o conjunto quociente A/R, queremos, por vezes, também equipá-lo com uma operação (que a seguir designaremos por) θA/R, que "imite" a operação de base θA, no seguinte sentido: quaisquer que sejam a1,...,an∈A, θA/R([a1]R, ...,[an]R) = [θA(a1,...,an)]R Na linguagem dos morfismos, tal significa dizer que a aplicação natural (ou canónica) de A em A/R isto é (ver exercício 14 da secção 5 do capítulo 4), a aplicação f : A → A/R, definida por ∀x∈A f(x) = [x] é um homomorfismo entre (A, θA) e (A/R, θA/R). Será que é sempre possível tal operação θA/R ? Ou, de outro modo, que condições se têm de verificar para que seja possível definir uma tal operação θA/R ? Uma vez que qualquer elemento de A/R é da forma [a]R, para algum elemento a de A, à partida nada nos impede de definir a operação θA/R precisamente como sendo a aplicação θA/R: A/Rn → A/R dada por: (*) quaisquer que sejam a1,...,an∈A, θA/R([a1]R, ...,[an]R) = [θA(a1,...,an)]R No entanto, quando se define uma função sobre classes (como θA/R) à custa de uma outra função (como θA) que se aplica aos representantes dessas classes, é fundamental garantir, para que θA/R esteja bem definida, que o seu resultado não depende dos particulares representantes escolhidos para as classes. Isto é, mais precisamente, é necessário que, quaisquer que sejam a1,...,an,b1,...,bn∈A: se [a1]R=[b1]R e ... e [an]R=[bn]R, então [θA(a1,...,an)]R = θA/R([a1]R, ...,[an]R) = θA/R([b1]R, ...,[bn]R) = [θA(b1,...,bn)]R Quando tal se verifica diz-se que a operação θA é compatível com a relação de equivalência R, e a operação θA/R, definida como em (*), diz-se obtida da operação θA por passagem ao quociente pela relação R: Definição 7: Seja R uma relação de equivalência num conjunto A a) Seja θA uma operação n-ária em A (com n≥1), i.e. seja θA: An → A. Diz-se que θA é compatível com R sse ∀a1,...,an,b1,...,bn∈A (a1 R b1 ∧ ... ∧ an R bn ⇒ θ(a1,...,an) R θ(b1,...,bn)) b) Se θA é compatível com R, então pode definir-se uma operação, em A/R, (a seguir designada por) θA/R, como se segue: ∀a1,...,an∈A θA/R([a1]R, ...,[an]R) = [θA(a1,...,an)]R (operação que se diz obtida da operação θA por passagem ao quociente pela relação R) de modo a que a aplicação f : A → A/R, dada por ∀x∈A f(x) = [x] é um homomorfismo entre (A, θA) e (A/R, θA/R) (dito o homomorfismo natural, ou canónico). c) Dada uma estrutura algébrica A = (A, θ1, ...), uma relação de equivalência R em A que é compatível com todas as operações sobre A definidas na estrutura (θ1, ...) diz-se uma congruência (ou uma relação de congruência) em A. ∇ 202 Exemplo 2: No conjunto dos naturais |N0, a relação R definida por m R n sse m é congruente com n modulo 2 (o que se pode denotar escrevendo "m ≡ n mod 2") é uma relação de equivalência. (Recorde-se que se diz que m é congruente com n modulo 2 sse m e n têm o mesmo resto na divisão inteira por 2.) Tem-se: |N0/R = {[0], [1]}, com [0] o conjunto dos pares e [1] o conjunto dos ímpares. Como a adição e a multiplicação em |N0 são compatíveis com a relação R (verifique), pode definir-se sobre |N0/R as seguintes operações de adição e multiplicação (que designaremos pelo mesmo símbolo que as usuais operações de adição e muliplicação de naturais, uma vez que o contexto torna claro quando é que nos estamos a referir a uma ou a outra operação): [0] + [0] (= [0 + 0]) = [0] e [0] * [0] (= [0 * 0]) = [0] [0] + [1] = [1] e [0] * [1] = [0] [1] + [0] = [1] e [1] * [0] = [0] [1] + [1] (= [1 + 1] = [2]) = [0] e [1] * [1] = [1] Tem-se então que a aplicação natural de |N0 em |N0/R é um homomorfismo entre (|N0,+,*) e (|N0/R,+,*). ∇ Exercícios: 1. Dê exemplos de todas as estruturas mencionadas nas definições 1 e 2. 2. Prove que, sendo B um conjunto arbitrário, o conjunto A = ℘(B) e as operações de união e intersecção de conjuntos constituem uma álgebra de Boole. Quais são os elementos 0 e 1 dessa álgebra ? 3. Demonstre que as aplicações referidas no exemplo 1 são, de facto, homomorfismos. 4. Considere a seguinte bijecção f entre o conjunto dos inteiros e o conjunto dos naturais: f(n) = 2n, se n ≥ 0 e f(n) = -2n-1, se n < 0 Será que f é um homomorfismo entre (Z, +) e (|N0, *) ? Justifique. 5. Considere a seguinte bijecção f entre o conjunto dos inteiros e o conjunto dos naturais: f(n) = 2n, se n ≥ 0 e f(n) = -2n-1, se n < 0 Será que f é um homomorfismo entre (Z, +) e (|N0, +) ? Justifique. 6. Seja f : |N0 → Pares, dada por f(n) = 2n. Será que f é um homomorfismo entre (|N0, +) e (Pares, +) ? 7. Seja f : |N0 → Impares, dada por f(n) = 2n+1 (com Impares = {1, 3, 5, ...}). Será que f é um homomorfismo entre (|N0, +) e (Impares, +) ? 8. Sabendo que f : (|R, *) → (|R, +) é um homomorfismo (onde * e + designam as usuais operações de multiplicação e adição), e sabendo que f(2) = 0,5 e f(3) = 0,3, diga a que é igual f(6). 9. Demonstre que se f1 : (A1, θ1) → (A2, θ2) e f2 : (A2, θ2) → (A3, θ3) são homomorfismos entre grupóides, então a composição f2 º f1 : (A1, θ1) → (A3, θ3) também é um homomorfismo. 10. Será que o resultado do exercício anterior é generalizável e ainda é verdadeiro quando se considera homomorfismos entre quaisquer duas estruturas algébricas do mesmo tipo ? ∇ 203 Secção 4: Isomorfismos entre estruturas O conceito de isomorfismo (entre estruturas do mesmo tipo) é um conceito fundamental. Podemos definilo genericamente como se segue: Definição 1: Um isomorfismo f entre uma estrutura conjunto suporte de A A e uma estrutura B, do mesmo tipo, é uma bijecção entre o e o conjunto suporte de B tal que quer f: A → B quer f-1: B → A são morfismos. ∇ Naturalmente, se f é um isomorfismo entre A e B, então f -1 é um isomorfismo entre B e A. Terminologia e notação: a) Diz-se que duas estruturas do mesmo tipo são isomorfas sse existe um isomorfismo entre elas. b) Pode escrever-se A ≅ B para denotar que as estruturas A e B são isomorfas. c) Dada uma aplicação f entre o suporte de A e o suporte de (uma estrutura do mesmo tipo) B , em vez de dizer que f : A → B é um isomorfismo, também se diz (simplesmente) que f é iso. ∇ € Quando há um isomorfismo entre duas estruturas tal significa (intuitivamente) que uma estrutura se pode obter da outra mudando apenas os "nomes" dos seus elementos e os "símbolos" das suas operações/relações. Tudo se passa como se uma estrutura fosse uma mera "re-etiquetação" da outra. Verifica-se uma propriedade numa das estruturas sse se verifica a correspondente propriedade (com as convenientes re-etiquetações) na outra. Observação: Se P é uma propriedade definida sobre as estruturas de certo tipo, quando se diz, por exemplo, que tal propriedade é satisfeita por "uma única dessas estruturas" isso significa que ela é satisfeita por "uma única dessas estruturas A, a menos de um isomorfismo", isto é, tem-se P(A) e, qualquer que seja a estrutura B do mesmo tipo, verifica-se P(B) sse B é isomorfa a A. ∇ Para certos tipos de estruturas, para que um morfismo f (entre duas estruturas do mesmo tipo) seja um isomofismo (entre essas estruturas) basta que a aplicação f seja bijectiva. Mas, para outros tipos de estruturas, o facto de f ser um morfismo bijectivo pode não ser suficiente para que f seja iso. Vejamos o que se passa, a este respeito, em relação às estruturas sobre que nos temos debruçado, isto é, em relação às estruturas relacionais e às estruturas algébricas. No que respeita às estruturas relacionais, o facto de f ser um morfismo bijectivo não garante que f seja um isomorfismo, como o próximo exemplo ilustra. Exemplo 1 (exemplo de morfismo bijectivo f:(A, R)→(B, S), entre estruturas relacionais, que não é iso): Sejam (A, R) = (|N0, =) e (B, S) = (|N0, ≤) e seja f : |N0 → |N0 a função identidade. É imediato que f é bijectiva e que f é um morfismo entre (|N0, =) e (|N0, ≤) (pois x=y ⇒ f(x)=x≤y=f(y)). 204 No entanto, f-1 não é um morfismo entre (|N0, ≤) e (|N0, =) (pois, p.ex., 3≤5, mas f-1(3)=3≠5=f-1(5)). Logo f não é um isomorfismo. ∇ Podem, contudo, dar-se condições necessárias e suficientes, simples, para caracterizar os isomorfismos entre estruturas relacionais: Teorema 1: Sejam R e S são duas relações binárias em, respectivamente, A e B. Então f é um isomorfismo entre (A, R) e (B, S) sse f é uma aplicação f : A → B bijectiva que satisfaz ∀x,y∈A (x R y ⇔ f(x) S f(y)) Demonstração: ⇓: Suponha-se que f : (A, R) → (B, S) é um isomorfismo. Então, por definição de isomorfismo, f é uma aplicação f : A → B bijectiva. Sejam x,y∈A quaisquer. Queremos provar que: x R y ⇔ f(x) S f(y) Ora: x R y ⇒ f(x) S f(y), por f ser morfismo (em virtude de ser isomorfismo). Reciprocamente: f(x) S f(y) ⇓ por f-1 ser morfismo (em virtude de f ser isomorfismo) f-1(f(x)) R f-1(f(y)) ⇓ (f-1(f(x))=x e f-1(f(y))=y) xRy (c.q.d.) ⇑: Suponha-se que f é uma aplicação f : A → B bijectiva que satisfaz (*) ∀x,y∈A (x R y ⇔ f(x) S f(y)). Por definição de isomorfismo, teremos provado que f é um isomorfismo se provarmos que f e f-1 são morfismos. Ora (*) implica: (**) ∀x,y∈A (x R y ⇒ f(x) S f(y)) e (***) ∀x,y∈A (f(x) S f(y) ⇒ x R y) Por (**), tem-se que f : (A, R) → (B, S) é um morfismo. Resta-nos provar que f-1 : (B, S) → (A, R) também é um morfismo. Sejam então b1,b2∈B quaisquer. Queremos provar que: b1 S b2 ⇒ f-1(b1) R f-1(b2) Como f é bijectiva, b1 = f(f-1(b1)) e b2 = f(f-1(b2)). E tem-se: b1 S b2 ⇓ (b1=f(f-1(b1)) e b2=f(f-1(b2))) f(f-1(b1)) S f(f-1(b2)) ⇓ (por (***), pois f-1(b1) e f-1(b2) pertencem a A) f-1(b1) R f-1(b2) (c.q.d.) ∇ 205 O resultado anterior é facilmente generalizável para isomorfismos entre quaisquer estruturas relacionais do mesmo tipo (sendo a demonstração análoga): Teorema 2 (generalização do teorema 1): Sejam (A, R1, ..., Rn) e (B, S1, ..., Sn) duas estruturas relacionais do mesmo tipo. Então f é um isomorfismo entre (A, R1, ..., Rn) e (B, S1, ..., Sn) sse f é uma aplicação f : A → B bijectiva que satisfaz: qualquer que seja j = 1, ..., n, se a aridade de Rj é k (≥1), i.e. se Rj é uma relação k-ária em A, então ∀x1,...,xk∈A ((x1,...,xk)∈Rj ⇔ (f(x1),...,f(xk))∈Sj ) ∇ No que respeita às estruturas algébricas, para que um morfismo entre estruturas algébricas (isto é, um homomorfismo) seja um isomofismo, basta que seja bijectivo. Demonstraremos, em seguida, este resultado para o caso dos grupóides, deixando a demonstração do caso geral ao cuidado do leitor. Teorema 3: Sejam (A, θ) e (B, ρ) dois grupóides. Então f é um isomorfismo entre (A, θ) e (B, ρ) sse f é um homomorfismo f : (A, θ) → (B, ρ) bijectivo Demonstração: ⇓: Sai directamente da definição de isomorfismo. ⇑ Suponha-se que f é um homomorfismo f : (A, θ) → (B, ρ) bijectivo. Por definição de isomorfismo, teremos provado que f é um isomorfismo se provarmos que f-1 é um homomorfismo (B, ρ) e (A, θ). Sejam então b1,b2∈B quaisquer. Queremos provar que: f-1(b1 ρ b2) = f-1(b1) θ f-1(b2) Como f é bijectiva, b1 = f(f-1(b1)) e b2 = f(f-1(b2)), e tem-se: f-1(b1 ρ b2) = (b1=f(f-1(b1)) e b2=f(f-1(b2))) f-1 ( f(f-1(b1)) ρ f(f-1(b2)) ) = (f preserva θ, pois f é um homomorfismo f : (A, θ) → (B, ρ)) f-1 ( f ( f-1(b1) θ f-1(b2) ) ) = -1 -1 f º f (f (b1) θ f-1(b2)) = (f-1 º f = idA) f-1(b1) θ f-1(b2) ∇ 206 Teorema 4 (generalização do teorema 3) 23: Sejam A e B duas estruturas algébricas do mesmo tipo. Então f é um isomorfismo entre A e B sse f é um homomorfismo f : A → B bijectivo ∇ Exemplo 2: a) A aplicação f: |R→ |R+, dada por f(x) = ex , é um isomorfismo entre (|R, +) e (|R+, *). b) A aplicação suc: |N0 → |N1, com suc(n) = n+1, é um isomorfismo entre (|N0 , ≤) e (|N1 , ≤). c) A aplicação f: {T, F} → {0, 1}, dada por f(T) = 1 e f(F) = 0, referida no exemplo 1-e) da secção anterior, é um isomorfismo entre ({T, F}, ∧, ¬) e ({0, 1}, *, s) (com s(0)=1 e s(1)=0). d) A aplicação f: Z → Z, dada por f(n) = -n, é um isomorfismo entre (Z, +) e (Z, +). e) Considere o homomorfismo entre (℘(A), ∩, ∪) e (℘(A), ∪, ∩), com f : ℘(A) → ℘(A), dada por ∀B⊆A f(B) = A - B. Trata-se de um isomorfismo ? (Justifique.) f) Como vimos (no exemplo 1 da secção 2) um grafo pode ser visto como um par (V, R), em que V é um conjunto finito, não vazio (o conjunto dos vértices) e R é uma relação binária em V (que denota o conjunto das setas). Como os nomes (as etiquetas) dados aos vértices não são essenciais, podemos representar (V, R) por qualquer estrutura que lhe seja isomorfa. A escolha mais simples consiste em supor que o conjunto dos vértices é sempre da forma {1,..,j} (para algum j>0), "identificando" V com o conjunto {1,...,#V}, conjunto que apresenta (face a V) a vantagem de poder ser representado computacionalmente guardando apenas a informação sobre o seu número de elementos. Assim, por exemplo, o grafo (V, R), com: V = {cidade a, cidade d, cidade z}, R = {(cidade a, cidade d), (cidade a, cidade z), (cidade d, cidade z), (cidade z, cidade d)}) é isomorfo (pelo isomorfismo f tal que f(cidade a) = 1, f(cidade d) = 2 e f(cidade z) = 3) ao grafo ({1, 2, 3}, {(1,2), (1,3), (2,3), (3,2)}) grafo este que pode ser representado (por exemplo) no sistema computacional Mathematica pela lista {3, {{1,2}, {1,3}, {2,3}, {3,2}}} cuja primeira componente guarda apenas o número de vértices (em vez de ter de guardar a lista dos vértices). ∇ 23 No caso em que A e B são p.ex. dois monóides, este resultado pode ser obtido como um corolário do teorema anterior, usando o teorema 4-c) da última secção. 207 Exemplo 3 (Representação dos cpo's): Seja (A, p ) um cpo. Então existe um conjunto B ⊆℘A, tal que podemos "representar" (A, p ) por (B, ⊆), no sentido de que estas duas estruturas são isomorfas. Demonstração desta afirmação: Seja (A, p ) um cpo. • Para cada a ∈ A, defina-se o conjunto Ma (dos menores ou iguais a a) como se segue: Ma = {x ∈ A: x p a} e seja B o conjunto formado por todos estes conjuntos: B = {Ma : a ∈ A} • Defina-se f : A → B, como se segue: qualquer que seja a ∈ A, f(a) = Ma • É fácil verificar que f é injectiva: Se a1 ≠ a2, então não se pode ter a1 p a2 ∧ a2 p a1 (porquê ?). Suponha-se que a1 p / a2 (o outro caso é análogo). / Ma2 (pois a1∈ Ma1 ∧ a1∉ Ma2) Então, como a1 p a1, ter-se-á necessariamente que Ma1 ⊆ Logo Ma1 ≠ Ma2, i.e. f(a1) ≠ f(a2) (c.q.d.) € • E é imediato que f é sobrejectiva. € • Logo f é bijectiva. • Finalmente tem-se, para quaisquer a1,a2∈A: a1 p a2 e Ma1 ⊆ Ma2 ⇓ ( p é transitiva) ⇓ (como a1∈Ma1, de Ma1 ⊆ Ma2 sai que a1∈Ma2) a1 p a2 Ma1 ⊆ Ma2 € • Logo, pelo teorema 1, f : (A, p ) → (B, ⊆) é um isomorfismo (c.q.d.) ∇ € Como já observámos, quando duas estruturas são isomorfas, podemos vê-las como sendo cada uma, uma mera "re-etiquetação" da outra: • um cálculo numa estrutura pode ser substituído por um cálculo na outra estrutura; • um objecto de uma estrutura satisfaz uma certa propriedade sse o correspondente objecto da outra estrutura satisfaz idêntica propriedade • etc. Em seguida, iremos ilustrar o que acabámos de dizer, através de alguns exemplos. Exemplo 4: Como referimos no exemplo 2-c), a aplicação f: {T, F} → {0, 1}, dada por f(T) = 1 e f(F) = 0 é um isomorfismo entre ({T, F}, ∧, ¬) e ({0, 1}, *, s) (com s(0)=1 e s(1)=0). 208 Assim, para calcular o valor de uma expressão como ¬(T ∧ F) ∧ (T ∧ ¬F) podemos convertê-la numa expressão da outra estrutura: f(¬(T ∧ F) ∧ (T ∧ ¬F)) = f(¬(T ∧ F)) * f(T ∧ ¬F) = s(f(T ∧ F)) * (f(T) * f(¬F)) = s(f(T) * f(F)) * (f(T) * s(f(F))) = s(1 * 0) * (1 * s(0)) fazer as contas s(1 * 0) * (1 * s(0)) = s(0) * (1 * 1) = 1 * 1 = 1 e retornar o resultado à estrutura inicial: f-1(1) = T. ∇ Exemplo 5 (exercício resolvido): Suponha que f : |N0 → Pares, dada por f(n) = 2n é um isomorfismo entre (|N0, θ) e (Pares, *). Dados dois naturais n e k quaisquer, diga a que é igual n θ k. (Justifique sucintamente os cálculos efectuados). Resposta: Usando o facto de n = f-1(f(n)) e k = -1(f(k)), bem como o facto de f-1 ser morfismo: n θ k = f-1(f(n)) θ f-1(f(k)) = f-1(f(n)*f(k)) = f-1(4nk) = 2nk ou, de outra forma análoga, usando o facto de n θ k = f-1(f(n θ k)), bem como o facto de f ser morfismo: n θ k = f-1(f(n θ k)) = f-1(f(n)*f(k)) = f-1(4nk) = 2nk ∇ Exemplo 6 (exercício resolvido): Suponha que f : (A θ) → (B, ρ) é um isomorfismo entre dois grupóides. Demonstre que: a) se e (∈A) é elemento neutro para θ, então f(e) é elemento neutro para ρ, b) e, vice-versa, se f(e) é elemento neutro para ρ, então e é elemento neutro para θ. Resposta directa: a) Seja b∈B qualquer. Tem-se (usando o facto de b = f(f-1(b)), f ser morfismo e e elem. neutro para θ): b ρ f(e) = f(f-1(b)) ρ f(e) = f(f-1(b) θ e) = f(f-1(b)) = b e, analogamente, f(e) ρ b = b b) Seja a∈A qualquer. Tem-se (usando, nomeadamente, o facto de f-1 ser morfismo e f(e) elem. neutro): a θ e = f-1(f(a)) θ f-1(f(e)) = f-1(f(a) ρ f(e)) = f-1(f(a)) = a b ρ f(e) = f(f-1(b)) ρ f(e) = f(f-1(b) θ e) = f(e) 209 e, analogamente, e θ a = a Resposta, usando os resultados já provados: a) Sai do teorema 4-c) da secção 3, pois um isomorfismo é (em particular) um homomorfismo sobrejectivo. b) Se f é iso, então f-1 também o é. Logo, pelo mesmo teorema, se f(e) é elemento neutro para ρ, então e=f-1(f(e)) é elemento neutro para θ. ∇ Exemplo 7 (exercício resolvido): Suponha que f : (A, p A) → (B, p B) é um isomorfismo entre dois cpo's, m∈A e X⊆A. Demonstre que: a) se m é mínimo de X (com respeito a p A), então f(m) é mínimo de f[X] (com respeito a p B) b) e, vice-versa, se f(m) é mínimo de f[X], então m é mínimo de X. Resposta: a) Esta alínea verifica-se para qualquer morfismo f : (A, Queremos provar que f(m)∈f[X] e que ∀b∈f[X] f(m) p A) → (B, p B), como se mostra a seguir. pB b Que f(m)∈f[X] é imediato, por definição de f[X] (pois se m é mínimo de X, então m∈X). Seja b∈f[X] qualquer. Queremos provar que f(m) p B b. Ora: Se b∈f[X], então (por definição de f[X]) existe a∈X tal que b=f(a). Mas a∈X e m = min(X) implica que m p A a, o que, por sua vez (em virtude de f ser morfismo) implica que f(m) p A f(a)=b (c.q.d.) b) Suponha-se, agora, que f(m) = min(f[X]). Então (por definição de mínimo) f(m)∈f[X] ∧ ∀b∈f[X] f(m) Quer-se provar que m∈X e ∀a∈X m pB b p A a. Como f(m)∈f[X], tem-se (por definição de f[X]) que existe b∈X tal que f(b)=f(m). Mas, como f é injectiva (por f ser um isomorfismo), terá então de se ter b=m, pelo que m∈X. Seja agora a∈X qualquer. Quer-se provar que m p A a. Ora, como f(m) = min(f[X]) e f(a)∈f[X], tem-se f(m) p B f(a). Logo, pelo teorema 1, m p A a (ou. sem recorrer a esse teorema, para vermos as propriedades do isomorfismo que são usadas: como f-1 é morfismo (por f ser iso), f(m) p B f(a) implica que m = f-1(f(m)) p A f-1(f(a)) = a) (c.q.d.) ∇ Exemplo 8 (consequência do exemplo 7): Como se f : A → B é bijectiva, então (fé sobrejectiva e) f[A]=B, o resultado do exemplo/exrcício anterior permite-nos concluir que: Se f : (A, p A) → (B, p B) é um isomorfismo entre dois cpo's, então a) se m = min(A), então f(m) = min(B) b) se p = min(B), então f-1(p) = min(A) ∇ 210 Exercícios: 1. Seja (A , p ) um cpo e A = {a, b, c, d}. Sabendo que a aplicação f: A → {1, 2, 3, 4}, dada por f(a) = 2, f(b) = 3, f(c) = 1 e f(d) = 4, é um isomorfismo entre (A , ordenados os elementos de A por p ) e ({1, 2, 3, 4}, ≤), indique como estão p. 2. Suponha que existe um isomorfismo f : (A, θ) → (|N0, *) (onde * designa a usual operação de multiplicação). Diga a que é igual f(f-1(3) θ f-1(5)) (Justifique sucintamente os cálculos efectuados). 3. Sabendo que f : (A, θ) → (|N0, +) é um isomorfismo, diga a que é igual f-1(0) θ b, com b∈A (Justifique sucintamente os cálculos efectuados). 4. Sabendo que (|R, θ, 5) é um monóide e que f : (|R, θ, 5) → (|R, *, 1) é um isomorfismo entre os dois 1 2 monóides, a que é igual f-1(2) θ f-1( ) ? (Justifique sucintamente). 5. Sejam A = {-2, -1, 1, 2}, B = {a, b, c, d}, R a relação binária em A definida por xRy ⇔ xy > 0 e S uma relação binária em B. Sabendo que f é um isomorfismo entre (A, R) e (B, S), e que f(-2) = b, f(-1) = a, f(1) = d e f(2) = c, diga quais são os elementos de B que estão em relação com a por S, isto é, mais precisamente, quais são os elementos z de B tais que se tem a S z (Justifique sucintamente). 6. Sejam (A, p A) e (B, p B) dois conjuntos totalmente ordenados. Demonstre que Se f : A → B é uma bijecção estritamente crescente, então f : (A, p A) → (B, p B) é um isomorfismo. 7. Demonstre que se f um isomorfismo entre (A, p A) e (B, p B) e se c é um elemento minimal de um subconjunto X de A, então f(c) é um elemento minimal de f[X]. ∇ Secção 5: Mais sobre estruturas. Uma outra noção importante ligada às estruturas é a noção de subestrutura. Informalmente, diz-se que uma estrutura B é uma subestrutura de uma estrutura A (do mesmo tipo), se o suporte de B é um subconjunto do suporte de A, e se as restantes "entidades" que compõem com as correspondentes "entidades" que compõem A, B coincidem quando elas se restringem ao suporte ("mais pequeno") de B. Concretizando um pouco e de forma mais rigorosa: Definição 1 (Subestruturas): a) Uma estrutura relacional tipo A B = (B, S 1,...,Sn) é uma subestrutura de uma estrutura relacional do mesmo = (A, R1,...,Rn) sse i) B ⊆ A ii) e cada Si (i=1,...,n) é a restrição da relação Ri a B (o que significa, supondo que Si é uma relação k-área, que Si = Ri ∩ Bk) b) Uma estrutura algébrica B = (B, ρ1,...,ρ n, c1,...,cj ) é uma subestrutura de uma estrutura algébrica do mesmo tipo A = (A, θ1,...,θ n, e1,...,ej ) sse 211 i) B ⊆ A ii) cada ρi (i=1,...,n) é a "restrição da operação θi a A" (o que significa, mais precisamente24, supondo que ρi é uma operação k-área, que ∀x1,...,xk∈B ρi (x1,...,xk) = θi (x1,...,xk) ) iii) e cada elemento "distinguível" ci de B (i=1,...,n) coincide com o correspondente elemento “distinguível" ei de A ∇ Notação: Quando uma estrutura B = (B, ...) é uma subestrutura de uma estrutura do mesmo tipo as relações/operações de B coincidem com as de A, A = (A, ...), como quando estas se restringem ao suporte B, costuma-se designar os elementos da estrutura B, distintos do seu conjunto suporte B (isto é, as relações, operações e "elementos distinguíveis") pelos mesmos símbolos que designam os correspondentes elementos da estrutura A 25. ∇ Exemplo 1: a) O cpo (Z, ≤) é uma subestrutura do cpo (|R, ≤) b) O grupo comutativo26 (Z, +, λx.(-x), 0), dos inteiros equipados com a usual operação de adição, é um subgrupo27 de (|R, +, λx.(-x), 0). ∇ Apesar de estar fora do âmbito deste texto o aprofundamento deste tópico, justificam-se algumas breves observações sobre o conceito de subestrutura de uma estrutura algébrica. Comecemos por considerar o caso das estruturas algébricas mais simples: os grupóides. Suponha-se que (A, θ) é um grupóide. Então, não é verdade que possamos associar uma subestrutura de (A, θ) a 24 Não é totalmente correcto dizermos que ρ é a restrição da operação θ a A, se entendermos isso como significando que i i ρi=θi| B k, tal como é definido este conceito na definição 3-c) da secção 1 do capítulo 4. De facto, de acordo com essa definição, se θi:Ak →A, então θi| B k:Bk →A, ao passo que ρi:Bk →B, pelo que têm conjuntos de chegada distintos. No entanto, quando dizemos que a restrição de θi:Ak →A a B é uma operação em B, estamos a entender a restrição de θi como a aplicação de Bk em B, cujo valor coincide com o de θi quando aplicada a tuplos em Bk (é precisamente esse o sentido usado na definição 1 da secção 3 do mesmo capítulo 4, quando aí se diz que um subconjunto S de A é fechado para uma operação θ em A sse a "restrição de θ a S" for uma operação em S). 25 Uma prática notacional análoga é também muitas vezes seguida para denotar as relações e operações de estruturas isomorfas, entendendo-se aí que o contexto se encarregará por explicitar quando é que um mesmo símbolo está a denotar uma relação/operação numa estrutura ou na outra estrutura isomorfa. 26 A função λx.(-x) denota a operação que aplica cada elemento x no seu inverso (como já referimos, para as operações de tipo aditivo, o inverso de x chama-se o simétrico de x e denota-se por –x). 27 Como discutiremos a seguir, de acordo com as definições dadas, uma subestrutura de um grupo ainda é um grupo e diz-se um sub-grupo. 212 qualquer subconjunto B de A: isso só será possível se B for fechado para a operação θ (ver definição 1 da secção 3 do capítulo 4), pois a "restrição de θ a B" tem de ser uma operação em B. De outra forma, uma subestrutura de um grupóide tem de ser um grupóide ! E, como é fácil de verficar, uma subestrutura de um semi-grupo (A, θ) ainda é um semi-gupo (demonstre !). Suponha-se agora que estamos em presença de um monóide (A, θ, e) e que a restrição de θ a um subconjunto B de A é uma operação em B (i.e. B é fechado para a operação θ). Designando a restrição de θ a B também por θ (de acordo com a prática notacional usual, acima descrita), tem-se então que (B, θ) é uma subestrutura de (A, θ) (um “sub-grupóide”). No entanto, não é obrigatório que (B, θ) seja um monóide, pois o elemento neutro de θ (i.e. e) pode não pertencer a B: considere-se o caso em que A é o conjunto dos inteiros, θ é a operação soma e B = |N1. Assim, numa linguagem simplista, sintética, podemos dizer que um sub-grupóide (B, θ) de um monóide (A, θ, e) pode não ser um monóide. No entanto, de acordo com as definições dadas de monóide (em que se incluiu o elemento neutro na sua estrutura) e de estruturas do mesmo tipo, como estamos a supor que só definimos subestruturas de estruturas do mesmo tipo, tem-se que se (B, ρ, c) é uma subestrutura de um monóide (A, θ, e), então (B, ρ, c) também é um monóide (um “sub-monóide”), pois nesse caso não só ρ é “igual”28 a θ, como c=e, pelo que o elemento neutro de θ pertence a B. Analogamente, se (B, θ, e) é uma sub-monóide de (A, θ, e) e se o monóide (A, θ, e) é um grupo, não se pode concluir que o monóide (B, ρ, c) também seja um grupo, pois o inverso x-1, de um elemento x de B, pode não pertencer a B. Por exemplo, (|N0, +, 0) é uma subestrutura de (|R, +, 0), em (|R, +, 0) todos os elementos possuem simétrico (pelo que é um grupo), mas em (|N0, +, 0), com excepção do zero, nenhum elemento possui simétrico. No entanto, como incluímos a operação de passagem ao inverso na estrutura de um grupo, uma subestrutura de um grupo (A, θ, inv, e) ainda é um grupo (um “subgrupo”)29. Assim, de acordo com as definições dadas: uma subestrutura de um grupóide é um grupóide; uma subestrutura de um semi-grupo é um semi-grupo; uma subestrutura de um monóide é um monóide; e uma subestrutura de um grupo é um grupo. Observação 1: a) Embora, como observámos, um submonóide (B, θ, e) de um grupo (A, θ, inv, e) possa não ser um grupo, tal já se verificará se (B, θ, e) satisfizer a seguinte propriedade (*) ∀x,y∈B xθy-1∈B (onde y-1 denota o inverso em A de y). Para o verificar, temos apenas de provar que se y∈B, então y-1∈B, o que sai da condição em (*) tomando aí x = e. 28 Mais precisamente ρ é igual à restrição de θ a B. 29 Se não tivessemos incluído a operação de passagem ao inverso na estrutura dos grupos, então, como para alguns autores, o conceito dado de subestrutura não garantiria que qualquer subestrutura de um grupo fosse um “subgrupo” (uma vez que se subentende que um subgrupo é sempre um grupo). 213 b) Igualmente se tem que, se (B, θ) é um subgrupóide de (A, θ), e se (B, θ) e (A, θ) são grupos, então (B, θ) é um subgrupo de (B, θ), no sentido de que: • o elemento neutro é o mesmo em ambos30; • e o inverso em (B, θ) de um elemento x de B coincide com o inverso de x em (A, θ) 31. ∇ Não podemos terminar este capítulo (básico) sobre estruturas, sem salientar que é possível, naturalmente, considerar outros tipos de estruturas, para além das estruturas relacionais e das estruturas algébricas. Nomeadamente, podemos considerar "estruturas mistas", formadas por um conjunto suporte, não vazio, "equipado" quer com relações, quer com operações (e eventuais elementos "distinguíveis"). Os conceitos introduzidos, de morfismo, isomorfismo e subestrutura, generalizam-se facilmente para estas estruturas mistas. Exemplo 2: a) A bijecção f: |R→ |R+, dada por f(x) = ex , é um isomorfismo entre as estruturas (|R, ≤, +) e (|R, ≤, *). b) A função suc: |N0 → |N1, com suc(n) = n+1, é isomorfismo entre (|N0 , ≤) e (|N1 , ≤), mas não entre (|N0, ≤,+) e (|N1,,≤,+) (para o ver basta atender a que |N0 tem elemento neutro para + e |N1 não). ∇ Antes de prosseguir, com alguns exemplos de outros géneros de estruturas, façamos um breve parêntese apenas para efectuar algumas notas (de carácter complementar) sobre a construção dos inteiros elaborada nas observações complementares da secção 2 do capítulo 3. Observação 2 (complementar - De novo a construção dos inteiros): Na observação (complementar) 1 da secção 2 do capítulo 3, mostrou-se como se poderia construir os inteiros, a partir dos naturais (com o objectivo de tornar a operação de subtracção sempre possível), vendo cada inteiro como uma classe de equivalência de pares de naturais. Mais precisamente, recorde-se: Definiu-se a seguinte relação de equivalência em |N02: (a , b) R (c , d) ⇔ a+d = b+c e definiu-se o conjunto Z dos inteiros como sendo o respectivo conjunto quociente. Sendo a e b naturais quaisquer, disse-se que uma classe [(a,b)] é um inteiro que corresponde a um número natural (o número b-a) sse for a≤b; se for a>b, então a classe [(a,b)] é um inteiro que não corresponde a nenhum número natural. Como então se referiu "Na prática, cada número natural e o número inteiro correspondente - em princípio, objectos matemáticos distintos - são mesmo "identificados", passando-se a designá-los pelo 30 Seja c∈B o elemento neutro de (B, θ) e e∈A o elemento neutro de (A, θ). Ora, se c∈B então c∈A (pois B⊆A). Mas então c=e, uma vez que a operação θ tem no máximo um elemento neutro (teorema 4.3.1, i.e. teorema 1 da secção 3 do capítulo 4). 31 Seja x um elemento de B. Então o seu inverso x- 1 em (B, θ) coincide com o inverso de x em (A, θ), uma vez que x- 1∈B⊆A e, como θ é associativa, o inverso de um elemento (quando existe) é único (ver a observação incluída na secção 3 do capítulo 4). 214 mesmo símbolo ....". Dito de outra forma, o que estamos aqui a dizer com tal "identificação" é que podemos estabelecer uma bijecção f entre |N0 e {[(a, b)]: a,b∈|N0 ∧ a≤b}, que associa a cada natural n a classe [(0, n)] (e, inversamente, a aplicação entre {[(a, b)]: a,b∈|N0 ∧ a≤b} e |N0, que associa a cada classe [(a, b)] (com a≤b) o natural b-a 32, é uma bijecção). Mas, à luz dos nossos conhecimentos actuais, dizer que se identifica N0 com {[(a,b)]: a,b∈|N0 ∧ a≤b}, exige mais do que estabelecer uma simples bijecção entre os dois conjuntos, pois quando pensamos no conjunto dos naturais, pensamos nele equipado com a sua estrutura usual (operações algébricas, ordem, etc.). Assim, torna-se necessário equipar o conjunto Z (=|N02/R) com operações e relações de ordem correspondentes, de modo a que tal bijecção f seja um isomorfismo entre |N0 e suas operações e ordem usuais e a subestrutura de |N02/R (assim equipada) que se obtém quando se restringe o suporte |N02/R ao conjunto {[(a,b)]: a,b∈|N0 ∧ a≤b}. Vejamos, a título meramente ilustrativo, como se pode definir uma operação de adição em Z (construído da forma indicada acima), de modo a que a bijecção f seja um isomorfismo entre (|N0, +) e ({[(a,b)]: a,b∈|N0 ∧ a≤b}, +). (Nota: usaremos o símbolo + para denotar as diversas operações de adição a seguir consideradas, para não tornar a notação pesada, uma vez que o contexto clarificará sempre com qual das operações estamos a trabalhar.) Comecemos por definir uma operação de adição de pares de naturais, +: |N02 → |N02 , como se segue: quaisquer que sejam a,b,c,d∈|N0, (a, b) + (c, d) = (a+c, b+d) Esta operação é compatível com a relação R (recorde a definição 7 da secção 3 deste capítulo), no sentido de que: quaisquer que sejam a,b,c,d,a',b',c',d'∈|N0, se (a, b) R (a'. b') e (c, d) R (c', d'), então (a, b) + (c, d) R (a'. b') + (c', d') Podemos assim definir a operação +: Z → Z como sendo a operação que se obtém da operação anterior por passagem ao quociente pela relação R: quaisquer que sejam a,b,c,d∈|N0, [(a, b)] + [(c, d)] = [(a, b) + (c, d)] (= [(a+c, b+d)]) É fácil verificar que o subconjunto {[(a,b)]: a,b∈|N0 ∧ a≤b} de |N02/R é fechado para esta operação, pelo que ela ainda é uma operação em {[(a,b)]: a,b∈|N0 ∧ a≤b}. Finalmente, podemos verificar que (como pretendíamos) a bijecção f referida preserva a operação de adição dos naturais: (quaisquer que sejam a,b∈|N0) f(a+b) = [(0, a+b)] = [(0, a)] + [(0, b)] = f(a) + f(b) A título informativo, vejamos ainda, para terminar esta observação, como se definem a multiplicação de inteiros e a sua ordem usual: 32 É imediato que tal aplicação está bem definida, no sentido de que não depende do representante (a,b) escolhido para a classe [(a,b)], pois se (c,d)∈[(a,b)], então (a,b)R(c,d) e tem-se b-a = d-c. 215 (quaisquer que sejam a,b,c,d∈|N0) [(a, b)] * [(c, d)] = [(ad+bc, ac+bd)]) [(a, b)] < [(c, d)] sse b+c < a+d (condição equivalente a: b-a < d-c ) ∇ Como referimos, podemos considerar outros tipos de estruturas, para além das estruturas relacionais e das estruturas algébricas, e já referimos e ilustrámos "estruturas mistas", formadas por um conjunto suporte, não vazio, "equipado" quer com relações, quer com operações (e eventuais elementos "distinguíveis"). Mas, para além destas estruturas mistas, podemos ainda conceber e considera-se muitas vezes outros tipos de estruturas. Embora não se vá dar aqui nenhuma definição formal de estrutura genérica (que, tal como todos os conceitos gerais, são difíceis de traduzir numa única definição formal), a ideia intuitiva de estrutura é simples: trata-se de um agrupamento de informações que têm relacionamentos entre si e que, no caso de estruturas matemáticas, é tipicamente formado por objectos matemáticos como conjuntos, operações e outras funções, relações, etc. Quando se considera estas estruturas, as ideias fundamentais que estão por detrás dos morfismos e isomorfismos permanecem válidas, embora a noção específica de morfismo possa ter que ser adaptada ao tipo de estrutura em causa. No que se segue, e para terminar este capítulo, iremos dar um ou dois exemplos de outros tipos de estruturas com interesse prático, e nomeadamente de generalizações do conceito de grafo. Exemplo 3 (Grafo com pesos): Informalmente, um grafo com pesos é um grafo em que a cada seta é associada um peso, que podemos supor ser um número inteiro positivo (o peso pode estar a representar distâncias, custos, etc.). Matematicamente, podemos representar um grafo com pesos como uma estrutura G = (V, R, P), em que V é um conjunto não vazio (o conjunto dos vértices), R é uma relação binária em V (que denota o conjunto das setas) e P é uma aplicação P: R → |N1, que associa a cada seta o seu peso (podendo escreverse P(a,b), em vez de P((a,b)), para denotar o peso que P associa à seta (a,b)). Um problema básico associado a um grafo com pesos é, não só saber se existe um caminho entre dois vértices, mas saber também, entre todos os eventuais caminhos existentes entre dois vértices, aquele que tem menor peso (onde o peso de um caminho v1, ...., vk+1 se define, da forma esperada, como sendo igual a P(v1,v2) + ... + P(vk,vk+1)). Quando se associa o peso unitário 1 a todas as setas, então o caminho com menor peso entre dois vértices é o caminho de menor comprimento (i.e. envolvendo menos setas). Um morfismo f: (V1, R1, P1) → (V2, R2, P2), entre dois grafos com pesos, será uma aplicação f entre os respectivos conjuntos dos vértices (i.e. entre V1 e V2), que preserva as setas do grafo de partida, bem como o seu peso: • se (a, b) é uma seta no grafo de partida, então (f(a), f(b)) é uma seta no grafo destino (i.e. se (a, b)∈R1, então (f(a), f(b))∈R2) • e o peso de uma seta (a, b) no grafo origem coincide com o peso da correspondente seta no grafo destino (i.e. P2(f(a), f(b))=P1(a, b)). ∇ 216 Exemplo 4 (Multigrafos): Uma outra generalização de grafo consiste em permitir que possa existir mais do que uma seta entre dois vértices. Há quem chame a tais estruturas de multigrafos e há quem lhes chame apenas de grafos, passando a designar os outros grafos de grafos simples. Em multigrafos a representação de uma seta como um par de vértices não serve, pois não permite distinguir duas setas entre os mesmos vértices. Uma maneira de resolver este problema consiste em ver as setas como "elementos primitivos", não decomponíveis (tal como os vértices), a que se associa a informação sobre os seus vértices origem e destino. E um modo de concretizar matematicamente esta ideia, consiste em ver um multigrafo como uma estrutura (um quádruplo) da forma (V, S, orig, dest) onde V é um conjunto não vazio (o conjunto dos vértices), S é um conjunto, eventualmente vazio (o conjunto das setas), orig : S → V e dest : S → V (isto é, orig e dest são duas aplicações de S em V que associam a cada seta, respectivamente, o seu vértice origem e o seu vértice destino). Assim, por exemplo, o grafo ({a,b,c,d}, {(a,b), (b,a), (b,c)}) seria representado, como um multigrafo, pela estrutura (por exemplo): (V, S, orig, dest), com V = {a, b, c, d}, S = {s1, s2, s3}, orig: S → V, dada por orig(s1)=a, orig(s2)=b e orig(s3)=b, e dest: S → V, dada por dest(s1)=b, dest(s2)=a e dest(s3)=c. Um morfismo f: (V1, S1, orig1, dest1) → (V2, S2, orig2, dest2), entre dois multigrafos, será formado por um par f = (fV, fS) de aplicações fV: V1 → V2 e fS: S1 → S2 que respeita as setas, no seguinte sentido: (qualquer que seja s∈S1) orig2(fS(s)) = fV(orig1(s)) e dest2(fS(s)) = fV(des1(s)) ∇ Exercícios: 1. Seja (A, θ, λx.x-1, e) um grupo, e B um subconjunto, não vazio, de A, que verifica (*) ∀x,y∈B xθy-1∈B Demonstre, sucessivamente, que então se tem que: a) e ∈ B b) ∀y∈B y-1∈B c) B é fechado para a operação θ 217 concluindo-se que (B, θ, λx.x-1, e) é um subgrupo de (A, θ, λx.x-1, e). (Sugestão para c): dados x,y∈B, para provar que xθy∈B, use (*), b), e o facto de num grupo (y-1)-1=y.) 2. Demonstre que se (A, θ, e) é um grupo, então verifica-se (*) ∀x,y∈A xθy-1∈A 3. Considere o grafo G = ({1,2,3,4}, {(1,2), (2,1), (2,3)}) e dê exemplos de subgrafos de G. 4. Como representaria matematicamente o conceito de "multigrafo com pesos" ? O que seriam os morfismos entre as estruturas desse tipo ? ∇ 218