Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
% (find-LATEX "2020tallinn-abstract.tex") % (find-LATEX "2020tallinn-abstract.bib") % (defun c () (interactive) (find-LATEXsh "lualatex -record 2020tallinn-abstract.tex" :end)) % (defun c () (interactive) (find-LATEXsh "pdflatex -record 2020tallinn-abstract.tex" :end)) % (defun d () (interactive) (find-pdf-page "~/LATEX/2020tallinn-abstract.pdf")) % (defun d () (interactive) (find-pdftools-page "~/LATEX/2020tallinn-abstract.pdf")) % (defun e () (interactive) (find-LATEX "2020tallinn-abstract.tex")) % (defun u () (interactive) (find-latex-upload-links "2020tallinn-abstract")) % % (find-LATEXsh "./dednat6load.lua -4 2020tallinn-abstract.tex") % (find-LATEXfile "2020tallinn-abstract.dnt") % % (find-pdf-page "~/LATEX/2020tallinn-abstract.pdf") % (find-sh0 "cp -v ~/LATEX/2020tallinn-abstract.pdf /tmp/") % (find-sh0 "cp -v ~/LATEX/2020tallinn-abstract.pdf /tmp/pen/") % file:///home/edrx/LATEX/2020tallinn-abstract.pdf % file:///tmp/2020tallinn-abstract.pdf % file:///tmp/pen/2020tallinn-abstract.pdf % http://angg.twu.net/LATEX/2020tallinn-abstract.pdf % (find-LATEX "2019.mk") % «.links» (to "links") % «.title» (to "title") % «.first-diagrams» (to "first-diagrams") % «.make» (to "make") %\documentclass[oneside]{article} \documentclass[runningheads]{llncs} % (find-es "tex" "llncs") \usepackage[colorlinks,urlcolor=DarkRed,citecolor=DarkRed]{hyperref} % (find-es "tex" "hyperref") \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} %\usepackage{pict2e} \usepackage[x11names,svgnames]{xcolor} % (find-es "tex" "xcolor") \usepackage{colorweb} % (find-es "tex" "colorweb") %\usepackage{tikz} % % (find-dn6 "preamble6.lua" "preamble0") \usepackage{proof} % For derivation trees ("%:" lines) \input diagxy % For 2D diagrams ("%D" lines) \xyoption{curve} % For the ".curve=" feature in 2D diagrams % \usepackage{edrx15} % (find-LATEX "edrx15.sty") %\input edrxaccents.tex % (find-LATEX "edrxaccents.tex") %\input edrxchars.tex % (find-LATEX "edrxchars.tex") %\input edrxheadfoot.tex % (find-LATEX "edrxheadfoot.tex") % \input 2019oxford-chars.tex % (find-LATEX "2019oxford-chars.tex") \input 2020tallinn-abstract.dnt % (find-LATEX "2020tallinn-abstract.dnt") % \begin{document} \def\directlua#1{} \def\pu{} %\catcode`\^^J=10 %\directlua{dofile "dednat6load.lua"} % (find-LATEX "dednat6load.lua") \def\resizediag#1#2#3{\resizebox{#1}{#2}{$\diag{#3}$}} \def\squigbijy{-2.8} % (find-LATEX "2017planar-has-defs.tex" "squigbijtest") % «links» (to ".links") % http://www.diagrams-conference.org/2020/ % http://www.diagrams-conference.org/2020/index.php/calls/main-track/ % https://mail.google.com/mail/ca/u/0/#inbox/FMfcgxwGDDtFBVZprxqvvXQsPljWfkld % (find-es "tex" "llncs") % _____ _ _ _ % |_ _(_) |_| | ___ % | | | | __| |/ _ \ % | | | | |_| | __/ % |_| |_|\__|_|\___| % % «title» (to ".title") % (find-LATEX "2019oxford-abs.tex" "title") \title{What kinds of knowledge do we gain by doing Category Theory in several levels of abstraction in parallel?} \titlerunning{What kinds of knowledge do we gain by...?} % (find-es "tex" "llncs") % (find-es "arxiv" "orcid") % (find-llncsfile "samplepaper.tex" "\\author") %\author{Eduardo Ochs\inst{1}\orcidID{0000-0003-3854-9181}} \author{Eduardo Ochs\orcidID{0000-0003-3854-9181}} % \authorrunning{E. Ochs} % \institute{Universidade Federal Fluminense, Rio das Ostras, RJ, Brazil \\ \email{eduardoochs@gmail.com}\\ \url{http://angg.twu.net/math-b.html}} \maketitle Category Theory gives the impression of being an area where most concepts and arguments are stated and formalized via diagrams, but this is not exactly true... in most texts almost everything is done algebraically, and the reader is expected to be able to reconstruct the ``missing diagrams'' by himself. I used to believe, as an outsider, that some people who grew up immersed the oral culture of the area would know several techniques for ``drawing the missing diagrams''. My main intent when I organized the workshop ``Logic for Children'' at the UniLog 2018 \cite{OchsLucatelli} was to collect some of these folklore techniques, compare them with the ones that I had developed myself to study CT, and formalize them all --- but what I found instead was that everybody that I could get in touch with used their own ad-hoc techniques, and that what I was trying to do was either totally new to them, or at least new in its level of detail. One way to make concepts of Category Theory totally formal is to implement them on proof assistants. For example, the diagram below % (find-books "__cats/__cats.el" "riehl") % (find-riehlccpage (+ 18 57) "Theorem 2.2.4 (Yoneda lemma).") % (find-riehlcctext (+ 18 57) "Theorem 2.2.4 (Yoneda lemma).") % % In a type system % (find-math-b-links "notes-yoneda" "2019notes-yoneda") % (nyop 7 "first-yoneda-diagram") % (nyo "first-yoneda-diagram") % %D diagram yoneda-R-5+ %D 2Dx 100 +40 %D 2D 100 A %D 2D | %D 2D v %D 2D +25 C |-> RC %D 2D %D 2D +20 F1 -> F2 %D 2D | %D 2D v %D 2D +25 F3 %D 2D %D ren F1 F2 F3 ==> (C{→}\_) (A{→}R\_) \phantom{R} %D %D (( C RC |-> A RC -> .plabel= r γ %D F1 F2 -> .plabel= b T %D F3 place %D F1 F2 midpoint A RC midpoint <-> .curve= ^14pt %D )) %D enddiagram % \pu $$\cdiag{yoneda-R-5+} \qquad \begin{array}[c]{l} A∈\catA \\ C∈\catC \\ R:\catA→\catC \\ γ:A→RC \\[5pt] % (C{→}\_): \catC→\Set \\ (C{→}\_)_0(D) = \Hom_\catC(C,D) \\ (C{→}\_)_1(h) = λg.(g;h) \\[5pt] % (A{→}R\_): \catC→\Set \\ (A{→}R\_)_0(D) = \Hom_\catA(A,RD) \\ (A{→}R\_)_1(h) = λδ.(δ;Rh) \\[5pt] % T: (C{→}\_) → (A{→}R\_) \\[5pt] T_0(D) := λg.(γ;Rg) \\ γ := TC(\id_C) \\ \end{array} $$ % ``is'' the Yoneda Lemma, as in \cite{Riehl}, Theorem 2.2.4, but in a slightly more general form and in a different notation: ours is $\Hom(\Hom(C,-),\Hom(A,R-)) ≅ \Hom(A,RC)$; the details are in \cite{OchsNotesOnYoneda}, and an implementation of it in Idris is underway. If we erase the left half of the diagram above we get a ``skeleton'' for the Yoneda Lemma, in the sense of \cite{OchsIDARCT}, Sections 1 and 12: the full diagram including the right half can be reconstructed from its left half with very few extra clues. % (find-angg ".emacs" "idarct-preprint") % (find-idarctpage 1 "1. Mental Space and Diagrams") % (find-idarcttext 1 "1. Mental Space and Diagrams") % (find-idarctpage 15 "12. Skeletons of proofs") % (find-idarcttext 15 "12. Skeletons of proofs") % (find-idarctpage 27 "19. The syntactical world") % (find-idarcttext 27 "19. The syntactical world") Let's say that a diagram is ``formal enough'' when its formalization on a type system or on a proof assistant is very easy to obtain, as in the example above --- or at least if it is easy to formalize it in a type system if we work only in its ``syntactical part'', as discussed in Sections 12 and 19 of \cite{OchsIDARCT}. All the diagrams that I am going to present in this talk are ``formal enough'' in this sense. Now look at the figure below: % (oxap 4 "fig:internal-1") % (oxa "fig:internal-1") % «internal-external» (to ".internal-external") % (ph1p 4 "internal-external") % (ph1 "internal-external") \def\ooo (#1,#2){\begin{picture}(0,0)\put(0,0){\oval(#1,#2)}\end{picture}} \def\oooo(#1,#2){{\setlength{\unitlength}{1ex}\ooo(#1,#2)}} % %D diagram second-blob-function %D 2Dx 100 +20 +20 %D 2D 100 a-1 |--> b-1 %D 2D +08 a0 |--> b0 %D 2D +08 a1 |--> b1 %D 2D +08 a2 |--> b2 %D 2D +08 a3 |--> b3 %D 2D +08 a4 |--> b4 %D 2D +14 a5 |--> b5 %D 2D +25 \N ---> \R %D 2D %D ren a-1 a0 a1 a2 a3 a4 a5 ==> -1 0 1 2 3 4 n %D ren b-1 b0 b1 b2 b3 b4 b5 ==> -1 0 1 \sqrt{2} \sqrt{3} 2 \sqrt{n} %D (( a0 a5 midpoint .TeX= \oooo(7,23) y+= -2 place %D b-1 b5 midpoint .TeX= \oooo(7,25) y+= -2 place %D b-1 place %D a0 b0 |-> %D a1 b1 |-> %D a2 b2 |-> %D a3 b3 |-> %D a4 b4 |-> %D a5 b5 |-> %D \N \R -> .plabel= a \sqrt{\phantom{a}} %D a-1 relplace -7 -7 \phantom{foo} %D b5 relplace 7 7 \phantom{bar} %D )) %D enddiagram %D %D diagram generic-adjunction %D 2Dx 100 +30 +35 +25 %D 2D 100 LA <-| A %D 2D | | %D 2D v v %D 2D +30 G LB <-| B I %D 2D | | | | %D 2D v v v v %D 2D +30 H C |--> RC J %D 2D | | %D 2D v v %D 2D +30 D |--> RD %D 2D %D 2D +20 E <==> F %D 2D %D ren LA A ==> LA' A' %D ren LB B ==> LA A %D ren C RC ==> B RB %D ren D RD ==> B' RB' %D ren E F ==> \catB \catA %D ren G H ==> LRB B %D ren I J ==> A RLA %D %D (( LA A <-| .plabel= a L_0 %D LB B <-| .plabel= a L_0 %D C RC |-> .plabel= b R_0 %D D RD |-> .plabel= b R_0 %D %D LA B harrownodes nil 20 nil <-| sl^ .plabel= a L_1 %D LB RC harrownodes nil 20 nil <-| sl^ .plabel= a ♭ %D LB RC harrownodes nil 20 nil |-> sl_ .plabel= b ♯ %D C RD harrownodes nil 20 nil |-> sl^ .plabel= b R_1 %D %D LA LB -> .plabel= l Lα %D A B -> .plabel= r α %D LB C -> .plabel= l \sm{g^♭\\f} %D B RC -> .plabel= r \sm{g\\f^♯} %D C D -> .plabel= l β %D RC RD -> .plabel= r Rβ %D E F <- sl^ .plabel= a L %D E F -> sl_ .plabel= b R %D G H -> .plabel= l εB %D I J -> .plabel= r ηA %D )) %D enddiagram %D %D diagram (xB)-|(B->) %D 2Dx 100 +45 +35 +40 %D 2D 100 LA <-| A %D 2D | | %D 2D v v %D 2D +30 G LB <-| B I %D 2D | | | | %D 2D v v v v %D 2D +30 H C |--> RC J %D 2D | | %D 2D v v %D 2D +30 D |--> RD %D 2D %D 2D +20 E <==> F %D 2D %D ren LA A ==> A{×}C A %D ren LB B ==> B{×}C B %D ren C RC ==> D (C{→}D) %D ren D RD ==> E (C{→}E) %D ren E F ==> \Set \Set %D ren G H ==> (C{→}D){×C} D %D ren I J ==> B (C→B{×}C) %D ren I J ==> B (C{→}(B{×}C)) %D %D (( LA A <-| # .plabel= a ({×}B)_0 %D LB B <-| # .plabel= a ({×}B)_0 %D C RC |-> # .plabel= b (B{→})_0 %D D RD |-> # .plabel= b (B{→})_0 %D %D LA B harrownodes nil 20 nil <-| sl^ # .plabel= a L_1 %D LB RC harrownodes nil 20 nil <-| sl^ .plabel= a ♭ %D LB RC harrownodes nil 20 nil |-> sl_ .plabel= b ♯ %D C RD harrownodes nil 20 nil |-> sl^ # .plabel= b R_1 %D %D LA LB -> .plabel= l λp.(f(πp),π'p) %D A B -> .plabel= r f %D LB C -> .plabel= l \sm{λp.g(πp)(π'p)\\\phantom{mmmmmm}h} %D B RC -> .plabel= r \sm{g\phantom{mmmmm}\\λb.λc.h(b,c)} %D C D -> .plabel= l k %D RC RD -> .plabel= r λf.λc.k(fc) %D E F <- sl^ .plabel= a ({×}C) %D E F -> sl_ .plabel= b (C{→}) %D G H -> .plabel= l λp.(πp)(π'p) %D I J -> .plabel= r λb.λc.(b,c) %D )) %D enddiagram %D \begin{figure}[!htbp] \pu \centering $\begin{array}{c} \resizediag{!}{!}{second-blob-function} \qquad \resizediag{!}{!}{generic-adjunction} \\ \\ \resizediag{!}{!}{(xB)-|(B->)} \end{array} $ \caption{Three cases of internal views and external views.} \label{fig:internal-external} \end{figure} It is composed of three subdiagrams, that we will call $\sm{AB\\C}$, and each of them is made of {\sl external view} below and an {\sl internal view} above. Diagram $A$ shows, below, the external view of the function $\N \ton{\sqrt{\phantom{a}}} \R$, and above that its internal view --- in which one of the arrows, $n \mapsto \sqrt{n}$, shows the action of $\sqrt{\phantom{a}}$ on a generic element, and the other `$\mto$' arrows, like $3 \mapsto \sqrt{3}$ and $4 \mapsto 2$, show substitution instances of $n \mapsto \sqrt{n}$, maybe after some term reductions. Compare this with, say, \cite{LawvereSchanuel}, \cite{Riehl}, \cite{FongSpivak} --- they use external and internal diagrams but they don't make the distinction between `$\to$' and `$\mapsto$', and this makes their diagrams hard to formalize. Diagram $B$ shows the external view of a (generic) adjunction $L⊣R$, and above it its internal view. The nodes and arrows above $\catB$ are objects and morphisms in $\catB$, and similarly for the nodes and arrows above $\catA$. The `$\mto$' arrows of the internal view are now of three kinds: actions of functors on objects, actions of functors on morphisms, and ``transpositions'' coming from the natural isomorphism $\Hom(L-,-) ↔ \Hom(-,R-)$. Diagram $C$ is essentially the same as $B$, but for a particular adjunction: $({×}B)⊣(B{→})$. Note how the diagrams $B$ and $C$ have exactly the same shape --- but our diagrams for internal views are much bigger than the corresponding external views. In this talk I will present, in a way accessible to non-specialists, how to work with diagrams for generic cases and particular cases in parallel and how to transfer knowledge from the general to the particular {\sl and back} (as in \cite{OchsPH1} and \cite{OchsACT2019}), how to build internal diagrams in slightly harder cases than the example above (i.e., in monads!), and how to do the opposite of the categorists' habit of ``getting rid of the variables'' (as in Part I of \cite{LambekScott}). I know how to show {\sl formally}, using type systems and $λ$-calculus, what kinds of knowledge and intutions we can obtain easily, and almost automatically, by working at the same time in parallel diagrams like: with $λ$-terms/without, general/particular, and external/internal; but I don't know yet how describe these kinds of knowledge and intuitions in terms that are less mathematical and more philosophical, like for example what Ralf Krömer's did in his book \cite{Kromer} and in its slides for his keynote talk in \cite{OchsLucatelli}, available from the web page of the workshop --- and this is one of my main reasons, or excuses, for trying to present these ideas to non-mathematicians. % (find-books "__cats/__cats.el" "lawvere-schanuel") % (find-lawvereconcmathpage (+ 15 13) "internal diagram of a set") % (find-THfile "logic-for-children-2018.blogme" "second-class") % (find-books "__cats/__cats.el" "kromer-slides") % (find-LATEX "2020tallinn-abstract.bib") % (nesp 17 "idris-ct") % (nes "idris-ct") % _____ _ _ _ _ % | ___(_)_ __ ___| |_ __| (_) __ _ __ _ _ __ __ _ _ __ ___ ___ % | |_ | | '__/ __| __| / _` | |/ _` |/ _` | '__/ _` | '_ ` _ \/ __| % | _| | | | \__ \ |_ | (_| | | (_| | (_| | | | (_| | | | | | \__ \ % |_| |_|_| |___/\__| \__,_|_|\__,_|\__, |_| \__,_|_| |_| |_|___/ % |___/ % % «first-diagrams» (to ".first-diagrams") % (find-LATEX "2017planar-has-1.tex" "internal-external") % (find-books "__cats/__cats.el" "lawvere-rosebrugh") % (find-lawveresetsmathpage (+ 15 2) "internal diagram") % internal/external % generic/particular % with lambda-terms/without % proto/non-proto % parallel diags to change notation % internded semantics % The series of papers \cite{OchsPH1}, \cite{OchsPH2}, and % \cite{OchsACT2019} --- where \cite{OchsACT2019} can % Make obsolete notations more accessible % Formalize categorical ideas (in two levels) % (find-math-b-links "2019-newton" "2019newton-slides") % Translation (in two steps - Kan extensions) % (jopp 30 "kan-extensions") % (jop "kan-extensions") % (find-books "__cats/__cats.el" "riehl") % (find-riehlccpage (+ 18 57) "Theorem 2.2.4 (Yoneda lemma).") % (find-riehlcctext (+ 18 57) "Theorem 2.2.4 (Yoneda lemma).") % Monads: % (nmop 4) % (nmo) % (find-books "__cats/__cats.el" "macdonald-sobral") % (find-LATEXgrep "grep --color -nH --null -e second *.tex | grep -a class") % (find-LATEXfile "2017vichy-workshop.tex" "second-class entities") \bibliographystyle{splncs04} \bibliography{2020tallinn-abstract} % (find-LATEX "2020tallinn-abstract.bib") % (find-es "tex" "bibtex-2017") % (find-kopkadaly4page (+ 12 310) "\\bibliographystyle{style}") % (find-kopkadaly4text (+ 12 310) "\\bibliographystyle{style}") % \newpage % \printbibliography \end{document} % __ __ _ % | \/ | __ _| | _____ % | |\/| |/ _` | |/ / _ \ % | | | | (_| | < __/ % |_| |_|\__,_|_|\_\___| % % «make» (to ".make") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-LATEXfile "2019.mk") make -f 2019.mk STEM=2020tallinn-abstract veryclean lualatex 2020tallinn-abstract bibtex 2020tallinn-abstract lualatex 2020tallinn-abstract lualatex 2020tallinn-abstract * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) make -f 2019.mk STEM=2020tallinn-abstract veryclean ./dednat6load.lua -4 2020tallinn-abstract.tex pdflatex 2020tallinn-abstract bibtex 2020tallinn-abstract pdflatex 2020tallinn-abstract pdflatex -record 2020tallinn-abstract # (find-kopkadaly4page (+ 12 219) "9.3.2 Bibliography with BIBTEX") # (find-kopkadaly4text (+ 12 219) "9.3.2 Bibliography with BIBTEX") # (find-LATEXfile "" "2020tallinn-abstract") # (find-LATEXfile "2020tallinn-abstract.bib") # (find-LATEXfile "2020tallinn-abstract.bbl") # (find-es "tex" "bibtex-test") # (taap) # (find-latex-upload-links "2020tallinn-abstract") \end{document} % Local Variables: % coding: utf-8-unix % ee-tla: "taa" % End: