680 likes | 783 Views
Edward Hermann Haeusler Prof. do Departamento de Informática PUC/RJ. Teoria das Categorias em Computação . Programas = Dados + Algoritmos. Programas = Tipos de Dados + Funções. Programas = (Objetos + Operações) + Funções. Programas = Objetos + ( Operações + Funções).
E N D
Edward Hermann Haeusler Prof. do Departamento de Informática PUC/RJ Teoria das Categorias em Computação
Programas = Dados + Algoritmos Programas = Tipos de Dados + Funções Programas = (Objetos + Operações) + Funções Programas = Objetos + ( Operações + Funções) Categorias = Objetos + Morfismos TECMF
Requisito minimo para Operações/Funções : - Programas (compatíveis) podem ser sequenciados (;) P1 : T1 T2 P2 : T2 T3 P1; P2 : T1 T3 - Sequenciamento e Encapsulamento sao compatíveis P1; P2; P3 = P1; (P2; P3) = (P1; P2); P3 - Para todo tipo pode-se escrever um programa que mantem inalterados os dados do tipo. IdT = Program Identidade; Var x : T beginread(x); write(x) end. P1 : T1 T2 IdT1; P1 = P1 = P1; IdT2 TECMF
Def: Uma Categoria C é definida como uma coleção de objetos OBJ(C) e uma coleção de morfismos Hom(C) juntamente com uma operação ot.q. 1- para todo f1:T1 T2 Î Hom(C) e f2:T2 T3 Î Hom(C) existe f2 o f1 : T1 T3 Î Hom(C) 2- para todo T Î OBJ(C) existe IdT t.q. se f:T1 T2 Î Hom(C) então IdT2 of = f = foIdT1 3- f3 o (f2 o f1) = (f3 o f2) o f1 TECMF
EXEMPLOS - SETS Objetos = Conjuntos Morfismos = Funções entre conjuntos - Categoria Vazia - Um objeto e um morfismo (identidade no objeto) a - b f a g g o f c TECMF
- Um objeto “ * “ e como morfismos (endomorfismos) as palavras sobre o alfabeto S = {a,b,...,z,A,B,...,Z}. * * * * * * * * * * a i r o g e t a C coaotoeogoooroioa - LogI objetos = formulas da lógica de primeira ordem morfismos = relação de consequência lógica A Ù B A B A Ú A A Ú B TECMF
- f f o g = Idb a b g o f = Ida g h1 h2 h2 oh1 = ???? c Def. Um Morfismo f:A B em uma categoria C para o qual existe f -1: B A , t.q. f o f -1 = Idb f -1o f = Ida e dito ser um isomorfismo, e denota-se por a @ b (a e b sao isomórficos) sempre que tal f existir. Como sao os isomorfismos em LogI ? TECMF
- P(X) (conjunto potencia de X) objetos = subconjuntos de X morfismos = relação de inclusão {1,2,3} {1,2} {2,3} {3,1} {1} {2} {3} {} TECMF
7. Seja C com dois objetos, I e N, os morfismos o : I N s : N N t.q. e f o o = o f o s = s o s o f Ex. f o s o s o s o o = s o s o s o s o s o s o o => Categorias Livremente Geradas - Geradores - Relações (é um conjunto) => Categorias Pequenas Coleção de Objetos (nao é um conjunto) => Categorias Grandes TECMF
Exemplos de Categorias Grandes. 1. SETS 2. Vect : Objetos Espaços Vetoriais de dimensão finita Morfismos Transformações Lineares 3. Top : Objetos Espacos Topológicos Morfismos Funções contínuas 4. Rel : Objetos Conjuntos Morfismos Relações binárias 5. Par : Objetos Conjuntos Morfismos Funções Parciais 6. Trans : Objetos Sistemas de Transição Morfismos Mapeamento de comportamento TECMF
Teoria dos conjuntos x Teoria das Categorias Program UM; Var x,y, z : Integer; begin read(x,y); z:= x - y; writeln(z) end. Program OUTRO; Var a,b,c : Integer; begin read(a,b); c:= a - b; writeln(c) end. => A “máquina” nao diferencia os programas acima quanto ao comportamento +> Nomes, em geral, nao sao significativos em computação. <+ {x,y,z} é distinto de {a,b,c} em teoria dos conjuntos {x,y,z} e {a,b,c} sao indistinguíveis em SETS (inspeção interna) TECMF
Î vs ("S)(!$f) f: O S ("x)x Ï O ("S)(!$f) f: S 1 {#} (unitários) “ f(x) = # “ (!$x)x Î {#} TECMF
“elementos” em categoria {a,b} fa(#) = a fb(#) = b fa {#} {a,b} fb Intensional vs Extensional Î Cria_Pilha : () Pilhas Pilha_vazia Pilhas TECMF
Def. Em uma categoria Cum objeto 1 é dito ser terminal, sss, para todo objeto c de C existe um único morfismo de c para 1. ! c 1 Def. Em uma categoria Cum objeto 0 é dito ser inicial, sss, para todo objeto c de C existe um único morfismo de 0 para c. ! 0 c Prop: Objetos terminais e iniciais sao únicos a menos de isomorfismo. TECMF
Categoria Dual Para qualquer categoria C podemos construir sua dual, ou oposta Cop. - Cop tem os mesmo objetos e morfismos que C; - Os morfismos de Cop “vão” na direcao contrária se f:A B em C então f:B A em Cop ; - A composição é operada no sentido contrário: (g o f) em Cop e (f o g) em C Prop: Objetos terminais em C são iniciais em Cop e vice-versa. TECMF
Diagramas e Diagramas Comutativos Def. Um Diagrama em uma categoria C é um grafo (dirigido) que tem suas arestas rotuladas com morfismos de C e seus vértices rotulados com os respectivos objetos. f b i d g a j h c Def. Um Diagrama em uma categoria C é dito ser comutativo, ou comutar, sss, todos os caminhos entre quaisquer dois vértices representam o mesmo morfismo. Obs : Para o diagrama acima ser comutativo basta que: g o f = h e j o i = g TECMF
Produto Cartesiano pA pB A A x B B <f,g> f g C Em SETS <f,g>(x) = (f(x),g(x)) f:C A g:C B h:C A x B h:C A x B <f,g>:C A x B pAo h:C A pB o h:C B pAo <f,g> = f pBo <f,g> = g < pAo h, pBo h> = h TECMF
Exemplos 1. SETS : A x B = { (x,y) / x ÎA e y Î B } 2. P(X): A x B = A Ç B A Ç B A B C ÌB C ÌA Ç B => C ÌA C 3. LogI: A x B = A Ù B 4. Trans: A x B = Produto Assíncrono de A e B TECMF
Produto Assíncrono de Sistemas de Transição 3 1 1 2 1 2 1 2 2 X = 1 2 2 1 3 1 3 2 Reflexivos TECMF
A x B pA pB ! IdAxB pA pB A B x A B ! ! pA pB A x B pA pB IdBxA ! B x A Propriedades sobre Produtos A x B @ B x A TECMF
Prop: O Produto de dois objetos em uma categoria é único a menos de isomorfismo. Prop: A x (B x C) @(A x B) x C dA: A A x A d(x) = (x,x) ( em SETS) pA pA A A x A A dA IdA IdA A tA,B: A x B B x A t(x,y) = (y,x) ( em SETS) TECMF
A Execução em Paralelo de Morfismos: f g A C B D A x B pA pB A A x B B Parbegin f; g; Parend f f x g g pC pD C C x D D C x D f x g (x,y) = (f(x),g(y)) TECMF
Qual o conceito dual de Produto ? iA iB pA pB A A + B B A A x B B <f,g> |f,g| f g f g C C A + B = co-produto de A e B f:A C g:B C h:C A h:C B |f,g|:A+B C iAo h:C A+B iB o h:C A+B |f,g| o iA = f |f,g| o iB = g | h o iA, h o iB| = h TECMF
Exemplos 1. SETS : A + B = { (1,x) / x ÎA } È { (2,y) / y Î B } 2. P(X): A + B = A È B A È B A B B ÌC A È B Ì C => A ÌC C 3. LogI: A + B = A Ú B 4. TransReflex: A + B = A x B (Verifiquem !!!!!!!) TECMF
Seleção de Morfismos: f g A C B D A + B iA iB A A + B B if A? then f else g fi f f x g g iC iD C C + D D C + D f x g (x,y) = (f(x),g(y)) TECMF
Prop: O Co-produto de dois objetos em uma categoria é único a menos de isomorfismo. Prop: A + (B + C) @ (A + B) + C cdA: A+A A Em SETS: cd(1,x) = x cd(2,x) = x iA iA A A + A A cdA “ esqueça os casos” IdA IdA A TECMF
if ..... Then Parbegin <cmd_A>; <cmd_B>; Parend Else Parbegin <cmd_A>; <cmd_C>; Parend fi; Parbegin <cmd_A>; if ..... Then <cmd_B> Else <cmd_C> fi; Parend Categoria Distributiva A x (B + C) @ A x B + A x C A x 0 @ 0 TECMF
Circuitos Lógicos v f B = 1 + 1 1 1 + 1 1 cx,y X + Y Y + X ~ = c1,1 B x B = (1 + 1) x (1 + 1) @ (1 + 1) x1 + (1 + 1)x1 @ 1 + 1 + 1 + 1 Ù = |v,f,f,f| Ú = |v,v,v,f| TECMF
(~x Ú x) Ù (y Ú ~z) x Ú ~ Ù y Ú z ~ Ù o (Ú x Ú) o ((~ x IdB) x (~ x IdB)) o (d x IdB x IdB) B x B x B B TECMF
Programas Imperativos Iteração : f T T while ..... do f; od (SETS) Exemplo: T = N x N x B @ N x N + N x N f é tal que: (x.y,y-1,0) se y >= 1 e flag = 0 (x,y,flag) (x,y,1) se y < 1 ou flag = 1 f f f f (1,x,0) (x,x-1,0) (x.(x-1),x-2,0) . . . . (x!,0,1) . . . . . . . TECMF
Def. Um Programa Imperativo é um morfismo f : T T definido (construído), a partir de um conjunto dado de morfismos (instruções básicas), em uma categoria distributiva. T fn (1,n,0) 1 T n! TECMF
Programa com entradas - Como Representar programas com entradas ? Abstração Associação Modelos Funcionais Modelos Computacionais Baseados em “Set” de Instruções TECMF
x + y2 N x N N lx.x + y2 ly. x + y2 N N N N N N N ly .lx.x + y2 N 1 N N App N x N N lx.x + y2 App(lx.x + y2,2) 2 App o ((lx.x + y2 ) x 2) 1 x 1 TECMF
Def. Em uma categoria C , o exponencial de dois objetos A e B, respectivamente, é um objeto BAcom um morfismo App: BA x A A t.q. para qualquer morfismo e:D BA existe um único morfismo ê t.q. o diagrama abaixo comuta. App BA x A B e IdA ê D x A ou, Hom(D x A, B) @ Hom(D, BA) Prop. Uma categoria com Co-produtos e exponencial é distributiva TECMF
Def. Uma Categoria é dita ser Cartesiana Fechada (CCF), sss, possui produtos finitos e exponenciais. -O l-calculus tipado é a linguagem interna das CCF’s - CCF são modelos para o l-calculus tipado . lx... . ly... TECMF
m T fn (1,n,0) n * * 1 T fm+n n! fm m! m+n T (m+n)! Def. Um Funtor entre duas categorias C e D é um par de mapeamentos (O,M), onde O : Obj(C) Obj(D) e M: Morf(C) Morf(D), t.q. - f : a b está em C então M(f):O(a) O(b) está em D. - M(Ida)= IdObj(a) - M(f o g) = M(f) o M(g) • Funtores TECMF
Um Funtor de C em D pode ser visto como um esboço de C em D. Um Funtor de C em D pode ser visto como uma construção: Lista: SETS SETS Lista(X) = { L / L é lista sobre X} f : X Y Lista(f) : Lista(X) Lista(Y) (x1,...,xn) (f(x1),....,f(xn)) TECMF
Exemplos - C = D arbitrária * * * * - C = D = SETS org F : C D é o mesmo que Arestas Vértices dest - C = 0 1 2 3 4 5 ..... n .... (w) D = SETS F : C D é o mesmo que : X1 X2 X3 Xn . . . . . . . . . TECMF
Programas Imperativos com entradas Entradas = S* Def. Um Programa Imperativo com entrada é um FUNTOR de S*em SETS. fa (a ÎS) S S construído a partir de um conjunto de instruções básicas por meio das operações possíveis em um categoria distributiva. TECMF
Transformações Naturais ReversoT: Lista(T) Lista(T) Lista(f) f T1 T2 Lista(T1) Lista(T2) ReversoT1 ReversoT2 Lista(f) Lista(T1) Lista(T2) A coleção de morfismos ReversoT, para T em SETS, é uma transformação natural do funtor Lista nele mesmo Transformações Naturais Polimorfismo TECMF
O Determinante é uma Transformação Natural Matrizes Quadradas Corpos Matriz DetKa MatrizKa Ka Ka Det h Matriz(h) h DetKb MatrizKb Kb Kb Inc Det: Matriz Inc TECMF
F F n G e o n C C Def : Se D então D é e H H definida componente a componente como : (e o n)T= eT o nT Def. Sejam C e D duas categorias, então CDtem como objetos funtores de D em C e como morfismos transformações naturais. Exemplo: SETSw (categoria dos conjuntos variando no tempo discreto) TECMF
Semântica [[ ]] TECMF
- Semântica deve ser composicional, em particular, desde que: t1:T1[Vars] ... tn:Tn[Vars] 1. obs: Vars = x1:E1,...,xn:En F(t1,...,tn):F(T1,...,Tn)[Vars] 2. F(t1,...,tn) [Vars s] = F(t1[Vars s],...., tn[Vars s]) [[ti]] : [[E]] [[Ti]] 3. [[F(t1,...,tn)]]: [[E]] [[F(T1,...,Tn)]] Assim, [[F]] : Hom([[E]],[[T1]])x....xHom([[E]],[[Tn]]) Hom([[E]],[[F(T1,...,Tn)]]) Por (2) a substituição é natural. TECMF
Cop Hom(E,F(T)) Hom(E,T) t F(t) E s E’ Hom(E’,F(T)) Hom(E’,T) t[xs]F(t [xs] ) O Funtor Hom Sets t Hom(s,IdT) Hom(s,IdF(T)) =F(t) s = F(t)[xs] t = t s = t[xs] [[F(t)[x s]]] = [[F(t[x s])]] Condição de Naturalidade dentre os funtores Hom(_,T) e Hom(_,F(T)) TECMF
Logica Categorica Fórmulas Tipos Objetos Conectivos Construtores Funtores Provas Termos Componentes de Transf. Nat. Regras de Inferência Regras de Form. Termos Trans. Natural -Calculus-Tipado Categorias Lógica TECMF
~ D com produtos Semântica de TAD’s 1 Ù f bool Ú t t ~ f [[bool]] [[bool]] C 1 f <b,f> ~t = f ~ ~b = b b Ùt = b b Ùf = f b Ù~b= f b Ú ~b = t t f ~ Ù [[bool]] Novo [[bool]] x [[bool]] ~ Ú [[bool]] [[bool]] x [[bool]] C(x) = ~C(x) [x:novo] TECMF
===> Sets não serve como interpretação (útil) para o TAD anterior ===> Não existe funtor de TAD para Sets preservando produtos, objetos terminais e os diagramas essenciais, pois : C(x) = ~C(x) [x:novo] e C [[Novo]] 1 [[bool]] [[Novo]] = Inicial = ~ C f t [[bool]] Mas, em Sets [[Novo]] não precisa ser o objeto inicial A A A ....... .................... TECMF
O Lema de Yoneda Seja C uma categoria localmente pequena, e F: C Sets um funtor. Então existe uma bijeção a : Nat(Hom(a,_),F) F(a) natural em a. Prova : Notar que se é uma transformação natural de Hom(a,_) para F então: F(a) a Hom(a,a) a F(f) (a(ida)) = b (f o ida) = b (f) F(f) f Hom(a,f) Hom(a,b) F(b) b b TECMF
Teorema de Cayley 1- Um grupo G pode ser visto como uma categoria CatG com somente um objeto “*” e os morfismos como sendo os elementos do grupo. Operação ???? 2- Seja o Funtor F: CatG Sets F(*) = G e F( * g * ) = g g: G G com g(h) = hg 3- Nat(Hom(*,_),F) Perm(G), 4- Pelo lema de Yoneda Nat(Hom(*,_),F) F(*) = G TECMF