Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
% (find-angg "LATEX/2010-proj-gma.tex") % (find-dn4ex "edrx08.sty") % (find-angg ".emacs.templates" "s2008a") % (find-angg ".zshrc" "makebbl") % (defun b () (interactive) (find-zsh "makebbl 2010-proj-gma.bbl catsem,filters")) % (defun b () (interactive) (find-zsh "bibtex 2010-proj-gma")) % (defun b () (interactive) (find-zsh "bibtex 2010-proj-gma; makeindex 2010-proj-gma")) % (defun c () (interactive) (find-zsh "cd ~/LATEX/ && ~/dednat4/dednat41 2010-proj-gma.tex && latex 2010-proj-gma.tex")) % (defun c () (interactive) (find-zsh "cd ~/LATEX/ && ~/dednat4/dednat41 2010-proj-gma.tex && pdflatex 2010-proj-gma.tex")) % (eev "cd ~/LATEX/ && Scp 2010-proj-gma.{dvi,pdf} edrx@angg.twu.net:slow_html/LATEX/") % (defun d () (interactive) (find-dvipage "~/LATEX/2010-proj-gma.dvi")) % (find-dvipage "~/LATEX/2010-proj-gma.dvi") % (find-pspage "~/LATEX/2010-proj-gma.pdf") % (find-xpdfpage "~/LATEX/2010-proj-gma.pdf") % (find-pspage "~/LATEX/2010-proj-gma.ps") % (find-zsh0 "cd ~/LATEX/ && dvips -D 300 -o 2010-proj-gma.ps 2010-proj-gma.dvi") % (find-zsh0 "cd ~/LATEX/ && dvips -D 600 -P pk -o 2010-proj-gma.ps 2010-proj-gma.dvi && ps2pdf 2010-proj-gma.ps 2010-proj-gma.pdf") % (find-zsh0 "cd ~/LATEX/ && dvips -D 300 -o tmp.ps tmp.dvi") % (find-zsh0 "cp -v ~/LATEX/2010-proj-gma.pdf /tmp/pen/print/") % (find-xpdfpage "/tmp/pen/print/2010-proj-gma.pdf") % (find-pspage "~/LATEX/tmp.ps") % (ee-cp "~/LATEX/2010-proj-gma.pdf" (ee-twupfile "LATEX/2010-proj-gma.pdf") 'over) % (ee-cp "~/LATEX/2010-proj-gma.pdf" (ee-twusfile "LATEX/2010-proj-gma.pdf") 'over) \documentclass[oneside]{article} \usepackage[latin1]{inputenc} \usepackage{makeidx} \usepackage{hyperref} % \usepackage{showidx} % \usepackage{showlabels} \makeindex \usepackage{edrx08} % (find-dn4ex "edrx08.sty") %L process "edrx08.sty" -- (find-dn4ex "edrx08.sty") \input edrxheadfoot.tex % (find-dn4ex "edrxheadfoot.tex") \begin{document} \input 2010-proj-gma.dnt \def\noedrxfooter{\gdef\footertext{}} %* % (eedn4-51-bounded) %Index of the slides: %\msk % To update the list of slides uncomment this line: %\makelos{tmp.los} % then rerun LaTeX on this file, and insert the contents of "tmp.los" % below, by hand (i.e., with "insert-file"): % (find-fline "tmp.los") % (insert-file "tmp.los") % (find-LATEX "2008projeto.tex") % (find-LATEX "2009-planodetrabalho.tex") % (find-LATEX "2009unilog-abs1.tex") % (find-LATEX "2009unilog-diags.tex") % (find-LATEX "2009unilog-dnc.tex") % «.intro» (to "intro") % «.dnc-exemplo» (to "dnc-exemplo") % «.graus» (to "graus") % «.dnc-as-aux» (to "dnc-as-aux") % «.real-e-sintatico» (to "real-e-sintatico") % «.topos-theory» (to "topos-theory") % «.feixes-e-mods» (to "feixes-e-mods") % «.caderno» (to "caderno") % «.resultados-curto» (to "resultados-curto") % «.resultados-medio» (to "resultados-medio") % For "book": \def\mychapter #1#2{\chapter{#1}\label{#2}} \def\mysection #1#2{\section{#1}\label{#2}} \def\mysubsection#1#2{\subsection{#1}\label{#2}} % For "article": \def\mychapter #1#2{\section{#1}\label{#2}} \def\mysection #1#2{\subsection{#1}\label{#2}} \def\mysubsection#1#2{\subsubsection{#1}\label{#2}} \def\mysection #1#2{\section{#1}\label{#2}} % \def\mysection #1#2{\chapter{#1}\label{#2}} % This gives us a way to draw all the "standard % erasings" of a tree from a single tree definition. % Low-level words: % \def\archfull#1#2#3{#1\equiv #2:#3} \def\ARCHFULL {\let\arch=\archfull} \def\archdnc#1#2#3{#1} \def\ARCHDNC {\let\arch=\archdnc} \def\archtermtype#1#2#3{#2:#3} \def\ARCHTERMTYPE{\let\arch=\archtermtype} \def\archterm#1#2#3{#2} \def\ARCHTERM {\let\arch=\archterm} \def\archtype#1#2#3{#3} \def\ARCHTYPE {\let\arch=\archtype} \def\rY#1{#1} \def\RY {\let\r=\rY} \def\rN#1{} \def\RN {\let\r=\rN} \def\ptypeY#1{#1} \def\PTYPEY {\let\ptype=\ptypeY} \def\pytpeN#1{} \def\PTYPEN {\let\ptype=\pytpeN} % % High-level words: % \def\FULLRP{\ARCHFULL\RY\PTYPEY} \def\FULLR {\ARCHFULL\RY\PTYPEN} \def\FULLP {\ARCHFULL\RN\PTYPEY} \def\FULL {\ARCHFULL\RN\PTYPEN} \def\TERMTYPERP{\ARCHTERMTYPE\RY\PTYPEY} \def\TERMTYPER {\ARCHTERMTYPE\RY\PTYPEN} \def\TERMTYPEP {\ARCHTERMTYPE\RN\PTYPEY} \def\TERMTYPE {\ARCHTERMTYPE\RN\PTYPEN} \def\TERMRP{\ARCHTERM\RY\PTYPEY} \def\TERMR {\ARCHTERM\RY\PTYPEN} \def\TERMP {\ARCHTERM\RN\PTYPEY} \def\TERM {\ARCHTERM\RN\PTYPEN} \def\TYPER {\ARCHTYPE\RY\PTYPEN} \def\TYPE {\ARCHTYPE\RN\PTYPEN} \def\DNCR {\ARCHDNC\RY\PTYPEN} \def\DNC {\ARCHDNC\RN\PTYPEN} {\large {\bf Uma linguagem para \par simplificação de demonstrações: \par ``downcasing types''} \msk \par Eduardo Nahum Ochs \par Projeto de Pesquisa \msk \par Para o: \par Concurso para Professor Adjunto do GMA/UFF \msk \par Submetido em: \par Rio de Janeiro, 17 de maio de 2010 } \bsk \bsk \bsk \bsk % \newpage Se tentamos representar uma categoria $\catC$ formalmente ela vira uma 7-upla: $(\catC_0, \Hom_\catC, \id_\catC, ¢_\catC; \assoc_\catC, \idL_\catC, \idR_\catC)$, onde as primeiras quatro componentes são ``estrutura'' e os últimos três são ``propriedades'' --- $\assoc_\catC$ é a ``garantia'' de que a composição é associativa, e $\idL_\catC$ e $\idR_\catC$ são garantias de que os morfismos identidade são neutros para a composição à esquerda e à direita. Vou chamar as componentes ``estrutura'' de ``parte sintática'' e as componentes ``propriedades'' de ``parte lógica''. Uma {\sl protocategoria} é uma 4-upla $(\catC_0, \Hom_\catC, \id_\catC, _\catC)$ --- só o ``esqueleto sintático'' do que uma categoria é, sem as componentes que mencionam igualdades entre morfismos. Se quebramos nos lugares certos as uplas que representam funtores, transformações naturais, isomorfismos, adjunções, limites, etc, definimos proto-funtores, proto-TNs, etc. A operação que pega objetos e retorna os ``proto-objetos'' correspondentes funciona como uma projeção, e vou dizer que ela vai do ``mundo real'' --- onde cada objeto tem tanto uma ``parte sintática'' quanto uma ``parte lógica'' --- para o ``mundo sintático'', onde só as partes sintáticas permanecem; as partes lógicas foram descartadas. O oposto de {\sl projetar} é {\sl levantar}. Podemos tentar começar com um ``proto-alguma-coisa'', $\aa^-$, no mundo sintático, e daí tentar obter um ``(não-proto-)\allowbreak alguma-coisa'', $\aa$, no mundo real, tal que a projeção de $\aa$ seja o $\aa^-$ original. \msk Muitos teoremas de Teoria de Categorias têm esqueletos sintáticos {\sl bem} interessantes: o esqueleto sintático de um teorema (ou de uma definição) em Teoria de Categorias tem só as construções (a ``parte divertida''), sem as partes que envolvem provas de que certos diagramas comutam, de que duas operações dadas são inversas uma da outra, etc (vamos chamar isto de a ``parte burocrática''). A ``parte divertida'' é sempre intrinsicamente anterior à ``parte burocrática'', em vários sentidos: as componentes da ``parte burocrática'' se referem \`as componentes da ``parte divertida'', mas a ``parte divertida'' pode ser definida, e formalizada, por si só; temos que aprender a ``parte divertida'' primeiro, e depois a ``parte burocrática''; e muitas vezes podemos ter uma noção suficientemente boa de um conceito de Categorias só vendo as construções envolvidas nele --- e as construções são exatamente a parte que a gente sempre precisa {\sl lembrar}; os enunciados certos da ``parte burocrática'' podem na maior parte das vezes ser reconstruídos mais ou menos automaticamente só a partir da parte divertida/sintática, ou a partir dela e de um mínimo de informação extra, e as provas destes enunciados da ``parte burocrática'' também podem ser reconstruídas mais ou menos automaticamente, por busca num espaço finito de possibilidades... \msk Se conseguirmos os meta-teoremas certos sobre levantamentos --- por exemplo algo como: ``toda proto-adjunção da forma {\sl tal}, $A^-$, tem exatamente um levantamento, e podemos obtê-lo a partir de $A^-$ aplicando o algoritmo {\sl blá}'' --- então poderemos, nos casos em que os meta-teoremas se aplicam, construir explicitamente apenas o esqueleto $A^-$; os meta-teoremas cuidarão do resto sozinhos. Aí, nós, humanos, poderemos fazer só a parte ``divertida'' e ``criativa'' do trabalho --- construir o $A^-$, e encontrar novos meta-teoremas --- e as ``máquinas'' (os meta-teoremas) farão as tarefas burocráticas e tediosas para nós... Infelizmente estes meta-teoremas são difíceis de se conseguir, e raramente fazem tanto quanto gostaríamos; mas a idéia de obtê-los é tão tentadora que é impossível escrever um projeto sobre este assunto sem mencioná-la!... No entanto, se pensamos no {\sl caminho para obter estes meta-teoremas} vemos que algumas modificações básicas desta idéia utópica tornam o projeto bem mais realista. Em primeiro lugar, precisamos de exemplos suficientes de levantamentos não-triviais para podermos examiná-los e ver que padrões eles obedecem. Isto não é difícil --- os livros de Teoria de Categorias estão cheios de teoremas não-triviais, e muitos deles (mas não todos, como veremos) admitem esqueletos sintáticos a partir dos quais {\sl deveríamos} ser capazes de recontruir o teorema original. Para cada teorema $T$ destes, com projeção $T^-$, temos um levantamento $T^- \mto T$. Em segundo lugar, uma das ferramentas que parece ser mais adequada para criar estes meta-teoremas --- parametricidade --- só faz sentido em universos com polimorfismo --- o que exclui o universo usual, $\Set$, e sub-universos dele (\cite{ReynoldsPinST}). Modelos para $ð$-cálculo polimórfico são categorias com algumas estruturas e propriedades adicionais (\cite{SeelyPLC}), e precisamos entender como definí-las e como interpretar tipos e termos de $ð$-cálculo polimórfico como objetos e morfismos nelas (a ``linguagem interna'' delas)... isto também não parece nada simples quando vemos a versão ``mundo real'' das definições e demonstrações, mas os esqueletos sintáticos de provas de semânticas categóricas --- isto é, de teoremas da forma ``os modelos para a linguagem $L$ são exatamente as categorias com estrutura extra tal'' --- são bastante elegantes. {\sl Ou seja, a idéia de obter meta-teoremas passa para o segundo plano; a idéia de simplificar uma parte de Teoria de Categorias, separando a ``parte sintática'' (construções) da ``parte lógica'' (diagram chasings), passa a ser central.} % -------------------- % «dnc-exemplo» (to ".dnc-exemplo") % (sec "Downcasing types: um exemplo" "dnc-exemplo") \mysection {Downcasing types: um exemplo} {dnc-exemplo} O diagrama abaixo é um bom exemplo de como os downcasings funcionam. Se temos um elemento $pÝA×B$ e uma função $f:B \to C$, então temos um modo natural de obter um elemento de $C$: $f('p)ÝC$. %L forths["<.>"] = function () pusharrow("<.>") end %L forths["<-->"] = function () pusharrow("<-->") end %: %: \arch{a,b}{p}{A×B} %: ------------------\r{'} %: \arch{b}{'p}{B} \arch{b|->c}{f}{B->C} %: -------------------------------------\r{\app} %: \arch{c}{f('p)}{C} %: %: ^archetypal-deriv %: %D diagram archderivs %D 2Dx 100 +40 +40 +30 +50 %D 2D 100 \foo{\FULLRP} %D 2D %D 2D +50 \foo{\TERMTYPERP} \foo{\DNCR} %D 2D %D 2D +50 \foo{\TERMR} \foo{\TYPE} \foo{\DNC} %D 2D %D (( \foo{\FULLRP} \foo{\TERMTYPERP} -> %D \foo{\FULLRP} \foo{\DNCR} -> %D \foo{\TERMTYPERP} \foo{\TERMR} -> %D \foo{\TERMTYPERP} \foo{\TYPE} -> %D \foo{\DNCR} \foo{\DNC} -> %D \foo{\TYPE} \foo{\DNC} <--> %D %D )) %D enddiagram %D $$\def\foo#1{#1\fcded{archetypal-deriv}} \diag{archderivs} $$ A árvore mais à esquerda embaixo constrói o $ð$-termo $f('p)$; a \'arvore mais à direita é o downcasing correspondente. Na derivação de um $ð$-termo os termos sempre crescem à medida que descemos na árvore, e em construções grandes isto faz com que tenhamos árvores enormes, com muita redundância. O downcasing aparentemente só fala dos tipos dos objetos envolvidos, e por isso os ``downcased terms'' --- vou chamá-los de ``nomes'' --- não necessariamente crescem à medida que descemos na árvore; note que permitimos ``nomes longos'', que não há distinção sintática entre ``variáveis'' e ``termos (não-atômicos)'', e que cada barra de uma \'arvore ``downcased'' funciona como uma {\sl definição}. Por exemplo: ``se temos um valor para $a,b$ temos um significado natural para $b$ (o $b$ é a segunda componente do $a,b$)'', e ``se temos um valor para $b$ e um valor para $b \mto c$ temos um significado natural para $c$ (obtido por aplicação)''. Note o uso de {\sl artigos indefinidos} quando ``lemos em voz alta'' a árvore downcased, o que é algo que não usual em Matemática. \msk Quando eu comecei a tentar formalizar este sistema, há cerca de 12 anos atrás, eu acreditava que ele deveria funcionar como um sistema independente, e que deveria ser possível usá-lo {\sl ao invés} da notação usual... ledo engano! Ele é tremendamente irregular, e ambiguidades potenciais aparecem em quase toda tentativa de representar construções interessantes nele --- um exemplo básico: se $,':A×A \to A$ são as duas projeções e $f:A \to B$, podemos tentar representar $$ e $'$ como $a,a' \mto a$ e $a,a' \mto a'$, mas aí provavelmente vamos querer que as compostas se chamem $a,a' \mto b$ e $a,a' \mto b'$... ou seja, a composição não é bem-comportada sintaticamente!... O modo de usá-lo que funciona bem --- e aqui entram várias idéias que eu só tive nos últimos 3 ou 4 anos --- é usá-lo {\sl sempre} como um sistema auxiliar. Por exemplo, a árvore ``downcased'' embaixo à direita na figura acima tem que ser vista como uma abreviação, ou ``apagamento'', da \`arvore do topo, na qual certas informações da \'arvore do topo foram apagadas; e {\sl apagamentos funcionam como projeções}, e para dar ``semântica'' à árvore embaixo à direita acima --- isto é, para obter os $ð$-termos --- precisamos primeiro construir a árvore completa do topo, depois apagar certas informações... % -------------------- % «graus» (to ".graus") % (sec "Graus de naturalidade e obviedade" "graus") \mysection {Graus de naturalidade e obviedade} {graus} O que a parametricidade diz, a grosso modo, é o seguinte: em certos modelos, se temos um ``termo puro'' (isto é, sem constantes) de tipo $T$, então ele obedece uma propriedade $P_T$, que só depende do tipo $T$. Por exemplo, a única operação ``pura'' que espera um conjunto $A$ e retorna uma função $A \to A$ é a identidade. Repare que em $\Set$ não podemos formar o conjunto das operações deste tipo --- o domínio de uma operação destas é a classe de todos os conjuntos, que é grande demais. {\sl Operações mais ``puras'' têm propriedades melhores.} Boa parte dos artigos de Teoria de Categorias tem uma idéia subjacente bem parecida com esta. Vou pegar um exemplo concreto: \cite{SmithGalois} (que na verdade ``não é um artigo'', porque só pega uma idéia de \cite{LawvereThesis} e torna-a mais clara). Mostra-se que conexões de Galois são um caso particular de uma construção categórica geral bastante elegante, e aí várias propriedades que costumavam ser provadas uma a uma passam a ser óbvias; ao invés de provarmos algo difícil mostramos que algo que era relativamente difícil quando visto sob o ponto de vista certo é trivial --- mas, para tornar o artigo aceitável também para pessoas que vêem a Matemática como uma acumulação de verdades, prova-se também algo novo, ligeiramente surpreendente. Mas o {\sl verdadeiro} tema central não é obter novas verdades, e sim {\sl fazer as antigas caberem em menos espaço mental}. \msk Repare que da mesma forma que distinguimos termos ``puros'' dos demais podemos distinguir operações que são funtoriais, que só envolvem passos construtivos, etc... também podemos dar preferência às operações e demonstrações que têm esqueletos sintáticos, ou cujos esqueletos sintáticos têm boas representações por diagramas. % -------------------- % «resultados-curto» (to ".resultados-curto") % (sec "Resultados esperados a curto prazo" "resultados-curto") \mysection {Resultados esperados a curto prazo} {resultados-curto} Acredito que vá ser possível terminar todos os itens abaixo em poucos meses a partir do início ``oficial'' do projeto. Cada uma das ``traduções'' que menciono abaixo corresponde a não só uma apresentação do (esqueleto sintático do) assunto numa linguagem próxima da do modelo arquetipal, como também uma série de diagramas comparando a notação do arquétipo com a notação usada no artigo original (como nos slides finais de \cite{OchsUniLog}); ou seja, a tradução não só torna o assunto mais acessível numa apresentação nova como também dá chaves de leitura para os artigos originais. \begin{itemize} \item A tradução dos últimos teoremas de \cite{LawvereEqHyp} --- um dos primeiros artigos sobre hiperdoutrinas, escrito por um dos fundadores de Teoria de Topos --- e comparações com a notação correspondente em \cite{Jacobs} e \cite{SeelyBeck}. \item Uma implementação do Lema de Yoneda --- tanto do seu esqueleto sintático quanto do teorema inteiro --- em Coq (\cite{BertotCasteran}), usando a notação diagramática de \cite{OchsUniLog} para os nomes dos objetos. Isto deve esclarecer muitos detalhes sobre como a projeção e o levantamento entre o mundo real e o mundo sintático devem funcionar. \item A tradução de vários capítulos de \cite{CWM} e \cite{Awodey}. \item A tradução do teorema principal de \cite{Kock77}, sobre como fazer cálculo diferencial numa categoria com um ``ring object of line type'', que se comporta como os reais em certos aspectos, mas que tem ``suficientes infinitesimais nilpotentes''. Em $\R \in \Set$ não temos infinitesimais nilpotentes; a culpa é do terceiro excluído, e os bons universos com infinitesimais nilpotentes são toposes não-booleanos (\cite{BellSIA}, \cite{MoeRey}). \item A tradução do capítulo sobre ``first order dependent type theory'' em \cite{Jacobs}. Como o axioma do classificador de subobjetos num topos perde o sentido quando projetado no mundo sintático é melhor começar por aqui antes de tentar chegar ao esqueleto sintático de Teoria de Toposes. \item Uma introdução a Teoria de Categorias e Toposes para não-especialistas, que possa ser apresentada como minicurso curto (até como ``tutorial'' em congressos). A idéia do ``mundo sintático'' permite que evitemos quase todas as tecnicalidades e nos foquemos nas construções e em exemplos simples --- por exemplo, é fácil ver que $\Set^\bbV$, onde $\bbV$ é um certo DAG pequeno, é um topos não-booleano, e não é difícil mostrar como reinterpretar construções e provas de $\Set$ em $\Set^\bbV$ (através da ``linguagem interna'' de um topos). {\sl Obs:} um assunto preliminar \'e como interpretar $ð$-cálculo em uma categoria cartesiana fechada, e isto já está quase feito em \cite{OchsUniLog}. \end{itemize} % -------------------- % «resultados-medio» (to ".resultados-medio") % (sec "Resultados esperados a médio prazo" "resultados-medio") \mysection {Resultados esperados a médio prazo} {resultados-medio} Depois de terminar os resultados acima devo poder terminar vários resultados nos quais eu comecei a trabalhar há anos, mas que para poder publicá-los preciso entender bem certas técnicas de teoria de categorias que ainda são meio incompreensíveis pra mim: (1) caracterizar quais demonstrações em análise não-standard continuam valendo quando passamos de uma ultrapotência para uma ``filtro-potência''; (2) boa parte da parte da teoria (básica) de toposes que envolve feixes e morfismos geométricos pode ser ``levantada'' a partir de demonstrações que aparentemente acontecem no ``caso arquetipal'', que são toposes da forma $\Set^\bbD$, onde $\bbD$ \'e um DAG pequeno. Vou dar os detalhes --- com figuras --- na apresentação oral do projeto. % (find-angg "LATEX/2007dnc-sets.tex") % (find-LATEX "2009-planodetrabalho.tex") % (find-LATEX "catsem.bib" "test") % (find-LATEX "filters.bib") % (find-zsh "makebbl 2009-planodetrabalho.bbl catsem,filters") % (find-es "tex" "makebbl") % \bibliographystyle{alpha} \bibliography{catsem,filters} \bibliographystyle{alpha} % \printindex %* \end{document} % Local Variables: % coding: raw-text-unix % ee-anchor-format: "«%s»" % End: