Teoria das Categorias em Computação Edward Hermann Haeusler Prof. do Departamento de Informática PUC/RJ
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 begin read(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 o t.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 o f = f = f o IdT1 3- f3 o (f2 o f1) = (f3 o f2) o f1 TECMF
Morfismos = Funções entre conjuntos 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
objetos = formulas da lógica de primeira ordem - 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
Como sao os isomorfismos em LogI ? - f f o g = Idb a b g o f = Ida g h1 h2 h2 o h1 = ???? 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 -1 o 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
Ex. f o s o s o s o o = s o s o s o s o s o s o o 7. Seja C com dois objetos, I e N, os morfismos o : I N s : N N t.q. f o o = o e 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 C um 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 C um objeto 0 é dito ser inicial, sss, para todo objeto c de C existe um único morfismo de 0 para c. ! c Prop: Objetos terminais e iniciais sao únicos a menos de isomorfismo. TECMF
Para qualquer categoria C podemos construir sua dual, ou oposta Cop. 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
1. SETS : A x B = { (x,y) / x Î A e y Î B } 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 Produto Assíncrono de Sistemas de Transição Reflexivos TECMF
Propriedades sobre Produtos A x B @ B x A IdAxB A x B ! pA pB B x A A pA pB B A x B ! B x A pA pB IdBxA ! 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: 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 A A + B B pA pB 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
1. SETS : A + B = { (1,x) / x Î A } È { (2,y) / y Î B } 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
Categoria Distributiva if ..... Then Parbegin <cmd_A>; <cmd_B>; Parend Else <cmd_C>; 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
Ù = |v,f,f,f| Ú = |v,v,v,f| 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
Ù o (Ú x Ú) o ((~ x IdB) x (~ x IdB)) o (d x IdB x IdB) (~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
- Como Representar programas com entradas ? 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 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
é um objeto BA com um morfismo App: BA x A A t.q. para qualquer Def. Em uma categoria C , o exponencial de dois objetos A e B, respectivamente, é um objeto BA com 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
finitos e exponenciais. 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
* Funtores n m m+n 1 T (1,n,0) fn n! m! fm (m+n)! fm+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) 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 Ka MatrizKa Ka Det h h Matriz(h) DetKb Kb MatrizKb Kb Inc Det: Matriz Inc TECMF
C C F F n G e o n 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 CD tem 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
O Funtor Hom Sets E E’ s Cop t Hom(E,T) Hom(E,F(T)) t F(t) Hom(s,IdT) t = t s = t[xs] Hom(s,IdF(T)) =F(t) s = F(t)[xs] Hom(E’,T) Hom(E’,F(T)) t[xs] F(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 -Calculus-Tipado Categorias Lógica 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 Ù bool [[bool]] [[bool]] Ù ~ Semântica de TAD’s D com produtos 1 Ù bool f Ú 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 ~ Ù Novo [[bool]] x [[bool]] [[bool]] ~ Ú [[bool]] x [[bool]] [[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 1 [[Novo]] [[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: a Hom(a,a) F(a) a F(f) F(f) (a(ida)) = b (f o ida) = b (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
Architectural connectors Software Architecture = components + structure Architectural connectors - Sequential Composition - Parallel synchronous composition - Parallel asynchronous composition * - Behavior inheritance - Factorization of common Behaviors TECMF
An Example: Harel Statecharts ?condition - Conditions and Actions !action - Design Hierarchy - On-entry, on-exit during actions - Independent Threads of Control - Visual synchronization/complex Transition (as in Petri-nets) TECMF
Projeto ARTS (PUC-RIO/SIEMENS 1994-1998) CORBA Gen. of RETOOL Theories OO Projects RETOOL Theorem Prover Projects Base Formal Validation Layer Model-Chec. Spec. Generation. Gen. of C++ Code Model- Checker TECMF
Pattern used in ARTS (Haeusler & Fontoura 99) Off On t_off t_on L new1 M link S new2 - Horizontal Composition Car sync(b_off,link) sync(b_on,unlink) t_off Off b_off M On t_on Motor S b_on link unlink Brake L TECMF
In categorial terms the horizontal composition is a Colimit x={,} Th(x) b_on b_off link unlink Th(Brake) Th(Motor) Th(Car) TECMF
Mathematicaly OO Projects TTS F G RETOOL Theories TECMF
Interoperability Hom. Project = PL Code = Logic Spec = TTS = OO Spec TECMF
Instituições e Formalismos/modelos em Engenharia de Software Def. Uma Instituição é uma estrutura <SIGN, Sen, Mod, > - SIGN é uma categoria (assinaturas, ou o léxico da linguagem) - Sen : SIGN Set é o funtor que define a linguagem (Sentenças) - Mod : SIGNop Cat é o funtor que atribui modelos a cada assinatura - é uma família de relações |Mod()| x |Sen()| Obj(SIGN) Exemplos : Lógica de Primeira Ordem, Lógica Equacional, Lógica de Reescrita, Logica Modal, Sistemas de Transição, Álgebras de Processo, Linguagens de Programação, etc. TECMF
Mapeamentos entre Instituições (Categoria das Instituições) <, , > <SIGN1, Sen1, Mod1, 1 > <SIGN2, Sen2, Mod2, 2 > 1- : SIGN1 SIGN2 2- : Sen1 Sen2 3- : Mod2 op Mod1, tal que o diagrama abaixo comuta 1 Mod1() Sen1() () () 2 Mod2(()) Sen2(()) TECMF
Apresentação de Teorias em uma Instituição Def. Seja I uma instituição, uma (apresentação) de teoria é um par < , > , com Obj(SIGN) e Sen() Def. Fecho de uma apresentação < , > é < , > , com = { / } Definições alternativas para morfismos e categoria das teorias para uma Inst. <, > 1- < 1, 1 > < 2, 2 >, tal que 2 Sen()( 1). “Preserva Axiomas” <, > 2- < 1, 1 > < 2, 2 >, tal que 2 Sen()( 1). “Preserva Teoremas” Categorias Th0I e ThI, respectivamente. 3 - ModR(< , >) é a subcategoria cheia de Mod() que valida ==== > ModR é um funtor. TECMF
Mapeamentos Simples entre instituições (Meseguer) <,, , > <SIGN1, Sen1, Mod1, 1 > <SIGN2, Sen2, Mod2, 2 > 1- : SIGN1 SIGN2 e : SIGN1 Th2 () = < (), > 2- : Sen1 Sen2 3- : ModR2 op Mod1, tal que o diagrama abaixo comuta 1 Mod1() Sen1() () () 2 ModR2(()) Sen2(()) TECMF
Semantics of the NCM Model (Coordinated Model) - Modules are Timed Automata (RTTS) or RETOOL Theories - Architectural Connectors are: - Horizontal = Colimits - Vertical (OO) = Extension Morphisms (Inheritance Morphisms) - Validation of application: - Consistency - Schedulability ( work of Meseguer and Ölvesczky on RT-RWL) TECMF
The Mathematical Foundation for Interoperability - Institutions = Logics and Spec/Prog Formalisms - Plain and Simple Maps between Institutions - Bridges : Mapping between theories in different institutions - Fibered Category - Grothendieck Construction - Architectural Connectors as Co-limits TECMF
Bridges entre Teorias em diferentes instituições (Martini & Wolter) <,, , > I1 I2 Um mapeamento simples Def. Sejam < 1, 1 > e < 2, 2> em Th1 e Th2 respectivamente. Uma bridge é um morfismo : (1) 2 em SIGN2 tal que : 2 2 Sen( ) ((1)(1) 1 ) TECMF
LOG ProjSig LOGTh Mod CAT Mod ProjSig SL’ SL SL’’ Bridges SL SL’’ Grothendieck Const. LOG ProjSig LOGTh Grothendieck Const. Flat Flat Th(L’) Th(L) Th(L’’) CAT ProjSig Th LOG L’ Map L L’’ TECMF
A Categoria Bridges é Finitamente Cocompleta (Haeusler, Martini & Wolter) 1- Construção do Push-out em Bridges ===> Cocompletude finita de Bridges 2- Cat ser cocompleta garante a existência de uma categoria SIGN de assinaturas para o Push-Out. 3- Cat Sets herda cocompletude de Cat, daí a construção do funtor SEN para o Push-Out. 4- Fibra a Fibra (para cada assinatura) constrói-se o pull-back Mod para cada assinatura. Esta construção é Universal , e, portanto estende-se de forma única a um funtor ModR de SIGN em Cat. 5- <SIGN, SEN, ModR> Induz uma instituição de forma única. 6- Como Cocomp (a subcategoria de Cat formada por categorias cocompletas e funtores co-contínuos ) é Cocompleta (cons. Lema de Yoneda) SIGN é cocompleta. 7- A teoria que forma o push-out em Bridges tem assinatura obtida em 6 e sentenças contruídas por SEN como o push-out em Sets das imagens dos morfismos que formam o push-out em SIGN. TECMF
Resumo : 1. Teoria das Categorias é o ambiente natural para a formalização de modelos computacionais 2. Teoria das Categorias encapsula conceitos de computação/programação em conceitos categóricos bem conhecidos. 3. Provê meios “geométricos” para análise de conceitos formais em L.P.’s e Eng. Software Desvantagens ou falta de costume ?? TECMF
Livro : Teoria das Categorias para Ciência da Computação Paulo Blauth Menezes & Edward Hermann Haeusler Série Livros Didáticos (UFRGS - Ed. Sagra Luzzato) 2001 TECMF