Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
% (find-LATEX "2022on-the-missing.tex")
% (defun c () (interactive) (find-LATEXsh "lualatex -record 2022on-the-missing.tex" :end))
% (defun C () (interactive) (find-LATEXSH "lualatex 2022on-the-missing.tex" "Success!!!"))
% (defun D () (interactive) (find-pdf-page      "~/LATEX/2022on-the-missing.pdf"))
% (defun d () (interactive) (find-pdftools-page "~/LATEX/2022on-the-missing.pdf"))
% (defun e () (interactive) (find-LATEX "2022on-the-missing.tex"))
% (defun u () (interactive) (find-latex-upload-links "2022on-the-missing"))
% (defun v () (interactive) (find-2a '(e) '(d)))
% (defun cv () (interactive) (C) (ee-kill-this-buffer) (v) (g))
% (defun d0 () (interactive) (find-ebuffer "2022on-the-missing.pdf"))
%          (code-eec-LATEX "2022on-the-missing")
% (find-pdf-page   "~/LATEX/2022on-the-missing.pdf")
% (find-pdf-text   "~/LATEX/2022on-the-missing.pdf")
% (find-sh0 "cp -v  ~/LATEX/2022on-the-missing.pdf /tmp/")
% (find-sh0 "cp -v  ~/LATEX/2022on-the-missing.pdf /tmp/pen/")
%   file:///home/edrx/LATEX/2022on-the-missing.pdf
%               file:///tmp/2022on-the-missing.pdf
%           file:///tmp/pen/2022on-the-missing.pdf
% http://anggtwu.net/LATEX/2022on-the-missing.pdf
% (find-LATEX "2019.mk")
% (find-lualatex-links     "2022on-the-missing")
% (find-math-b-links "md"  "2022on-the-missing")

% (find-efunctionpp 'ce)
% (find-efunctionpp 'cv)


% «.ifluatex-0»			(to "ifluatex-0")
% «.ifluatex-1»			(to "ifluatex-1")
%
% «.defs»			(to "defs")
% «.defs-slowdiag»		(to "defs-slowdiag")
% «.title»			(to "title")
% «.abstract»			(to "abstract")
% «.toc»			(to "toc")
%
% «.introduction»		(to "introduction")
%   «.introduction-es»		(to "introduction-es")
%   «.introduction-idarct»	(to "introduction-idarct")
%   «.introduction-la»		(to "introduction-la")
%   «.introduction-ol»		(to "introduction-ol")
%   «.introduction-ol2»		(to "introduction-ol2")
%   «.introduction-act2019»	(to "introduction-act2019")
%   «.introduction-tal»		(to "introduction-tal")
% «.the-conventions»		(to "the-conventions")
% «.to-deserve-a-name»		(to "to-deserve-a-name")
% «.freyd»			(to "freyd")
%   «.freyd-notation»		(to "freyd-notation")
%   «.freyd-with-quantifiers»	(to "freyd-with-quantifiers")
%   «.freyd-with-functors»	(to "freyd-with-functors")
% «.internal-views»		(to "internal-views")
%   «.reductions»		(to "reductions")
%   «.internal-view-functor»	(to "internal-view-functor")
%   «.internal-view-NT»		(to "internal-view-NT")
%   «.internal-view-adjunction»	(to "internal-view-adjunction")
%   «.teaching-adjunctions»	(to "teaching-adjunctions")
% «.types-for-children»		(to "types-for-children")
%   «.dependent-types»		(to "dependent-types")
%   «.witnesses»		(to "witnesses")
%   «.judgments»		(to "judgments")
%   «.comprehensions»		(to "comprehensions")
%   «.omitting-types»		(to "omitting-types")
%   «.indefinite-articles»	(to "indefinite-articles")
%   «.phys-not»			(to "phys-not")
% «.basic-example-as-skel»	(to "basic-example-as-skel")
%   «.basic-example-functors»	(to "basic-example-functors")
%   «.basic-example-NTs»	(to "basic-example-NTs")
%   «.basic-example-NT»		(to "basic-example-NT")
%   «.basic-example-bij»	(to "basic-example-bij")
%   «.basic-example-full»	(to "basic-example-full")
% «.extensions»			(to "extensions")
%   «.comma-categories»		(to "comma-categories")
%   «.ness»			(to "ness")
%   «.yoneda-lemma»		(to "yoneda-lemma")
%   «.representable-functors»	(to "representable-functors")
%   «.yoneda-embedding»		(to "yoneda-embedding")
%   «.opposite-categories»	(to "opposite-categories")
%   «.representable-functors»	(to "representable-functors")
%   «.representable-functor-ex»	(to "representable-functor-ex")
%   «.2-category-of-cats»	(to "2-category-of-cats")
%   «.kan-extensions»		(to "kan-extensions")
%   «.all-concepts»		(to "all-concepts")
%   «.kan-formula»		(to "kan-formula")
%   «.functors-as-objects»	(to "functors-as-objects")
%   «.gms-for-children»		(to "gms-for-children")
%   «.reading-the-elephant»	(to "reading-the-elephant")
% «.how-to-name-this-language»	(to "how-to-name-this-language")
% «.why-my-conventions»		(to "why-my-conventions")
% «.related-and-unrelated»	(to "related-and-unrelated")
% «.references»			(to "references")
% «.ifluatex-2»			(to "ifluatex-2")
%
% «.save-body»			(to "save-body")
% «.extract-cites»		(to "extract-cites")
% «.TODO»			(to "TODO")
% «.make-arxiv»			(to "make-arxiv")
% «.make»			(to "make")



\documentclass[oneside,12pt]{article}
\usepackage[colorlinks,
            %linkcolor=DarkRed,
            citecolor=DarkRed,
            urlcolor=DarkRed]{hyperref} % (find-es "tex" "hyperref")
\usepackage{tocloft}                    % (find-es "tex" "tocloft")
\usepackage{indentfirst}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pict2e}
\usepackage{stmaryrd}
\usepackage{bm}                        % (find-es "tex" "bm")
\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
%
% «ifluatex-0»  (to ".ifluatex-0")
% (find-dednat6file "demo-write-dnt.tex")
\usepackage{ifluatex}             %
\ifluatex                         %
  \input edrxaccents.tex          % (find-LATEX "edrxaccents.tex")
  \input edrx21chars.tex          % (find-LATEX "edrx21chars.tex")
  \input edrxheadfoot.tex         % (find-LATEX "edrxheadfoot.tex")
\else                             %
  \usepackage[utf8]{inputenc}     %
  \input edrx21chars-d.tex        % (find-LATEX "edrx21chars-d.tex")
\fi                               %
\usepackage{edrx21}               % (find-LATEX "edrx21.sty")
%
%
\usepackage[backend=biber,
   style=alphabetic]{biblatex}    % (find-es "tex" "biber")
\addbibresource{catsem-ab.bib}    % (find-LATEX "catsem-ab.bib")
%
% (find-es "tex" "geometry")
\begin{document}

% «ifluatex-1»  (to ".ifluatex-1")
\ifluatex
  \catcode`\^^J=10
  \directlua{dofile "dednat6load.lua"}
\else
  \input\jobname.dnt   % (find-LATEXfile "2022on-the-missing.dnt")
  \def\pu{}
\fi



% «defs»  (to ".defs")
% (find-es "tex" "co")
% \co: a low-level way to typeset code; a poor man's "\verb"
\def\co#1{{%
  \def\%{\char37}%
  \def\\{\char92}%
  \def\^{\char94}%
  \def\~{\char126}%
  \tt#1%
  }}
\def\qco#1{`\co{#1}'}
\def\qqco#1{``\co{#1}''}

\def\ph{\phantom}

\def\respcomp{\mathsf{respcomp}}
\def\respids {\mathsf{respids}}
\def\sqcond  {\mathsf{sqcond}}
\def\assoc   {\mathsf{assoc}}
\def\idL     {\mathsf{idL}}
\def\idR     {\mathsf{idR}}
\def\univ    {\mathsf{univ}}
\def\Ran     {\mathsf{Ran}}

\def\sfC  {\mathsf{C}}
\def\sfSet{\mathsf{Set}}
\def\Ring {\mathbf{Ring}}
\def\nameof#1{\ulcorner#1\urcorner}
\def\catK {\mathbf{K}}
\def\Dn   {\Downarrow}

\def\veq{\rotatebox{90}{$=$}}
\def\liml{\underleftarrow {\lim}{}}
\def\limr{\underrightarrow{\lim}{}}
\def\veq{\rotatebox{90}{$=$}}

\def\Yzero    {\mathsf{Y0}}
\def\Yzeroplus{\mathsf{Y0^+}}
\def\Yone     {\mathsf{Y1}}
\def\Ytwo     {\mathsf{Y2}}
\def\Ythree   {\mathsf{Y3}}
\def\Yfour    {\mathsf{Y4}}
\def\Yfive    {\mathsf{Y5}}

\def\origphi{\phi}

\def\AProofOf   #1{\llangle#1\rrangle}
\def\AllProofsOf#1{\llbracket#1\rrbracket}

\def\DONE{(DONE)}
\def\DONE{}

% «defs-slowdiag»  (to ".defs-slowdiag")
% (to "make")
\def\slowdiag#1{\standout{#1}}
\def\slowdiag#1{\diag{#1}}

% (defun s () (interactive) (insert "\\standout{}"))




%  _____ _ _   _      
% |_   _(_) |_| | ___ 
%   | | | | __| |/ _ \
%   | | | | |_| |  __/
%   |_| |_|\__|_|\___|
%                     
% «title»  (to ".title")
% (misp 1 "title")
% (misa   "title")

\title{On the the missing diagrams \\ in Category Theory \\ (first-person version)}

\author{%
  Eduardo Ochs%
  %{\large Eduardo Ochs}%
  \thanks{eduardoochs@gmail.com}\\
  %{\small UFF, Rio das Ostras, RJ, Brasil}\\
  }

\maketitle

% «abstract»  (to ".abstract")
% Orig: (favp 1 "abstract")
%       (fava   "abstract")

\begin{abstract}

  Most texts on Category Theory are written in a very terse style, in
  which people pretend a) that all concepts are visualizable, and b)
  that the readers can reconstruct the diagrams that the authors had
  in mind based on only the most essential cues. As an outsider I
  spent years believing that the techniques for drawing diagrams were
  part of the oral culture of the field, and that the insiders could
  read texts on CT reconstructing the ``missing diagrams'' in them
  line by line and paragraph by paragraph, and drawing for each page
  of text a page of diagrams with all the diagrams that the authors
  had omitted. My belief was wrong: there are lots of conventions for
  drawing diagrams scattered through the literature, but that unified
  diagrammatic language did not exist. In this chapter I will show an
  attempt to reconstruct that (imaginary) language for missing
  diagrams: we will see an extensible diagrammatic language, called
  DL, that follows the conventions of the diagrams in the literature
  of CT whenever possible and that seems to be adequate for drawing
  ``missing diagrams'' for Category Theory. Our examples include the
  ``missing diagrams'' for adjunctions, for the Yoneda Lemma, for Kan
  extensions, and for geometric morphisms, and how to formalize them
  in Agda.

  % Deleted in 2022mar09:
  % 
  %   % I used to believe that my conventions for drawing diagrams for
  %   % categorical statements could be written down in one page or less,
  %   % and that the only tricky part was a certain technique for
  %   % reconstructing objects ``from their names''... but then I found out
  %   % that this is not so.
  % 
  %   Most texts on Category Theory are written in a very terse style, in
  %   which people pretend a) that all concepts are visualizable, and b)
  %   that the readers can reconstruct the diagrams that the authors had
  %   in mind based on only the most essential cues. As an outsider I
  %   spent years believing that the techniques for drawing diagrams were
  %   part of the oral culture of the field, and that the insiders could
  %   read texts on CT reconstructing the ``missing diagrams'' in them
  %   line by line and paragraph by paragraph, and drawing for each page
  %   of text a page of diagrams with all the diagrams that the authors
  %   had omitted.
  % 
  %   A classical text on the formalization of Mathematics
  %   (\cite{VanBenthemJutting77}) has this sentence: ``An aspect which
  %   has not been mentioned so far is the ratio between the length of
  %   pieces of AUT-QE text and the length of the corresponding German
  %   texts. Our claim at the outset was that this ratio can be kept
  %   constant''. This may be true for Category Theory too --- each page
  %   of text would correspond to one page of missing diagrams, at least
  %   for {\sl some} parts of {\sl some} textbooks, with the right choice
  %   of font, the right conventions for drawing diagrams, and the right
  %   way to omit the ``obvious'' details.
  % 
  %   In this chapter we will show an extensible diagrammatic language
  %   that seems to be adequate for drawing ``missing diagrams'' for CT.
  % 
  %   % \standout{Explain:} diagrammatic language, conventions, folklore,
  %   % level of detail, omitting the ``obvious'' parts.
  % 
  %   % (find-books "__logic/__logic.el" "automath")
  %   % (find-LATEX "catsem-ab.bib" "bib-VanBenthemJutting77")
  % 
  %   % This is an attempt to explain, with motivations and examples, all
  %   % the conventions behind a certain diagram, called the ``Basic
  %   % Example'' in the text. Once the conventions are understood that
  %   % diagram becomes a ``skeleton'' for a certain lemma related to the
  %   % Yoneda Lemma, in the sense that both the statement and the proof of
  %   % that lemma can be reconstructed from the diagram. The last sections
  %   % discuss some simple ways to extend the conventions; we see how to
  %   % express in diagrams the (``real'') Yoneda Lemma and a corollary of
  %   % it, how to define comma categories,
  %   % %
  %   % % how to define certain limits using comma categories,
  %   % % 
  %   % and how to formalize the diagram for ``geometric morphism for
  %   % children'' mentioned in sec.\ref{missing-diagrams}.
  % 
  %   % \msk
  % 
  %   % People in CT usually only share their ways of visualizing things
  %   % when their diagrams cross some threshold of mathematical relevance
  %   % --- and this usually happens when they prove new theorems with their
  %   % diagrams, or when they can show that their diagrams can translate
  %   % calculations that used to be huge into things that are much easier
  %   % to visualize. The diagrammatic language that I present here lies
  %   % below that threshold --- and so it is a ``private'' diagrammatic
  %   % language, that I am making public as an attempt to establish a
  %   % dialogue with other people who have also created their own private
  %   % diagrammatic languages.

\end{abstract}


\newpage

%  _____ ___   ____ 
% |_   _/ _ \ / ___|
%   | || | | | |    
%   | || |_| | |___ 
%   |_| \___/ \____|
%                   
% «toc»  (to ".toc")
% Orig: (favp 2 "toc")
%       (fava   "toc")
%  sec:

% (find-es "tex" "tocloft")
\renewcommand{\cfttoctitlefont}{\bfseries}
\setlength{\cftbeforesecskip}{2.5pt}

\tableofcontents

% beginning of body




%  ___       _                 _            _   _             
% |_ _|_ __ | |_ _ __ ___   __| |_   _  ___| |_(_) ___  _ __  
%  | || '_ \| __| '__/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ 
%  | || | | | |_| | | (_) | (_| | |_| | (__| |_| | (_) | | | |
% |___|_| |_|\__|_|  \___/ \__,_|\__,_|\___|\__|_|\___/|_| |_|
%                                                             
% «introduction»  (to ".introduction")
% (misp 3 "introduction")
% (misa   "introduction")
% Orig: (favp 3 "missing-diagrams")
%       (fava   "missing-diagrams")
%  sec:

\section{Introduction}
\label{missing-diagrams}
\label{introduction}


One of the main themes of this text is a diagrammatic language ---
let's call it DL --- that can be used to draw ``missing diagrams'' for
Category Theory. DL is a {\sl reconstructed language}, and it's easier
to explain it if I explain how it was reconstructed, and which of its
conventions were improvised. It is easier to do it in the first
person.

Suppose that your native language is $A$ and you are learning a
language $B$ by a method that includes conversation classes. You will
have to improvise a lot, but you will usually get feedback quickly.
Now suppose that you are studying a language $C$ --- for example,
Aeolic Greek (\cite{CarsonSappho}) --- mostly by yourself, and the
corpus of texts in $C$ is small. A good exercise is to try to write
your thoughts in $C$, using loanwords and improvised syntactical
constructs when needed, but marking mentally the places in which you
had to improvise. In most cases, but not all, you will eventually find
ways to rewrite those parts to make them look more like $C$.

The conventions of DL are explained in sec.\ref{the-conventions}. A
few of them don't correspond to anything that I could find in the
literature; they are listed at the end of that section.

\msk

{\bf This text has two versions.} The title of this one is ``On the
missing diagrams in Category Theory (first-person version)'', and the
title of the other is just ``On the missing diagrams in Category
Theory''; they (will) have the same technical content, but different
styles. Here's how this happened. Two of the editors of the ``Handbook
of Abductive Cognition'' --- Gianluca Caterina and Rocco Gangle ---
asked me if I could rewrite my notes in \cite{FavC} and submit the
rewritten version as a chapter for the Handbook. I did that, and I
wrote this version, that uses the first person a lot --- for example
to tell stories, and to explain why the current version of DL has a
certain convention, that replaces another, older, convention, that
didn't work very well. Then the other editors asked me of I could
prepare another version that would follow the editorial guidelines
more closely, including the part that says to avoid the first person.
At this moment (april/2022) the ``non-first-person version'' is not
ready yet; the ``first-person version'' will probably be more fun to
read.

\bsk

The best way to introduce DL is to tell the full story of how it
evolved from a long sequence of wrong assumptions and from some
``thoughts that I wanted to express in DL''.

% (sec.\ref{related-and-unrelated}).

% «introduction-es»  (to ".introduction-es")

Let me start with some quotes. This one is from Eilenberg and Steenrod
(\cite[p.ix]{EilenbergSteenrod}, but I learned it from
\cite[pp.82--83]{Kromer}):

\begin{quotation}

  The diagrams incorporate a large amount of information. Their use
  provides extensive savings in space and in mental effort. In the
  case of many theorems, the setting up of the correct diagram is the
  major part of the proof. We therefore urge that the reader stop at
  the end of each theorem and attempt to construct for himself the
  relevant diagram before examining the one which is given in the
  text. Once this is done, the subsequent demonstration can be
  followed more readily; in fact, the reader can usually supply it
  himself.

\end{quotation}

I spent a {\sl lot} of my time studying Category Theory trying to
``supply the diagrams myself''. In \cite{EilenbergSteenrod} supplying
the diagrams is not very hard (I guess), but in books like
\cite{CWM2}, in which most important concepts involve several
categories, I had to rearrange my diagrams hundreds of times until I
reached ``good'' diagrams...

% (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 23 "16. Archetypal Models")
% (find-idarcttext 23 "16. Archetypal Models")

% «introduction-idarct»  (to ".introduction-idarct")

The problem is that I expected too much from ``good'' diagrams. The
next quotes are from the sections 1 and 12 of an article that I wrote
about that (\cite{IDARCT}):

\begin{quotation}

  My memory is limited, and not very dependable: I often have to
  rededuce results to be sure of them, and I have to make them fit in
  as little ``mental space'' as possible...

  Different people have different measures for ``mental space'';
  someone with a good algebraic memory may feel that an expression
  like $\mathsf{Frob}: Σ_f(P ∧ f^* Q) ≅ Σ_f P ∧ Q$ is easy to
  remember, while I always think diagramatically, and so what I do is
  that I remember this diagram,

  \begin{center}
  \includegraphics[height=60pt]{2020notes-yoneda-frob.pdf}
  \end{center}

  \noindent and I reconstruct the formula from it.

\end{quotation}

\begin{quotation}

  Let's call the ``projected'' version of a mathematical object its
  ``skeleton''. The underlying idea in this paper is that for the
  right kinds of projections, and for some kinds of mathetical
  objects, it should be possible to reconstruct enough of the original
  object from its skeleton and few extra clues --- just like
  paleontologists can reconstruct from a fossil skeleton the look of
  an animal when it was alive.

\end{quotation}

I was searching for a diagrammatic language that would let me express
the ``skeletons'' of categorical definitions and proofs. I wanted
these skeletons to be easy to remember --- partly because they would
have shapes that were easy to remember, and partly because they would
be similar to ``archetypal cases'' (\cite[section 16]{IDARCT}).

\bsk

% «introduction-la»  (to ".introduction-la")

In 2016 and 2017 I taught a seminar course for undergraduates that
covered a bit of Category Theory in the end --- see Section
\ref{teaching-adjunctions} and \cite{OchsWLD2019} --- and this forced
me to invent new techniques for working in two different styles in
parallel: a style ``for adults'', more general, abstract, and formal,
and another ``for children'', with more diagrams and examples. After
some semesters, and after writing most of the material that became
\cite{PH1}, I tried to read again some parts of Johnstone's ``Sketches
of an Elephant'', a book that always felt quite impenetrable to me,
and I found a way to present geometric morphisms in toposes to
``children''. It was based on this diagram,
%
% (jopp 23 "Set-PA")
% (joe     "Set-PA")
%
%L sesw = {[" w"]="↙",  [" e"]="↘"}
%
%R local Aargs, Bargs = 3/#1          #2       \, 3/      #1             \ 
%R                       |    e     w     e    |   |    w     e          |
%R                       \      #3          #4 /   |#2          #3       |
%R                                                 |    e     w     e    |
%R                                                 |      #4          #5 |
%R                                                 |          e     w    |
%R                                                 \            #6       /
%R
%R Aargs:tozmp({def="pshAargs#1#2#3#4",     scale="11pt", meta="p"}):addcells(sesw):output()
%R Bargs:tozmp({def="pshBargs#1#2#3#4#5#6", scale="11pt", meta="p"}):addcells(sesw):output()
%
%D diagram gm-for-children
%D 2Dx     100 +70
%D 2D  100 A0  A1
%D 2D
%D 2D  +60 A2  A3
%D 2D
%D 2D  +30 A4  A5
%D 2D
%D 2D  +15 A6  A7
%D 2D
%D ren A0 A1 ==> f^*G G
%D ren A2 A3 ==> H f_*H
%D ren A0 A1 ==> \LG \G
%D ren A2 A3 ==> \H \RH
%D ren A4 A5 ==> \Set^\catA \Set^\catB
%D ren A6 A7 ==> \catA \catB
%D
%D (( A0 A1 <-|
%D    A0 A2  ->
%D    A1 A3  ->
%D    A2 A3 |->
%D    A0 A3 harrownodes nil 20 nil <->
%D    A4 A5  <- sl^ .plabel= a f^*
%D    A4 A5  -> sl_ .plabel= b f_*
%D    A6 A7 -> .plabel= a f
%D ))
%D enddiagram
%D
%D diagram gm-for-adults
%D 2Dx     100 +20
%D 2D  100 A0  A1
%D 2D
%D 2D  +20 A2  A3
%D 2D
%D 2D  +15 A4  A5
%D 2D
%D 2D  +15 A6  A7
%D 2D
%D ren A0 A1 ==> f^*G G
%D ren A2 A3 ==> H f_*H
%D ren A4 A5 ==> \calE \calF
%D ren A6 A7 ==> \catA \catB
%D
%D (( A0 A1 <-|
%D    A0 A2  ->
%D    A1 A3  ->
%D    A2 A3 |->
%D    A0 A3 harrownodes nil 20 nil <->
%D    A4 A5  <- sl^ .plabel= a f^*
%D    A4 A5  -> sl_ .plabel= b f_*
%D    # A6 A7 -> .plabel= a f
%D ))
%D enddiagram
%D
\pu
$$
  \diag{gm-for-adults}
  \qquad
  \def\LG{\pshAargs{G_2}{G_3}{G_4}{G_5}}
  \def\G {\pshBargs{G_1}{G_2}{G_3}{G_4}{G_5}{G_6}}
  \def\H {\pshAargs{H_2}{H_3}{H_4}{H_5}}
  \def\RH{\pshBargs{H_2{×_{H_4}}H_3}{H_2}{H_3}{H_4}{H_5}{1}}
  \scalebox{0.6}{$
  \diag{gm-for-children}
  $}
$$
%
that we will discuss in detail in \ref{gms-for-children}. Its left
half is a generic geometric morphism (``for adults''), and its right
half is a very specific geometric morphism (``for children'') in which
everything is easy to understand and to visualize, and that turns out
to be ``archetypal enough''.

I showed that to the few categorists with whom I had contact and the
feedback that I got was quite positive. A few of them --- the ones who
were strictly ``adults'' --- couldn't understand why I was playing
with particular cases, and even worse, with finite categories, instead
of proving things in the most general case possible, but some others
said that these ideas were very nice, that they knew a few bits about
geometric morphisms but those bits didn't connect well, and that now
they had a family of particular cases to think about, and they had
much more intuition than before.

% «introduction-ol»  (to ".introduction-ol")

That was the first time that my way of using diagrams yielded
something so nice! This was the excuse that I needed to organize a
workshop on diagrammatic languages and ways to use particular
cases; here's how I advertised it (from \cite{OchsLucatelli}):
%
\begin{quotation}

  When we explain a theorem to children --- in the strict sense of the
  term --- we focus on concrete examples, and we avoid
  generalizations, abstract structures and infinite objects.

  When we present something to ``children'', in a wider sense of the
  term that means ``people without mathematical maturity'', or even
  ``people without expertise in a certain area'', we usually do
  something similar: we start from a few motivating examples, and then
  we generalize.

  One of the aims of this workshop is to discuss techniques for {\sl
    particularization} and {\sl generalization}. Particularization is
  easy; substituing variables in a general statement is often enough
  to do the job. Generalization is much harder, and one way to
  visualize how it works is to regard particularization as a
  projection: a coil projects a circle-like shadow on the ground, and
  we can ask for ways to ``lift'' pieces of that circle to the coil
  continously. {\sl Projections} lose dimensions and may collapse
  things that were originally different; {\sl liftings} try to
  reconstruct the missing information in a sensible way. There may be
  several different liftings for a certain part of the circle, or
  none. Finding good generalizations is somehow like finding good
  liftings.

  The second of our aims is to discuss {\sl diagrams}. For example, in
  Category Theory statements, definitions and proofs can be often
  expressed as diagrams, and if we start with a general diagram and
  particularize it we get a second diagram with the same shape as the
  first one, and that second diagram can be used as a version ``for
  children'' of the general statement and proof. Diagrams were for a
  long time considered second-class entities in CT literature
  (\cite{Kromer} discusses some of the reasons), and were omitted;
  readers who think very visually would feel that part of the work
  involved in understanding CT papers and books would be to
  reconstruct the ``missing'' diagrams from algebraic statements.
  Particular cases, even when they were the motivation for the general
  definition, are also treated as somewhat second-class --- and this
  inspires a possible meaning for what can call ``Category Theory for
  Children'': to start from the diagrams for particular cases, and
  then ``lift'' them to the general case. Note that this can be done
  outside Category Theory too; \cite{Jamnik} is a good example.

  Our third aim is to discuss {\sl models}. A standard example is that
  every topological space is a Heyting Algebra, and so a model for
  Intuitionistic Predicate Logic, and this lets us explain visually
  some features of IPL. Something similar can be done for some modal
  and paraconsistent logics; we believe that the figures for that
  should be considered more important, and be more well-known.

\end{quotation}

% «introduction-ol2»  (to ".introduction-ol2")

This is from the second announcement:

\begin{quotation}

  If we say that categorical definitions are ``for adults'' - because
  they may be very abstract - and that particular cases, diagrams, and
  analogies are ``for children'', then our intent with this workshop
  becomes easy to state. ``Children'' are willing to use ``tools for
  children'' to do mathematics, even if they will have to translate
  everything to a language ``for adults'' to make their results
  dependable and publishable, and even if the bridge between their
  tools ``for children'' and ``for adults'' is somewhat defective,
  i.e., if the translation only works on simple cases...

  We are interested in that {\sl bridge} between maths ``for adults''
  and ``for children'' in several areas. Maths ``for children'' are
  hard to publish, even informally as notes (see this thread

  \msk

  \centerline{\url{http://anggtwu.net/categories-2017may02.html}}

  \msk

  \noindent in the Categories mailing list), so often techniques are
  rediscovered over and over, but kept restricted to the ``oral
  culture'' of the area.

  Our main intents with this workshop are:

  \begin{itemize}

     \item to discuss (over coffe breaks!) the techniques of the
       ``bridge'' that we currently use in seemingly ad-hoc ways,

     \item to systematize and ``mechanize'' these techniques to make
       them quicker to apply,

     \item to find ways to publish those techniques --- in journals or
       elsewhere,

     \item to connect people in several areas working in related
       ideas, and to create repositories of online resources.

  \end{itemize}

\end{quotation}


In the UniLog 2018 I was able to chat with several categorists, and
they told me that the oral culture of CT was not as I was expected: if
there are standard ways to draw diagrams they are not widely known. I
also spent two evenings with Peter Arndt working on a certain
factorization of geometric morphisms ``for children'' --- and this
made me feel that at some point I would be able to present
applications of this diagrammatic language in ``top-tier'' conferences
that would not accept works with holes.

% (favp 2 "missing-diagrams")
% (favp 7 "missing-diagrams")
% (fava   "missing-diagrams" "Peter Arndt")

% «introduction-act2019»  (to ".introduction-act2019")

The following quote is from the abstract of my submission (\cite{MDE})
to the ACT2019:
%
\begin{quotation}

  Imagine two category theorists, Aleks and Bob, who both think very
  visually and who have exactly the same background. One day Aleks
  discovers a theorem, $T_1$, and sends an e-mail, $E_1$, to Bob,
  stating and proving $T_1$ in a purely algebraic way; then Bob is
  able to reconstruct by himself Aleks's diagrams for $T_1$ exactly as
  Aleks has thought them. We say that Bob has reconstructed the
  {\it missing diagrams} in Aleks's e-mail.

  Now suppose that Carol has published a paper, $P_2$, with a theorem
  $T_2$. Aleks and Bob both read her paper independently, and both
  pretend that she thinks diagrammatically in the same way as them.
  They both ``reconstruct the missing diagrams'' in $P_2$ in the same
  way, even though Carol has never used those diagrams herself.

\end{quotation}
%
% «introduction-tal»  (to ".introduction-tal")
%
and this from my submission (\cite{OchsTallinnAbs}) to Diagrams 2020:
%
\begin{quotation}

  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.

\end{quotation}

The story will continue at the end of sec.\ref{the-conventions}, after
the list of conventions.

% (find-books "__logic/__logic.el" "nederpelt-geuvers")
% (find-ttafpaipage (+ 29 179)   "General theorem: (Bezout's Lemma)")
% (find-ttafpaitext (+ 29 179)   "General theorem: (Bezout's Lemma)")



%  and in minicourses in conferences, and this sort of forced me to
% invent new techniques for working in several levels of abstraction
% --- ``for adults'' and ``for children'' --- in parallel, and for
% translating between these styles. After that I tried to apply these
% techniques to Johnstone's ``Elephant'', a book that always made me
% think ``Help! I need a version for children of this!!!'', and they
% {\sl worked} --- I found a nice way to visualize two of its
% factorizations of geometric morphisms...



% ...and I discovered, with Peter Arndt, that if we start with toposes
% of the form $\Set^D$, where $D$ is a finite category, and a
% geometric morphism between them, we can perform these two
% factorizations by going through other toposes of the form $\Set^D$.
% From that point on I had concrete evidence that this diagrammatic
% language could be used to formulate conjectures and to obtain their
% proofs, and I had a theorem that I had obtained with it that seemed
% to be new...

% (nyop 11 "missing-diags-elephant")
% (nyo     "missing-diags-elephant")
% (oxap  1 "title" "Aleks and Bob")
% (oxa     "title" "Aleks and Bob")





%   ____                           _   _                 
%  / ___|___  _ ____   _____ _ __ | |_(_) ___  _ __  ___ 
% | |   / _ \| '_ \ \ / / _ \ '_ \| __| |/ _ \| '_ \/ __|
% | |__| (_) | | | \ V /  __/ | | | |_| | (_) | | | \__ \
%  \____\___/|_| |_|\_/ \___|_| |_|\__|_|\___/|_| |_|___/
%                                                        
% «the-conventions»  (to ".the-conventions")
% (misp 9 "the-conventions")
% (misa   "the-conventions")
% Orig: (favp 8 "the-conventions")
%       (fava   "the-conventions")
%  sec:

\section{The conventions \DONE}
\label{the-conventions}

The conventions that I will present now are the ones that we will need
to interpret the diagram below, that is essentially the Proposition 1
in the proof of the Yoneda Lemma in \cite[Section III.2]{CWM2}; we
will call that diagram the ``Basic Example'' and also ``diagram
$\Yzero$''. In the sections \ref{extensions}--\ref{gms-for-children}
we will see how extend DL to make it able to interpret the diagram for
geometric morphisms of the Introduction.
%
%D diagram Basic-Example
%D 2Dx     100    +40
%D 2D  100        A1
%D 2D              |
%D 2D  +20 A2 |-> A3
%D 2D
%D 2D  +15 B0 --> B1
%D 2D
%D 2D  +15 C0 --> C1
%D 2D          \   |
%D 2D  +20        C2
%D 2D
%D ren    A1 ==>      A
%D ren A2 A3 ==>  C  RC
%D ren B0 B1 ==>  \catB \catA
%D ren C0 C1 C2 ==> \catB(C,-) \catA(A,R-) ?
%D
%D (( A1 A3  -> .plabel= r η
%D    A2 A3 |->
%D
%D    B0 B1  -> .plabel= a R\phantom{mmm}
%D
%D    C0 C1 -> .plabel= b α
%D  # C0 C2 -> .plabel= l \sm{ψ\\\text{(iso)}}
%D  # C1 C2 <->
%D
%D    C0 C1 midpoint A1 A3 midpoint <-> .curve= ^15pt
%D ))
%D enddiagram
%
\pu
$$\scalebox{2.0}{$
  \slowdiag{Basic-Example}
  $}
$$

\begin{itemize}

\item[(CD)] Our diagrams are made of components that are nodes and
  arrows. The nodes can contain arbitrary expressions. The arrows work
  as connectives, and each arrow can be interpreted as the top-level
  connective in the smallest subexpression that contains it. For
  example, the curved arrow in the diagram above can be interpreted
  as:
  %
  $$(A\ton{η}RC)↔(\catB(C,-) \ton{T} \catA(A,R-)).
  $$

\item[(C$→$)] Arrows that look like `$→$' (\qqco{\\to}) represent
  hom-sets, or, in $\Set$, spaces of functions. When a `$→$' arrow is
  named the name stands for an element of that hom-set. For example,
  in $A \ton{η} RC$ we have $η:A→RC$.

\item[(C$↦$)] Arrows that look like `$↦$' (\qqco{\\mapsto}) represent
  internal views of functions or functors. This has some subtleties;
  see Section \ref{internal-views}.

\item[(C$↔$)] Arrows that look like `$↔$' (\qqco{\\leftrightarrow})
  represent bijections or isomorphisms.

\item[(CAI)] ``Above'' usually means ``inside'', or ``internal view''.
  In the diagram above the morphism $η:A→RC$ is in $\catA$ and $C$ is
  an object of $\catB$. Also, the arrow $C \mapsto RC$ is above $\catB
  \ton{R} \catA$, and this means that it is an internal view of the
  functor $R$. Note that {\sl usually} is not {\sl always} --- and
  $\catB \ton{R} \catA$ is not an internal view of $\catB(C,-) \ton{T}
  \catA(A,R-)$.

\item[(CO)] When the definition of a component of our diagram is
  ``obvious'' in the sense of ``there is a unique natural construction
  for an object with that name'', we will usually omit its definition
  and {\sl pretend} that it is obvious; same for its uniqueness. See
  Section \ref{to-deserve-a-name}.

\item[(CC)] Everything commutes by default, and non-commutative cells
  have to be indicated explicitly. See Section \ref{freyd-notation}.

\item[(CTL)] The default ``meaning'' for a diagram {\sl without
    quantifiers} is the definition of its top-level component. There
  is a natural partial order on the components of a diagram, in which
  $α \prec β$ iff $α$ is ``more basic'' than $β$, or, in other words,
  if $α$ needs to be defined before $β$. In the diagram above the
  top-level component is the curved bijection.

\item[(CMQ)] The default ``meaning'' for a diagram with quantifiers is
  a proposition. See Sections
  \ref{freyd-notation}--\ref{freyd-with-functors} for how to obtain
  that proposition.

\item[(CAdj)] {\sl I use shapes based on my way of drawing adjunctions
  whenever possible.} I like adjunctions so much that when I want to
  explain Category Theory to someone who knows just a little bit of
  Maths I always start by the adjunction $({×}B)⊣(B{→})$ of Section
  \ref{internal-view-adjunction}; I always draw it in a canonical way,
  with the left adjoint going left, the right adjoint going right, and
  the morphisms going down. In Proposition 1 of \cite[Section
    III.2]{CWM2} the map $η$ is a universal arrow, and someone who
  learns adjunctions first sees the unit maps $η:A→(B{→}(A{×}B))$ as
  the first examples of universal arrows --- so that's why the upper
  part of the diagram above is drawn in this position.

\item[(CYo)] {\sl I use shapes based on my way of drawing the Yoneda
    Lemma whenever possible.} Look at the sections
  \ref{basic-example-as-skel}--\ref{basic-example-full} and
  \ref{yoneda-lemma}--\ref{representable-functors}: the upper parts of
  their diagrams look like parts of adjunctions, but the other parts
  do not. For example, I draw ``The functor $U:\Ring→\Set$ is
  representable'' as:
%
% (mdyp 1 "Y3+diag")
% (mdya   "Y3+diag")
%
%D diagram Y3+diag
%D 2Dx     100  +35
%D 2D  100      A1
%D 2D            |
%D 2D  +25 A2 - A3
%D 2D
%D 2D  +15 B0 - B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D         \  |
%D 2D  +20      C3
%D 2D
%D ren    A1 ==>         \ga{A1}
%D ren A2 A3 ==> \ga{A2} \ga{A3}
%D ren B0 B1 ==> \ga{B0} \ga{B1}
%D ren C0 C1 ==> \ga{C0} \ga{C1}
%D ren    C3 ==>         \ga{C3}
%D
%D (( A1 A3  -> .plabel= r \ga{A13}
%D    A2 A3 |->
%D
%D    B0 B1  -> .plabel= a \ga{B01}
%D
%D  # C0 C1  -> .plabel= a \ga{C01}
%D    C0 C3 <-> .plabel= b \ga{C03}
%D  # C1 C3 <-> .plabel= r \ga{C13}
%D ))
%D enddiagram
\pu
%
\sa{Y3+diag-Z[x]}{
                           \sa{A1}{1}
  \sa{A2}{\Z[x]}           \sa{A3}{U(\Z[x])}
  \sa{B0}{\Ring}           \sa{B1}{\Set}
  \sa{C0}{\Ring(\Z[x],-)}
                           \sa{C3}{U}
  %
  \sa{A13}{\sm{\nameof{x}\\\univ}}
  \sa{B01}{U}
  \sa{C03}{}
  %
  \diag{Y3+diag}
  }
%
$$\ga{Y3+diag-Z[x]}
$$

\item[(CDT)] A diagram acts a dictionary of default types for
  symbols. See sec.\ref{omitting-types}.

\item[(CIA)] Default types allow us to use indefinite articles in a
  precise way. An example: we have $η:\Hom_\catA(A,RC)$, so ``an $η$''
  means ``an element of $\Hom_\catA(A,RC)$''. See
  sec.\ref{indefinite-articles}.

\item[(COT)] We use a notation as close to the original text as
  possible, especially when we are trying to draw the missing diagrams
  for some existing text. If we were drawing the missing diagrams for
  the Proposition 1 of \cite[Section III.2]{CWM2} our diagram would be
  this:
  %
%D diagram yoneda-cwm-0-small
%D 2Dx     100    +35
%D 2D  100        A1
%D 2D              |
%D 2D  +20 A2 |-> A3
%D 2D
%D 2D  +10 B0 --> B1
%D 2D
%D 2D  +10 C0 --> C1
%D 2D          \   |
%D 2D  +20        C2
%D 2D
%D ren    A1 ==>      c
%D ren A2 A3 ==>  r  Sr
%D ren B0 B1 ==>  D   C
%D ren C0 C1 C2 ==> D(r,-) C(c,S-) ?
%D
%D (( A1 A3  -> .plabel= r  u
%D    A2 A3 |->
%D
%D    B0 B1  -> .plabel= a S\phantom{mmm}
%D
%D    C0 C1 -> .plabel= b φ
%D  # C0 C2 -> .plabel= l \sm{ψ\\\text{(iso)}}
%D  # C1 C2 <->
%D
%D    C0 C1 midpoint A1 A3 midpoint <-> .curve= ^11pt
%D ))
%D enddiagram
%
$$\pu
  \slowdiag{yoneda-cwm-0-small}
$$
%
but I hate Mac Lane's choice of letters, so I decided to use another
notation here.

\item[(CSk)] Suppose that we have a piece of text --- say, a paragraph
  $P$ --- and we want to reconstruct the ``missing diagram'' $D$ for
  $P$. Ideally this $D$ should be a ``skeleton'' for $P$, in the sense
  that it should be possible to reconstruct the ideas in $P$ from the
  diagram $D$ using very few extra hints; see \cite[sec.12]{IDARCT}.

\item[(CTT)] Our diagrams should be close to Type Theory: it should be
  possible to use them as a scaffolding for formalizing our text in
  (pseudocode for) a proof assistant.

\item[(CFSh)] The image by a functor of a diagram $D$ is drawn with
  the same shape as $D$.

\item[(CISh)] The internal view of a diagram $D$ is drawn with the
  same shape as $D$, modulo duplications --- see section
  \ref{internal-views}.

\item[(CPSh)] A particular case of a diagram $D$ is drawn with the
  same shape as $D$.

\item[(CNSh)] A translation of a diagram $D$ to another notation is
  drawn with the same shape as $D$.

\end{itemize}


The conventions (CD)--(CMQ) and (CFSh)--(CNSh) all appear in diagrams
in \cite{MacLaneNotes}, \cite{Freyd76}, \cite{FreydScedrov},
\cite{Taylor}, \cite{Riehl}, \cite{Leinster}, but very few of them are
spelled out explicitly, and the idea of ``same shape'' is never
stressed. See \cite[p.179]{NederpeltGeuvers} for a neat example of
``substitution produces something with the same shape'' and
\cite{PenroseSIGGRAPH2020} for a language for drawing diagrams from
high-level specifications in which it may be possible to implement the
rules about ``same shape''.

The other conventions {\sl may} be new, but remember from the
introduction that most of the work on diagrammatic languages lies
below the threshold of publishability... so conventions corresponding
to those may be folklore knowledge in groups that I don't have contact
with {\sl yet}.

The convention (COT) is obvious in retrospect, but giving a name to it
saved me from my tendency to invent new notations. The conventions
(CDT) and (CIA) replace the idea of downcasings from
\cite[sec.3]{IDARCT}, that didn't work well. Sections
\ref{extensions}--\ref{gms-for-children} show how to add new
conventions to DL, and sec.\ref{opposite-categories} shows that we can
add a bad convention and mark it as a temporary hack.

There are many notations for Type Theory. To make this chapter more
readable in the convention (CTT) I will use a pseudocode that is
halfway between standard mathematical notation and Agda; the companion
paper \cite{MissingAgda} will show how to translate it to real Agda
(with the library \cite{HuCarette}).

Most texts on CT use diagrams to {\sl prove} theorems. Here will use
them to {\sl understand} theorems, and to translate between languages.
Our approach can be seen as an extension of \cite{Ganesalingam} to
Category Theory; see also \cite{DSLsofMath}, that is a recent book
that follows many of the ideas in \cite{Ganesalingam}.

% (find-books "__cats/__cats.el" "hu-carette")
% (find-angg ".emacs.agda" "wadler-smbf")
% (find-angg ".emacs.agda" "wadler-smbf")

% % (find-books "__comp/__comp.el" "penrose")
% 
% \standout{Rewrite} Note that I have presented these conventions in a
% human-friendly way, that is somewhat informal and admits exceptions
% and extensions. Some simple examples of extensions will be discussed
% in Section \ref{extensions}.
% 






%  ____                                                             
% |  _ \  ___  ___  ___ _ ____   _____   _ __   __ _ _ __ ___   ___ 
% | | | |/ _ \/ __|/ _ \ '__\ \ / / _ \ | '_ \ / _` | '_ ` _ \ / _ \
% | |_| |  __/\__ \  __/ |   \ V /  __/ | | | | (_| | | | | | |  __/
% |____/ \___||___/\___|_|    \_/ \___| |_| |_|\__,_|_| |_| |_|\___|
%                                                                   
% «to-deserve-a-name»  (to ".to-deserve-a-name")
% Orig: (favp 11 "to-deserve-a-name")
%       (fava    "to-deserve-a-name")
%  sec: 3
%
\section{Finding ``the'' object with a given name \DONE}
\label{to-deserve-a-name}

One of the books that I tried to read when I was starting to learn
Category Theory was Mac Lane's \cite{CWM2}. It is written for readers
who know a lot of mathematics and who can follow some steps that it
treats as obvious. I was not (yet) a reader like that, but I wanted to
become one.

There is one specific thing that \cite{CWM2} does pretending that it
is obvious that I found especially fascinating. It ``defines''
functors by describing their actions on objects, and it leaves to the
reader the task of discovering their actions on morphisms. Let's see
how to find these actions on morphisms.

A functor $F:\catA→\catB$ has four components:
%
$$F=(F_0, F_1, \respids_F, \respcomp_F).$$
%
They are its action on objects, its action on morphisms, the assurance
that it takes identity maps to identity maps, and the assurance that
it respects compositions. When Mac Lane says this,
%
\begin{quote}
Fix a set $B$. Let $(×B)$ denote {\sl the} functor that takes each set
$A$ to $A×B$.
\end{quote}
%
he is saying that $(×B)_0 A = A×B$, or, more precisely, this:
%
$$(×B)_0 := λA.\,A×B$$

The ``{\sl the}'' in the expression ``Let $(×B)$ denote {\sl the}
functor...'' implies that the precise meaning of $(×B)_1$ is easy to
find, and that it is easy to prove $\respids_{(×B)}$ and
$\respcomp_{(×B)}$.

If $f:A'→A$ then $(×B)_1 f : (×B)_0 A' → (×B)_0 A$. We know the {\sl
  name} of the image morphism, $(×B)_1 f$, and its {\sl type},
%
$$(×B)_1 f : A'×B → A×B,$$
%
and it is implicit that there is an ``obvious'' natural construction
for this $(×B)_1 f$ from $f$. A natural construction is ---
TA-DAAAA!!! --- a $λ$-term, so we are looking for a term of type $A'×B
→ A×B$ that can be constructed from $f:A'→A$.

In a big diagram:
%:
%:
%:                            [p:A'{×}B]^1
%:                            ------------
%:                                 πp:A'   f:A'→A   [p:A'{×}B]^1
%:                                 --------------   ------------
%:                                   f(πp):A          π'p:B
%:                                   ----------------------
%:        f:A'→A                        (f(πp),π'p):A{×}B
%:   ====================  =>  -----------------------------------1
%:   (×B)_1f:A'{×}B→A{×}B      (λp⠆A'{×}B.(f(πp),π'p):A'{×}B→A{×}B
%:
%:   ^foo1                       ^foo2
%:
\pu
$$\ded{foo1} \quad ⇒ \ded{foo2}$$

A double bar in a derivation means ``there are several omitted steps
here'', and sometimes a double bar suggests that these omitted steps
are obvious. The derivation on the left says that there is an
``obvious'' way to build a $(×B)_1f:A'{×}B→A{×}B$ from a
``hypothesis'' $f:A'→A$. If we expand its double bar we get the tree
at the right, that shows that the ``precise meaning'' for $(×B)_1f$ is
$(λp⠆A'{×}B.(f(πp),π'p)$. More formally (and erasing a typing),
%
$$(×B)_1 := λf.(λp.(f(πp),π'p)).$$

The expansion of the double bar above becomes something more familiar
if we translate the trees to Logic using Curry-Howard:
%:
%:
%:           [P∧R]^1
%:           -------
%:             P      P→Q   [P∧R]^1
%:             ----------   -------
%:                Q         R
%:                -----------
%:    P→Q              Q∧R
%:   =======  =>  ------------1
%:   P∧R→Q∧R      P∧R→Q∧R
%:
%:   ^foo-logic1   ^foo-logic2
%:
\pu
$$\ded{foo-logic1} \quad ⇒ \ded{foo-logic2}$$

We obtain the tree at the right by {\sl proof search}.

Let's give a name for the operation above that obtained a term of type
$A'×B→A×B$: we will call that operation {\sl term search}, or, as it
is somewhat related to type inference, {\sl term inference}.

Term search may yield several different construction and trees, and so
several non-equivalent terms of the desired type. When Mac Lane says
``{\sl the} functor $(×B)$'' he is indicating that:

\begin{itemize}

\item a term for $(×B)_1$ is easy to find (note that we use the
  expression ``a {\sl precise meaning} for $(×B)_1$''),

\item all other natural constructions for something that ``deserves
  the name'' $(×B)_1$ yield terms equivalent to that first, most
  obvious one,

\item proving $\respids_{(×B)}$ and $\respcomp_{(×B)}$ is trivial.

\end{itemize}

In many situations we will start by just the name of a functor, as the
``$(×B)$'' in the example above, and from that name it will be easy to
find {\sl the} ``precise meaning'' for $(×B)_0$, and from that the
``precise meaning'' for $(×B)_1$, and after that proofs that
$\respids_{(×B)}$ and $\respcomp_{(×B)}$. We will use the expression
``...deserving the name...'' in this process --- terms for $(×B)_0$,
$(×B)_1$, $\respids_{(×B)}$, and $\respcomp_{(×B)}$ ``deserve their
names'' if they obey the expected constraints.

For a more thorough discussion see \cite{IDARCT}.

\msk

These ideas of ``finding a precise meaning'' and ``finding (something)
deserving that name'' can also be applied to morphisms, natural
transformations, isomorphisms, and so on.

In Section \ref{basic-example-NTs} we will see how to find natural
constructions for the two directions of the bijection in the Basic
Example --- or how the expand the double bars in the two derivations
here:
%:
%:  η:A→RC
%:  ========================
%:  α:\catB(C,-)→\catA(A,R-)
%:
%:  ^bij-down
%:
%:  α:\catB(C,-)→\catA(A,R-)
%:  ========================
%:  η:A→RC
%:
%:  ^bij-up
%:
$$\pu
  \slowdiag{Basic-Example}
  \qquad
  \begin{array}{c}
  \ded{bij-down}
  \\ \\
  \ded{bij-up}
  \end{array}
$$

\msk

I am not aware of any papers or books on CT that discuss how to
(re)construct a functor from its action on objects or from its name,
but Agda has a tool that can be used for that: look for the section on
``Automatic Proof Search'' in \cite{AgdaUserManual}.

% (find-LATEX "catsem-ab.bib" "bib-AgdaUserManual")
% (find-es "agda" "agsy")




% (find-idarctpage  8 "(Figure 4B)")





%  _____                   _ 
% |  ___| __ ___ _   _  __| |
% | |_ | '__/ _ \ | | |/ _` |
% |  _|| | |  __/ |_| | (_| |
% |_|  |_|  \___|\__, |\__,_|
%                |___/       
%
% «freyd»  (to ".freyd")
% «freyd-notation»  (to ".freyd-notation")
% (misp 16 "freyd-notation")
% (misa    "freyd-notation")
%  sec: 4
% Orig: (favp 14 "freyd")
%       (fava    "freyd")
%  sec: 4

\section{Freyd's diagrammatic language \DONE}
\label{freyd-notation}

In \cite{Freyd76} Peter Freyd presents a very nice diagrammatic
language that can be used to express {\sl some} definitions from
Category Theory. For example, this is the statement that a category
has all equalizers:
%
%L forths["-"] = function () pusharrow("-") end
%
%D diagram cat-has-equalizers
%D 2Dx     100 +00   +15   +20 +15 +15   +20   +20 +15 +15   +20   +20 +15 +15   +20   +20
%D 2D  100 U0                  U1                  U2                  U3                 
%D 2D       |                   |                   |                   |                 
%D 2D  +10  |  A0               |  B0               |  C0               |  D0             
%D 2D       |  |  \             |  |  \             |  |  \             |  |  \           
%D 2D  +20  |  A1 -- A2 == A3   |  B1 -- B2 == B3   |  C1 -- C2 == C3   |  D1 -- D2 == D3 
%D 2D       |                   |                   |                   |                 
%D 2D  +20 L0                  L1                  L2                  L3                 
%D 2D
%D ren U0 L0 A0 A1 A2 A3 ==> ∀  {} X E A B
%D ren U1 L1 B0 B1 B2 B3 ==> ∃  {} X E A B
%D ren U2 L2 C0 C1 C2 C3 ==> ∀  {} X E A B
%D ren U3 L3 D0 D1 D2 D3 ==> ∃! {} X E A B
%D
%D (( U0 L0 -
%D    A2 A3 -> sl^^ .plabel= a f
%D    A2 A3 -> sl__ .plabel= b g
%D    A2 A3 midpoint .TeX= \scriptstyle? place
%D ))
%D (( U1 L1 -
%D    B2 B3 -> sl^^ .plabel= a f
%D    B2 B3 -> sl__ .plabel= b g
%D    B2 B3 midpoint .TeX= \scriptstyle? place
%D    B1 B2 -> .plabel= b e
%D ))
%D (( U2 L2 -
%D    C2 C3 -> sl^^ .plabel= a f
%D    C2 C3 -> sl__ .plabel= b g
%D    C2 C3 midpoint .TeX= \scriptstyle? place
%D    C1 C2 -> .plabel= b e
%D    C0 C2 -> .plabel= r h
%D ))
%D (( U3 L3 -
%D    D2 D3 -> sl^^ .plabel= a f
%D    D2 D3 -> sl__ .plabel= b g
%D    D2 D3 midpoint .TeX= \scriptstyle? place
%D    D1 D2 -> .plabel= b e
%D    D0 D2 -> .plabel= r h
%D    D0 D1 -> .plabel= l k
%D ))
%D enddiagram
%D
$$\pu
  \scalebox{0.8}{$
  \diag{cat-has-equalizers}
  $}
$$

All cells in these diagrams commute by default, and non-commuting
cells have to be indicated with a `?'. Each vertical bar with a `$∀$'
above it means ``for all extensions of the previous diagram to this
one such that everything commutes''; a vertical bar with a `$∃!$'
above it means ``there exists a unique extension of the previous
diagram to this one such that everything commutes'', and so on. See
the scan in \cite{Freyd76} for the basic details of how to formalize
these diagrams, and the book \cite[p.28 onwards]{FreydScedrov}, for
tons of extra details, examples, and applications.

Let's call the subdiagrams of a diagram like the one above its
``stages''. Its stage 0 is empty, its stage 1 has two objects and two
arrows, its last stage has four objects and five arrows, and the
quantifiers separating the stages are $Q_1=∀$, $Q_2=∃$, $Q_3=∀$,
$Q_4=∃!$. They are structured like this:
%
%D diagram freyd-stages-1
%D 2Dx     100 +20 +20 +20 +20 +20 +20 +20 +20
%D 2D  100 SQ0     SQ1     SQ2     SQ3     SQ4
%D 2D                                      
%D 2D  100     U0      U1      U2      U3  
%D 2D                                      
%D 2D  +20 S0      S1      S2      S3      S4
%D 2D                                      
%D 2D  +20     L0      L1      L2      L3  
%D 2D
%D ren U0 L0 ==> Q_1 {}
%D ren U1 L1 ==> Q_2 {}
%D ren U2 L2 ==> Q_3 {}
%D ren U3 L3 ==> Q_4 {}
%D ren S0 S1 S2 S3 S4 ==> S_0 S_1 S_2 S_3 S_4
%D ren SQ0 SQ1 SQ2 SQ3 SQ4 ==> SQ_0 SQ_1 SQ_2 SQ_3 SQ_4
%D
%D (( S0 place S1 place S2 place S3 place S4 place
%D    U0 L0 -
%D    U1 L1 -
%D    U2 L2 -
%D    U3 L3 -
%D ))
%D enddiagram
%D
%D diagram freyd-stages-2
%D 2Dx     100 +20 +20 +20 +20 +20 +20 +20 +20
%D 2D  100 SQ0     SQ1     SQ2     SQ3     SQ4
%D 2D                                      
%D 2D  +20     U0      U1      U2      U3  
%D 2D                                      
%D 2D  +20 S0      S1      S2      S3      S4
%D 2D                                      
%D 2D  +20     L0      L1      L2      L3  
%D 2D
%D ren U0 L0 ==> Q_1 {}
%D ren U1 L1 ==> Q_2 {}
%D ren U2 L2 ==> Q_3 {}
%D ren U3 L3 ==> Q_4 {}
%D ren S0 S1 S2 S3 S4 ==> S_0 S_1 S_2 S_3 S_4
%D ren SQ0 SQ1 SQ2 SQ3 SQ4 ==> SQ_0 SQ_1 SQ_2 SQ_3 SQ_4
%D
%D (( # SQ0 S0 .>
%D    # SQ1 S1 .>
%D    # SQ2 S2 .>
%D    # SQ3 S3 .>
%D    # SQ4 S4 .>
%D    SQ0 SQ1 <--
%D    SQ1 SQ2 <--
%D    SQ2 SQ3 <--
%D    SQ3 SQ4 <--
%D    # U0 L0 -
%D    # U1 L1 -
%D    # U2 L2 -
%D    # U3 L3 -
%D ))
%D enddiagram
%D
\pu
$$
  \diag{freyd-stages-1}
$$
%$$\pu
%  \diag{freyd-stages-2}
%$$

I was not very good at drawing all stages separately --- it was
boring, it took me too long, and I often got distracted and committed
errors --- so I started to play with extensions of that diagrammatic
language.



%  _____                   _            _ _   _        ___      
% |  ___| __ ___ _   _  __| | __      _(_) |_| |__    / _ \ ___ 
% | |_ | '__/ _ \ | | |/ _` | \ \ /\ / / | __| '_ \  | | | / __|
% |  _|| | |  __/ |_| | (_| |  \ V  V /| | |_| | | | | |_| \__ \
% |_|  |_|  \___|\__, |\__,_|   \_/\_/ |_|\__|_| |_|  \__\_\___/
%                |___/                                          
%
% «freyd-with-quantifiers»  (to ".freyd-with-quantifiers")
% Orig: (favp 15 "freyd-with-quantifiers")
%       (fava    "freyd-with-quantifiers")
%  sec: 4.1
\subsection{Adding quantifiers \DONE}
\label{freyd-with-quantifiers}

Here is a simple way to draw all stages at once. We start from a
diagram for the ``last stage with quantifiers'', that we will call
$LSQ$:
%
%D diagram cat-has-equalizers-with-quants
%D 2Dx     100   +30   +30
%D 2D  100 D0             
%D 2D      |  \           
%D 2D  +30 D1 -- D2 == D3 
%D 2D
%D ren D0 D1 D2 D3 ==> ∀_3X ∃_2E ∀_1A ∀_1B
%D
%D (( D2 D3 -> sl^^ .plabel= a ∀_1f
%D    D2 D3 -> sl__ .plabel= b ∀_1g
%D    D2 D3 midpoint .TeX= \scriptstyle? place
%D    D1 D2 -> .plabel= b ∃_2e
%D    D0 D2 -> .plabel= r ∀_3h
%D    D0 D1 -> .plabel= l ∃!_4k
%D ))
%D enddiagram
%D
$$\pu
  \scalebox{1.75}{$
  \diag{cat-has-equalizers-with-quants}
  $}
$$

We can recover all the stages and quantifiers from it. The numbered
quantifiers in it are $∀_1$, $∃_2$, $∀_3$, and $∃!_4$. The highest
number in them is 4, so we set $n=4$ ($n$ is the index of the last
stage), and we set ``stage 4 with quantifiers'', $SQ_4$, to $LSQ$. To
obtain the $SQ_3$ from $SQ_4$ we delete all nodes an arrows in $SQ_4$
that are annotated with a `$∃!_4$'; to obtain $SQ_2$ from $SQ_3$ we
delete all nodes an arrows in $SQ_3$ that are annotated with a
`$∀_3$', and so on until we get a diagram $SQ_0$, that in this example
is empty. To obtain each $S_k$ --- a stage in the original
diagrammatic language from Freyd, that doesn't have quantifiers ---
from the corresponding $SQ_k$ we treat all the quantifiers in $SQ_k$
as mere annotations, and we erase them; for example, `$∃_2e$' becomes
`$e$', and $∀_1A$ becomes $A$. To obtain the quantifiers $Q_1$, $Q_2$,
$Q_3$, $Q_4$ that are put in the vertical bars that separate the
stages, we just assign $∀_1$, $∃_2$, $∀_3$, and $∃!_4$ to them,
without the numbers in the subscripts.

Bonus convention: when the quantifiers in a diagram are just `$∀$'s
and `$∃!$'s without subscripts the `$∀$'s are to be interpreted as
`$∀_1$' and the `$∃!$'s as `$∃!_2$'s.



%  _____                   _            _ _   _       _____    
% |  ___| __ ___ _   _  __| | __      _(_) |_| |__   |  ___|__ 
% | |_ | '__/ _ \ | | |/ _` | \ \ /\ / / | __| '_ \  | |_ / __|
% |  _|| | |  __/ |_| | (_| |  \ V  V /| | |_| | | | |  _|\__ \
% |_|  |_|  \___|\__, |\__,_|   \_/\_/ |_|\__|_| |_| |_|  |___/
%                |___/                                         
%
% «freyd-with-functors»  (to ".freyd-with-functors")
% (misp 17 "freyd-with-functors")
% (misa    "freyd-with-functors")
%   sec: 4.1
% Orig: (favp 16 "freyd-with-functors")
%       (fava    "freyd-with-functors")
%   sec: 4.2
\subsection{Adding functors \DONE}
\label{freyd-with-functors}

Freyd's language can't represent functors --- in the sense of diagrams
like the ones in sec.\ref{internal-view-functor} --- and I wanted to
use it to draw the missing diagrams for definitions involving
functors, so I had to extend it again.

% (find-books "__cats/__cats.el" "freyd-scedrov")

Let me use an example to discuss this. This is the definition of
universal arrow in \cite[p.55]{CWM2}, including the original diagram,
modulo change of letters:

% (find-books "__cats/__cats.el" "maclane")
% (find-cwm2page (+ 13  55)   "1. Universal Arrows")
%
%D diagram univ-arrow-cwm-my-letters
%D 2Dx     100 +25 +25
%D 2D  100 A0  A1  A2
%D 2D
%D 2D  +25 A3  A4  A5
%D 2D
%D ren A0 A1 A2 ==> A RB  B
%D ren A3 A4 A5 ==> A RB', B'.
%D
%D (( A0 A1 -> .plabel= a η
%D    A0 A3 midpoint .TeX= \veq place
%D    A1 A4 .> .plabel= r Rf
%D    A2 A5 .> .plabel= r f
%D    A3 A4 -> .plabel= a g
%D ))
%D enddiagram


\begin{quotation}

  {\bf Definition.} If $R: \catB→\catA$ is a functor and $A$ an object
  of $\catA$, a universal arrow from $A$ to $R$ is a pair $(B,η)$
  consisting of an object $B$ of $\catB$ and and arrow $η:A→RB$ of
  $\catA$ such that to every pair $(B',g)$ with $B'$ an object of
  $\catB$ and $g:A→RB'$ an arrow of $\catA$, there is a unique arrow
  $f:B→B'$ of $\catB$ with $Rf∘η=g$. In other words, every arrow $h$
  to $R$ factors uniquely through the universal arrow $η$, as in the
  commutative diagram:
  %
  $$\pu
    \diag{univ-arrow-cwm-my-letters}
  $$

\end{quotation}

The definition itself goes only up to the ``with $Rf∘η=g$.'', so let
me ignore the part starting from ``In other words'', and draw a better
``missing diagram'' for the definition:
%
%D diagram universal-arrow-stages
%D 2Dx     100 +20 +20 +20 +20 +20 +20 +20
%D 2D  100         U0          U1        
%D 2D                                    
%D 2D  +10     A1          B1          C1
%D 2D           |           |           |
%D 2D  +20 A2  A3      B2  B3      C2  C3
%D 2D      |    |      |    |      |    |
%D 2D  +20 A4  A5      B4  B5      C4  C5
%D 2D                                    
%D 2D  +15 A6  A7      B6  B7      C6  C7
%D 2D                                    
%D 2D  +10         L0          L1        
%D 2D
%D ren A1 A2 A3 A4 A5 A6 A7 ==> A B RB B' RB' \catB \catA
%D ren B1 B2 B3 B4 B5 B6 B7 ==> A B RB B' RB' \catB \catA
%D ren C1 C2 C3 C4 C5 C6 C7 ==> A B RB B' RB' \catB \catA
%D ren U0 L0 ==> ∀  {}
%D ren U1 L1 ==> ∃! {}
%D
%D (( A1 A3 -> .plabel= r η
%D    A2 A3 |->
%D    A6 A7 -> .plabel= a R
%D    U0 L0 -
%D ))
%D (( B1 B3 -> .plabel= r η
%D    B2 B3 |->
%D    B4 B5 |->
%D    B1 B5 -> .slide= 15pt .plabel= r g
%D    B6 B7 -> .plabel= a R
%D    U1 L1 -
%D ))
%D (( C1 C3 -> .plabel= r η
%D    C2 C3 |->
%D    C2 C4 -> .plabel= l f
%D    C3 C5 -> .plabel= r Rf
%D    C2 C5 harrownodes nil 20 nil |->
%D    C4 C5 |->
%D    C1 C5 -> .slide= 20pt .plabel= r g
%D    C6 C7 -> .plabel= a R
%D ))
%D enddiagram
%D
$$\pu
  \diag{universal-arrow-stages}
$$

This diagram is quite close to being a skeleton for the definition of
universal arrow. It can be interpreted as a proposition, and the only
extra hint that we need is that ``universalness'' for the arrow $η$
corresponds to the truth of that proposition. Here's how to extract
the proposition from it:
%
$$\begin{array}{rl}
  \text{In a context where:}
    & \catA \text{ is a category}, \\
    & \catB \text{ is a category}, \\
    & R:\catB \to \catA, \\
    & A ∈ \catA, \\
    & B ∈ \catB, \\
    & η:A→RB, \\
  \text{for all}
    & B'∈\catB \text{ and} \\
    & g:A→RB', \\
  \text{there exists a unique}
    & f:B→B' \text { such that} \\
    & Rf∘η=g. \\
  \end{array}
$$

To convert that to a definition of universalness we just have to
replace the ``for all'' by ``$(B,η)$ is a universal arrow for $A$ to
$R$ iff for all''.

The convention for quantifiers from sec.\ref{freyd-with-quantifiers}
lets us rewrite the diagram in three stages above as:
%
%D diagram universal-arrow-quants
%D 2Dx     100 +20
%D 2D  100     C1
%D 2D           |
%D 2D  +20 C2  C3
%D 2D      |    |
%D 2D  +20 C4  C5
%D 2D            
%D 2D  +15 C6  C7
%D 2D
%D ren C1 C2 C3 C4 C5 C6 C7 ==> A B RB ∀B' RB' \catB \catA
%D
%D (( C1 C3 -> .plabel= r η
%D    C2 C3 |->
%D    C2 C4 -> .plabel= l ∃!f
%D    C3 C5 -> .plabel= r Rf
%D    C2 C5 harrownodes nil 20 nil |->
%D    C4 C5 |->
%D    C1 C5 -> .slide= 20pt .plabel= r ∀g
%D    C6 C7 -> .plabel= a R
%D ))
%D enddiagram
%D
$$\pu
  \scalebox{1.5}{$
  \diag{universal-arrow-quants}
  $}
$$


Also, I noticed that I could omit most typings when they could be
inferred from the diagram. I could ``formalize'' the diagram above as:
``in a context where $(\catA, \catB, R, A, B, η)$ are as in the
diagram above, we say that $(B,η)$ is a universal arrow from $A$ to
$R$ when $∀(B',g).∃!f.(Rf∘η=g)$''. This looked too loaded to be used
in public, but it was practical for private notes --- and I could even
omit the ``$Rf∘η=g$'', as everything commutes by default. In
sec.\ref{omitting-types} we will see a way to formalize this method
for omitting and reconstructing types, and in
sec.\ref{indefinite-articles} we will see a second way to define
universalness.



\bsk

Note that when we erase a node or arrow we also erase everything that
depends on it. In the example above $SQ_2$ has an arrow labeled
$∃!_2f$; to obtain $SQ_1$ from $SQ_2$ we have to erase that arrow, the
arrow $Rf$, and the arrow $f \mapsto Rf$ --- and to obtain $SQ_0$ from
$SQ_1$ we have to erase the arrow $g$, the node $B'$, the node $RB'$,
and the arrow $B' \mapsto RB'$.



%  ___       _                        _         _                   
% |_ _|_ __ | |_ ___ _ __ _ __   __ _| | __   _(_) _____      _____ 
%  | || '_ \| __/ _ \ '__| '_ \ / _` | | \ \ / / |/ _ \ \ /\ / / __|
%  | || | | | ||  __/ |  | | | | (_| | |  \ V /| |  __/\ V  V /\__ \
% |___|_| |_|\__\___|_|  |_| |_|\__,_|_|   \_/ |_|\___| \_/\_/ |___/
%                                                                   
% «internal-views»  (to ".internal-views")
% (misp 20 "internal-views")
% (misa    "internal-views")
%  sec: 5
% Orig: (favp 19 "internal-views")
%       (fava    "internal-views")
\section{Internal views \DONE}
\label{internal-views}

My favorite way of introducing internal views is with the diagram
below:
%
% (nyop 19 "blob-sets")
% (nyo     "blob-sets")
% (nyop 20 "blob-sets-2")
% (nyo     "blob-sets-2")
% (nyop 21 "blob-cats-and-functors")
% (nyo     "blob-cats-and-functors")
%
\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
\pu
$$\begin{array}{rrcl}
   \sqrt{\;\;}: & \N &→& \R \\
                &  n &↦& \sqrt{n} \\
   \end{array}
   \qquad
   \diag{second-blob-function}
$$

\def\longmapsto{\diagxyto/|->/}

The parts with the two blobs and `$\longmapsto$'s between them is
based on how I was taught sets and functions when I was a kid; it is
an internal view of the $\N \ton{\sqrt{\phantom{a}}} \R$ below it. Not
all elements of $\N$ are shown in the blob-view of $\N$, but the ones
that are shown are named; compare this with \cite[p.2
  onwards]{LawvereRosebrugh}, in which the elements are usually dots.

The arrow $n \longmapsto \sqrt{n}$ between the blobs shows a {\sl
  generic element} of $\N$ and its image, and the other
`$\longmapsto$'s are {\sl substitution instances of it}, like this:
%
$$(n \longmapsto \sqrt{n}) [n:=2] = (2 \longmapsto \sqrt{2})$$

In some cases, like $4 \longmapsto 2$, we write 2 instead of
$\sqrt{4}$ because $\sqrt{4}$ ``reduces to'' 2, as explained in the
next section.




%  ____          _            _   _                 
% |  _ \ ___  __| |_   _  ___| |_(_) ___  _ __  ___ 
% | |_) / _ \/ _` | | | |/ __| __| |/ _ \| '_ \/ __|
% |  _ <  __/ (_| | |_| | (__| |_| | (_) | | | \__ \
% |_| \_\___|\__,_|\__,_|\___|\__|_|\___/|_| |_|___/
%                                                   
% «reductions»  (to ".reductions")
% Orig: (favp 19 "reductions")
%       (fava    "reductions")
%  sec: 5.1
%
\subsection{Reductions \DONE}
\label{reductions}

\def\squigton#1{\overset{#1}{\squigto}}

The convention (C$\mapsto$) says that an arrow $α \mapsto β$ above an
arrow $A \ton{f} B$ should be interpreted as meaning $f(α) \squigto
β$, where `$\squigto$' means ``reduces to''; the standard example is
$\sqrt{4} \squigto 2$. In a diagram:
%
%D diagram reductions-0
%D 2Dx     100 +20  +25 +40 +20 +25
%D 2D  100 A0  A1   B0  
%D 2D   +8 A2  A3       C0  C1  E0
%D 2D
%D 2D  +15 A4  A5       C2  C3
%D 2D
%D ren A0 A1 ==> 4 2
%D ren A2 A3 ==> n \sqrt{n}
%D ren A4 A5 ==> \N \R
%D ren B0    ==> \sqrt{4}\squigto2
%D ren C0 C1 ==> α β
%D ren C2 C3 ==> A B
%D ren E0    ==> f(α)\squigtoβ
%D
%D (( A0 A1 |->
%D    A2 A3 |->
%D    A4 A5 -> .plabel= a \sqrt{\phantom{a}}
%D    B0 place
%D    C0 C1 |->
%D    C2 C3 -> .plabel= a f
%D    E0 place
%D ))
%D enddiagram
%D
$$\pu
  \diag{reductions-0}
$$

The idea of reduction comes from $λ$-calculus. We write $α
\squigton{1} β$ to say that the term $α$ reduces to $β$ in one step,
and $α \squigton{*} γ$ to say that there is a finite sequence of
one-step reductions that reduce $α$ to $γ$. Here we are interested in
reduction in a system with constants, in which for example
$(\sqrt{\phantom{a}})(4) \squigton{1} 2$.

Here is a directed graph that shows all the one-step reductions
starting from $g(2+3)$, considering $g(a) = a·a+4$:
%
% (lam181p 5 "lambda")
% (lam181    "lambda")
%
%D diagram reduce-g
%D 2Dx     100 +30 +30  +40  +30
%D 2D  100 A ----> B
%D 2D      |       |
%D 2D      v       v
%D 2D  +25 E       |
%D 2D      | \     |
%D 2D      |  v    |
%D 2D  +20 |   F   |
%D 2D      |    \  |
%D 2D      v     v v
%D 2D  +20 G ----> H -> I -> J
%D 2D
%D ren  A  B  ==>  g(2+3)       g(5)
%D ren  E  F  ==>  (2+3)·(2+3)+4  (2+3)·5+4
%D ren  G  H  ==>  5·(2+3)+4       5·5+4
%D ren  I  J  ==>  25+4            29
%D (( A B ->   E F -> F H ->   G H ->
%D    A E -> E G ->            B H -> H I -> I J ->
%D ))
%D enddiagram
%D
$$\pu
  \diag{reduce-g}
$$

Note that all reductions sequences starting from $g(2+3)$ terminate at
the same term, 29 --- ``the term $g(2+3)$ is strongly normalizing''
---, and reduction sequences from $g(2+3)$ may ``diverge'' but they
``converge'' later --- this is the ``Church-Rosser Property'', a.k.a.
``confluence''.

A good place to learn about reduction in systems with constants is
\cite{SICP}.

% https://en.wikipedia.org/wiki/Confluence_(abstract_rewriting)

% (find-books "__comp/__comp.el" "abelson-sussman")
% (find-sicppage (+ 28  42)   "Figure 1.3: A linear recursive process for computing 6!")
% (find-sicptext (+ 28  42)   "Figure 1.3: A linear recursive process for computing 6!")
% (find-es "scheme" "sicp-pdf")
% (find-pdf-page "~/usrc/sicp-pdf/src/fig/chap1/Fig1.3c.pdf")
%  \begin{center}
%  \includegraphics[height=144pt]{2020favorite-conventions-frob.pdf}
%  \end{center}





%  _____                 _                 
% |  ___|   _ _ __   ___| |_ ___  _ __ ___ 
% | |_ | | | | '_ \ / __| __/ _ \| '__/ __|
% |  _|| |_| | | | | (__| || (_) | |  \__ \
% |_|   \__,_|_| |_|\___|\__\___/|_|  |___/
%                                          
% «internal-view-functor»  (to ".internal-view-functor")
% Orig: (favp 20 "internal-view-functor")
%       (fava    "internal-view-functor")
%  sec: 5.2
%
\subsection{Functors \DONE}
\label{internal-view-functor}

% (nyop 21 "blob-cats-and-functors")
% (nyo     "blob-cats-and-functors")
% (nyop 25 "convention-functors")
% (nyo     "convention-functors")


By the convention (CFSh) the image of the diagram above $\catA$ in the
diagram below --- remember that {\sl above} usually means {\sl inside}
---
%
%D diagram internal-view-functor-0
%D 2Dx     100 +10 +10   +25 +12 +12
%D 2D  100 A1 ____       B1 ____   
%D 2D  +10 |  ____ A3    |  ____ B3
%D 2D  +10 A2 ____  |    B2 ____  |
%D 2D  +10         A4            B4
%D 2D
%D 2D  +15   \catA ------> \catB
%D 2D
%D ren A1 A2 A3 A4 ==> A_1 A_2 A_3 A_4
%D
%D (( A1 A2 -> .plabel= l f
%D    A2 A3 -> .plabel= m g
%D    A3 A4 -> .plabel= r h
%D    A1 A3 -> .plabel= a k
%D    A2 A4 -> .plabel= b m
%D    \catA \catB -> .plabel= a F
%D ))
%D enddiagram
%D
$$\pu
  \diag{internal-view-functor-0}
$$
%
is a diagram with the same shape over $\catB$. We draw it like this:
%
%D diagram internal-view-functor-1
%D 2Dx     100 +10 +10   +25 +14 +14
%D 2D  100 A1 ____       B1 ____   
%D 2D  +10 |  ____ A3    |  ____ B3
%D 2D  +10 A2 ____  |    B2 ____  |
%D 2D  +10         A4            B4
%D 2D
%D 2D  +15   \catA ------> \catB
%D 2D
%D ren A1 A2 A3 A4 ==> A_1 A_2 A_3 A_4
%D ren B1 B2 B3 B4 ==> FA_1 FA_2 FA_3 FA_4
%D
%D (( A1 A2 -> .plabel= l f
%D    A2 A3 -> .plabel= m g
%D    A3 A4 -> .plabel= r h
%D    A1 A3 -> .plabel= a k
%D    A2 A4 -> .plabel= b m
%D    \catA \catB -> .plabel= a F
%D
%D    B1 B2 -> .plabel= l Ff
%D    B2 B3 -> .plabel= m Fg
%D    B3 B4 -> .plabel= r Fh
%D    B1 B3 -> .plabel= a Fk
%D    B2 B4 -> .plabel= b Fm
%D ))
%D enddiagram
%D
$$\pu
  \diag{internal-view-functor-1}
$$

In this case we don't draw the arrows like $A_1 \mapsto FA_1$ because
there would be too many of them --- we leave them implicit.

We say that the diagram above is {\sl an} internal view of the functor
$F$. To draw {\sl the} internal view of the functor $F: \catA → \catB$
we start with a diagram in $\catA$ that is made of two generic objects
and a generic morphism between them. We get this:

%D diagram internal-view-functor-2
%D 2Dx     100 +20
%D 2D  100 A0  A1
%D 2D
%D 2D  +20 A2  A3
%D 2D
%D 2D  +15 B0  B1
%D 2D
%D ren A0 A1 A2 A3 B0 B1 ==> C FC D FD \catA \catB
%D
%D (( A0 A1 |->
%D    A0 A2 ->  .plabel= l g
%D    A1 A3 ->  .plabel= r Fg
%D    A2 A3 |->
%D    A0 A3 harrownodes nil 20 nil |->
%D    B0 B1 -> .plabel= a F
%D ))
%D enddiagram
%D
$$\pu
  \diag{internal-view-functor-2}
$$

Compare this with the diagram with blob-sets in Section
\ref{internal-views}, in which the `$n \mapsto \sqrt{n}$' says where a
generic element is taken.

Any arrow of the form $α \mapsto β$ above a functor arrow $\catA
\ton{F} \catB$ is interpreted as saying that $F$ takes $α$ to $β$, or,
in the terminology of the section \ref{reductions}, that $Fα$ reduces
to $β$. So this diagram 
%
%D diagram internal-view-functor-3
%D 2Dx     100 +25
%D 2D  100 A0  A1
%D 2D
%D 2D  +20 A2  A3
%D 2D
%D 2D  +15 B0  B1
%D 2D
%D ren A0 A1 A2 A3 B0 B1 ==> B A{×}B C A{×}C \Set \Set
%D
%D (( A0 A1 |->
%D    A0 A2 ->  .plabel= l f
%D    A1 A3 ->  .plabel= r λp.(πp,f(π'p))
%D    A2 A3 |->
%D    A0 A3 harrownodes nil 20 nil |->
%D    B0 B1 -> .plabel= a (A{×})
%D ))
%D enddiagram
%D
$$\pu
  \diag{internal-view-functor-3}
$$
%
defines $(A×)$ as:
%
$$\begin{array}{rcl}
  (A×)_0 &:=& λB.\,A×B,\\
  (A×)_1 &:=& λf.λp.(πp,f(π'p)).\\
  \end{array}
$$

In this case we can also use internal views of $(A×)$ to define
$(A×)_1$:
%
%D diagram internal-view-functor-4
%D 2Dx     100 +25 +30 +35
%D 2D  100 A0  A1  C0  D0
%D 2D
%D 2D  +20 A2  A3  C1  D1
%D 2D
%D 2D  +15 B0  B1
%D 2D
%D ren A0 A1 A2 A3 B0 B1 ==> B A{×}B C A{×}C \Set \Set
%D ren C0 C1 ==> (a,b) (a,f(b))
%D ren D0 D1 ==> p (πp,f(π'p))
%D
%D (( A0 A1 |->
%D    A0 A2 ->  .plabel= l f
%D    A1 A3 ->  .plabel= r (A{×})f
%D    A2 A3 |->
%D    A0 A3 harrownodes nil 20 nil |->
%D    B0 B1 -> .plabel= a (A{×})
%D    C0 C1 |->
%D    D0 D1 |->
%D ))
%D enddiagram
%D
$$\pu
  \diag{internal-view-functor-4}
$$






%  _   _ _____    
% | \ | |_   _|__ 
% |  \| | | |/ __|
% | |\  | | |\__ \
% |_| \_| |_||___/
%                 
% «internal-view-NT»  (to ".internal-view-NT")
% Orig: (favp 22 "internal-view-NT")
%       (fava    "internal-view-NT")
%  sec: 22
%
\subsection{Natural transformations \DONE}
\label{internal-view-NT}

Suppose that we have two functors $F,G:\catA → \catB$ and a natural
transformation $T:F→G$. A first way to draw an internal view of $T$ is
this:
%
%D diagram internal-view-NT-0
%D 2Dx     100 +25
%D 2D  100     A1
%D 2D  +10 A0
%D 2D  +10     A2
%D 2D
%D 2D  +15 B0  B1
%D 2D
%D ren A0 A1 A2 B0 B1 ==> C FC GC \catA \catB
%D
%D (( A0 A1 |->
%D    A0 A2 |->
%D    A1 A2 -> .plabel= r TC
%D    A0 A1 A2 midpoint |->
%D    B0 B1 -> sl^ .plabel= a F
%D    B0 B1 -> sl_ .plabel= b G
%D    
%D ))
%D enddiagram
%D
$$\pu
  \diag{internal-view-NT-0}
$$

If we start with a morphism $h:C→D$ in $\catA$, like this,
%
%D diagram NT-00
%D 2Dx     100 +25
%D 2D  100 A0
%D 2D  +20 A1
%D 2D  +15 D0  D1
%D 2D
%D ren A0 A1 ==> C D
%D ren D0 D1 ==> \catA \catB
%D
%D (( A0 A1 -> .plabel= l h
%D    D0 D1 -> sl^ .plabel= a F
%D    D0 D1 -> sl_ .plabel= b G
%D ))
%D enddiagram
%
$$\pu
  \diag{NT-00}
$$
%
the convention (CFSh) would yield an image of $h$ by $F$ and another
by $G$, and we can draw the arrows $TC$ and $TD$ to obtain a commuting
square in $\catB$:
%
%D diagram NT-0
%D 2Dx     100 +20 +15 +15
%D 2D  100 A0
%D 2D  +15     B0      B1
%D 2D  +15 A1
%D 2D  +15     B2      B3
%D 2D
%D 2D  +15     C0      C1
%D 2D
%D 2D  +15 D0      D1
%D 2D
%D ren A0 A1 ==> C D
%D ren B0 B1 B2 B3 ==> FC GC FD GD
%D ren C0 C1 ==> F G
%D ren D0 D1 ==> \catA \catB
%D
%D (( A0 B0 |->
%D    A0 B1 |->
%D    A1 B2 |->
%D    A1 B3 |->
%D    
%D    A0 A1 -> .plabel= l h
%D    B0 B1 -> .plabel= b TC
%D    B0 B2 -> .plabel= r Fh
%D    B1 B3 -> .plabel= r Gh
%D    B2 B3 -> .plabel= b TD
%D    C0 C1 -> .plabel= a T
%D    D0 D1 -> sl^ .plabel= a F
%D    D0 D1 -> sl_ .plabel= b G
%D ))
%D enddiagram
%
$$\pu
  \diag{NT-0}
$$

This way of drawing internal views of natural transformations yields
diagrams that are too heavy, so we will usually draw them as just
this:
%
%D diagram NT-1
%D 2Dx     100 +20 +25
%D 2D  100 A0  B0  B1
%D 2D
%D 2D  +25 A1  B2  B3
%D 2D  +15     C0  C1
%D 2D
%D ren A0 A1 ==> C D
%D ren B0 B1 B2 B3 ==> FC GC FD GD
%D ren C0 C1 ==> F G
%D
%D (( A0 A1 -> .plabel= l h
%D    B0 B1 -> .plabel= a TC
%D    B0 B2 -> .plabel= l Fh
%D    B1 B3 -> .plabel= r Gh
%D    B2 B3 -> .plabel= b TD
%D    C0 C1 -> .plabel= a T
%D ))
%D enddiagram
%
$$\pu
  \diag{NT-1}
$$
%
Note that the input morphism is at the left, and above $F \ton{T} G$
we draw its images by $F$, $G$, and $T$.

When the codomain of $F$ and $G$ is $\Set$ we will sometimes also draw
at the right an internal view of the commuting square, like this:
%
%D diagram NT-2
%D 2Dx     100 +20 +30 +25 +45
%D 2D  100 A0  B0  B1  D0  D1
%D 2D  +22                 D3'
%D 2D  +8  A1  B2  B3  D2  D3
%D 2D
%D 2D  +15     C0  C1
%D 2D
%D ren A0 A1       ==> C D
%D ren B0 B1 B2 B3 ==> FC GC FD GD
%D ren C0 C1       ==> F G
%D ren D0 D1 D3'   ==> x (TC)(x) (Gh∘TC)(x)
%D ren    D2 D3    ==>   (Fh)(x) (TD∘Ff)(x)
%D
%D (( A0 A1 -> .plabel= l h
%D    B0 B1 -> .plabel= a TC
%D    B0 B2 -> .plabel= l Fh
%D    B1 B3 -> .plabel= r Gh
%D    B2 B3 -> .plabel= a TD
%D    C0 C1 -> .plabel= a T
%D    D0 D1 |-> D1 D3' |-> D0 D2 |-> D2 D3 |->
%D ))
%D enddiagram
%D
$$\pu
  \diag{NT-2}
$$
%
Then the commutativity of the middle square is equivalent to
$∀x∈FC.(Gh∘TC)(x)=(TD∘Ff)(x)$. Note that in this case the square at
the right is an internal view of an internal view.

In Section \ref{to-deserve-a-name} we saw that a functor has four
components. A natural transformation has two: $T=(T_0, \sqcond_T)$,
where $T_0$ is the operation $C \mapsto TC$ and $\sqcond_T$ is the
guarantee that all the induced squares commute.

% Sometimes we will use the upper line of the internal view of the
% internal view to define $T_0$ --- see Section \ref{basic-example-NT}
% for an example of this.
% 
% \standout{TODO:} Fix the reference above.

% Tom Leinster has a diagram like my internal view of
% the internal view...
% (find-books "__cats/__cats.el" "leinster-basic")
% (find-leinsterbasicpage (+ 8  86)   "Lemma 4.1.10")
% (find-leinsterbasictext (+ 8  86)   "Lemma 4.1.10")




%     _       _  _                  _   _                 
%    / \   __| |(_)_   _ _ __   ___| |_(_) ___  _ __  ___ 
%   / _ \ / _` || | | | | '_ \ / __| __| |/ _ \| '_ \/ __|
%  / ___ \ (_| || | |_| | | | | (__| |_| | (_) | | | \__ \
% /_/   \_\__,_|/ |\__,_|_| |_|\___|\__|_|\___/|_| |_|___/
%             |__/                                        
%
% «internal-view-adjunction»  (to ".internal-view-adjunction")
% Orig: (favp 24 "internal-view-adjunction")
%       (fava    "internal-view-adjunction")
%  sec: 5.4
%
\subsection{Adjunctions \DONE}
\label{internal-view-adjunction}

% (nyop 35 "convention-adjs")
% (nyo     "convention-adjs")

We will draw adjunctions like this,
%
%D diagram generic-adjunction
%D 2Dx     100    +25
%D 2D  100 LB <-| B
%D 2D      |      |
%D 2D      v      v 
%D 2D  +20 C |--> RC
%D 2D                  
%D 2D  +15 E <==> F    
%D 2D
%D ren LB B ==> LA  A
%D ren C RC ==> B  RB
%D ren E F  ==> \catB \catA
%D
%D (( LB B <-| # .plabel= a L_0
%D    C RC |-> # .plabel= b R_0
%D
%D    LB RC harrownodes nil 20 nil <->
%D
%D    LB  C -> # .plabel= l \sm{g^♭\\f}
%D     B RC -> # .plabel= r \sm{g\\f^♯}
%D    E F <- sl^ .plabel= a L
%D    E F -> sl_ .plabel= b R
%D ))
%D enddiagram
%D
$$\pu
  \diag{generic-adjunction}
$$
%
with the left adjoint going left and the right adjoint going right. My
favorite names for the left and right adjoints are $L$ and $R$. The
standard notation for that adjunction is $L⊣R$.

The top-level component of the diagram above is the bijection arrow in
the middle of the square --- it says that $\Hom(LA,B) ↔ \Hom(A,RB)$.
It is implicit that we have bijections like that for all $A$ and $B$;
it is also implicit that that bijection is natural in some sense.

We will sometimes expand adjunction diagrams by adding unit and counit
maps, the unit and the unit as natural transformations, the actions of
$L$ and $R$ on morphisms, and other things. For example:
%
%D diagram generic-adjunction-with-with
%D 2Dx     100 +20 +20 +20 +20 +20
%D 2D  100         D0  D1
%D 2D  +20 B0  C0  D2  D3  E0  F0 
%D 2D  +20 B1  C1  D4  D5  E1  F1 
%D 2D  +20         D6  D7
%D 2D  +15         H0  H1
%D 2D
%D ren             D0  D1          ==>                 LA' A'
%D ren     B0  C0  D2  D3  E0  F0  ==>    LR      LRB  LA  A   A  \id_\catA
%D ren     B1  C1  D4  D5  E1  F1  ==> \id_\catB   B   B  RB  RLA  LR
%D ren             D6  D7          ==>                 B' RB'     
%D ren             H0  H1          ==>              \catB \catA
%D
%D (( B0 B1  -> .plabel= l ε
%D    C0 C1  -> .plabel= l ε_B
%D
%D    D0 D1 <-|
%D    D0 D2  -> .plabel= l Lf
%D    D1 D3  -> .plabel= r  f
%D    D0 D3 harrownodes nil 20 nil <-|
%D    D2 D3 <-|
%D    D2 D4  -> .plabel= l \sm{h^♭\\g}
%D    D3 D5  -> .plabel= r \sm{h\\g^♯}
%D    D2 D5 harrownodes nil 20 nil <-| sl^
%D    D2 D5 harrownodes nil 20 nil |-> sl_
%D    D4 D5 |->
%D    D4 D6  -> .plabel= l k
%D    D5 D7  -> .plabel= r Rk
%D    D6 D7 |->
%D    D4 D7 harrownodes nil 20 nil |->
%D
%D    E0 E1  -> .plabel= r η_A
%D    F0 F1  -> .plabel= r η
%D
%D    H0 H1 <-  sl^ .plabel= a L
%D    H0 H1  -> sl_ .plabel= b R    
%D ))
%D enddiagram
%D
$$\pu
  \diag{generic-adjunction-with-with}
$$

\def\HomA#1{HomA(#1)}
\def\HomB#1{HomB(#1)}
\def\HomA#1{\catA(#1)}
\def\HomB#1{\catB(#1)}

We can obtain the naturality conditions by regarding $♭$ and $♯$ as
natural transformations and drawing the internal views of their
internal views:
%
%D diagram adj-nat-conditions
%D 2Dx     100 +35  +45 +45  +45
%D 2D  100 A0  B0 - B1  D0 - D1
%D 2D      |   |     |  |     |
%D 2D  +17 |   |     |  D2'   |
%D 2D   +8 A1  B2 - B3  D2 - D3
%D 2D
%D 2D  +15 A2  C0 = C1
%D 2D
%D 2D  +20 E0  F0 - F1  H0 - H1
%D 2D      |   |     |  |     |
%D 2D  +17 |   |     |  |    H3'
%D 2D   +8 E1  F2 - F3  H2 - H3
%D 2D
%D 2D  +15 E2  G0 = G1
%D 2D
%D ren A0 A1 A2    ==> (A,B) (A',B') \catA^\op{×}\catB
%D ren B0 B1 D0 D1 ==>   \HomB{LA,B} \HomA{A,RB}   h^♭           h
%D ren       D2'   ==>                             k∘h^♭∘Lf
%D ren B2 B3 D2 D3 ==> \HomB{LA',B'} \HomA{A',RB'} (Rk∘h∘f)^♭ Rk∘h∘f
%D ren C0 C1       ==> \HomB{L-,-}   \HomA{-,R-}
%D
%D ren E0 E1 E2     ==> (A,B) (A',B') \catA^\op{×}\catB
%D ren F0 F1 H0 H1  ==>   \HomB{LA,B} \HomA{A,RB}     g        g^♯
%D ren          H3' ==>                                     Rk∘g^♯∘f
%D ren F2 F3 H2 H3  ==> \HomB{LA',B'} \HomA{A',RB'} k∘g∘Lf (k∘g∘Lf)^♯
%D ren G0 G1        ==> \HomB{L-,-}   \HomA{-,R-}
%D
%D (( A0 A1 -> .plabel= l (f^\op,g)
%D  # A2 place
%D    B0 B1 <-
%D    B0 B2 ->
%D    B1 B3 ->
%D    B2 B3 <-
%D    C0 C1 <- .plabel= a ♭
%D    D0 D1  <-|
%D    D0 D2' |-> 
%D    D1 D3  |-> 
%D    D2 D3  <-|
%D
%D    E0 E1 -> .plabel= l (f^\op,g)
%D  # E2 place
%D    F0 F1 ->
%D    F0 F2 ->
%D    F1 F3 ->
%D    F2 F3 ->
%D    G0 G1 -> .plabel= a ♯
%D    H0 H1 |-> H1 H3' |->
%D    H0 H2 |-> H2 H3 |->
%D
%D ))
%D enddiagram
%D
$$\pu
  \diag{adj-nat-conditions}
$$





%  _____               _     _                         _  _     
% |_   _|__  __ _  ___| |__ (_)_ __   __ _    __ _  __| |(_)___ 
%   | |/ _ \/ _` |/ __| '_ \| | '_ \ / _` |  / _` |/ _` || / __|
%   | |  __/ (_| | (__| | | | | | | | (_| | | (_| | (_| || \__ \
%   |_|\___|\__,_|\___|_| |_|_|_| |_|\__, |  \__,_|\__,_|/ |___/
%                                    |___/             |__/     
%
% «teaching-adjunctions»  (to ".teaching-adjunctions")
% Orig: (favp 25 "teaching-adjunctions")
%       (fava    "teaching-adjunctions")
%  sec: 5.5

\subsection{A way to teach adjunctions \DONE}
\label{teaching-adjunctions}

I mentioned in the first sections that I have tested some parts of
this language in a seminar course --- described here:
\cite{OchsWLD2019} --- and that in it I taught Categories starting by
adjunctions. Here's how: we started by the basics of $λ$-calculus and
some sections of \cite{PH1}, and then I asked the students to define
each one of the operations in the right half of the diagram below as
$λ$-terms:
%
% --- where $(C{→}D) = D^C$:
%
%D diagram generic-adjunction-big
%D 2Dx     100  +20    +25  +20
%D 2D  100      LA <-| A    
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +20 G    LB <-| B    I
%D 2D      |    |      |    |   
%D 2D      v    v      v    v   
%D 2D  +20 H    C |--> RC   J
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +20      D |--> RD   
%D 2D                       
%D 2D  +15      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  +30    +25  +35
%D 2D  100      LA <-| A    
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +20 G    LB <-| B    I
%D 2D      |    |      |    |   
%D 2D      v    v      v    v   
%D 2D  +20 H    C |--> RC   J
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +20      D |--> RD   
%D 2D                       
%D 2D  +15      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
$$
  \pu
  \diag{generic-adjunction-big}
  \qquad
  \diag{(xB)-|(B->)}
$$

Then we saw the definition of functors, natural transformations and
adjunctions, and we checked that the right half is a particular case
(``for children''!) of the diagram for a generic adjunction in the
left half. After that, and after also checking that in the Planar
Heyting Algebras of \cite{PH1} we have an adjunction $(∧Q)⊣(Q→)$, I
helped the students to decypher some excerpts of \cite{Awodey}.

\msk

From the components of the generic adjunction in the diagram above it
is possible to build this big diagram:
%
%D diagram teaching-adjunctions-1
%D 2Dx     100 +20 +20 +20 +20 +20 +20 +20 +20
%D 2D  100             A0  A1
%D 2D  +20             A2  A3
%D 2D  +20             A4  A5
%D 2D
%D 2D  +20 B0  B1      D0  D1
%D 2D  +20 B2  B3  C0  D2  D3  E0  F0  F1
%D 2D  +20 B4  B5  C1  D4  D5  E1  F2  F3
%D 2D  +20             D6  D7      F4  F5
%D 2D
%D 2D  +20             G0  G1
%D 2D  +20             G2  G3
%D 2D  +20             G4  G5
%D 2D
%D 2D  +20             H0  H1
%D 2D
%D
%D ren                 A0  A1      ==>  LA' A'
%D ren                     A3      ==>      A
%D ren                 A4  A5      ==>  LA RLA
%D
%D ren     B0  B1      D0  D1              ==>  LA  A      LA' A'
%D ren     B2  B3  C0  D2  D3  E0      F1  ==> LRB RB  LRB  LA A   A       A
%D ren     B4      C1  D4  D5  E1  F2  F3  ==>   B      B   B RB  RLA  LA RLA
%D ren                 D6  D7      F4  F5  ==>             B' RB'       B RB
%D
%D ren                 G0  G1              ==> LRB RB
%D ren                 G2                  ==>  B
%D ren                 G4  G5              ==>  B' RB'
%D
%D ren                 H0  H1      ==>  \catB \catA
%D
%D ((
%D ))
%D (( A0 A1 <-|
%D    A0 A4  -> .plabel= l Lf
%D    A1 A3  -> .plabel= r f
%D    A3 A5  -> .plabel= r η_A
%D    A1 A5  -> .slide= -10pt
%D    A0 A5 harrownodes nil 15 5 <-|
%D    A4 A5 <-|
%D    
%D    B0 B1 <-|
%D    B0 B2  -> .plabel= l Lh
%D    B1 B3  -> .plabel= r  h
%D    B0 B3 harrownodes nil 20 nil <-|
%D    B2 B3 <-|
%D    B2 B4  -> .plabel= l ε_B
%D    B0 B4  -> .slide= -20pt .plabel= l g
%D
%D    C0 C1  -> .plabel= l ε_B
%D
%D    D0 D1 <-|
%D    D0 D2  -> .plabel= l Lf
%D    D1 D3  -> .plabel= r  f
%D    D0 D3 harrownodes nil 20 nil <-|
%D    D2 D3 <-|
%D    D2 D4  -> .plabel= l \sm{h^♭\\g}
%D    D3 D5  -> .plabel= r \sm{h\\g^♯}
%D    D2 D5 harrownodes nil 20 nil <-| sl^
%D    D2 D5 harrownodes nil 20 nil |-> sl_
%D    D4 D5 |->
%D    D4 D6  -> .plabel= l k
%D    D5 D7  -> .plabel= r Rk
%D    D6 D7 |->
%D    D4 D7 harrownodes nil 20 nil |->
%D
%D    E0 E1  -> .plabel= r η_A
%D
%D    F1 F3  -> .plabel= r η_A
%D    F2 F3 |->
%D    F2 F4  -> .plabel= l g
%D    F3 F5  -> .plabel= r Rg
%D    F4 F5 |->
%D    F2 F5 harrownodes nil 20 nil |->
%D    F1 F5  -> .slide= 20pt .plabel= r h
%D
%D    G0 G1 |->
%D    G0 G2  -> .plabel= l η_B
%D    G2 G4  -> .plabel= l k
%D    G0 G4  -> .slide= 10pt
%D    G1 G5  -> .plabel= r Rk
%D    G4 G5 |->
%D    G0 G5 harrownodes 5 15 nil |->
%D
%D    H0 H1 <-  sl^ .plabel= a L
%D    H0 H1  -> sl_ .plabel= b R    
%D ))
%D enddiagram
%D
$$\pu
  \diag{teaching-adjunctions-1}
$$

Let's use these names for its subdiagrams: $\sm{ A \\ BCDEF \\ G \\ I}$.

% (find-riehlccpage (+ 18 124) "fully-specified adjunction")
% (find-riehlcctext (+ 18 124) "fully-specified adjunction")

A {\sl fully-specified adjunction} between categories $\catB$ and
$\catA$ has lots of components: $(L, R, ε, η, ♭, ♯, \univ(ε),
\univ(η))$, and maybe even others, but usually we define only some of
these components; there is a Big Theorem About Adjunctions (below!)
that says how to reconstruct the fully-specified adjunction from some
of its components.

Some parts of the diagram above can be interpreted as definitions,
like these:
%
$$\begin{array}{c}
  Lf := (η_A∘f)^♭ \\
  [5pt]
  g := ε_B∘Lh 
    \qquad ε_B := (\id_{RB})^♭
    \qquad η_A := (\id_{LA})^♯
    \qquad h := Rg∘η_A \\
  [5pt]
  Rk := (k∘η_B)^♯ \\
  \end{array}
$$

The subdiagrams $B$ and $F$ can also be interpreted in the opposite
direction, as:
%
$$\begin{array}{rclcrcl}
  g^♯ &:=& (∀A.∀g.∃!h)Ag    &\phantom{mmmmmm}&  h^♭ &:=& (∀B.∀h.∃!g)Bh \\
       &=& (\univ_{ε_B})Ag  &&                       &=& (\univ_{η_A}) Bh \\
  \end{array}
$$

The notations $(∀A.∀g.∃!h)Ag$ and $(\univ_{ε_B})Ag$ are clearly abuses
of language --- but it's not hard to translate them to something
formal, and these notations inspired great discussions in the
classroom... also, they can help us to understand and formalize
constructions like this one,
%
%D diagram building-L_1f
%D 2Dx     100 +25 +25
%D 2D  100     A1
%D 2D
%D 2D  +25 A2  A3  B1
%D 2D
%D 2D  +25     B2  B3
%D 2D
%D 2D  +15 C0  C1
%D 2D
%D ren A1 A2 A3 ==> A' LA' RLA'
%D ren B1 B2 B3 ==> A  LA  RLA
%D ren C0 C1    ==> \catB \catA
%D
%D (( A1 A3  -> .plabel= l \sm{η_{A'}\\\univ}
%D    A2 A3 |->
%D    B1 B3  -> .plabel= r \sm{η_A\\\univ}
%D    B2 B3 |->
%D    A1 B1  -> .plabel= a f
%D    A2 B2  -> .plabel= l Lf
%D    A3 B3  -> .plabel= m RLf
%D    A2 B3 harrownodes nil 15 2 |->
%D    C0 xy+= 12 0
%D    C1 xy+= 12 0
%D    C0 C1 -> .plabel= b R
%D ))
%D enddiagram
%D
$$\pu
  Lf := (\univ_{η_A})(LA)(η_A∘f)
  \qquad
  \diag{building-L_1f}
$$
%
that are needed in cases like the part (ii) of the Big Theorem.

The Big Theorem About Adjunctions is this --- it's the Theorem 2 in
\cite[page 83]{CWM2}, but with letters changed to match the ones we
are using in our diagrams:

\def\ORIG#1{\msk\ColorBrown{#1}}
\def\ORIG#1{}

\newpage

\begin{quotation}

  \ORIG{{\bf Theorem 2.} Each adjunction $〈F,G,φ〉: X \rightharpoonup
    A$ is completely determined by the items in any one of the
    following lists:}

  {\bf Big Theorem About Adjunctions.} Each adjunction $〈L,R,♯〉: \catA
  \rightharpoonup \catB$ is completely determined by the items in any
  one of the following lists:



  \ORIG{(i) Functors $F$, $G$, and a natural transformation $η: 1_X
    \tnto GF$ such that each $η_x: x→GFx$ is universal to $G$ from
    $x$. Then $φ$ is defined by (6).}

  (i) Functors $L$, $R$, and a natural transformation $η:
  \id_\catA→RL$ such that each $η_A: A→RLA$ is universal to $R$ from
  $A$. Then $♯$ is defined by (6).



  \ORIG{(ii) The functor $G: A → X$ and for each $x∈X$ an
    object $F_0x∈A$ and a universal arrow $η_x:x→GF_0x$ from $x$
    to $G$. Then the functor $F$ has object function $F_0$ and is
    defined on arrows $h:x→x'$ by $GFh∘η_x = η_{x'}∘h$.}

  (ii) The functor $R: \catB → \catA$ and for each $A∈\catA$ an object
  $L_0A∈\catB$ and a universal arrow $η_A:A→RL_0A$ from $A$ to $R$.
  Then the functor $L$ has object function $L_0$ and is defined on
  arrows $f:A'→A$ by $RLf∘η_{A'} = η_A∘f$.



  \ORIG{(iii) Functors $F$, $G$, and a natural transformation $ε: FG
    \tnto I_A$ such that each $ε_a:FGa→a$ is universal from $F$ to
    $a$. Here $φ^{-1}$ is defined by (7).}

  (iii) Functors $L$, $R$, and a natural transformation $ε:
  LR→\id_\catB$ such that each $ε_B:LRB→B$ is universal from $L$ to
  $B$. Here $♭$ is defined by (7).



  \ORIG{(iv) The functor $F:X→A$ and for each $a∈A$ an object $G_0a∈X$
    and an arrow $ε_a:FG_0a→a$ universal from $F$ to $a$.}

  (iv) The functor $L:\catA→\catB$ and for each $B∈\catB$ an object
  $R_0B∈\catA$ and an arrow $ε_B:LR_0B→B$ universal from $L$ to $B$.



  \ORIG{(v) Functors $F$, $G$ and natural transformations $η:I_x \tnto
    GF$ and $ε: FG \tnto I_A$ such that both composites (8) are the
    identity transformations. Here $φ$ is defined by (6) and $φ^{-1}$
    by (7).}

  (v) Functors $L$, $R$ and natural transformations $η:\id_\catA→RL$
  and $ε:LR→\id_\catB$ such that both composites (8) are the identity
  transformations. Here $♯$ is defined by (6) and $♭$ by (7).

\end{quotation}

% My plan for the next incarnation of the course is to ask the students
% to 1) visualize in the big diagram all the objects and constructions
% in the Big Theorem, 2) take the original Theorem 2 in \cite{CWM2} and
% draw the missing diagrams for it, 3) decypher some other parts of the
% section about adjunctions in \cite{CWM2}.



% (find-books "__cats/__cats.el" "maclane")
% (find-cwm2page (+ 13  79) "IV. Adjoints")
% (find-cwm2page (+ 13  79)   "1. Adjunctions")
% (find-cwm2text (+ 13  79)   "1. Adjunctions")
% (find-cwm2page (+ 13  83) "Theorem 2.")
% (find-cwm2text (+ 13  83) "Theorem 2.")


\newpage

%  _____                   __                   _     _ _     _                
% |_   _|   _ _ __  ___   / _| ___  _ __    ___| |__ (_) | __| |_ __ ___ _ __  
%   | || | | | '_ \/ __| | |_ / _ \| '__|  / __| '_ \| | |/ _` | '__/ _ \ '_ \ 
%   | || |_| | |_) \__ \ |  _| (_) | |    | (__| | | | | | (_| | | |  __/ | | |
%   |_| \__, | .__/|___/ |_|  \___/|_|     \___|_| |_|_|_|\__,_|_|  \___|_| |_|
%       |___/|_|                                                               
%
% «types-for-children»  (to ".types-for-children")
% (misp 29 "types-for-children")
% (misa    "types-for-children")
% Sec: 6
\section{Types for Children}
\label{types-for-children}

% \cite{MartinLofCMCP}
% \cite{SelingerLN}
% \cite{Norell08}
% (find-books "__logic/__logic.el" "martin-lof-cmcp")

We will need a bit of Type Theory in the sections \ref{ness} and
\ref{comma-categories}. We will need some non-standard notational
conventions that appear more or less naturally when we present Theory
Theory ``for children'' in the right way --- let's see the details.

\msk

% (find-books "__cats/__cats.el" "selinger-ln")
% (find-selingerlnpage  51 "6 Simply-typed lambda calculus...")

Section 6 of \cite{SelingerLN} has a very good presentation of types
``for adults'': it uses expressions like $A×B$ and $A→B$ as and treats
them as purely syntactical objects, but each one comes with an
``intended meaning''. Let's start by defining a version ``for
children'' of that in which these intended meanings become more
concrete, and then we will work in the version ``for children'' and in
the version ``for adults'' in parallel.

% «dependent-types»  (to ".dependent-types")
% (misp 29 "dependent-types")
% (misa    "dependent-types")
% Sec: 6.1
\subsection{Dependent types}
\label{dependent-types}

In our version ``for children'':

\begin{itemize}

\item all types are sets,

\item some sets are types,

\item every finite subset of $\N$ is a type,

\item if $A$ and $B$ are types then $A×B$ and $A→B$ are types. $A×B$
  is the space of pairs of the form $(a,b)$ in which $a∈A$ and $b∈B$,
  and $A→B$ is the space of functions from $A$ to $B$,

\item $a:A$ means $a∈A$ --- the distinction between `$:$' and `$∈$'
  will only appear in other settings,

\item ``space of'' means ``set of''. The space of functions from $A$
  to $B$ is the set of all functions from $A$ to $B$, and each
  function is considered as a set of input-output pairs. So, for
  example, if $A=\{2,3\}$ and $B=\{4,5\}$ then:
  %
  $$\def\fa#1#2{\csm{(2,#1),\\(3,#2)\,}}
    \begin{array}{rcl}
    A×B &=& \{(2,4),
              (2,5),
              (3,4),
              (3,5),
            \}, \\
    A→B &=& \left\{ \fa44, \fa45, \fa54, \fa55
            \right\} \\
    \end{array}
  $$

\item if $A$ is a type and $(C_a)_{a∈A}$ is a family of types indexed
  by $A$ then $Πa{:}A.C_a$ and $Σa{:}A.C_a$ are dependent types
  defined in the usual way, and $(a{:}A) → C_a$ and $(a{:}A)×C_a$ are
  alternate notations for $Πa{:}A.C_a$ and $Σa{:}A.C_a$ (see
  \cite[section 2]{Norell08}). Formally,
  %
  $$\def\aCa{\bigcup_{a∈A}C_a}
    \begin{array}{rcl}
     Σa{:}A.C_a &=& \setofst{(a,c)∈A × (\aCa) }{a∈A, \; c∈C_a} \\
    (a{:}A)×C_a &=& \setofst{(a,c)∈A × (\aCa) }{a∈A, \; c∈C_a} \\
     Πa{:}A.C_a &=& \setofst{f:A→(\aCa) }{∀a∈A.\;f(a)∈C_a} \\
    (a{:}A)→C_a &=& \setofst{f:A→(\aCa) }{∀a∈A.\;f(a)∈C_a} \\
    \end{array}
  $$
  %
  If $A=\{2,3\}$, $C_2=\{6,7\}$, and $C_3=\{7,8\}$ then:
  %
  $$\def\fa#1#2{\csm{(2,#1),\\(3,#2)\,}}
    \begin{array}{rcl}
    (a{:}A)×C_a &=& \{(2,6),
                      (2,7),
                      (3,7),
                      (3,8),
                    \}, \\
    (a{:}A)→C &=& \left\{ \fa67, \fa68, \fa77, \fa78
                  \right\}. \\
    \end{array}
  $$ 

\end{itemize}

% «witnesses»  (to ".witnesses")
% (misp 29 "witnesses")
% (misa    "witnesses")
% Sec: 6.2
\subsection{Witnesses}
\label{witnesses}

If $P$ is a proposition we will write $⟦P⟧$ for its {\sl space of
  witnesses}, or its {\sl space of proofs}. The exact definition of
$⟦P⟧$ will usually depend on the context, but we always have $⟦P⟧=∅$
when $P$ is false and $⟦P⟧\neq∅$ when $P$ is true. In some situations
all the witnesses of a proposition $P$ will be identified --- this is
called {\sl proof irrelevance}; see \cite[p.340]{NederpeltGeuvers} ---
and all the spaces of witnesses will be either singletons or empty
sets; in other situations some `$⟦P⟧$'s will have more than one
element.

% (find-books "__logic/__logic.el" "nederpelt-geuvers")
% (find-ttafpaipage (+ 29 340) "14.13 Irrelevance of proof")

The notation $\AProofOf{P}$ will denote a witness that $P$ is true.
Formally, $\AProofOf{P}$ is a variable (with a long name!) whose type
is $\AllProofsOf{P}$. A good way to remember this notation is that
$\AllProofsOf{P}$ looks like a box and $\AProofOf{P}$ looks like
something that comes in that box.

\msk

{

\def\a{\mathsf{a}}
\def\b{\mathsf{b}}

In Agda the operation `$≡$' returns a space of proofs of equality. If
$\a$ and $\b$ are expressions with the same type then Agda's `$\a≡\b$'
corresponds to our $\AllProofsOf{\a=\b}$, and people sometimes use the
name `$\a{≡}\b$' to denote an element of $\a≡\b$ --- we use
$\AProofOf{\a=\b}$ for that. See the section ``Equality'' in
\cite{WadlerPLFA} for simple examples, and Agda's standard library for
more examples.

}

%\standout{TODO:} mention that in Agda we write $a{≡}b : a≡b$. Point to
%\cite{WadlerPLFA}.
% (find-LATEX "catsem-ab.bib" "bib-WadlerPLFA")
% (find-angg ".emacs.agda" "plfa5")
% (find-plfa5page 5 "Chains of equations")
% (find-plfa5text 5 "Chains of equations")

% «judgments»  (to ".judgments")
% (misp 30 "judgments")
% (misa    "judgments")
% Sec: 6.3
\subsection{Judgments}

% (find-books "__logic/__logic.el" "nederpelt-geuvers")
% (find-ttafpaipage (+ 29 127)   "Figure 6.4 Derivation rules")
% (find-ttafpaitext (+ 29 127)   "Figure 6.4 Derivation rules")

The main objects of Type Theory are {\sl derivable judgements}. A
derivable judgment is one that can appear as the root node of a
derivation in which each bar is an application of one the rules in
\cite[p.127]{NederpeltGeuvers}. These derivations are usually huge ---
for example, here is a derivation for $A⠆Θ,B⠆Θ⊢(Πa⠆A.B)⠆Θ$:
%:
%:                                ----a  ----a      ----a      ----a  ----a
%:                                ⊢Θ⠆□   ⊢Θ⠆□       ⊢Θ⠆□       ⊢Θ⠆□   ⊢Θ⠆□ 
%:   ----a  ----a      ----a      -----------w_□   -------v_□   -----------w_□ 
%:   ⊢Θ⠆□   ⊢Θ⠆□       ⊢Θ⠆□        A⠆Θ⊢Θ⠆□         A⠆Θ⊢A⠆Θ       A⠆Θ⊢Θ⠆□
%:   -----------w_□   -------v_□   -----------------------w_□  -----------v_□
%:    A⠆Θ⊢Θ⠆□         A⠆Θ⊢A⠆Θ            A⠆Θ,B⠆Θ⊢A⠆Θ           A⠆Θ,B⠆Θ⊢B⠆Θ
%:    -----------------------w_□         ---------------------------------w_Θ
%:          A⠆Θ,B⠆Θ⊢A⠆Θ                        A⠆Θ,B⠆Θ,a⠆A⊢B⠆Θ
%:          --------------------------------------------------Π_{ΘΘΘ}
%:              A⠆Θ,B⠆Θ⊢(Πa⠆A.B)⠆Θ
%:
%:              ^depprod1
%:
\pu
$$\resizebox{0.7\textwidth}{!}{$
    \ded{depprod1}
  $}
$$
%
so rarely draw them explicitly, and we use other tools to show that
certain judgments are derivable.

Every derivable judgment obeys this (taken verbatim from
\cite[p.52]{SelingerLN}):
%
% (find-books "__cats/__cats.el" "selinger-ln")
% (find-selingerlnpage  52   "typing judgment")
% (find-selingerlntext  52   "typing judgment")
%
\begin{quotation}

  A typing judgment is an expression of the form
  %
  $$x_1:A_1, x_2:A_2, \ldots, x_n:A_n ⊢ M:A.$$
  
  Its meaning is: "under the assumption that $x_i$ is of type $A_i$ ,
  for $i=1\ldots n$, the term $M$ is a well-typed term of type $A$.'' The
  free variables of $M$ must be contained in $x_1, \ldots, x_n$.

\end{quotation}

Understanding what this means in the version ``for children'' will
take us quite close to understanding that in Type Theory ``for
adults''. We will do that in the next section.

Let me just correct a simplification. The main objects of the Type
Theory used in Agda and in most other proof assistants are derivable
judgments {\sl with definitions}, as explained in the chapters 8--10
of \cite{NederpeltGeuvers}. A judgment with definitions is written as
$Δ;Γ⊢M:N$, where $Δ$ is a list of definitions
(\cite[def.9.2.1]{NederpeltGeuvers}); we will mostly ignore the `$Δ$'
here.

% (find-books "__logic/__logic.el" "nederpelt-geuvers")
% (find-books "__logic/__logic.el" "nederpelt-geuvers" "8 Definitions")
% (find-ttafpaipage (+ 29 191) "Definition 9.2.1 (Judgement with definitions; extended judgement)")
% (find-ttafpaitext (+ 29 191) "Definition 9.2.1 (Judgement with definitions; extended judgement)")


% «comprehensions»  (to ".comprehensions")
% (misp 31 "comprehensions")
% (misa    "comprehensions")
% Sec: 6.4
\subsection{Set comprehensions}

\def\und#1#2{\underbrace{#1}_{#2}}
\def\und#1#2{\underbrace{#1}_{\text{#2}}}
\def\ug#1{#1}
\def\uf#1{#1}
\def\ue#1{#1}
\def\uc#1{#1}
\def\UG#1{\und{#1}{generator}}
\def\UF#1{\und{#1}{filter}}
\def\UE#1{\und{#1}{expression}}
\def\UC#1{\und{#1}{context}}

The part at the left of the `$⊢$' in a typing judgment is called a
{\sl typing context}. Typing contexts also appear in set
comprehensions. Let's see an example:
%
$$\begin{array}{rl}
    & \setofst {\ue{10a+b}}
               {\uc{\ug{a∈\{1,2\}}, \ug{b∈\{2,3\}}, \uf{a<b}}} \\[7.5pt]
  \squigto \phantom{mm}
    & \setofsc {\UC{\UG{a∈\{1,2\}}, \UG{b∈\{2,3\}}, \UF{a<b}}}
               {\UE{10a+b}} \\
  \end{array}
$$

\def\acontext{\ang{\textsf{context}}}
\def\aexpr   {\ang{\textsf{expr}}}

We rewrote the comprehension $\setofst{ \aexpr }{ \acontext }$ to
$\setofsc{ \acontext }{ \aexpr }$ for clarity, and we marked which
parts of the context act as ``generators'' and which ones act as
``filters''. The context above can be rewritten in type-theoretical
notation as:
%
$$   a : \{1,2\},
  \; b : \{2,3\},
  \; \AProofOf{a{<}b} : \AllProofsOf{a{<}b}
$$

A {\sl value} for that context is a triple $(a,b,\AProofOf{a{<}b})$,
where $a∈\{1,2\}$, $b∈\{2,3\}$, and $\AProofOf{a{<}b}$ is a guarantee
that $a<b$ is true.

% (find-selingerlnpage 52 "typing judgment")
% (find-selingerlntext 52 "typing judgment")
% (excp 38 "contexts")
% (exca    "contexts")

% «omitting-types»  (to ".omitting-types")
% (misp 32 "omitting-types")
% (misa    "omitting-types")
% Sec: 6.5
\subsection{Omitting types}
\label{omitting-types}

% (misp 16 "freyd-with-functors")
% (misa    "freyd-with-functors")

The diagram at the left below is a copy of the one from
sec.\ref{freyd-with-functors}, but now we will interpret it in a
different way, as a ``dictionary of (default) types''. For example, it
says that when the symbol $η$ appears without a type its type will be
the default one given by the diagram: $η:A→RC$, or $η:\catA(A,RC)$.
The default types are listed at the right.

%D diagram universal-arrow-omitting-1
%D 2Dx     100 +25
%D 2D  100     C1
%D 2D           |
%D 2D  +25 C2  C3
%D 2D      |    |
%D 2D  +25 C4  C5
%D 2D            
%D 2D  +15 C6  C7
%D 2D
%D ren    C1 =>    A
%D ren C2 C3 => C RC
%D ren C4 C5 => D RD
%D ren C6 C7 => \catB \catA
%D
%D (( C1 C3 -> .plabel= r η
%D    C2 C3 |->
%D    C2 C4 -> .plabel= l f
%D    C3 C5 -> .plabel= r Rf
%D    C2 C5 harrownodes nil 20 nil |->
%D    C4 C5 |->
%D    C1 C5 -> .slide= 20pt .plabel= r g
%D    C6 C7 -> .plabel= a R
%D ))
%D enddiagram
%D
$$\pu
  \scalebox{1.0}{$
  \diag{universal-arrow-omitting-1}
  $}
  \qquad
  \begin{array}{rcl}
  \catA &\text{is}& \text{a category} \\
  \catB &\text{is}& \text{a category} \\
      R &:& \catA → \catB \\
      A &∈& \catA \\
      C &∈& \catB \\
      D &∈& \catB \\
      η &:& A→RC \\
      f &:& C→D \\
      g &:& A→RD \\
  \end{array}
$$

% «indefinite-articles»  (to ".indefinite-articles")
% (misp 32 "indefinite-articles")
% (misa    "indefinite-articles")
\subsection{Indefinite articles}
\label{indefinite-articles}

We will use the diagram above to redefine universalness. In our old
definition, from sec.\ref{freyd-with-functors}, universalness is just a
``property''; in our new definition it will be a pair made of a
``structure'' and a ``property'' (see sec.\ref{ness}).


Suppose that 
%
$$\begin{array}{rcl}
  \catA &\text{is}& \text{a category}, \\
  \catB &\text{is}& \text{a category}, \\
      R &:& \catA → \catB, \\
      A &∈& \catA, \\
      C &∈& \catB, \\
      η &:& A→RC, \\
  \end{array}
$$
%
and let $♯$ be this operation:
%
$$♯ \;\;=\;\; λD.λf.\;Rf∘η.
$$

\def\asharpis{\AProofOf   {♭ = ♯^{-1}}}
\def\psharpis{            (♭ = ♯^{-1})}
\def\Ssharpis{\AllProofsOf{♭ = ♯^{-1}}}

Note that the types of $D$ and $f$ are given by the diagram: $D$ is an
object of $\catB$, and $f:C→D$. Then ``universalness'' for the tuple
$(\catA,\catB,R,A,C,η)$ is a pair $(♭,\asharpis)$, in which $♭$ is an
operation ``that for each $D$ takes each $g$ to an $f$'' and
$\psharpis$ is a shorthand for this proposition:
%
$$\begin{array}{rl}
  (∀D.∀f.\; ♭\,D\,(♯\,D\,f) = f)\, & ∧ \\
  (∀D.∀g.\; ♯\,D\,(♭\,D\,g) = g).
  \end{array}
$$
%
The component $\asharpis$ of the universalness is a witness that
guarantess that this proposition holds.

The types of $♭$ and $\asharpis$ are:
%
$$\begin{array}{rcl}
  ♭ &:& (D : \Objs_\catB) → (\catA(A,RD) → \catB(C,D)) \\[2.5pt]
  \asharpis &:& ⟦ \;         (∀D.∀f.\; ♭\,D\,(♯\,D\,f) = f) \;\; ∧ \\
             && \phantom{m} (∀D.∀g.\; ♯\,D\,(♭\,D\,g) = g) \; ⟧
  \end{array}
$$

We can use a trick with indefinite articles to obtain the type of $♭$.
Let's overload the notations $\AllProofsOf{·}$ and $\AProofOf{·}$:
with their new meanings `$\AllProofsOf{α}$' will be pronounced ``the
type of $α$'', and `$\AProofOf{α}$' will be ``an $α$'', ``an object
with the same type of $α$'', or ``an element of $\AllProofsOf{α}$''.
Then
%
\begin{quote}
$♭$ is an operation that for each $D$ takes each $g$ to an $f$
\end{quote}
%
becomes:
%
$$♭ \;\;=\;\; λD.λg.\AProofOf{f}
$$

The indefinite article in this $\AProofOf{f}$ is contagious: we read
the equality above not as ``$♭$ is {\sl the} operation that takes each
$D$...'' but as ``$♭$ is {\sl an} operation that...''. We don't know
the value of $λD.λg.\AProofOf{f}$ but we can calculate its type:
%
$$\begin{array}{rcl}
               f  &:& C→D \\
  \AllProofsOf{f} &=& \catB(C,D) \\
  \AProofOf   {f} &:& \catB(C,D) \\
               g  &:& A→RD \\
  \AllProofsOf{g} &=& \catA(A,RD) \\
                D &:& \Objs_\catB \\
  \AllProofsOf{λD.λg.\AProofOf{f}} &=& \Objs_\catB → (\catA(A,RD) → \catB(C,D)) \\
  \end{array}
$$

We will see how to represent universalness in diagrams in
sec.\ref{ness}.





% Let $♯ = λD.λf.Rf∘η$.

% Let $♭ = λD.λg.\angg{f}$.

% Then $⟦♭⟧ = \ldots$.

% $(♭=♯^{-1}) = (∀D.∀f.♭D(♯Df)=f)∧(∀D.∀g.♯D(♭Dg=g))$

% (misp 16 "freyd-with-functors")
% (misa    "freyd-with-functors")





% \subsection{Quantifiers}

% % (find-ttafpaipage (+ 29 112) "V. Universal quantification")
% % (find-ttafpaitext (+ 29 112) "V. Universal quantification")

% In Type Theory we define
% %
% $$\begin{array}{rcl}
%   \AllProofsOf{∀a{:}A.P(a)} &:=& (a:A)→\AllProofsOf{P(a)}, \\
%   \AllProofsOf{∃a{:}A.P(a)} &:=& (a:A)×\AllProofsOf{P(a)}. \\
%   \end{array}
% $$
% %
% For example, $A=\{2,3,5\}$ and $P(a)=(a<4)$ then every element of
% $(a:A)→⟦P(a)⟧$ is of the form:
% %
% $$\{(2,\AProofOf{2{<}4}),
%     (3,\AProofOf{3{<}4}),
%     (5,\AProofOf{5{<}4})
%   \}
% $$
% %
% but $\AllProofsOf{5<4}=∅$, so $\AProofOf{5{<}4}$ is a variable ranging
% over an empty set; so there are no possible values for
% $\AProofOf{5<4}$, there are no elements of this form above, and
% $(a:A)→⟦P(a)⟧=∅$. This is standard; see
% \cite[p.112]{NederpeltGeuvers}. What is non-standard here is that we
% are using variables, like $\AProofOf{5<4}$, whose types can be
% inferred from their names. In cases like these it makes sense to use
% indefinite articles: ``a $\AProofOf{2<4}$'' means ``an element of
% $\AllProofsOf{2<4}$''.


% (find-LATEX "catsem-u.bib" "bib-HOTT")
% (find-books "__logic/__logic.el" "hott")
% (find-hottpage (+ 12 18)   "a witness to the provability of A")
% (find-hotttext (+ 12 18)   "a witness to the provability of A")



% \subsection{Underbrace diagrams}

% In diagrams with underbraces like the ones below at the left each
% underbrace corresponds to an assertion about the subexpression above
% it. The corresponding assertions are listed at the right.

% \sa{und1}  {\und{ (a:\und{A}{a:}) → \und{C_a}{f(a):} }{f:}}
% \sa{und1:s}{
%   \begin{array}[t]{rcl}
%     a  &:& A   \\
%   f(a) &:& C_a \\
%     f  &:& (a:A)→C_a \\
%   \end{array}
%   }
% \sa{und2}  {\und{f}{:(a:A)→C_a}(\und{a}{:A})}
% \sa{und2:s}{
%   \begin{array}[t]{rcl}
%     a  &:& A   \\
%   f(a) &:& C_a \\
%     f  &:& (a:A)→C_a \\
%   \end{array}
%   }

% $$\def\und#1#2{\underbrace{#1}_{#2}}
%   \begin{array}{rcl}
%     \ga{und1} &\phantom{mmm} & \ga{und1:s} \\[50pt]
%     \ga{und2} &\phantom{mmm} & \ga{und2:s} \\
%   \end{array}
% $$




% «phys-not»  (to ".phys-not")
\subsection{``Physicists' notation''}

Books like \cite{ThompsonGardner} use a notation in which expressions
like ``$z=z(x,y(x))$'' are allowed --- the same symbol can be used
both as a (dependent!) variable and as the name of a function, and
arguments can be omitted --- and in a context in which $y=y(x)$ the
default meaning for $y_0$ is $y(x_0)$. In many areas of Mathematics
that notation has been phased out (see \cite[sec.3.3]{DSLsofMath}) and
replaced by one in which the names of the bound variables matter very
little.

Let's call the older notation ``physicist's notation'' and the newer
one ``mathematician's notation''; these names are not standard at all.
If we apply the ideas of the ``physicist's notation'' to judgments we
can abbreviate
%
$$a:A, b:B(a), c:C(a,b) ⊢ d(a,b,c):D(a,b,c)
$$
%
to just $a:A, b:B, c:C ⊢ d:D$, or even to $a,b,c⊢d$. Some of the
conventions of DL were inspired by conventions from ``physicist's
notation''.

% \standout{TODO:} rewrite this. This idea may be useful to write
% pseudocode for Agda. Cite lifting.



% \subsection{Witnesses}


% In the beginning `$:$' will be a synonym for `$∈$' --- they will be
% made distinct later --- and our ``basic'' types will be finite subsets
% of $\N$, like $\{0,1,2\}$, $\{42,99\}$, and $\{\}$. We will see some
% ways to build ``new'' types from ``old'' types, but we will not define
% which sets are types and which ones are not.

% For each two types $A$ and $B$ we can form the types $A×B$ and $A→B$
% in the obvious way: the elements of $A×B$ are pairs of the form
% $(a,b)$, where $a:A$ and $b:B$, and the elements of $A→B$ are the
% functions $f:A→B$, where each function is represented as a set of
% input-output pairs. So, for example,
% %



% All the books on Type Theory that I know present TT in a very abstract
% way; here we will use some ideas of the sections
% \ref{missing-diagrams} and \ref{the-conventions} to see how TT ``for
% children'' and TT ``for adults'' can be taught in parallel.

% When people learn complex numbers, or fields, they start with
% naturals, then integers, then rationals, then reals, and only then
% complex numbers, fields, and algebraically closed fields. At each
% level we know some operations on, and properties of, our ``numbers'',
% and we want most of them to also hold on the ``numbers'' of the level.
% Here we will start by understanding the basic operations of TT on
% certain simple particular cases (...) and we will use the convention
% (CPSh) of sec.\ref{the-conventions} to draw these particular cases and
% the corresponding general cases in parallel.



% (excp 26 "types-after-discrete")
% (exca    "types-after-discrete")


% \GenericWarning{Success:}{Success!!!}  % Used by `M-x cv'


% \end{document}




\newpage

%  ____            _        _____            _        _ 
% | __ )  __ _ ___(_) ___  | ____|_  __  ___| | _____| |
% |  _ \ / _` / __| |/ __| |  _| \ \/ / / __| |/ / _ \ |
% | |_) | (_| \__ \ | (__  | |___ >  <  \__ \   <  __/ |
% |____/ \__,_|___/_|\___| |_____/_/\_\ |___/_|\_\___|_|
%                                                       
% «basic-example-as-skel»  (to ".basic-example-as-skel")
% (misp 36 "basic-example-as-skel")
% (misa    "basic-example-as-skel")
%  sec: 7
% Orig: (favp 29 "basic-example-as-skel")
%       (fava    "basic-example-as-skel")
%  sec: 6
%
\section{The Basic Example as a skeleton \DONE}
\label{basic-example-as-skel}

In the sections \ref{the-conventions} and \ref{to-deserve-a-name} I
claimed that the diagram of the Basic Example is a ``skeleton'' of a
certain theorem, in the sense that both the statement and the proof of
that theorem can be reconstructed from just the diagram and very few
extra hints. Let's see the details of this.


%  ____            _        _____         __                  _   
% | __ )  __ _ ___(_) ___  | ____|_  __  / _|_   _ _ __   ___| |_ 
% |  _ \ / _` / __| |/ __| |  _| \ \/ / | |_| | | | '_ \ / __| __|
% | |_) | (_| \__ \ | (__  | |___ >  <  |  _| |_| | | | | (__| |_ 
% |____/ \__,_|___/_|\___| |_____/_/\_\ |_|  \__,_|_| |_|\___|\__|
%                                                                 
% «basic-example-functors»  (to ".basic-example-functors")
% Orig: (favp 29 "basic-example-functors")
%       (fava    "basic-example-functors")
%  sec: 6.1
%
\subsection{Reconstructing its functors \DONE}
\label{basic-example-functors}

Let's call this diagram --- the diagram of the Basic Example ---
$\Yzero$:
%
$$\Yzero \qquad := \quad \diag{Basic-Example}$$

We don't know yet the precise meaning of the functors $\catB(C,-)$ and
$\catA(A,R-)$, but if we enlarge $\Yzero$ to this --- note that we are
omitting the curved bijection by convenience,
%
%D diagram Basic-Example-plus
%D 2Dx     100    +40
%D 2D  100        A1
%D 2D              |
%D 2D  +20 A2 |-> A3
%D 2D      |       |
%D 2D  +20 A4 |-> A5
%D 2D      |       |
%D 2D  +20 A6 |-> A7
%D 2D
%D 2D  +15 B0 --> B1
%D 2D
%D 2D  +15 C0 --> C1
%D 2D          \   |
%D 2D  +20        C2
%D 2D
%D ren    A1 ==>      A
%D ren A2 A3 ==>  C  RC
%D ren A4 A5 ==>  D  RD
%D ren A6 A7 ==>  E  RE
%D ren B0 B1 ==>  \catB \catA
%D ren C0 C1 C2 ==> \catB(C,-) \catA(A,R-) ?
%D
%D (( A1 A3  -> .plabel= r η
%D    A2 A3 |->
%D    A2 A4  -> .plabel= l f
%D    A3 A5  -> .plabel= r Rf
%D    A2 A5 harrownodes nil 20 nil |->
%D    A4 A5 |->
%D    A4 A6  -> .plabel= l g
%D    A5 A7  -> .plabel= r Rg
%D    A4 A7 harrownodes nil 20 nil |->
%D    A6 A7 |->
%D    A1 A5  -> .slide= 20pt .plabel= r h
%D
%D    B0 B1  -> .plabel= a R
%D
%D    C0 C1 -> .plabel= a α
%D  # C0 C2 -> .plabel= l \sm{ψ\\\text{(iso)}}
%D  # C1 C2 <->
%D
%D  # C0 C1 midpoint A1 A3 midpoint <-> .curve= ^15pt
%D ))
%D enddiagram
%
$$\pu
  \Yzeroplus \qquad := \quad \slowdiag{Basic-Example-plus}
$$
%
and we draw the internal views of $\catB(C,-)$ and $\catA(A,R-)$, then
the meanings for $\catB(C,-)$ and $\catA(A,R-)$ become obvious:
%
%D diagram basic-example-obvious-functors
%D 2Dx     100  +30 +25    +30  +35 +35
%D 2D  100 A0 - A1  C0     D0 - D1  F0
%D 2D      |     |   |     |     |   |
%D 2D  +20 A2 - A3  C1     D2 - D3  F1
%D 2D                               
%D 2D  +15 B0 - B1         E0 - E1    
%D 2D
%D ren A0 A1 C0 ==> D \catB(C,D) f
%D ren A2 A3 C1 ==> E \catB(C,E) g∘f
%D ren B0 B1    ==> \catB \Set
%D ren D0 D1 F0 ==> D \catA(A,RD) h
%D ren D2 D3 F1 ==> E \catA(A,RE) Rg∘h
%D ren E0 E1    ==> \catB \Set
%D
%D (( A0 A1 |->
%D    A0 A2  -> .plabel= l g
%D    A1 A3  -> .plabel= r \catB(C,g)
%D    A2 A3 |->
%D    B0 B1  -> .plabel= a \catB(C,-)
%D    C0 C1 |->
%D
%D    D0 D1 |->
%D    D0 D2  -> .plabel= l g
%D    D1 D3  -> .plabel= r \catA(A,Rg)
%D    D2 D3 |->
%D    E0 E1  -> .plabel= a \catA(A,R-)
%D    F0 F1 |->
%D ))
%D enddiagram
%D
$$\pu
  \diag{basic-example-obvious-functors}
$$

So:
%
$$\begin{array}{rcl}
  \catB(C,-)   &:&  \catB → \Set \\
  \catB(C,-)_0 &:=& λD.\catB(C,D) \\
  \catB(C,-)_1 &:=& λg.λf.g∘f \\
  [5pt]
  \catA(A,R-)   &:&  \catB → \Set \\
  \catA(A,R-)_0 &:=& λD.\catA(A,RD) \\
  \catA(A,R-)_1 &:=& λg.λh.Rg∘h \\
  \end{array}
$$


%  ____            _        _____        _   ___   __ __   _____  
% | __ )  __ _ ___(_) ___  | ____|_  __ | \ | \ \ / / \ \ / / _ \ 
% |  _ \ / _` / __| |/ __| |  _| \ \/ / |  \| |\ V /   \ V / | | |
% | |_) | (_| \__ \ | (__  | |___ >  <  | |\  | | |     | || |_| |
% |____/ \__,_|___/_|\___| |_____/_/\_\ |_| \_| |_|     |_| \___/ 
%                                                                 
% «basic-example-NTs»  (to ".basic-example-NTs")
% (misp 37 "basic-example-NTs")
% (misa    "basic-example-NTs")

\subsection{Natural transformations}
\label{basic-example-NTs}

% (mdyp 3 "Y72+l")
% (mdya   "Y72+l")
%
%D diagram Y72+l
%D 2Dx     100  +40
%D 2D  100      A1
%D 2D            |
%D 2D  +20 A2 - A3
%D 2D      |     |
%D 2D  +20 A4 - A5
%D 2D      |     |
%D 2D  +20 A6 - A7
%D 2D
%D 2D  +15 B0 - B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren    A1 ==>         \ga{A1}
%D ren A2 A3 ==> \ga{A2} \ga{A3}
%D ren A4 A5 ==> \ga{A4} \ga{A5}
%D ren A6 A7 ==> \ga{A6} \ga{A7}
%D ren B0 B1 ==> \ga{B0} \ga{B1}
%D ren C0 C1 ==> \ga{C0} \ga{C1}
%D
%D (( A1 A3  -> .plabel= r \ga{A13}
%D    A2 A3 |->
%D    A2 A4  -> .plabel= l \ga{A24}
%D    A3 A5  -> .plabel= r \ga{A35}
%D    A2 A5 harrownodes nil 20 nil |->
%D    A4 A5 |->
%D    A4 A6  -> .plabel= l \ga{A46}
%D    A5 A7  -> .plabel= r \ga{A57}
%D    A4 A7 harrownodes nil 20 nil |->
%D    A6 A7 |->
%D
%D    A1 A5  -> .slide=  20pt .plabel= r \ga{A15}
%D
%D    B0 B1  -> .plabel= a \ga{B01}
%D
%D    C0 C1  -> .plabel= a \ga{C01}
%D ))
%D enddiagram
\pu

%D diagram Y72+klm
%D 2Dx     100  +40
%D 2D  100      A1
%D 2D            |
%D 2D  +20 A2 - A3
%D 2D      |     |
%D 2D  +20 A4 - A5
%D 2D      |     |
%D 2D  +20 A6 - A7
%D 2D
%D 2D  +15 B0 - B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren    A1 ==>         \ga{A1}
%D ren A2 A3 ==> \ga{A2} \ga{A3}
%D ren A4 A5 ==> \ga{A4} \ga{A5}
%D ren A6 A7 ==> \ga{A6} \ga{A7}
%D ren B0 B1 ==> \ga{B0} \ga{B1}
%D ren C0 C1 ==> \ga{C0} \ga{C1}
%D
%D (( A1 A3  -> .plabel= r \ga{A13}
%D    A2 A3 |->
%D    A2 A4  -> .plabel= l \ga{A24}
%D    A3 A5  -> .plabel= r \ga{A35}
%D    A2 A5 harrownodes nil 20 nil |->
%D    A4 A5 |->
%D    A4 A6  -> .plabel= l \ga{A46}
%D    A5 A7  -> .plabel= r \ga{A57}
%D    A4 A7 harrownodes nil 20 nil |->
%D    A6 A7 |->
%D
%D    A2 A6  -> .slide= -25pt .plabel= l \ga{A26}
%D    A1 A5  -> .slide=  20pt .plabel= r \ga{A15}
%D    A1 A7  -> .slide=  60pt .plabel= r \ga{A17}
%D
%D    B0 B1  -> .plabel= a \ga{B01}
%D
%D    C0 C1  -> .plabel= a \ga{C01}
%D ))
%D enddiagram
\pu

\sa{Y72+l-basicnames}{{
              \sa{A1}{A}
  \sa{A2}{C}  \sa{A3}{RC}
  \sa{A4}{D}  \sa{A5}{RD}
  \sa{A6}{E}  \sa{A7}{RE}
  \sa{B0}{\catB}      \sa{B1}{\catA}
  \sa{C0}{\catB(C,-)} \sa{C1}{\catA(A,R-)}
              \sa{A13}{η}
  \sa{A24}{f} \sa{A35}{Rf}
  \sa{A46}{g} \sa{A57}{Rg}
  %
  \sa{A15}{\sm{ℓ,\\αDf}}
  %
  \sa{B01}{R}
  \sa{C01}{α}
  %
  \diag{Y72+l}
  }}

\sa{Y72+klm-idC}{{
              \sa{A1}{A}
  \sa{A2}{C}  \sa{A3}{RC}
  \sa{A4}{C}  \sa{A5}{RC}
  \sa{A6}{D}  \sa{A7}{RD}
  \sa{B0}{\catB}      \sa{B1}{\catA}
  \sa{C0}{\catB(C,-)} \sa{C1}{\catA(A,R-)}
              \sa{A13}{η}
  \sa{A24}{\sm{ι,\\\id_C}} \sa{A35}{Rι}
  \sa{A46}{f} \sa{A57}{Rf}
  %
  \sa{A26}{\sm{f∘ι,\\f∘\id_C,\\f}}
  \sa{A15}{\sm{m,\\αCι,\\αC\id_C}}
  \sa{A17}{\sm{Rf∘(αCι),\\αD(f∘ι),\\Rf∘(αC\id_C),\\αDf}}
  %
  \sa{B01}{R}
  \sa{C01}{α}
  %
  \diag{Y72+klm}
  }}

% Debug the diagrams above with:
%$$\ga{Y72+l-basicnames}
%  \qquad
%  \ga{Y72+klm-idC}
%$$

% (mdyp 3 "sqcond-inner")
% (mdya   "sqcond-inner")
%
%D diagram Y0-NT-sqcond-inner
%D 2Dx     100 +30   +40 +35   +40  +35
%D 2D  100 A0  B0 -> B1  D0 -> D1   E1
%D 2D      |   |      |  |     |    |
%D 2D  +17 v   v      v  v     D3'  E3'
%D 2D   +8 A1  B2 -> B3  D2 -> D3
%D 2D
%D 2D  +15     C0 -> C1
%D 2D
%D ren A0 B0 B1 D0 D1 ==> \ga{A0} \ga{B0} \ga{B1} \ga{D0} \ga{D1}
%D ren A1 B2 B3 D2 D3 ==> \ga{A1} \ga{B2} \ga{B3} \ga{D2} \ga{D3}
%D ren D3' E1 E3' C0 C1 ==> \ga{D3'} \ga{E1} \ga{E3'} \ga{C0} \ga{C1}
%D
%D (( A0 A1 -> .plabel= l \ga{A01}
%D    B0 B1 -> .plabel= a \ga{B01}
%D    B0 B2 -> .plabel= l \ga{B02}
%D    B1 B3 -> .plabel= r \ga{B13}
%D    B2 B3 -> .plabel= a \ga{B23}
%D    C0 C1 -> .plabel= a \ga{C01}
%D    D0 D1  |->
%D    D1 D3' |-> 
%D    D0 D2  |-> 
%D    D2 D3  |->
%D    E1 E3' |-> 
%D ))
%D enddiagram
%D
\pu

\sa{Y0-NT-sqcond-alpha}{{
  \sa{A0}{D} \sa{B0}{\catB(C,D)} \sa{B1}{\catA(A,RD)}
  \sa{A1}{E} \sa{B2}{\catB(C,E)} \sa{B3}{\catA(A,RE)}
             \sa{C0}{\catB(C,-)} \sa{C1}{\catA(A,R-)}
  \sa{D0}{f}   \sa{D1}{αDf}         \sa{E1}{ℓ}
               \sa{D3'}{Rg∘(αDf)}   \sa{E3'}{Rg∘ℓ}
  \sa{D2}{g∘f} \sa{D3}{αE(g∘f)}
  \sa{A01}{g}
  \sa{B01}{} \sa{B02}{} \sa{B13}{} \sa{B23}{}
  \sa{C01}{α}
  \diag{Y0-NT-sqcond-inner}
}}

\sa{Y0-NT-sqcond-eta}{{
  \sa{A0}{D} \sa{B0}{\catB(C,D)} \sa{B1}{\catA(A,RD)}
  \sa{A1}{E} \sa{B2}{\catB(C,E)} \sa{B3}{\catA(A,RE)}
             \sa{C0}{\catB(C,-)} \sa{C1}{\catA(A,R-)}
  \sa{D0}{f}   \sa{D1}{Rf∘η}         \sa{E1}{ℓ}
               \sa{D3'}{Rg∘(Rf∘η)}   \sa{E3'}{Rg∘ℓ}
  \sa{D2}{g∘f} \sa{D3}{R(g∘f)∘η}
  \sa{A01}{g}
  \sa{B01}{} \sa{B02}{} \sa{B13}{} \sa{B23}{}
  \sa{C01}{α_η}
  \diag{Y0-NT-sqcond-inner}
}}

\sa{Y0-NT-sqcond-idC-iota}{{
  \sa{A0}{C} \sa{B0}{\catB(C,C)} \sa{B1}{\catA(A,RC)}
  \sa{A1}{D} \sa{B2}{\catB(C,D)} \sa{B3}{\catA(A,RD)}
             \sa{C0}{\catB(C,-)} \sa{C1}{\catA(A,R-)}
  \sa{D0}{ι}   \sa{D1}{αCι}          \sa{E1}{m} 
               \sa{D3'}{Rf∘(αCι)}    \sa{E3'}{Rf∘m}
  \sa{D2}{f∘ι} \sa{D3}{αD(f∘ι)}
  \sa{A01}{f}
  \sa{B01}{} \sa{B02}{} \sa{B13}{} \sa{B23}{}
  \sa{C01}{α}
  \diag{Y0-NT-sqcond-inner}
}}

\sa{Y0-NT-sqcond-idC-id}{{
  \sa{A0}{C} \sa{B0}{\catB(C,C)} \sa{B1}{\catA(A,RC)}
  \sa{A1}{D} \sa{B2}{\catB(C,D)} \sa{B3}{\catA(A,RD)}
             \sa{C0}{\catB(C,-)} \sa{C1}{\catA(A,R-)}
  \sa{D0}{\id_C} \sa{D1}{αC\id_C}          \sa{E1}{m} 
                 \sa{D3'}{Rf∘(αC\id_C)}    \sa{E3'}{Rf∘m}
  \sa{D2}{f}     \sa{D3}{αDf}
  \sa{A01}{f}
  \sa{B01}{} \sa{B02}{} \sa{B13}{} \sa{B23}{}
  \sa{C01}{α}
  \diag{Y0-NT-sqcond-inner}
}}

% Debug the diagrams above with:
%$$\scalebox{0.8}{$
%  \begin{array}{c}
%    \ga{Y72+l-basicnames}
%    \qquad
%    \ga{Y72+klm-idC}
%    \\ \\
%    \ga{Y0-NT-sqcond-alpha}
%    \\ \\
%    \ga{Y0-NT-sqcond-eta}
%    \\ \\
%    \ga{Y0-NT-sqcond-idC-iota}
%    \\ \\
%    \ga{Y0-NT-sqcond-idC-id}
%  \end{array}
%  $}
%$$

In sec.\ref{internal-view-NT} we saw that a natural transformation is
a pair. An NT $α:\catB(C,-)→\catA(A,R-)$ is a pair $(α_0, \sqcond_α)$,
where $\sqcond_α$ is this:
%
$$\begin{array}{rcl}
  \sqcond_α &=& ∀D.∀E.∀g.∀f.\; (\catA(A,Rf)∘αD) = (αE∘\catB(C,f)) \\
            &=& ∀D.∀E.∀g.∀f.\; (Rg∘(αDf)) = (αE(g∘f)) \\
            &=& ∀D.∀E.∀g.∀f.\; (Rg∘(α_0Df)) = (α_0E(g∘f)) \\
  \end{array}
$$

We can visualize what this ``means'' using the two diagrams at the top
in the next page.

\msk

Suppose that we define a natural transformation $α_η$ by saying that
$(α_η)_0 = λD.λf.Rf∘η$. Then we can either affirm that $\sqcond_{α_η}$
``is obvious'' or verify that it holds. Substituing $α_0$ by
$λD.λf.Rf∘η$ we obtain:
%
$$\begin{array}{rcl}
  \sqcond_{α_η} &=& ∀D.∀E.∀g.∀f.\; (Rg∘(Rf∘η)) = (R(g∘f)∘η) \\
  \end{array}
$$
%
which is clearly true, so $\sqcond_{α_η}$ holds, and $α_η$ is a
natural transformation for every $η:A→RC$. We can define an operation
$(η→α)$ by:
%
$$\begin{array}{rcl}
  (η↦α) &:=& λη.((α_η)_0, \sqcond_{α_η}) \\
  \end{array}
$$

Without abbreviations this definition would be very big. The lower
third of the diagram in the next page shows how visualize what
$\sqcond_{α_η}$ means.

\newpage

$$\scalebox{1.0}{$
  \begin{array}{l}
    \phantom{mmmm}
    \ga{Y72+l-basicnames}
    \\ \\ \\ \\
    \ga{Y0-NT-sqcond-alpha}
    \\ \\ \\
    \ga{Y0-NT-sqcond-eta}
  \end{array}
  $}
$$

\newpage

We can define an operation $(α↦η)$ by:
%
$$\begin{array}{lcl}
  (α↦η)   &:=& λα.\, α_0 \, C \, \id_C, \\
  (η↦α_0) &:=& λη.λD.λf.\,Rf∘η, \\
  (η↦α)   &:=& λη.((η↦α_0)(η), \; \sqcond_{\text{(something)}}). \\
  \end{array}
$$

We can prove that the operations $(η↦α)$ and $(α↦η)$ are mutually
inverse, but this is tricky. The proof contains a step that is hard to
visualize, and that is often stated as a slogan, like this (from
\cite[p.97]{Leinster} and \cite[p.61]{CWM2}):
%
% (find-books "__cats/__cats.el" "leinster-basic")
% (find-leinsterbasicpage (+ 8 97)   "is determinded by its value at 1_A")
% (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).")
%
\begin{quote}
  A natural transformation $α:\catB(C,-)→\catA(A,R-)$ \\
  is determined by its value at $\id_C$.
\end{quote}

The proof of that step requires instantiating $\sqcond_α$, i.e.,
%
$$\begin{array}{c}
  ∀D.∀E.∀g:D→E.\;∀f:C→D.\; (Rg∘(α_0Df)) = (α_0E(g∘f)) \\
  \end{array}
$$
%
at $D:=C$, $E:=D$, $g:=f$, and $f:=\id_C$. If we do this in two
sub-steps --- first $D:=C$ and $E:=D$, and then $g:=f$ and
$f:=\id_C$ --- we see that after the first sub-step we get this:
%
$$\begin{array}{c}
  ∀g:C→D.\;∀f:C→C.\; (Rg∘(α_0Cf)) = (α_0D(g∘f)) \\
  \end{array}
$$

The variables $g$ and $f$ have sort of changed their types, and some
people (like me!) would prefer to rename them, to, say:
%
$$\begin{array}{c}
  ∀f:C→D.\;∀ι:C→C.\; (Rf∘(α_0Cι)) = (α_0D(f∘ι)) \\
  \end{array}
$$

The diagrams in the next page show the renamed version.

To prove that our operations $(α↦η)$ and $(η↦α)$ are mutually inverse
we need to prove that the round trips $(α↦η↦α)$ and $(η↦α↦η)$ are both
identities. To prove that $(α↦η↦α)=\id$, let's define
$η_α := (α→η)(α)$ and $α_{η_α} := (η↦α)(η_α)$ and . The proof of
$(α↦η↦α)=\id$ includes this sequence of equalities:
%
$$\begin{array}{rcl}
  (α_{η_α})_0 D f &=& (η↦α_0) ((α↦η) (α)) D f \\
                  &=& (η↦α_0) (α C \id_C) D f \\
                  &=& (λη.λD.λf.\;Rf∘η) (α C \id_C) D f \\
                  &=& (λD.λf.\;Rf∘(α C \id_C)) D f \\
                  &=& Rf∘(α C \id_C) \\
                  &=& αDf \\
  \end{array}
$$
%
that uses our hard step in its last equality. The details, including
the proof of $(η↦α↦η)=\id$, can be found in \cite{MissingAgda}.


$$\scalebox{1.0}{$
  \begin{array}{l}
    \phantom{i.}
    \ga{Y72+klm-idC}
    \\ \\
    \ga{Y0-NT-sqcond-idC-iota}
    \\ \\
    \ga{Y0-NT-sqcond-idC-id}
  \end{array}
  $}
$$







%  ____            _        _____        _   _ _____ 
% | __ )  __ _ ___(_) ___  | ____|_  __ | \ | |_   _|
% |  _ \ / _` / __| |/ __| |  _| \ \/ / |  \| | | |  
% | |_) | (_| \__ \ | (__  | |___ >  <  | |\  | | |  
% |____/ \__,_|___/_|\___| |_____/_/\_\ |_| \_| |_|  
%                                                    
% «basic-example-NT»  (to ".basic-example-NT")
% Orig: (favp 27 "basic-example-NT")
%       (fava    "basic-example-NT")
%  sec: 30
%
%\subsection{Reconstructing its natural transformation \DONE}
%\label{basic-example-NT}
%
%We also don't know --- yet --- what is the natural transformation
%%
%$$\catB(C,-) \ton{T} \catA(A,R-).$$
%%
%Its internal view is this:
%%
%%D diagram basic-example-obvious-NT
%%D 2Dx     100 +25 +40 +30 +25
%%D 2D  100 A0  B0  B1  D0  D1
%%D 2D
%%D 2D  +25 A1  B2  B3  D2  D3
%%D 2D
%%D 2D  +15     C0  C1
%%D 2D
%%D ren A0 B0 B1 D0 D1 ==> D \catB(C,D) \catA(A,RD) f h
%%D ren A1 B2 B3 D2 D3 ==> E \catB(C,E) \catA(A,RE) g∘f Rg∘h
%%D ren C0 C1 ==> \catB(C,-) \catA(A,R-)
%%D
%%D (( A0 A1 -> .plabel= l g
%%D    B0 B1 -> .plabel= a TD
%%D    B0 B2 -> .plabel= l \catB(C,g)
%%D    B1 B3 -> .plabel= r \catA(A,Rg)
%%D    B2 B3 -> .plabel= a TE
%%D    C0 C1 -> .plabel= a T
%%D    D0 D2 |->
%%D    D1 D3 |->
%%D ))
%%D enddiagram
%%D
%$$\pu
%  \diag{basic-example-obvious-NT}
%$$
%%
%Note that we only drew the vertical arrows of the internal view of the internal view.
%
%\standout{We only have this arrow sometimes!}
%
%If we have an arrow $η:A→RC$ then we have a natural construction for
%$T_0$: $TD(f):=Rf∘η$, and we can redraw the internal view of the
%internal view as:
%%
%%D diagram basic-example-obvious-NT-2
%%D 2Dx     100 +40 +35
%%D 2D  100 D0  D1  E0
%%D 2D
%%D 2D  +17     D3' E1
%%D 2D   +8 D2  D3
%%D 2D
%%D ren D0 D1  E0 ==> f Rf∘η        h
%%D ren    D3' E1 ==>   Rg∘(Rf∘η) Rg∘h
%%D ren D2 D3     ==> g∘f R(g∘f)∘η
%%D
%%D (( D0 D1  |->
%%D    D0 D2  |->
%%D    D1 D3' |->
%%D    D2 D3  |->
%%D    E0 E1  |->
%%D ))
%%D enddiagram
%%D
%$$\pu
%  \diag{basic-example-obvious-NT-2}
%$$
%%
%The square condition clearly holds, because:
%%
%$$\begin{array}{rcl}
%  Rg∘(Rf∘η) &=& (Rg∘Rf)∘η \\
%            &=& R(g∘f)∘η. \\
%  \end{array}
%$$
%
%So
%%
%$$\begin{array}{rcl}
%    T_0 &:=& λD.λf.Rf∘η. \\
%  \end{array}
%$$
%
%\standout{So what?}
%
%\standout{Should I draw the bigger diagram?}
%
%
%
%%  ____            _        _____        _     _  _ 
%% | __ )  __ _ ___(_) ___  | ____|_  __ | |__ (_)(_)
%% |  _ \ / _` / __| |/ __| |  _| \ \/ / | '_ \| || |
%% | |_) | (_| \__ \ | (__  | |___ >  <  | |_) | || |
%% |____/ \__,_|___/_|\___| |_____/_/\_\ |_.__/|_|/ |
%%                                              |__/ 
%%
%% «basic-example-bij»  (to ".basic-example-bij")
%% Orig: (favp 31 "basic-example-bij")
%%       (fava    "basic-example-bij")
%%  sec: 6.3
%%
%\subsection{Reconstructing its bijection \DONE}
%\label{basic-example-bij}
%
%We can give names like `$d$' and `$u$' for the two components of the
%curved bijection, like this:
%%
%%D diagram basic-example-bij-1
%%D 2Dx     100   +55 +10 +25 +12 +25 +10
%%D 2D  100 A0    B0  B1  C0  C1  D0  D1 
%%D 2D                                   
%%D 2D  +20 A1    B2  B3  C2  C3  D2  D3 
%%D 2D
%%D ren A0 A1 ==> \Hom(A,RC) \Hom(\catB(C,-),\catA(A,R-))
%%D ren B0 B1 C0 C1 D0 D1 ==> η η   η u(T)  η η_T
%%D ren B2 B3 C2 C3 D2 D3 ==> T T d(η)  T  T_η T
%%D
%%D (( A0 A1 -> sl_ .plabel= l d
%%D    A0 A1 <- sl^ .plabel= r u
%%D    B0 B2 |->
%%D    B1 B3 <-|
%%D    C0 C2 |->
%%D    C1 C3 <-|
%%D    D0 D2 |->
%%D    D1 D3 <-|
%%D ))
%%D enddiagram
%%D
%$$\pu
%  \diag{basic-example-bij-1}
%$$
%%
%but the notation at the right will be clearer.
%
%We just saw how the direction `$d$' of the bijection works:
%%
%$$\begin{array}{rcl}
%    (T_η)_0 &:=& λD.λf.Rf∘η. \\
%  \end{array}
%$$
%
%Here's how to find a natural construction for $u$. Suppose that we
%have a natural transformation $T$. Then $TC(\id_C)$ is an element of
%$\catA(A,RC)$:
%%
%%D diagram basic-example-bij-2
%%D 2Dx     100 +25 +40 +30 +30
%%D 2D  100 A0  B0  B1  D0  D1
%%D 2D
%%D 2D  100 A1  B2  B3  D2  D3
%%D 2D
%%D 2D  +15     C0  C1
%%D 2D
%%D ren A1 B2 B3 D2 D3 ==> C \catB(C,C) \catA(A,RC) \id_C TC(\id_C)
%%D ren C0 C1 ==> \catB(C,-) \catA(A,R-)
%%D
%%D (( A1 place
%%D    B2 B3 -> .plabel= a TC
%%D    C0 C1 -> .plabel= a T
%%D    D2 D3 |->
%%D ))
%%D enddiagram
%%D
%$$\pu
%  \diag{basic-example-bij-2}
%$$
%
%We can define:
%%
%$$\begin{array}{rcl}
%    η_T &:=& TC(\id_C). \\
%  \end{array}
%$$
%
%Now we need to check that $d$ and $u$ are mutually inverse, or, in the
%other notation, that the round trips $η \mapsto T_η \mapsto η_{(T_η)}$
%and $T \mapsto η_T \mapsto T_{(η_T)}$ are identity maps. Here is a
%good way to draw the round trips:
%%
%%D diagram basic-example-bij-3
%%D 2Dx     100 +10   +30 +10
%%D 2D  100 A0  A1    B0  B1
%%D 2D       |  ^      |  ^
%%D 2D       v  |      v  |
%%D 2D  +20 A2  A3    B2  B3
%%D 2D
%%D ren A0 A1  B0 B1 ==>  η η_{(T_η)}      η_T η_T
%%D ren A2 A3  B2 B3 ==>  T_η  T_η    T_{(η_T)}  T
%%D
%%D (( A0 A2 |-> A1 A3 <-|
%%D    B0 B2 |-> B1 B3 <-|
%%D ))
%%D enddiagram
%%D
%$$\pu
%  \diag{basic-example-bij-3}
%$$
%
%Checking that $η \mapsto T_η \mapsto η_{(T_η)}$ yields back the
%original $η$ is easy --- we just have to start with $η_{(T_η)}$ and
%reduce it as most as we can:
%%
%% (nyop 63 "first-yoneda-bijection-2")
%% (nyo     "first-yoneda-bijection-2")
%%
%$$\begin{array}{rcl}
% η_{(T_η)} &=& T_ηC(\id_C) \\
%           &=& (λD.λg.(Rg∘η)) C(\id_C) \\
%           &=& (λg.(Rg∘η)) (\id_C) \\
%           &=& R(\id_C)∘η \\
%           &=& \id_{RC}∘η \\
%           &=& η \\
% \end{array}
%$$
%
%Checking that the other round trip, $T \mapsto η_T \mapsto T_{(η_T)}$,
%yields back the original $T$ is not trivial. In the terminology of the
%convention (CSk) from Section \ref{the-conventions}, to reconstruct
%that proof we need an extra hint: that at some point in the proof we
%will have to use that the original $T$ obeys $\sqcond_T$, and that
%we will have to ``evaluate'' $\sqcond_T$ on these inputs:
%
%%D diagram Y0-NT-2
%%D 2Dx     100 +10  +25 +15  +25   +35
%%D 2D  100 A0  B0 - B1  D0 |-----> D1
%%D 2D  +0  |   |    |   |          D3'
%%D 2D  +20 A1  B2 - B3  D2 = D2' - D3
%%D 2D
%%D 2D  +10     C0 - C1
%%D 2D
%%D ren A0 A1       ==> C D
%%D ren B0 B1 B2 B3 ==> \catB(C,C) \catA(A,RC) \catB(C,D) \catA(A,RD)
%%D ren C0 C1       ==> \catB(C,-) \catA(A,R-)
%%D ren C0 C1       ==> · ·
%%D ren D0 D1 D3'   ==> \id_C TC(\id_C) Rf∘(TC(\id_C))
%%D ren D2 D2' D3   ==> f∘\id_C f TD(f)
%%D
%%D (( A0 A1 -> .plabel= l f
%%D    C0 C1 -> .plabel= a T
%%D    D0 place
%%D ))
%%D enddiagram
%%D
%$$\pu
%  \diag{Y0-NT-2}
%$$
%
%This yields:
%%
%%D diagram Y0-NT-3
%%D 2Dx     100 +25  +40 +30  +25   +35
%%D 2D  100 A0  B0 - B1  D0 |-----> D1
%%D 2D  +17 |   |    |   |          D3'
%%D 2D  +8  A1  B2 - B3  D2 = D2' - D3
%%D 2D
%%D 2D  +15     C0 - C1
%%D 2D
%%D ren A0 A1       ==> C D
%%D ren B0 B1 B2 B3 ==> \catB(C,C) \catA(A,RC) \catB(C,D) \catA(A,RD)
%%D ren C0 C1       ==> \catB(C,-) \catA(A,R-)
%%D ren D0 D1 D3'   ==> \id_C TC(\id_C) Rf∘(TC(\id_C))
%%D ren D2 D2' D3   ==> f∘\id_C f TD(f)
%%D
%%D (( A0 A1 -> .plabel= l f
%%D    B0 B1 -> .plabel= a TC
%%D    B0 B2 -> .plabel= l \catB(C,f)
%%D    B1 B3 -> .plabel= r \catA(A,Rf)
%%D    B2 B3 -> .plabel= a TD
%%D    C0 C1 -> .plabel= a T
%%D    D0 D1 |-> D1 D3' |->
%%D    D0 D2 |-> D2 D2' = D2' D3 |->
%%D ))
%%D enddiagram
%%D
%$$\pu
%  \diag{Y0-NT-3}
%$$
%%
%so $Rf∘(TC(\id_C)) = TD(f)$.
%
%We want to check that for all $D$ and $f$ we have $T_{(η_T)}D(f) =
%TD(f)$. We have:
%%
%$$\begin{array}{rcl}
%  T_{(η_T)}D(f) &=& (λD.λf.Rf∘η_T)D(f) \\
%                &=& (λf.Rf∘η_T)(f) \\
%                &=& Rf∘η_T \\
%                &=& Rf∘(TC(\id_C)) \\
%                &=& TD(f). \\
%  \end{array}
%$$
%
%It works! So we have a natural construction for the bijection $T ↔ η$,
%given by:
%%
%$$\begin{array}{rcl}
%  T_0 &:=& λD.λf.Rf∘η \\
%    η &:=& TC(\id_C) \\
%  \end{array}
%$$



%  ____            _        _____         __       _ _ 
% | __ )  __ _ ___(_) ___  | ____|_  __  / _|_   _| | |
% |  _ \ / _` / __| |/ __| |  _| \ \/ / | |_| | | | | |
% | |_) | (_| \__ \ | (__  | |___ >  <  |  _| |_| | | |
% |____/ \__,_|___/_|\___| |_____/_/\_\ |_|  \__,_|_|_|
%                                                      
% «basic-example-full»  (to ".basic-example-full")
% (misp 40 "basic-example-full")
% (misa    "basic-example-full")
%  sec: 7.3
% Orig: (favp 33 "basic-example-full")
%       (fava    "basic-example-full")
%  sec: 6.4
%
\subsection{The full reconstruction \DONE}
\label{basic-example-full}

We have just reconstructed all the typings and definitions for the
diagram $\Yzero$. Here is the full reconstruction, except for the
``proof terms'' like $\respids$, $\assoc$, $\idL$ and $\idR$ for each
functor, $\sqcond$ for each natural transformations, and the proofs
that both round trips in the bijections are identity maps:
%
$$\slowdiag{Basic-Example}
  \qquad
  \begin{array}{rl}
    & \catA \text{ is a category}, \\
    & \catB \text{ is a category}, \\
    & R:\catB \to \catA, \\
    & A ∈ \catA, \\
    & C ∈ \catB, \\
    & η:A→RD, \\
      [5pt]
    & \catB(C,-)    :  \catB → \Set,   \\
    & \catB(C,-)_0  := λD.\catB(C,D),  \\
    & \catB(C,-)_1  := λg.λf.\;g∘f,      \\
      [5pt]
    & \catA(A,R-)   : \catA → \Set,    \\
    & \catA(A,R-)_0 := λD.\catA(A,RD), \\
    & \catA(A,R-)_1 := λg.λh.Rg∘h,     \\
      [5pt]
    & α : \catB(C,-) → \catA(A,R-), \\
      [5pt]
    & (η↦α_0) := λη.λD.λf.\;Rf∘η, \\
    & (α↦η)   := λα.\; αC(\id_C), \\
      [5pt]
    & \text{or:} \\
    & α_0 := λD.λf.Rf∘η, \\
    & η := αC(\id_C). \\
  \end{array}
$$

% (find-idarctpage 27 "19. The syntactical world")
% (find-idarcttext 27 "19. The syntactical world")

It is quite short --- {\sl if we treat the proof terms as
  ``obvious''.}

%\standout{Rewrite this part:}
%
%It shouldn't be hard --- for someone with practice --- to translate
%the types and definitions at the right above to the language of some
%proof assistant. I tried to do this in Idris (\cite{Brady}) using
%\cite{IdrisCT2019} but I didn't go very far... I implemented the
%protocategories, protofunctors and proto-NTs of \cite[section
%  19]{IDARCT} to be able to skip the proof terms on my first
%prototypes, but I got stuck trying to implement the formalization of
%$\Yzero$ as a single datatype...
%
%\bsk
%
%{\sl (Help would be greatly appreciated!...)}



\newpage



%  _____      _                 _                 
% | ____|_  _| |_ ___ _ __  ___(_) ___  _ __  ___ 
% |  _| \ \/ / __/ _ \ '_ \/ __| |/ _ \| '_ \/ __|
% | |___ >  <| ||  __/ | | \__ \ | (_) | | | \__ \
% |_____/_/\_\\__\___|_| |_|___/_|\___/|_| |_|___/
%                                                 
% «extensions»  (to ".extensions")
% Orig: (favp 34 "extensions")
%       (fava    "extensions")
%  sec: 7
%
\section{Extensions to the diagrammatic language \DONE}
\label{extensions}

Our diagrammatic language and the list of conventions in Section
\ref{the-conventions} can be extended --- ``by the user'' --- in
zillions of ways. Let's see some examples of extensions.


%   ____                                            _       
%  / ___|___  _ __ ___  _ __ ___   __ _    ___ __ _| |_ ___ 
% | |   / _ \| '_ ` _ \| '_ ` _ \ / _` |  / __/ _` | __/ __|
% | |__| (_) | | | | | | | | | | | (_| | | (_| (_| | |_\__ \
%  \____\___/|_| |_| |_|_| |_| |_|\__,_|  \___\__,_|\__|___/
%                                                           
% «comma-categories»  (to ".comma-categories")
% (misp 40 "comma-categories")
% (misa    "comma-categories")
% Sec 8.1
% Orig: (favp 34 "comma-categories")
%       (fava    "comma-categories")
%  sec: 7.1
%
\subsection{A way to define new categories \DONE}
\label{comma-categories}

We saw in the sections \ref{internal-view-functor} and
\ref{basic-example-functors} how to use diagrams to define functors,
and in sections \ref{internal-view-NT} and \ref{basic-example-NTs} how
to define natural transformations. We can define new categories by
diagrams, too.

% (find-books "__cats/__cats.el" "leinster-basic")
% (find-leinsterbasicpage (+ 8 59) "comma category")
% (find-leinsterbasictext (+ 8 59) "comma category")

%D diagram comma-obj-0
%D 2Dx     100    +17
%D 2D  100        \A
%D 2D             | \f
%D 2D             v
%D 2D  +15 \B |-> \FB
%D 2D
%D (( \A \FB -> .plabel= r \f
%D    \B \FB |->
%D ))
%D enddiagram
\pu
\def\commaobj#1#2#3#4{{
  \left(        \def\A{#1}
                \def\f{#4}
    \def\B{#2} \def\FB{#3}
     \diag{comma-obj-0}
  \right)
  }}

% Usage:
% %D (( A .tex= \commaobj{A}{B}{FB}{g} BOX
% %D    B .tex= \commaobj{A}{B}{FB}{?} BOX
% %D    A B ->
% %D ))

\def\dnAR{{(A{↓}R)}}

%D diagram defining-a-comma-category
%D 2Dx     100 +20  +50  +45
%D 2D  100     A1
%D 2D           |
%D 2D  +20 A2  A3   B0   C0
%D 2D      |    |    |
%D 2D  +20 A4  A5   B1   C1
%D 2D            
%D 2D  +15 A6  A7   B2   C2
%D 2D
%D ren A1 A2 A3 A4 A5 A6 A7 ==> A C RC D RD \catB \catA
%D ren C0 C1 B2 C2 ==> (C,η) (D,g) \dnAR \dnAR
%D
%D (( A1 A3 -> .plabel= r η
%D    A2 A3 |->
%D    A2 A4 -> .plabel= l f
%D    A3 A5 -> .plabel= r Rf
%D    A2 A5 harrownodes nil 20 nil |->
%D    A4 A5 |->
%D    A1 A5 -> .slide= 20pt .plabel= r g
%D    A6 A7 -> .plabel= a R
%D ))
%D (( B0 xy+= 0 -23
%D    B1 xy+= 0 -8
%D    B0 .tex= \commaobj{A}{C}{RC}{η} BOX
%D    B1 .tex= \commaobj{A}{D}{RD}{g} BOX
%D    B0 B1 -> .plabel= l f
%D    B2 place
%D ))
%D (( C0 C1 -> .plabel= l f
%D    C2 place
%D ))
%D enddiagram
%D
$$\pu
  \diag{defining-a-comma-category}
$$

\def\AProofOf   #1{\llangle#1\rrangle}
\def\AllProofsOf#1{\llbracket#1\rrbracket}

My favorite way --- a syntax sugar! --- of visualizing the comma
category $\dnAR$ is the middle third of the diagram above, in which
the objects of $\dnAR$ are depicted as L-shaped diagrams. To
understand the typings and the commutativity conditions we have to
look at the left third --- it indicates that $f$ must obey $Rf∘η=g$.
The right third shows a generic morphism in $\dnAR$ without the syntax
sugar, but we still have to look at the left third to type it. We
have:
%
$$\begin{array}{rl}
  \text{In a context in which}
    & \catA \text{ is a category}, \\
    & \catB \text{ is a category}, \\
    & R : \catB → \catA, \\
    & A \text{ is an object of $\catA$}, \\
  \text{we define the category}
    & \dnAR \text{ as follows:} \\
  %    
  [5pt]
  %
  \text{An object of}
    & \dnAR \\
  \text{is a pair}
    & (C,η) \\
  \text{in which}
    & C : \catB_0 \\
  \text{and}
    & η : \Hom_\catA(A,RC); \\
  \text{so}
    & (C,η) : (C⠆\catB_0) × \Hom_\catA(A,RC) \\
  \text{and}
    & \dnAR_0 := (C⠆\catB_0) × \Hom_\catA(A,RC). \\
  %
  [5pt]
  %
  \text{A morphism}
    & f: (C,η) → (D,g) \text{ in $\dnAR$} \\
  \text{is an}
    & f: \Hom_\catB(C,D) \text{ such that $Rf∘η=g$}, \\
  \text{or equivalently a pair}
    & (f,\AProofOf{Rf∘η=g}); \\
  \text{we have}
    & (f,\AProofOf{Rf∘η=g}) : (f⠆\Hom_\catB(C,D))×\AllProofsOf{Rf∘η=g}, \\
  \text{so}
    & \Hom_\dnAR((C,η),(D,g)) := \\
    & (f⠆\Hom_\catB(C,D)) × \AllProofsOf{Rf∘η=g}.
  \end{array}
$$


% The notations $\AProofOf{P}$ and $\AllProofsOf{P}$ are non-standard.
% For any proposition $P$ we denote by $\AllProofsOf{P}$ the set of
% witnesses of $P$ (see \cite[p.18]{HOTT}) and by $\AProofOf{P}$ a
% witness that $P$ is true; formally, $\AProofOf{P}$ is a variable (with
% a long name!) whose type is $\AllProofsOf{P}$, and $\AllProofsOf{P}$
% is a singleton when $P$ is true and the empty set when $P$ is false. A
% good way to remember this notation is that $\AllProofsOf{P}$ looks
% like a box and $\AProofOf{P}$ looks like something that comes in that
% box.


\msk

This defines formally the first two components of the category
$\dnAR$. Remember that a category $\catC$ has seven components:
%
$$\catC = (\catC_0, \Hom_\catC, \id_\catC, ∘_\catC;
   \assoc_\catC, \idL_\catC, \idR_\catC)
$$
%
We are pretending that the other components of $\dnAR$ are ``obvious''
in the sense of Section \ref{to-deserve-a-name}. Note the we used the
notations for dependent types and witnesses of the sections
\ref{dependent-types} and \ref{witnesses}.

% (find-books "__logic/__logic.el" "hott")
% (find-hottpage (+ 12 18)   "a witness to the provability of A")
% (find-hotttext (+ 12 18)   "a witness to the provability of A")




%  _   _               
% | \ | | ___  ___ ___ 
% |  \| |/ _ \/ __/ __|
% | |\  |  __/\__ \__ \
% |_| \_|\___||___/___/
%                      
% «ness»  (to ".ness")
% (misp 43 "ness")
% (misa    "ness")
%   sec: 8.2
% Orig: (favp 39 "ness")
%       (fava    "ness")
%  sec: 7.5
\subsection{Universalness as something extra \DONE}
\label{ness}

We can consider that an universal arrow is an arrow $η:A→RC$ with
something extra. We saw how to represent this ``something extra'' in
Type Theory: a universal arrow $η$ is a pair $(η,\univ_η)$, where
$\univ_η$ is its ``universalness'', that we defined in one way in
sec.\ref{freyd-with-functors} and in another way in
sec.\ref{indefinite-articles}.

Universalness is just one `-ness' among many. Several of these
``-ness''es have standard graphical representations: for example
pullbackness is indicated by a `$\pbsymbol7$', and monicness is
indicated by a tail like this: `$\monicto$'. \cite{FreydScedrov}
defines lots of graphical representations for ``-ness''es starting on
its page 37. We will sometimes use an `$:=$' to define a new
annotation that is an abbreviation for extra structure:
%
%D diagram universalness
%D 2Dx     100 +20 +50 +20
%D 2D  100     A1      C1
%D 2D
%D 2D  +20 A2  A3  C2  C3
%D 2D
%D 2D  +20 A4  A5  C4  C5
%D 2D
%D 2D  +15 B0  B1  D0  D1
%D 2D
%D ren A1 A2 A3       B0 B1 ==> A C RC      \catB \catA
%D ren C1 C2 C3 C4 C5 D0 D1 ==> A C RC D RD \catB \catA
%D
%D (( A1 A3 -> .plabel= r \sm{η\\\univ}
%D    A2 A3 |->
%D    B0 B1 -> .plabel= a R
%D
%D    C1 C3 -> .plabel= r η
%D    C2 C3 |->
%D    C2 C4 -> .plabel= l ∃!f
%D    C3 C5 -> .plabel= r Rf
%D    C4 C5 |->
%D    C1 C5 -> .slide= 15pt .plabel= r ∀g 
%D    D0 D1 -> .plabel= a R
%D    C2 C5 harrownodes nil 20 nil |->
%D
%D    A3 C4 midpoint .TeX= := place
%D ))
%D enddiagram
%D
$$\pu
  \diag{universalness}
$$

This is pullbackness:
%
%D diagram pullbackness
%D 2Dx     100 100 +20 +40 +20 +20
%D 2D  100 A0          B0
%D 2D
%D 2D  +20     A1  A2      B1  B2
%D 2D
%D 2D  +20     A3  A4      B3  B4
%D 2D
%D ren A0 A1 A2 A3 A4 ==> ∀X A B C D
%D ren B0 B1 B2 B3 B4 ==> ∀X A B C D
%D
%D (( A1 A2 ->
%D    A1 A3 ->
%D    A2 A4 ->
%D    A3 A4 ->
%D    A1 relplace 5 5 \pbsymbol{7}
%D    A2 relplace 25 5 :=
%D
%D    B1 B2 ->
%D    B1 B3 ->
%D    B2 B4 ->
%D    B3 B4 ->
%D    B0 B1 -> .plabel= m ∃!
%D    B0 B3 -> .plabel= l ∀
%D    B0 B2 -> .plabel= a ∀
%D
%D ))
%D enddiagram
%D
$$\pu
  \diag{pullbackness}
$$



%   ___                        _ _                   _       
%  / _ \ _ __  _ __   ___  ___(_) |_ ___    ___ __ _| |_ ___ 
% | | | | '_ \| '_ \ / _ \/ __| | __/ _ \  / __/ _` | __/ __|
% | |_| | |_) | |_) | (_) \__ \ | ||  __/ | (_| (_| | |_\__ \
%  \___/| .__/| .__/ \___/|___/_|\__\___|  \___\__,_|\__|___/
%       |_|   |_|                                            
%
% «opposite-categories»  (to ".opposite-categories")
% (misp 44 "opposite-categories")
% (misa    "opposite-categories")
%  sec: 8.3
% Orig: (favp 38 "opposite-categories")
%       (fava    "opposite-categories")
%  sec: 7.4
\subsection{Opposite categories \DONE}
\label{opposite-categories}

% (find-books "__cats/__cats.el" "maclane")
% (find-cwm2page (+ 13  33)   "2. Contravariance and Opposites")

% (find-books "__cats/__cats.el" "abramsky-tzevelekos")
% (find-abramskyticclpage 14 "1.1.5 First Notions")
% (find-abramskyticcltext 14 "1.1.5 First Notions")
% (find-abramskyticclpage 15 "Opposite Categories and Duality")
% (find-abramskyticcltext 15 "Opposite Categories and Duality")

\def\Aop{{\catA^\op}}

Suppose that we have a diagram $A \ton{f} B \ton{g} C$ in a category
$\catA$. There are several different notations for the corresponding
diagram in $\Aop$: for example, in \cite[p.33]{CWM2} it would be
written as $A \otn{f^\op} B \otn{g^\op} C$, while in
\cite[p.15]{AbramskyTzevelekos} as $A \otn{f} B \otn{g} C$. The
convention (COT) says that the notation in our diagrams should be as
close as possible to the notation in the original text --- so let's
see how to support the notation in \cite{AbramskyTzevelekos}, that
looks a bit harder than the one in \cite{CWM2}.

We want to define a new category, $\Aop$, using tricks similar to the
ones in Section \ref{comma-categories}, but now we can't pretend that
the new composition is obvious. We will define $(\Aop)_0$,
$\Hom_\Aop$, $\id_\Aop$, and $∘_\Aop$ without any textual
explanations, with just the diagrams to convince the readed that our
definitions are reasonable.
%
%D diagram A-and-Aop
%D 2Dx     100 +35
%D 2D  100 A0  B0
%D 2D            
%D 2D  +10 A1  B1
%D 2D      |   | 
%D 2D  +15 A2  B2
%D 2D            
%D 2D  +10 A3  B3
%D 2D      |   | 
%D 2D  +15 A4  B4
%D 2D            
%D 2D  +10 A5  B5
%D 2D      |   | 
%D 2D  +15 A6  B6
%D 2D      |   | 
%D 2D  +15 A7  B7
%D 2D            
%D 2D  +15 A8  B8
%D 2D
%D ren A0  A1 A2  A3 A4  A5 A6 A7  A8 ==> A  A B  A A  A B C  \catA
%D ren B0  B1 B2  B3 B4  B5 B6 B7  B8 ==> A  A B  A A  A B C  \catA^\op
%D
%D (( A0 place
%D    A1 A2 -> .plabel= r f
%D    A3 A4 -> .plabel= r \id_A
%D    A5 A6 -> .plabel= r f
%D    A6 A7 -> .plabel= r g
%D    A5 A7 -> .slide= 15pt .plabel= r g∘f
%D    A8 place
%D
%D    B0 place
%D    B1 B2 <- .plabel= r f
%D    B3 B4 <- .plabel= r \id_A
%D    B5 B6 <- .plabel= r f
%D    B6 B7 <- .plabel= r g
%D    B5 B7 <- .slide= 15pt .plabel= r f∘g
%D    B8 place
%D ))
%D enddiagram
%D
$$\pu
  \diag{A-and-Aop}
  \quad
  \begin{array}{c}
  \catA_0 =: (\Aop)_0 \\
  \\
  \Hom_\catA(A,B) =: \Hom_\Aop(B,A) \\
  \\
  \id_\catA(A) =: \id_\Aop(A) \\
  \\
  g ∘_\catA f =: f ∘_\Aop g \\
  \\
  \\
  \\
  \\
  \\
  \end{array}
$$


In the diagram below $F:\catA^\op→\catB$ is a contravariant functor,
and the $\catA$ above $\catA^\op$ indicates that $g:C→D$ is a morphism
of $\catA$, not of $\catA^\op$. I am not very happy with this trick
but I haven't found a better alternative yet.
%
%D diagram contravariant-functor
%D 2Dx     100 +20
%D 2D  100 A0  A1 
%D 2D
%D 2D  +20 A2  A3 
%D 2D
%D 2D  +12 B0'
%D 2D   +8 B0  B1
%D 2D
%D ren A0 A1 ==> C FC
%D ren A2 A3 ==> D FD
%D ren B0'   ==> \catA
%D ren B0 B1 ==> \phantom{m}\catA^\op \catB
%D
%D (( A0 A1 |->
%D    A0 A2  -> .plabel= l g
%D    A1 A3 <-  .plabel= r Fg
%D    A2 A3 |->
%D    A0 A3 harrownodes nil 20 nil |->
%D    B0' place
%D    B0 B1  -> .plabel= a F
%D ))
%D enddiagram
%D
$$\pu
  \diag{contravariant-functor}
$$





% __   __                   _       
% \ \ / /__  _ __   ___  __| | __ _ 
%  \ V / _ \| '_ \ / _ \/ _` |/ _` |
%   | | (_) | | | |  __/ (_| | (_| |
%   |_|\___/|_| |_|\___|\__,_|\__,_|
%                                   
% «yoneda-lemma»  (to ".yoneda-lemma")
% (misp 43 "yoneda-lemma")
% (misa    "yoneda-lemma")
%  sec. 8.2
% Orig: (favp 35 "yoneda-lemma")
%       (fava    "yoneda-lemma")
%  sec: 7.2
%
\subsection{The Yoneda Lemma \DONE}
\label{yoneda-lemma}

The formalization of $\Yzero$ as a series of typings and definitions
in Section \ref{basic-example-full} {\sl suggests} that {\sl some}
operations from Type Theory that can be applied on the formalization
side should be translatable to the diagram side; for example,
substitution. This one clearly works: if we substitute $\catA$ by
$\Set$ and $A$ by the set 1 we get this,
%
%D diagram Basic-Example-using-Set-and-1
%D 2Dx     100    +40
%D 2D  100        A1
%D 2D              |
%D 2D  +20 A2 |-> A3
%D 2D
%D 2D  +15 B0 --> B1
%D 2D
%D 2D  +15 C0 --> C1
%D 2D          \   |
%D 2D  +20        C2
%D 2D
%D ren    A1 ==>      1
%D ren A2 A3 ==>  C  RC
%D ren B0 B1 ==>  \catB \Set
%D ren C0 C1 C2 ==> \catB(C,-) \Set(1,R-) ?
%D
%D (( A1 A3  -> .plabel= r η
%D    A2 A3 |->
%D
%D    B0 B1  -> .plabel= a R\phantom{mmm}
%D
%D    C0 C1 -> .plabel= b α
%D  # C0 C2 -> .plabel= l \sm{ψ\\\text{(iso)}}
%D  # C1 C2 <->
%D
%D    C0 C1 midpoint A1 A3 midpoint <-> .curve= ^15pt
%D ))
%D enddiagram
%
\pu
$$
  \Yzero \bmat{\catA := \Set \\ A := 1}
  \qquad = \quad
  \slowdiag{Basic-Example-using-Set-and-1}
$$

For each object $S$ of $\Set$ we have a bijection between elements of
$S$ and morphisms $1→S$. We will denote the morphism from 1 to $S$
that ``chooses'' an element $s∈S$ by $\nameof{s}$; the pronounciation
of $\nameof{s}$ is ``the name of $s$''. We have a bijection between
`$s$'s and $\nameof{s}$s:

For each $D∈\catB$ we have a bijection $\Set(1,RD) ↔ RD$ --- and we
can use these bijections to build a natural isomorphism
$\Set(1,R-) ↔ R$. We will draw it vertically, and complete the
triangle:

%D diagram Basic-Example-using-Set-and-1-and-R
%D 2Dx     100    +40
%D 2D  100        A1
%D 2D              |
%D 2D  +20 A2 |-> A3
%D 2D
%D 2D  +15 B0 --> B1
%D 2D
%D 2D  +15 C0 --> C1
%D 2D          \   |
%D 2D  +20        C2
%D 2D
%D ren    A1 ==>      1
%D ren A2 A3 ==>  C  RC
%D ren B0 B1 ==>  \catB \Set
%D ren C0 C1 C2 ==> \catB(C,-) \Set(1,R-) R
%D
%D (( A1 A3  -> .plabel= r η
%D    A2 A3 |->
%D
%D    B0 B1  -> .plabel= a R\phantom{mmm}
%D
%D    C0 C1 -> .plabel= b α
%D    C0 C2 -> .plabel= l β
%D    C1 C2 <->
%D
%D    C0 C1 midpoint A1 A3 midpoint <-> .curve= ^15pt
%D ))
%D enddiagram
%
\pu
$$
  \Yone
  \qquad := \qquad
  \slowdiag{Basic-Example-using-Set-and-1-and-R}
$$

We can use that natural isomorphism to obtain `$β$'s from `$α$'s, and
vice-versa, by composition. We could draw an arrow for the bijection
between `$α$'s and `$β$'s and another arrow for the bijection between
`$η$'s and elements of $RC$, but we will prefer to omit them.

We will call the diagram above $\Yone$. It doesn't have a single
top-level arrow, so we can't apply the convention (CTL) to it, and we
need to specify its ``meaning'' explicitly. We will consider that its
three bijections are top-level objects, and so the diagram $\Yone$
says that we have these bijections:
%
$$\begin{array}{l}
  RC \\
  ↔ \; \Set(1,RC) \\
  ↔ \; \Set^\catB(\catB(C,-),\Set(1,R-)) \\
  ↔ \; \Set^\catB(\catB(C,-),R) \\
  \end{array}
$$

The Yoneda Lemma ``is'' the bijection $RC ↔ \Set^\catB(\catB(C,-),R)$
--- check how it is defined in \cite[thm.4.2.1]{Leinster},
\cite[thm.2.2.4]{Riehl}, \cite[p.61]{CWM2}, \cite[lemma 8.2]{Awodey}.
Some books show how to calculate the element of $RC$ associated to a
given $β$ and vice-versa, and most treat $\Set(1,R-)$ as something
secondary. If we represent this idea of the Yoneda Lemma in the same
format the we used in sec.\ref{basic-example-full}, we get this:
%
%D diagram Y1-minus
%D 2Dx     100    +30
%D 2D  100        A1
%D 2D              |
%D 2D  +20 A2 |-> A3
%D 2D
%D 2D  +15 B0 --> B1
%D 2D
%D 2D  +15 C0 --> C1
%D 2D          \   |
%D 2D  +20        C2
%D 2D
%D ren    A1 ==>      1
%D ren A2 A3 ==>  C  RC
%D ren B0 B1 ==>  \catB \Set
%D ren C0 C1 C2 ==> \catB(C,-) \Set(1,R-) R
%D
%D (( A1 A3  -> .plabel= r \nameof{e}
%D    A2 A3 |->
%D
%D    B0 B1  -> .plabel= a R
%D
%D  # C0 C1 -> .plabel= b α
%D    C0 C2 -> .plabel= l β
%D  # C1 C2 <->
%D
%D  # C0 C1 midpoint A1 A3 midpoint <-> .curve= ^15pt
%D ))
%D enddiagram
%
\pu
$$\Ytwo
  \;\; := \;\;
  \slowdiag{Y1-minus}
  \qquad
  \begin{array}{rl}
    & \catB \text{ is a category}, \\
    & R:\catB \to \Set, \\
    & C ∈ \catB, \\
      [5pt]
    & \catB(C,-)    :  \catB → \Set,   \\
    & \catB(C,-)_0  := λD.\catB(C,D),  \\
    & \catB(C,-)_1  := λg.λf.\;g∘f,      \\
      [5pt]
    & e ∈ RC, \\
    & \nameof{e} := λ{*}.e, \\
    & β : \catB(C,-) → R,   \\
      [5pt]
    & (e↦β_0) := λe.λD.λf.\;Rf(e), \\
    & (β↦e)   := λβ.βC\id_C, \\
  \end{array}
$$




% (find-books "__cats/__cats.el" "leinster-basic")
% (find-leinsterbasicpage (+ 8  93) "4.2 The Yoneda lemma")
% (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).")
%
% \standout{TODO:} show the diagram for ``every functor to $\Set$ that has a
% left adjoint is representable''.



% __   __                   _                        _     
% \ \ / /__  _ __   ___  __| | __ _    ___ _ __ ___ | |__  
%  \ V / _ \| '_ \ / _ \/ _` |/ _` |  / _ \ '_ ` _ \| '_ \ 
%   | | (_) | | | |  __/ (_| | (_| | |  __/ | | | | | |_) |
%   |_|\___/|_| |_|\___|\__,_|\__,_|  \___|_| |_| |_|_.__/ 
%                                                          
% «yoneda-embedding»  (to ".yoneda-embedding")
% (misp 46 "yoneda-embedding")
% (misa    "yoneda-embedding")
%  sec: 8.4
% Orig: (favp 34 "yoneda-embedding")
%       (fava    "yoneda-embedding")
%  sec: 7.3
%
\subsection{The Yoneda embedding \DONE}
\label{yoneda-embedding}

Let's define $\Ythree$ as the result of this substituion:
%
$$\Ythree \;\;=\;\; \Ytwo
  \bmat{
    R := \catB(B,-) \\
    e := φ \\
  }
$$

We have:
%
%D diagram Y3
%D 2Dx     100    +30
%D 2D  100        A1
%D 2D              |
%D 2D  +20 A2 |-> A3
%D 2D
%D 2D  +15 B0 --> B1
%D 2D
%D 2D  +15 C0 --> C1
%D 2D          \   |
%D 2D  +20        C2
%D 2D
%D ren    A1 ==>            1
%D ren A2 A3 ==>       C  \catB(B,C)
%D ren B0 B1 ==> \catB      \Set
%D ren C0 C2 ==> \catB(C,-) \catB(B,-)
%D
%D (( A1 A3  -> .plabel= r \nameof{φ}
%D    A2 A3 |->
%D    B0 B1  -> .plabel= a R
%D    C0 C2 -> .plabel= l β
%D ))
%D enddiagram
%
\pu
$$\scalebox{0.9}{$
  \Ythree
  \;\; = \;\;
  \slowdiag{Y3}
  \qquad
  \begin{array}{rl}
    & \catB \text{ is a category}, \\
    & \catB(B,-):\catB \to \Set, \\
    & C ∈ \catB, \\
      [5pt]
    & \catB(C,-)    :  \catB → \Set,   \\
    & \catB(C,-)_0  := λD.\catB(C,D),  \\
    & \catB(C,-)_1  := λg.λf.\;g∘f,      \\
      [5pt]
    & φ ∈ \catB(B,C), \\
    & \nameof{φ} := λ{*}.φ, \\
    & β : \catB(C,-) → \catB(B,-),   \\
      [5pt]
    & (φ↦β_0) := λφ.λD.λf.\;\catB(B,-)_1(f)(φ), \\
    & (β↦φ)   := λβ.βC\id_C, \\
  \end{array}
  $}
$$

The formulas in $(φ↦β_0)$ and $(β↦φ)$ can be simplified, and we can
derive this other diagram from it:
%
%D diagram Y-emb-2022mar01
%D 2Dx     100    +30  +30  +25
%D 2D  100 A0 |-> A1   B0   C0
%D 2D      |       |    |    |
%D 2D  +30 A2 |-> A3   B1   C1
%D 2D      D0'
%D 2D  +20 D0 --> D1
%D 2D
%D ren A0 A1 ==> C \catB(C,-)
%D ren A2 A3 ==> B \catB(B,-)
%D ren B0 B1 ==> \catB(C,D) \catB(B,D)
%D ren C0 C1 ==> f f∘φ
%D ren D0 D1 ==> \phantom{{}^\op}\catB^\op \Set
%D
%D (( A0 A1 |->
%D    A0 A2 <-  .plabel= l φ
%D    A1 A3  -> .plabel= r β
%D    A2 A3 |->
%D    A0 A3 harrownodes nil 20 nil <->
%D    B0 B1  ->
%D    C0 C1 |->
%D    newnode: D0' at: @D0+v(0,-7) .TeX= \catB place
%D    D0 D1  -> .plabel= a \mathbf{y}
%D ))
%D enddiagram
%D
$$\pu
  \diag{Y-emb-2022mar01}
  \qquad
  \begin{array}{rl}
    & \catB \text{ is a category}, \\
    & B ∈ \catB, \\
    & C ∈ \catB, \\
      [5pt]
    & φ : B→C, \\
    & β : \catB(C,-)→\catB(B,-), \\
    & (φ↦β_0) := λφ.λD.λf.\;f∘φ, \\
    & (β↦φ)   := λβ.βC\id_C, \\
  \end{array}
$$

Let's call it $\Yfour$. This is one of the {\sl Yoneda Embeddings};
compare that diagram with the ones in \cite[p.60]{Riehl}. In
\cite{MissingAgda} we show how to formalize it in Agda as a corollary
of $\Yzero$, $\Yone$, $\Ytwo$, and $\Ythree$.
%
% (find-books "__cats/__cats.el" "riehl")
% (find-riehlccpage (+ 18 60)      "Corollary 2.2.8 (Yoneda embedding)")
% (find-riehlcctext (+ 18 60)      "Corollary 2.2.8 (Yoneda embedding)")
% (find-books "__cats/__cats.el" "leinster-basic")

Note that the functor $C \mapsto \catB(C,-)$ in $\Yfour$ is
contravariant, and we used the trick from
sec.\ref{opposite-categories} to indicate this.



%  ____                                     _        _     _      
% |  _ \ ___ _ __  _ __ ___  ___  ___ _ __ | |_ __ _| |__ | | ___ 
% | |_) / _ \ '_ \| '__/ _ \/ __|/ _ \ '_ \| __/ _` | '_ \| |/ _ \
% |  _ <  __/ |_) | | |  __/\__ \  __/ | | | || (_| | |_) | |  __/
% |_| \_\___| .__/|_|  \___||___/\___|_| |_|\__\__,_|_.__/|_|\___|
%           |_|                                                   

% «representable-functors»  (to ".representable-functors")
% (misp 47 "representable-functors")
% (misa    "representable-functors")
\subsection{Representable functors}
\label{representable-functors}

% (find-books "__cats/__cats.el" "riehl")
% (find-books "__cats/__cats.el" "leinster-basic")
%
Some books, like \cite{Leinster} and \cite{Riehl}, present
representable functors first, then lots of examples, and only then
they present the Yoneda Lemma. In our diagram $\Yone$ a {\sl
  representation} for the functor $R$ is a pair $(C,β)$ such that the
natural transformation $β$ is a natural iso. It is easy to see that we
have these bijections, or bi-implications:
%
$$\begin{array}{l}
  \text{natural iso-ness of $β$} \\
  ↔ \; \text{natural iso-ness of $α$} \\
  ↔ \; \text{universalness of $η$} \\
  \end{array}
$$
%
The last one holds in the diagram $\Yzero$ too.

\msk

Many of the textbook examples of representable functors are
consequences of a simple theorem that shows that every functor
$R:\catB→\Set$ with a left adjoint is representable. The diagram
$\Yfive$ below is a skeleton for a proof of that theorem:
%
%D diagram Y5
%D 2Dx     100    +25 +20 +20   +30    +30
%D 2D  100 D0 <-| D1  F0  G0           A1  
%D 2D      |       |   |   |            |  
%D 2D  +20 D2 |-> D3  F1  G1    A2 |-> A3  
%D 2D                          
%D 2D  +15 E0 === E1            B0 --> B1  
%D 2D                          
%D 2D  +15                      C0 --> C1
%D 2D                               \   |
%D 2D  +20                             C2  
%D 2D
%D ren    A1 ==>              1
%D ren A2 A3 ==>       L1    RL1
%D ren B0 B1 ==> \catB      \Set
%D ren C0 C2 ==> \catB(L1,-) R
%D ren D0 D1 ==> LA A
%D ren D2 D3 ==> B RB
%D ren E0 E1 ==> \catB \Set
%D ren F0 F1 ==> A RLA
%D ren G0 G1 ==> 1 RL1
%D
%D (( A1 A3  -> .plabel= r \sm{η_1\\univ}
%D    A2 A3 |->
%D    B0 B1  ->   .plabel= a R
%D    C0 C2 <-> # .plabel= l β
%D    
%D    D0 D1 <-|
%D    D0 D2  ->
%D    D1 D3  ->
%D    D2 D3 |->
%D    D0 D3 harrownodes nil 20 nil <->
%D    E0 E1 <-  sl^ .plabel= a L
%D    E0 E1  -> sl_ .plabel= b R
%D    F0 F1  -> .plabel= r η_A
%D    G0 G1  -> .plabel= r η_1
%D ))
%D enddiagram
%
\pu
$$\Yfive \;\; := \;\;\;\;\;
  \slowdiag{Y5}
$$

The unit arrow $η_1:1→RL1$ is universal --- note the `$\univ$' in the
upper right arrow --- and so its associated `$β$' is a natural iso; we
drew it with a `$↔$'.

Statements like ``the functor {\sl blah} is representable'' are very
common in CT texts, and their natural isos is usually written just
like ``$R \cong \catB(L1,-)$'', without a name. A good way to draw the
missing diagrams for a text should not force us to invent names, and
so we should be allowed to omit the names of arrows when this is
convenient.

% In the examples of representable functors in \cite{Leinster} and
% \cite{Riehl} the natural iso never has a name

% (find-books "__cats/__cats.el" "riehl")
% (find-riehlccpage (+ 18 51) "Example 2.1.5. The following covariant functors")
% (find-riehlcctext (+ 18 51) "Example 2.1.5. The following covariant functors")
% (find-riehlccpage (+ 18 63) "Example 2.3.4." "Z[x]")
% (find-riehlcctext (+ 18 63) "Example 2.3.4." "Z[x]")

This is the example (iv) in \cite[p.52]{Riehl}:

\begin{quotation}
\begin{enumerate}

\item[(iv)] The functor $U:\Ring→\Set$ is represented by the unital
  ring $\Z[x]$, the polynomial ring in one variable with integer
  coefficients. A unital ring homomorphism $Z[x]→R$ is uniquely
  determined by the image of $x$; put another way, $\Z[x]$ is the {\sl
    free unital ring on a single generator}.

\end{enumerate}
\end{quotation}

The diagram below is a good way to visualize that:
%
%D diagram Y5-rings
%D 2Dx     100    +25 +20 +20   +30    +30
%D 2D  100 D0 <-| D1  F0  G0           A1  
%D 2D      |       |   |   |            |  
%D 2D  +20 D2 |-> D3  F1  G1    A2 |-> A3  
%D 2D                          
%D 2D  +15 E0 === E1            B0 --> B1  
%D 2D                          
%D 2D  +15                      C0 --> C1
%D 2D                               \   |
%D 2D  +20                             C2  
%D 2D
%D ren    A1 ==>                1
%D ren A2 A3 ==>       \Z[x]   U\Z[x]
%D ren B0 B1 ==> \Ring         \Set
%D ren C0 C2 ==> \Ring(\Z[x],-) U
%D ren D0 D1 ==> FA A
%D ren D2 D3 ==> B UB
%D ren E0 E1 ==> \Ring \Set
%D ren F0 F1 ==> A UFA
%D ren G0 G1 ==> 1 U\Z[x]
%D
%D (( A1 A3  -> .plabel= r \sm{\nameof{x}\\\univ}
%D    A2 A3 |->
%D    B0 B1  -> .plabel= a U
%D    C0 C2 <-> # .plabel= l β
%D    
%D    D0 D1 <-|
%D    D0 D2  ->
%D    D1 D3  ->
%D    D2 D3 |->
%D    D0 D3 harrownodes nil 20 nil <->
%D    E0 E1 <-  sl^ .plabel= a F
%D    E0 E1  -> sl_ .plabel= b U
%D    F0 F1  -> .plabel= r η_A
%D    G0 G1  -> .plabel= r η_1
%D ))
%D enddiagram
%
\pu
$$\slowdiag{Y5-rings}
$$

Its left half is useful for when we want to remember how that
representation is generated by an adjunction of the form $F⊣U$, but it
can be omitted. In sec.\ref{the-conventions} I drew that diagram
without its left half.



% She develops more this example in page 63, as:
% 
% \begin{quotation}
% 
%   {\bf Example 2.3.4.} Recall from Example 2.1.5(iv) that the
%   forgetful functor $U:\Ring→\Set$ is represented by the ring $Z[x]$.
%   The universal element, which defines the natural isomorphism
%   %
%   $$\Ring(Z[x], R) ≅ UR,$$
%   %
%   is the element $x∈\Z[x]$. As in the proof of the Yoneda lemma, the
%   bijection above is implemented by evaluating a ring homomorphism
%   $ϕ:\Z[x]→R$ at the element $x∈\Z[x]$ to obtain an element $ϕ(x)∈R$.
% 
% \end{quotation}






% %  ____                    __                  _                 
% % |  _ \ ___ _ __  _ __   / _|_   _ _ __   ___| |_ ___  _ __ ___ 
% % | |_) / _ \ '_ \| '__| | |_| | | | '_ \ / __| __/ _ \| '__/ __|
% % |  _ <  __/ |_) | |    |  _| |_| | | | | (__| || (_) | |  \__ \
% % |_| \_\___| .__/|_|    |_|  \__,_|_| |_|\___|\__\___/|_|  |___/
% %           |_|                                                  
% %
% % «representable-functors»  (to ".representable-functors")
% % Orig: (favp 40 "representable-functors")
% %       (fava    "representable-functors")
% %  sec:
% \subsection{Representable functors \DONE}
% \label{representable-functors}
% 
% It is easy to see that in $\Yzero$ the universality of $η$ is
% equivalent to the natural-iso-ness of $T$; in $\Yone$ the universality
% of $η$ is equivalent to the natural-iso-ness of $T$, and this is
% equivalent to the natural-iso-ness of $T'$. The constructions should
% be evident from these diagrams:
% %
% %D diagram univ-arrows-univ-elts
% %D 2Dx     100    +40   +50    +40
% %D 2D  100        A1           D1 
% %D 2D              |            | 
% %D 2D  +20 A2 |-> A3    D2 |-> D3 
% %D 2D      |       |    |       | 
% %D 2D  +20 A4 |-> A5    D4 |-> D5 
% %D 2D                             
% %D 2D  +15 B0 --> B1    E0 --> E1 
% %D 2D                             
% %D 2D  +15 C0 --> C1    F0 --> F1 
% %D 2D          \   |        \   | 
% %D 2D  +20        C2           F2 
% %D 2D
% %D ren    A1 ==>      A
% %D ren A2 A3 ==>  C  RC
% %D ren A4 A5 ==>  D  RD
% %D ren B0 B1 ==>  \catB \catA
% %D ren C0 C1 C2 ==> \catB(C,-) \catA(A,R-) ?
% %D
% %D ren    D1 ==>      1
% %D ren D2 D3 ==>  C  RC
% %D ren D4 D5 ==>  D  RD
% %D ren E0 E1 ==>  \catB \Set
% %D ren F0 F1 F2 ==> \catB(C,-) \Set(1,R-) R
% %D
% %D (( A1 A3  -> .plabel= r \sm{η\\\univ}
% %D    A2 A3 |->
% %D    A2 A4  -> .plabel= l f
% %D    A3 A5  -> .plabel= r Rf
% %D    A2 A5 harrownodes nil 20 nil |->
% %D    A4 A5 |->
% %D    A1 A5  -> .slide= 25pt .plabel= r h
% %D
% %D    B0 B1  -> .plabel= a R\phantom{mmm}
% %D
% %D    C0 C1 <-> .plabel= b T
% %D    C0 C1 midpoint A1 A3 midpoint <-> .curve= ^15pt
% %D ))
% %D (( D1 D3  -> .plabel= r \sm{η\\\univ}
% %D    D2 D3 |->
% %D    D2 D4  -> .plabel= l f
% %D    D3 D5  -> .plabel= r Rf
% %D    D2 D5 harrownodes nil 20 nil |->
% %D    D4 D5 |->
% %D    D1 D5  -> .slide= 25pt .plabel= r h
% %D
% %D    E0 E1  -> .plabel= a R\phantom{mmm}
% %D
% %D    F0 F1 <-> .plabel= b T
% %D    F0 F2 <-> .plabel= l T'
% %D    F1 F2 <->
% %D
% %D    F0 F1 midpoint D1 D3 midpoint <-> .curve= ^15pt
% %D ))
% %D enddiagram
% %
% $$\pu
%   \slowdiag{univ-arrows-univ-elts}
% $$
% 
% The diagram at the right above can be seen as the missing diagram for
% Proposition 2 in \cite[p.60]{CWM2}, that says this (I've translated
% its letters to the ones I use):
% 
% % (find-books "__cats/__cats.el" "maclane")
% % (find-cwm2page (+ 13 60) "Definition.")
% % (find-cwm2text (+ 13 60) "Definition.")
% 
% \begin{quotation}
% 
%   {\bf Definition.} {\sl Let $\catB$ have small hom-sets. A
%     representation of a functor $R:\catB→\Set$ is a pair $〈C,T'〉$,
%     with $C$ an object of $\catB$ and
%     %
%     $$T':\catB(C,-)→R$$
%     %
%     a natural isomorphism. The object $C$ is called the representing
%     object. The functor $R$ is said to be representable when such a
%     representation exists.}
% 
%   \msk
% 
%   Up to isomorphism, a representable functor is thus just a covariant
%   hom-functor $\catB(C,-)$. This notion can be related to universal arrows as
%   follows.
% 
%   \msk
% 
%   {\bf Proposition 2.} Let 1 denote any one-point set and let $\catB$
%   have small hom-sets. If $〈C, η:1→RC〉$ is a universal arrow from $1$
%   to $R: \catB→\Set$, then the function $T'$ which for each object $D$
%   of $\catB$ sends the arrow $f:C→D$ to $(Rf)(η(*))∈RD$ is a
%   representation of $R$. Every representation of $R$ is obtained in
%   this way from exactly one such universal arrow.
% 
% \end{quotation}
% 
% The operations $T'↦η$ and $η↦T'$ can be defined as:
% %
% $$\begin{array}{rcl}
%   η  &:&  1→RC             \\
%   T' &:&  \catB(C,-)→R     \\
%   η  &:=& λ*.(T'C(\id(C))) \\
%   T' &:=& λD.λf.(Rf)(η(*)) \\
%   \end{array}
% $$


% %  _____  __      __ 
% % |__  / | _|_  _|_ |
% %   / /  | |\ \/ /| |
% %  / /_  | | >  < | |
% % /____| | |/_/\_\| |
% %        |__|    |__|
% %
% % «representable-functor-ex»  (to ".representable-functor-ex")
% % Orig: (favp 42 "representable-functor-ex")
% %       (fava    "representable-functor-ex")
% %  sec:
% \subsection{An example of a representable functor \DONE}
% \label{representable-functor-ex}
% 
% 
% Here is the ``missing diagram'' for both excerpts:
% %
% %D diagram 2.3.4._Z[x]
% %D 2Dx     100 +55
% %D 2D  100     A1
% %D 2D  +20 A2  A3
% %D 2D  +20 A4  A5
% %D 2D  +15 B0  B1
% %D 2D  +15 C1  C2
% %D 2D  +20     C3
% %D 2D
% %D ren    A1 ==>          1
% %D ren A2 A3 ==> \Z[x] U(\Z[x])
% %D ren A4 A5 ==>     R UR
% %D ren B0 B1 ==> \Ring          \Set
% %D ren C1 C2 ==> \Ring(\Z[x],-) \Set(1,U-)
% %D ren    C3 ==>                           U
% %D
% %D (( A1 A3  -> .plabel= r \sm{\nameof{x}\\\univ}
% %D    A2 A3 |->
% %D    A2 A4  -> .plabel= l ϕ
% %D    A3 A5  -> .plabel= r Uϕ
% %D    A4 A5 |->
% %D    A1 A5  -> .slide= 25pt .plabel= r \nameof{ϕ(x)}
% %D    A2 A5 harrownodes nil 20 nil |->
% %D    B0 B1  -> .plabel= a U
% %D    C1 C2 <-> .plabel= b T
% %D    C1 C3 <-> .plabel= b T'
% %D    C2 C3 <->
% %D ))
% %D enddiagram
% %D
% $$\pu
%   \diag{2.3.4._Z[x]}
% $$
% 
% That diagram may be a good starting point to explain the Yoneda Lemma
% to ``children''.

% \newpage




%  ____                 _            __             _       
% |___ \       ___ __ _| |_    ___  / _|   ___ __ _| |_ ___ 
%   __) |____ / __/ _` | __|  / _ \| |_   / __/ _` | __/ __|
%  / __/_____| (_| (_| | |_  | (_) |  _| | (_| (_| | |_\__ \
% |_____|     \___\__,_|\__|  \___/|_|    \___\__,_|\__|___/
%                                                           
% «2-category-of-cats»  (to ".2-category-of-cats")
% (misp 40 "2-category-of-cats")
% (misa    "2-category-of-cats")

% Orig: (favp 44 "2-category-of-cats")
%       (fava    "2-category-of-cats")
%  sec:
\subsection{The 2-category of categories}
\label{2-category-of-cats}

% (find-books "__cats/__cats.el" "riehl")
% (find-riehlccpage (+ 18  44) "1.7. The 2-category of categories")

\def\Dn#1{\Downarrow\scriptstyle #1}

Natural transformations are often drawn as `$⇒$'s in the middle of
``cells'' whose walls are functors. If $F,G:\catA→\catB$ are functors
and $T:F→G$ is natural transformation, then $\catA, \catB, F, G, T$
are drawn like this:
%
%D diagram 2-cat-1
%D 2Dx     100 +30
%D 2D  100 A   B
%D 2D
%D ren A B ==> \catA \catB
%D
%D (( A B -> .curve= ^10pt .plabel= a F
%D    A B -> .curve= _10pt .plabel= b G
%D    A B midpoint .TeX= \Dn{T} place
%D
%D ))
%D enddiagram
%D
$$\pu
  \slowdiag{2-cat-1}
$$

% (find-books "__cats/__cats.el" "power")

There are several ways to compose functors and natural transformations
--- see \cite[section 1.7]{Riehl}, \cite[section A.5]{Hazratpour}, and
\cite{PowerPasting} for the details and the precise terminology. For
example, in
%
% (riep 5 "6.1._kan-extensions")
% (rie    "6.1._kan-extensions")
%
%D diagram 2-cat-2
%D 2Dx     100 +25 +25 +20 +25 +25 +20 +25 +25
%D 2D  100     A1          B1          C1
%D 2D        /   \       /    \      /   \\
%D 2D  +25 A0 ---- A2  B0 ---- B2  C0 ---- C2
%D 2D
%D ren A0 A1 A2 ==> \catA \catB \catC
%D ren B0 B1 B2 ==> \catA \catB \catC
%D ren C0 C1 C2 ==> \catA \catB \catC
%D
%D ((
%D    A0 A1 ->                .plabel= a F
%D    A1 A2 -> .curve= _10pt  .plabel= m R
%D    A1 A2 -> .curve= ^20pt  .plabel= a G
%D    A0 A2 ->                .plabel= b H
%D    A0 A2 midpoint relplace -4 -8 \Dn{T}
%D    A1 A2 midpoint relplace  4 -2 \Dn{U}
%D
%D    B0 B2 -> .curve= ^50pt  .plabel= a GF
%D    B0 B2 -> .curve= ^25pt  .plabel= m RF
%D    B0 B2 ->                .plabel= b H
%D    B0 B2 midpoint relplace 0 -21 \Dn{UF}
%D    B0 B2 midpoint relplace 0  -7 \Dn{T}
%D
%D    C0 C2 -> .curve= ^45pt  .plabel= a GF
%D    C0 C2 ->                .plabel= b H
%D    C0 C2 midpoint relplace 0 -12 \Dn{T·UF}
%D
%D    A2 B0 midpoint relplace 0 -12 =
%D    B2 C0 midpoint relplace 0 -12 =
%D ))
%D enddiagram
%D
$$\pu
  \slowdiag{2-cat-2}
$$
%
we used ``whiskering'' and then ``vertical composition''.

We can use internal views to lower the level of abstraction of the
diagrams above. If we draw the images of an object $A∈\catA$ by the
functors and natural transformations we get:
%
%D diagram 2-cat-2-internal-view
%D 2Dx     100 +20 +20 +30 +20 +20 +30 +20 +20
%D 2D  100     A1          B1          C1      
%D 2D         /  |\       /  |\       /  |\    
%D 2D  +10   /   \ A2    /   \ B2    /   \ C2  
%D 2D  +15  |      A3   |      B3   |      C3  
%D 2D  +15 A0 ---- A4  B0 ---- B4  C0 ---- C4  
%D 2D
%D ren A0 A1 A2 A3 A4 ==> A FA GFA RFA HA
%D ren B0 B1 B2 B3 B4 ==> A FA GFA RFA HA
%D ren C0 C1 C2 C3 C4 ==> A FA GFA RFA HA
%D
%D (( A0 A1 |->
%D    A1 A2 |-> .curve=  ^5pt
%D    A1 A3 |-> .curve= _10pt
%D    A0 A4 |->
%D    A2 A3  -> .plabel= r UFA
%D    A3 A4  -> .plabel= r TA
%D    
%D    B0 B2 |-> .curve= ^40pt
%D    B0 B3 |-> .curve= ^20pt
%D    B0 B4 |->
%D    B2 B3  -> .plabel= r UFA
%D    B3 B4  -> .plabel= r TA
%D    
%D    C0 C2 |-> .curve= ^40pt
%D    C0 C4 |->
%D    C2 C4  -> .plabel= r \sm{TA∘UFA\\=(T·UF)A}
%D
%D    A4 B0 midpoint relplace 4 -12 =
%D    B4 C0 midpoint relplace 4 -12 =
%D ))
%D enddiagram
%D
$$\pu
  \slowdiag{2-cat-2-internal-view}
$$

Note that this process of taking a ``pasting diagram'' and looking at
its internal view --- in which many names become longer and some nodes
are duplicated --- is the opposite of what people usually do in the
literature: they usually go from pasting diagrams to string diagrams,
in which most names are omitted. See \cite{MarsdenCTUSD} and
\cite[section A.5]{Hazratpour}.

% (find-books "__cats/__cats.el" "marsden-ctusd")
% (find-books "__cats/__cats.el" "hazratpour")

\newpage

%  _  __                       _       
% | |/ /__ _ _ __     _____  _| |_ ___ 
% | ' // _` | '_ \   / _ \ \/ / __/ __|
% | . \ (_| | | | | |  __/>  <| |_\__ \
% |_|\_\__,_|_| |_|  \___/_/\_\\__|___/
%                                      
% «kan-extensions»  (to ".kan-extensions")
% Orig: (favp 45 "kan-extensions")
%       (fava    "kan-extensions")
%  sec:
\subsection{Kan extensions}
\label{kan-extensions}

% (find-books "__cats/__cats.el" "riehl")
% (find-riehlccpage (+ 18 192) "Proposition 6.1.5")
% (find-riehlcctext (+ 18 192) "Proposition 6.1.5")
% (find-books "__cats/__cats.el" "maclane")
% (find-cwm2page (+ 13 236) "3. The Kan Extension")

Kan extensions are usually drawn using 2-cells (\cite[definition
  6.1.1]{Riehl}), but they can also be drawn as adjunctions
(\cite[proposition 6.1.5]{Riehl}, \cite[section X.3]{CWM2}). Let's see
how to draw them in both ways at the same time in a way that makes the
translation clear. Here is the diagram:
%
%D diagram kan-1
%D 2Dx     100  +35
%D 2D  100 A0 - A1
%D 2D      |     |
%D 2D  +20 A2 - A3
%D 2D      |
%D 2D  +20 A4
%D 2D
%D 2D  +15 B0 = B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren A0 A1 ==> GF ∀G
%D ren A2 A3 ==> RF R{:=}\Ran_FH
%D ren A4    ==> H
%D ren B0 B1 ==> \catC^\catA \catC^\catB
%D ren C0 C1 ==>       \catA       \catB
%D
%D (( A0 A1 <-|
%D    A0 A2  -> .plabel= l UF
%D    A1 A3  -> .plabel= r ∃!U
%D    A0 A3 harrownodes nil 20 nil <-|
%D    A2 A3 <-|
%D    A2 A4  -> .plabel= l T
%D    A0 A4  -> .slide= -20pt .plabel= l ∀V
%D    B0 B1 <-  sl^ .plabel= a ∘F
%D    B0 B1  -> sl_ .plabel= b \Ran_F
%D    C0 C1  ->     .plabel= a F
%D ))
%D enddiagram
%D
%D diagram kan-2-cells-1
%D 2Dx     100 +25 +25 +20 +25 +25 +20 +25 +25
%D 2D  100     A1          B1          C1
%D 2D        /   \       /    \      /   \\
%D 2D  +25 A0 ---- A2  B0 ---- B2  C0 ---- C2
%D 2D
%D ren A0 A1 A2 ==> \catA \catB \catC
%D
%D (( A0 A1 ->                .plabel= a F
%D    A1 A2 -> .curve= _10pt  .plabel= m R
%D    A1 A2 -> .curve= ^20pt  .plabel= a ∀G
%D    A0 A2 ->                .plabel= b H
%D    A0 A2 midpoint relplace -4 -8 \Dn{T}
%D    A1 A2 midpoint relplace  2 -3 \Dn{∃!U}
%D ))
%D enddiagram
%D
$$\pu
  \diag{kan-1}
  \qquad
  \quad
  \slowdiag{kan-2-cells-1}
$$
%
We will consider right Kan extensions only.

Fix $F:\catA→\catB$ and a category $\catC$. We have a functor
$(∘F):\catC^\catB→\catC^\catA$. Suppose that it has a right adjoint,
$(∘F)⊣\Ran_F$. For each natural transformation $H:\catA→\catC$ its
image by $\Ran_f$, $R:=\Ran_FH$, is a natural transformation
$R:\catB→\catC$. We have:
%
$$\begin{array}{rcl}
                         (∘F) &⊣& \Ran_H \\
  \Hom_{\catC^\catA}((∘F)-,-) &≅& \Hom_{\catC^\catB}(-,\Ran_F-), \\
  \Hom_{\catC^\catA}((∘F)G,H) &≅& \Hom_{\catC^\catB}(G,\Ran_FH), \\
  \Hom_{\catC^\catA}  (G∘F,H) &≅& \Hom_{\catC^\catB}(G,\Ran_FH), \\
    \Hom_{\catC^\catA}(GF,H)  &≅& \Hom_{\catC^\catB}(G,R) \\
  \end{array}
$$
%
and if we substitute $[G := R]$ in $\Hom_{\catC^\catB}(G,R)$ and we
transpose $\id_R$ to the left we obtain a morphism $T:RF→H$. The pair
$(R,H)$ obeys a certain universal property, that we will call
``Ran-ness'':
%
%$$∀G:\catB→\catC. \;\; ∀V:GF→H. \;\; ∃!U:G→R. \;\; (T·UF)=V.$$
 $$∀G. \; ∀V. \; ∃!U. \; (T·UF)=V.$$

The usual way of defining right Kan extensions is by starting with the
functors $F:\catA→\catB$ and $H:\catA→\catC$ and then saying that a
pair $(R,T)$ is {\sl a} right Kan extension of $H$ along $F$ iff it
obeys Ran-ness; the functor $\Ran_F$ and the adjunction come later.
See \cite{Riehl}, section 6.1.

Note that we don't draw the `$∀V:GF→H$' in the right half of the
diagram --- it would overwrite the rest.

\newpage

%     _    _ _                                  _       
%    / \  | | |   ___ ___  _ __   ___ ___ _ __ | |_ ___ 
%   / _ \ | | |  / __/ _ \| '_ \ / __/ _ \ '_ \| __/ __|
%  / ___ \| | | | (_| (_) | | | | (_|  __/ |_) | |_\__ \
% /_/   \_\_|_|  \___\___/|_| |_|\___\___| .__/ \__|___/
%                                        |_|            
%
% «all-concepts»  (to ".all-concepts")
% Orig: (favp 46 "all-concepts")
%       (fava    "all-concepts")
%  sec:

\subsection{All concepts are Kan extensions}
\label{all-concepts}

Both \cite{CWM2} and \cite{Riehl} have sections called ``All concepts
are Kan extensions'' --- section X.7 in \cite{CWM2} and 6.5 in
\cite{Riehl}. Now that we have a favorite way of drawing right Kan
extensions we can use it to draw diagrams for 1) binary products in
$\Set$ are right Kan extensions, 2) limits are right Kan extensions
and 3) left adjoints are right Kan extensions. Here they are.

\def\bu{{}}
\def\bubu{{}}

\begin{enumerate}

\item Let $\bubu$ be the discrete category with two objects, $\bu$ be
  the discrete category with one object, and $!:\bubu→\bu$ be the
  unique functor from $\bubu$ to $\bu$. Then:
%
%D diagram kan-binary-prods
%D 2Dx     100  +40
%D 2D  100 A0 - A1
%D 2D      |     |
%D 2D  +20 A2 - A3
%D 2D      |
%D 2D  +20 A4
%D 2D
%D 2D  +15 B0 = B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren A0 A1 ==> GF ∀G
%D ren A2 A3 ==> RF R{:=}\Ran_FH
%D ren A4    ==> H
%D ren B0 B1 ==> \Set^\bubu \Set^
%D ren C0 C1 ==>      \bubu      
%D
%D ren A0 A1 ==> (X,X) ∀X
%D ren A2 A3 ==> (Y{×}Z,Y{×}Z) Y{×}Z
%D ren A4    ==> (Y,Z)
%D
%D (( A0 A1 <-|
%D    A0 A2  -> .plabel= l (h,h)
%D    A1 A3  -> .plabel= r ∃!h
%D    A0 A3 harrownodes nil 20 nil <-|
%D    A2 A3 <-|
%D    A2 A4  -> .plabel= l (π,π')
%D    A0 A4  -> .slide= -40pt .plabel= l ∀(f,g)
%D    B0 B1 <-  sl^ .plabel= a Δ:=(∘!)
%D    B0 B1  -> sl_ .plabel= b \lim:=\Ran_!
%D    C0 C1  ->     .plabel= a !
%D ))
%D enddiagram
%D
%D diagram kan-2-cells-binary-prods
%D 2Dx     100 +30 +30
%D 2D  100     A1      
%D 2D        /   \     
%D 2D  +30 A0 ---- A2  
%D 2D
%D ren A0 A1 A2 ==> \catA \catB \catC
%D ren A0 A1 A2 ==> \bubu \bu \Set
%D
%D ((
%D    A0 A1 ->                .plabel= a !
%D    A1 A2 -> .curve= _10pt  .plabel= m Y×Z
%D    A1 A2 -> .curve= ^20pt  .plabel= a ∀X
%D    A0 A2 ->                .plabel= b (Y,Z)
%D    A0 A2 midpoint relplace -6 -8 \Dn{(π,π')}
%D    A1 A2 midpoint relplace  2 -5 \Dn{∃!h}
%D ))
%D enddiagram
%D
$$\pu
  \diag{kan-binary-prods}
  \qquad
  \quad
  \slowdiag{kan-2-cells-binary-prods}
$$

\item Let $\catI$ be a finite index category --- for example, $\catI =
  \psm{&&1 \\ &&↓ \\ 2&→&3}$ --- and let $\catC$ be a category with
  finite limits. A functor $D:\catI→\catC$ is a diagram of shape
  $\catI$ in $\catC$. Let's denote by $\bm1$ the discrete category
  with a single object --- the name `$\bm1$' is more standard than
  `$$'. Then:
%
%D diagram kan-prods
%D 2Dx     100  +40
%D 2D  100 A0 - A1
%D 2D      |     |
%D 2D  +20 A2 - A3
%D 2D      |
%D 2D  +20 A4
%D 2D
%D 2D  +15 B0 = B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren A0 A1 ==> ΔC ∀C
%D ren A2 A3 ==> RF R{:=}\Ran_FH
%D ren A4    ==> H
%D ren B0 B1 ==> \catC^\catI \catC^{\bm1}
%D ren C0 C1 ==>       \catI        \bm1
%D
%D ren A0 A1 ==> ΔX ∀X
%D ren A2 A3 ==> Δ\lim_{\catI}D \lim_{\catI}D
%D ren A4    ==> D
%D
%D (( A0 A1 <-|
%D    A0 A2  -> .plabel= l Δf
%D    A1 A3  -> .plabel= r ∃!f
%D    A0 A3 harrownodes nil 20 nil <-|
%D    A2 A3 <-|
%D    A2 A4  -> .plabel= l ε
%D    A0 A4  -> .slide= -30pt .plabel= l ∀γ
%D    B0 B1 <-  sl^ .plabel= a Δ:=(∘!)
%D    B0 B1  -> sl_ .plabel= b \lim:=\Ran_!
%D    C0 C1  ->     .plabel= a !
%D ))
%D enddiagram
%D
%D diagram kan-2-cells-prods
%D 2Dx     100 +30 +30
%D 2D  100     A1      
%D 2D        /   \     
%D 2D  +30 A0 ---- A2  
%D 2D
%D ren A0 A1 A2 ==> \catI \bm1 \catC
%D
%D ((
%D    A0 A1 ->                .plabel= a !
%D    A1 A2 -> .curve= _10pt  .plabel= m \lim_{\catI}D
%D    A1 A2 -> .curve= ^20pt  .plabel= a ∀X
%D    A0 A2 ->                .plabel= b D
%D    A0 A2 midpoint relplace -4 -8 \Dn{ε}
%D    A1 A2 midpoint relplace  2 -5 \Dn{∃!f}
%D ))
%D enddiagram
%D
$$\pu
  \diag{kan-prods}
  \qquad
  \quad
  \slowdiag{kan-2-cells-prods}
$$

\newpage

\item Left adjoints are right Kan extensions. If
%
$$\catB \two/<-`->/<200>^L_R \catA$$
%
is an adjunction, then $(L,ε)$ is a right Kan extension of $\id_\catB$
along $R$. In a more compact notation, $L:=\Ran_R \id_\catB$ --- but
in this case we only know the action of $\Ran_R$ on the object
$\id_\catB$, and we don't know if this $\Ran_R$ can be extended to a
``real'' functor whose domain is the whole of $\catB^\catB$. The
diagram is:
%
%D diagram kan-adjoints
%D 2Dx     100  +40
%D 2D  100 A0 - A1
%D 2D      |     |
%D 2D  +20 A2 - A3
%D 2D      |
%D 2D  +20 A4
%D 2D
%D 2D  +15 B0 = B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren A0 A1 ==> GR ∀G
%D ren A2 A3 ==> LR L{:=}\Ran_R\id_\catB
%D ren A4    ==> \id_\catB
%D ren B0 B1 ==> \catB^\catB \catB^\catA
%D ren C0 C1 ==>       \catB       \catA
%D
%D (( A0 A1 <-|
%D    A0 A2  -> .plabel= l UR
%D    A1 A3  -> .plabel= r ∃!U
%D    A0 A3 harrownodes nil 20 nil <-|
%D    A2 A3 <-|
%D    A2 A4  -> .plabel= l ε
%D    A0 A4  -> .slide= -20pt .plabel= l ∀V
%D    B0 B1 <-  sl^ .plabel= a (∘R)
%D    B0 B1  -> sl_ .plabel= b \Ran_R
%D    C0 C1  ->     .plabel= a R
%D ))
%D enddiagram
%D
%D diagram kan-2-cells-adjoints
%D 2Dx     100 +30 +30
%D 2D  100     A1      
%D 2D        /   \     
%D 2D  +30 A0 ---- A2  
%D 2D
%D ren A0 A1 A2 ==> \catB \catA \catB
%D
%D ((
%D    A0 A1 ->                .plabel= a R
%D    A1 A2 -> .curve= _10pt  .plabel= m L
%D    A1 A2 -> .curve= ^20pt  .plabel= a ∀G
%D    A0 A2 ->                .plabel= b \id_\catB
%D    A0 A2 midpoint relplace -4 -8 \Dn{ε}
%D    A1 A2 midpoint relplace  2 -5 \Dn{∃!U}
%D ))
%D enddiagram
%D
$$\pu
  \diag{kan-adjoints}
  \qquad
  \quad
  \slowdiag{kan-2-cells-adjoints}
$$

To show that this works we have to prove that $∀V.∃!U.(ε·UR=V)$. We
will do that by ``inverting the equation $ε·UR=V$'':
%
%D diagram kan-adjoints-solving-U
%D 2Dx     100  +20  +20  +20     +25  +20  +20  +20
%D 2D       _________  ____        _________  ____ 
%D 2D      |         ||    |      |         ||    |
%D 2D  100 A0 - A1 - A2 - A3  =   B0 - B1   B2 - B3
%D 2D           |__________|           |__________|
%D 2D  
%D 2D              ||
%D 2D       _________  ____ 
%D 2D      |         ||    |
%D 2D  +50 C0 - C1 - C2   C3
%D 2D           |__________|
%D 2D  
%D 2D
%D ren A0 A1 A2 A3 ==> \catA \catB \catA \catB
%D ren B0 B1 B2 B3 ==> \catA \catB \catA \catB
%D ren C0 C1 C2 C3 ==> \catA \catB \catA \catB
%D
%D (( A0 A1 -> .plabel= b L
%D    A1 A2 -> .plabel= b R
%D    A2 A3 -> .plabel= b L
%D    A0 A2 -> .curve= ^25pt .plabel= a \id_A
%D    A2 A3 -> .curve= ^24pt .plabel= a G
%D    A1 A3 -> .curve= _25pt .plabel= b \id_B
%D    A0 A2 midpoint relplace 0 -8 \Dn{η}
%D    A2 A3 midpoint relplace 0 -6 \Dn{U}
%D    A1 A3 midpoint relplace 0  7 \Dn{ε}
%D
%D    A3 B0 midpoint relplace 0 0 =
%D
%D    B0 B1 -> .plabel= b L
%D  # B1 B2 -> .plabel= b R
%D    B2 B3 -> .plabel= b L
%D    B0 B2 -> .curve= ^25pt .plabel= a \id_A
%D    B2 B3 -> .curve= ^24pt .plabel= a G
%D    B1 B3 -> .curve= _25pt .plabel= b \id_B
%D    B2 B3 midpoint relplace 0 -6 \Dn{U}
%D    B1 B2 midpoint relplace 1  2 \Dn{\id_L}
%D
%D    B3 relplace 20 0 =\;U
%D
%D    A1 C2 midpoint relplace 0 2 \veq
%D
%D    C0 C1 -> .plabel= b L
%D    C1 C2 -> .plabel= b R
%D  # C2 C3 -> .plabel= b L
%D    C0 C2 -> .curve= ^25pt .plabel= a \id_A
%D    C2 C3 -> .curve= ^24pt .plabel= a G
%D    C1 C3 -> .curve= _25pt .plabel= b \id_B
%D    C0 C2 midpoint relplace 0 -8 \Dn{η}
%D    C2 C3 midpoint relplace 0  2 \Dn{V}
%D
%D    C3 relplace 25 0 =\;VL·η
%D ))
%D enddiagram
%D
$$\pu
  \slowdiag{kan-adjoints-solving-U}
$$
%
The solution in $U:=VL·Gη$.

% (riep 5 "6.1._kan-extensions")
% (rie    "6.1._kan-extensions")

% (find-books "__cats/__cats.el" "maclane")
% (find-cwm2page (+ 13 233) "X. Kan Extensions")
% (find-cwm2page (+ 13 248)   "7. All Concepts Are Kan Extensions")
% (find-books "__cats/__cats.el" "riehl")
% (find-riehlccpage (+ 18 209) "6.5. All concepts")

\end{enumerate}





%  _  __              __                            _       
% | |/ /__ _ _ __    / _| ___  _ __ _ __ ___  _   _| | __ _ 
% | ' // _` | '_ \  | |_ / _ \| '__| '_ ` _ \| | | | |/ _` |
% | . \ (_| | | | | |  _| (_) | |  | | | | | | |_| | | (_| |
% |_|\_\__,_|_| |_| |_|  \___/|_|  |_| |_| |_|\__,_|_|\__,_|
%                                                           
% «kan-formula»  (to ".kan-formula")
% Orig: (favp 38 "kan-formula")
%       (fava    "kan-formula")
%  sec:
\subsection{A formula for Kan extensions}
\label{kan-formula}

% (find-books "__cats/__cats.el" "maclane")
% (find-cwm2page (+ 13 236) "3. The Kan Extension")
% (find-books "__cats/__cats.el" "riehl")
% (find-riehlccpage (+ 18 193) "6.2. A formula for Kan extensions")

\def\piAHSet    {\ton{π} \catA \ton{H} \Set}
\def\piAHSetmini{\xton{H∘π} \Set}
\def\pdiag    #1{\left(\diag{#1}\right)}

The sections X.3 of \cite{CWM2} and 6.2 of \cite{Riehl} discuss a
formula for calculating Kan extensions, that defines $\Ran_FH$ as the
functor whose action on objects is:
%
$$B \mapsto \Lim(B{↓}F \piAHSet),$$
%
and its action on morphisms is ``obvious'' in the sense of Section
\ref{to-deserve-a-name}. I found this formula totally impossible to
understand until I finally found a way to visualize what it ``meant''.

For each object $B∈\catB$ the functor $B{↓}F \piAHSetmini$ can be
regarded as a diagram in $\Set$ whose shape is the shape of the comma
category $B{↓}F$. If $\catA$ and $\catB$ are finite preorder categories
and $F$ is an inclusion then $B{↓}F$ can ``inherit its shape'' from
$\catA$; inclusions of preorders are ``toy examples'' ``for
children'', but they give us some intuition to start with, and they
can help us understand the formal version that can handle more general
cases.

These are the diagrams for $\Ran_F$ as a right adjoint --- note that
we use $\Set$ instead of $\catC$ to make things less abstract,
%
% (favp 45 "kan-extensions")
% (fava    "kan-extensions")
%
%D diagram kan-1
%D 2Dx     100  +35
%D 2D  100 A0 - A1
%D 2D      |     |
%D 2D  +25 A2 - A3
%D 2D
%D 2D  +15 B0 = B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren A0 A1 ==> GF G
%D ren A2 A3 ==> H \Ran_FH
%D ren B0 B1 ==> \Set^\catA \Set^\catB
%D ren C0 C1 ==>      \catA      \catB
%D
%D (( A0 A1 <-|
%D    A0 A2  -> .plabel= l V
%D    A1 A3  -> .plabel= r U
%D    A0 A3 harrownodes nil 20 nil <->
%D    A2 A3 |->
%D    A3 relplace 20 0 =R
%D    B0 B1 <-  sl^ .plabel= a ∘F
%D    B0 B1  -> sl_ .plabel= b \Ran_F
%D    C0 C1  ->     .plabel= a F
%D ))
%D enddiagram
%D
$$\pu
  \diag{kan-1}
  \qquad
  \begin{array}{l}
    RB = \\
    (\Ran_FH)B = \\
    \Lim(B{↓}F \piAHSet) \\
  \end{array}
$$
%
and here are some diagrams to help us understand the comma category
$B{↓}F$ --- in the compact notation its objects have names like
$(A,β)$, but in the more visual notation they are L-shaped diagrams:
%
%D diagram CommaObj
%D 2Dx     100 +20
%D 2D  100     \A
%D 2D
%D 2D  +15 \B  \C
%D 2D
%D # ren ==>
%D
%D (( \A \C -> .plabel= r \f
%D    \B \C |->
%D ))
%D enddiagram
%D
\pu
\def\CommaObj#1#2#3#4{
             \def\A{#1}
                \def\f{#4}
  \def\B{#2} \def\C{#3}
  \left(\diag{CommaObj}\right)
}
%
\def\kancommaobj#1#2#3{\psm{ &#1 \\ #2&#3 \\}}
%
%D diagram kan-comma
%D 2Dx     100  +20 +55 +45  +30  +25
%D 2D  100      A1
%D 2D  +20 A2 - A3  C0  E0 - E1 - E2
%D 2D  +20 A4 - A5  C1  E3 - E4 - E5
%D 2D
%D 2D  +15 B0 - B1  D0  F0 - F1 - F2
%D 2D
%D ren A1 A2 A3 A4 A5 ==> B A FA A' FA'
%D ren B0 B1          ==> \catA \catB
%D ren D0             ==> B{↓}F
%D ren E0 E1 E2       ==>  (A,β)  A  HA
%D ren E3 E4 E5       ==> (A',β') A' HA'
%D ren F0 F1 F2       ==> B{↓}F \catA \Set
%D
%D (( A1 A3  -> .plabel= r β
%D    A2 A3 |->
%D    A2 A4  -> .plabel= l α
%D    A3 A5  -> .plabel= r Fα
%D    A2 A5 harrownodes nil 20 nil |->
%D    A4 A5 |->
%D    A1 A5  -> .slide= 20pt .plabel= r \sm{β'=\\Fα∘β}
%D    B0 B1  -> .plabel= a F
%D
%D    C0 xy+= 0 -20
%D    C1 xy+= 0 -5
%D    C0 .tex= \CommaObj{B}{A}{FA}{β}    BOX
%D    C1 .tex= \CommaObj{B}{A'}{FA'}{β'} BOX
%D    C0 C1 -> .plabel= l α
%D    D0    place
%D
%D    E0 E1 |-> E1 E2 |->
%D    E0 E3 -> .plabel= l α
%D    E1 E4 -> .plabel= m α
%D    E2 E5 -> .plabel= r Hα
%D    E0 E4 harrownodes nil 20 nil |->
%D    E1 E5 harrownodes nil 20 nil |->
%D    E3 E4 |-> E4 E5 |->
%D    F0 F1  -> .plabel= a π
%D    F1 F2  -> .plabel= a H
%D    
%D ))
%D enddiagram
%D
$$\pu
  \diag{kan-comma}
$$

\newpage

\def\kancommaobj#1#2#3{\psm{ &#1 \\ #2&#3 \\}}

Let's see an example.

%D diagram Kan_catA
%D 2Dx     100 +15
%D 2D  100 1   2
%D 2D  +15 3   4
%D 2D  +15 5   6
%D 2D
%D # ren 1 2 3 4 5 6 ==> 1' 2' 3' 4' 5' 6'
%D
%D (( 2 6 ->
%D    5 6 ->
%D
%D ))
%D enddiagram
%D
%D diagram Kan_catB
%D 2Dx     100 +15
%D 2D  100 1   2
%D 2D  +15 3   4
%D 2D  +15 5   6
%D 2D
%D ren 1 2 3 4 5 6 ==> 1' 2' 3' 4' 5' 6'
%D
%D (( 1 2 ->
%D    1 3 -> 2 4 ->
%D    3 4 ->
%D    3 5 -> 4 6 ->
%D    5 6 ->
%D ))
%D enddiagram
%D
%D
%D
%D diagram Kan_1'_down_F
%D 2Dx     100 +30
%D 2D  100     A1
%D 2D  +15
%D 2D  +15 A4  A5
%D 2D
%D ren    A1 ==>                      \kancommaobj{1'}{2}{F2}
%D ren A4 A5 ==> \kancommaobj{1'}{5}{F5} \kancommaobj{1'}{6}{F6}
%D
%D (( A1 A5 ->
%D    A4 A5 ->
%D ))
%D enddiagram
%D
%D diagram Kan_3'_down_F
%D 2Dx     100 +30
%D 2D  100     A1
%D 2D  +15
%D 2D  +15 A4  A5
%D 2D
%D ren    A1 ==>                     \ph{\kancommaobj{3'}{2}{F2}}
%D ren A4 A5 ==> \kancommaobj{3'}{5}{F5} \kancommaobj{3'}{6}{F6}
%D
%D (( A1 place
%D    A4 A5 ->
%D ))
%D enddiagram
%D
%D
%D
%D diagram Kan_1'_H
%D 2Dx     100 +20
%D 2D  100     A1
%D 2D  +15
%D 2D  +15 A4  A5
%D 2D
%D ren    A1 ==>     H_2
%D ren A4 A5 ==> H_5 H_6
%D
%D (( A1 A5 ->
%D    A4 A5 ->
%D ))
%D enddiagram
%D
%D diagram Kan_3'_H
%D 2Dx     100 +20
%D 2D  100     A1
%D 2D  +15
%D 2D  +15 A4  A5
%D 2D
%D ren    A1 ==>  \ph{H_2}
%D ren A4 A5 ==> H_5  H_6
%D
%D (( A1 place
%D    A4 A5 ->
%D ))
%D enddiagram
%D
\pu

If $\catA \ton{F} \catB$ is the inclusion $\pdiag{Kan_catA} →
\pdiag{Kan_catB}$,

\msk

then
$1'{↓}F = \pdiag{Kan_1'_down_F}$ and 
$3'{↓}F = \pdiag{Kan_3'_down_F}$,

\msk

and $(1'{↓}F \piAHSetmini) =  \pdiag{Kan_1'_H}$
and $(3'{↓}F \piAHSetmini) =  \pdiag{Kan_3'_H}$;

\msk

so $R(1') = \Lim(1'{↓}F \piAHSetmini) = H_2 ×_{H_6} H_5$,

and $R(3') = \Lim(3'{↓}F \piAHSetmini) = H_5$.

We can follow the same pattern to calculate $R(2')$, $R(4')$, $R(5')$,
$R(6')$.

The square of the adjunction becomes this, in this particular case:
%
%D diagram Kan_A-shaped
%D 2Dx     100 +20
%D 2D  100     2
%D 2D  +20      
%D 2D  +20 5   6
%D 2D
%D ren 2 5 6 ==> \A \B \C
%D
%D (( 2 6 ->
%D    5 6 ->
%D ))
%D enddiagram
%D
%D diagram Kan_B-shaped
%D 2Dx     100 +30
%D 2D  100 1   2
%D 2D  +20 3   4
%D 2D  +20 5   6
%D 2D
%D ren 1 2 3 4 5 6 ==> \A \B \C \D \E \F
%D
%D (( 1 2 ->
%D    1 3 -> 2 4 ->
%D    3 4 ->
%D    3 5 -> 4 6 ->
%D    5 6 ->
%D ))
%D enddiagram
%D
\pu
\def\KanAShaped#1#2#3{
   \def\A{#1}
   \def\B{#2}
   \def\C{#3}
   \pdiag{Kan_A-shaped}
  }
\def\KanBShaped#1#2#3#4#5#6{
   \def\A{#1}
   \def\B{#2}
   \def\C{#3}
   \def\D{#4}
   \def\E{#5}
   \def\F{#6}
   \pdiag{Kan_B-shaped}
  }
%
%D diagram kanadjsquare-generic
%D 2Dx     100  +25
%D 2D  100 A0 - A1
%D 2D      |     |
%D 2D  +25 A2 - A3
%D 2D
%D 2D  +15 B0 = B1
%D 2D
%D 2D  +15 C0 - C1
%D 2D
%D ren A0 A1 ==> GF G
%D ren A2 A3 ==> H \Ran_FH
%D ren B0 B1 ==> \Set^\catA \Set^\catB
%D ren C0 C1 ==>      \catA      \catB
%D
%D (( A0 A1 <-|
%D    A0 A2  -> # .plabel= l V
%D    A1 A3  -> # .plabel= r U
%D    A0 A3 harrownodes nil 20 nil <->
%D    A2 A3 |->
%D    A3 relplace 20 0 =R
%D  # B0 B1 <-  sl^ .plabel= a ∘F
%D  # B0 B1  -> sl_ .plabel= b \Ran_F
%D  # C0 C1  ->     .plabel= a F
%D ))
%D enddiagram
%D
%D diagram kanadjsquare-example
%D 2Dx     100 +70
%D 2D  100 A0  A1
%D 2D
%D 2D  +65 A2  A3
%D 2D
%D (( A0 .tex= \KanAShaped{G_2}{G_5}{G_6}                BOX
%D    A1 .tex= \KanBShaped{G_1}{G_2}{G_3}{G_4}{G_5}{G_6} BOX
%D    A2 .tex= \KanAShaped{H_2}{H_5}{H_6}                BOX
%D    A3 .tex= \KanBShaped{H_2{×_{H_6}}H_5}{H_2}{H_5}{H_6}{H_5}{H_6} BOX
%D ))
%D (( A0 A1 <-|
%D    A0 A2  ->
%D    A1 A3  ->
%D    A0 A3 harrownodes nil 20 nil <->
%D    A2 A3 |->
%D
%D ))
%D enddiagram
%D
$$\pu
  \diag{kanadjsquare-generic}
  \qquad
  \diag{kanadjsquare-example}
$$


\newpage



%  _____                 _                                     _     _     
% |  ___|   _ _ __   ___| |_ ___  _ __ ___    __ _ ___    ___ | |__ (_)___ 
% | |_ | | | | '_ \ / __| __/ _ \| '__/ __|  / _` / __|  / _ \| '_ \| / __|
% |  _|| |_| | | | | (__| || (_) | |  \__ \ | (_| \__ \ | (_) | |_) | \__ \
% |_|   \__,_|_| |_|\___|\__\___/|_|  |___/  \__,_|___/  \___/|_.__// |___/
%                                                                 |__/     
% «functors-as-objects»  (to ".functors-as-objects")
% Orig: (favp 50 "functors-as-objects")
%       (fava    "functors-as-objects")
%  sec:
\subsection{Functors as objects \DONE}
\label{functors-as-objects}

One way to treat a diagram in $\Set$ like this
%
%D diagram evil-presheaf
%D 2Dx     100 +20 +20
%D 2D  100     A0
%D 2D        /    \
%D 2D  +20 A1      A2
%D 2D        \    /
%D 2D  +20     A3
%D 2D          |
%D 2D  +20     A4
%D 2D
%D ren A0 A1 A2 A3 A4 ==> \{24,25\} \{1\} \{2,3\} \{1\} \{0,1\}
%D
%D (( A0 A1 ->
%D    A0 A2 -> .plabel= r \sm{24↦2\\25↦2}
%D    A1 A3 ->
%D    A2 A3 ->
%D    A3 A4 -> .plabel= r 1↦1
%D ))
%D enddiagram
%D
\pu
$$
  F \qquad := \qquad \diag{evil-presheaf}
$$
%
as a functor is to think that that diagram is an abbreviation --- it
is just the upper-right part of a diagram like this,
%
%R local kite =
%R 1/ 1 \
%R  |2 3|
%R  | 4 |
%R  \ 5 /
%R MixedPicture.__index.
%R    arrows = function (mp, w) return (mp.ar or mp.zha):arrows(w) end
%R kite:tozmp({zdef="kitewitharrows", meta="p", scale="20pt"})
%R      :addcells()
%R      :addarrows()
%R      :output()
\pu
% $$\zha{kitewitharrows}$$
%
%D diagram evil-presheaf-as-functor
%D 2Dx     100 +75
%D 2D  100 A0  A1
%D 2D
%D 2D  +50 A2  A3
%D 2D
%D ren A0    ==> \zha{kitewitharrows}
%D ren A2 A3 ==> \catK \Set
%D
%D (( A1 .tex= \left(\diag{evil-presheaf}\right) BOX
%D    A0 A1 |->
%D    A2 A3 -> .plabel= a F
%D ))
%D enddiagram
%D
$$\pu
  \diag{evil-presheaf-as-functor}
$$
%
where we add the extra hint that the index category $\catK$ is exactly
the kite-shaped preorder category drawn above the ``$\catK$''.

The convention (CFSh) says that the image by a functor of a diagram is
a diagram with the same shape, so according to that convention we have
$F(1) = \{24,25\}$, $F(4→5) = (\{1\} \ton{1↦1} \{0,1\})$, and so
on; so the upper right part of the diagram above {\sl defines} $F$.

Note that the single `$↦$' above the $\catK \ton{F} \Set$ stands for
several `$↦$'s, one for each object and one for each morphism, and
note that $F$ is an object of $\Set^\catK$.




%   ____ __  __        __                   _     _ _     _                
%  / ___|  \/  |___   / _| ___  _ __    ___| |__ (_) | __| |_ __ ___ _ __  
% | |  _| |\/| / __| | |_ / _ \| '__|  / __| '_ \| | |/ _` | '__/ _ \ '_ \ 
% | |_| | |  | \__ \ |  _| (_) | |    | (__| | | | | | (_| | | |  __/ | | |
%  \____|_|  |_|___/ |_|  \___/|_|     \___|_| |_|_|_|\__,_|_|  \___|_| |_|
%                                                                          
% «gms-for-children»  (to ".gms-for-children")
% Orig: (favp 38 "gms-for-children")
%       (fava    "gms-for-children")
%  sec:
\subsection{Geometric morphisms for children \DONE}
\label{gms-for-children}

Let $\catA$ and $\catB$ be these preorder categories, and let
$f:\catA→\catB$ be the inclusion functor from $\catA$ to $\catB$:
%
$$
  A := \pshAargs2345
  \qquad
  B := \pshBargs123456
$$

The left half of the diagram below is the standard definition of a
geometric morphism $f$ from a topos $\calE$ to a topos $\calF$. A
geometric morphism $f:\calE→\calF$ is actually an adjunction $f^*⊣f_*$
plus the guarantee that $f^*:\calE \ot \calF$ preserves limits, which
is a condition slightly weaker than requiring that $f^*$ has a left
adjoint. When that left adjoint exists it is denoted by $f^!$, and we
say that $f^!⊣f^*⊣f_*$ is an {\sl essential geometric morphism}. The
only non-standard thing about the diagram at the left below is that is
contains an internal view of the adjunction $f^*⊣f_*$.
%
$$
  \diag{gm-for-adults}
  \qquad
  \def\LG{\pshAargs{G_2}{G_3}{G_4}{G_5}}
  \def\G {\pshBargs{G_1}{G_2}{G_3}{G_4}{G_5}{G_6}}
  \def\H {\pshAargs{H_2}{H_3}{H_4}{H_5}}
  \def\RH{\pshBargs{H_2{×_{H_4}}H_3}{H_2}{H_3}{H_4}{H_5}{1}}
  \diag{gm-for-children}
$$

The right half of the diagram is a particular case of the left half.
Its lower line, $\catA \ton{f} \catB$, does not exist in the left
half. The inclusion functor $f$ induces adjunctions $f^!⊣f^*⊣f_*$ as
this,
%
%D diagram essential-GM-small
%D 2Dx     100 +35
%D 2D  100 A   B
%D 2D
%D 2D  +20 A0  B0
%D 2D
%D ren A B ==> \Set^\catA \Set^\catB
%D ren A0 B0 ==> \catA \catB
%D
%D (( A B -> sl^^ .plabel= a f^!
%D    A B <-      .plabel= m f^*
%D    A B -> sl__ .plabel= b f_*
%D    A0 B0 -> .plabel= a f
%D ))
%D enddiagram
%D
$$\pu
  \diag{essential-GM-small}
$$
%
where $f^*$ is easy to define and $f^!$ and $f_*$ not so much --- the
standard way to define $f^!$ and $f_*$ is by Kan extensions.

The big square in the upper part of the diagram is an internal view of
the adjunction $f^*⊣f_*$, with the functors $f^*G$, $G$, $H$, and
$f_*H$ being displayed as their internal views. We can choose the sets
$G_1, \ldots, G_6$ and the morphisms between them arbitrarily, so this
is an internal view of an arbitrary functor $G:\catB→\Set$; and the
same for $H$.

The arrow $f^*G \mapsot G$ can be read as a definition for the action
of $f^*$ on objects --- it just erases some parts of the diagram ---
and the arrow $H \mapsto f_*H$ can be read as a definition for the
action of $f_*$ on objects --- $f_*$ ``reconstructs'' $H_1$ and $H_6$
in a certain natural way. It is easy to reconstruct the actions of
$f^*$ and $f_*$ on morphisms from just what is shown, and to
reconstruct the two directions of the bijection.

The big diagram above can be used 1) to convince categorists who are
not seasoned toposophers that this diagrammatic language can make some
difficult categorical concepts more accessible, and 2) as a starting
point to generate diagrams ``for children'' for several parts of the
Elephant (\cite{Elephant1}), and even to prove new theorems on
toposes. For more on (1), see \cite{OchsLucatelli} and
\cite{OchsVGMS2018}; for (2), see \cite{MDE}.


% «reading-the-elephant»  (to ".reading-the-elephant")
% Orig: (favp 52 "reading-the-elephant")
%       (fava    "reading-the-elephant")
%  sec: 7.14

% «how-to-name-this-language»  (to ".how-to-name-this-language")
% Orig: (favp 54 "how-to-name-this-language")
%       (fava    "how-to-name-this-language")
%  sec: 8




% __        ___             _ _                                            _ _ 
% \ \      / / |__  _   _  ( | )_ __ ___  _   _    ___ ___  _ ____   _____( | )
%  \ \ /\ / /| '_ \| | | |  V V| '_ ` _ \| | | |  / __/ _ \| '_ \ \ / / __|V V 
%   \ V  V / | | | | |_| |     | | | | | | |_| | | (_| (_) | | | \ V /\__ \    
%    \_/\_/  |_| |_|\__, |     |_| |_| |_|\__, |  \___\___/|_| |_|\_/ |___/    
%                   |___/                 |___/                                
%
% «why-my-conventions»  (to ".why-my-conventions")
% Orig: (favp 54 "why-my-conventions")
%       (fava    "why-my-conventions")
%  sec: 9

% \section{Why ``my conventions''? \DONE}
% \label{why-my-conventions}

% \standout{TODO:} redo, rewrite, move to the introduction.

% \msk

% I learned CT as an autodidact in a totally disorganized way. In the
% first years I just read, or rather {\sl tried} to read, everything
% that was available in my university's library, trying to locate the
% parts that could be useful to my main interest at that time, that was
% Non-Standard Analysis and how to do something similar to NSA but using
% filter-powers instead of ultrapowers...

% It was only after that that I realized that I had to learn how to {\sl
%   write}. I remember one time spending a whole evening on an exercise
% of the beginning of \cite{LambekScott} that says just ``prove that for
% categories $\catA$, $\catB$, and $\catC$ we have $\catA^{\catB×\catC}
% ≅ (\catA^\catB)^\catC$'' --- the full proof had lots of parts, and I
% saw that I didn't know how to organize them in a neat way... also, the
% proofs given in books and articles just state the main parts and
% pretend that the rest is obvious, and in the case of
% $\catA^{\catB×\catC} ≅ (\catA^\catB)^\catC$ there were no ``main
% parts'', so I had to learn how to write down a proof in full, and this
% was a new style to me...

% Even now, many years after that, I still have the sensation that I had
% to improvise practically everything in my ways --- both the
% ``algebraic'' way and the ``diagrammatic'' way --- of writing
% categorical proofs, and that I still don't know even a tiny fraction
% of the techniques for writing that people learn when they take CT
% courses and they have opportunities to discuss exercises with other
% students and with TAs and more senior people...

% \msk

% {\sl The ``my conventions'' in the title of this text, and my use of
%   the first person everywhere, are a way to stress that I still don't
%   know enough about other people's private languages for CT, and that
%   this is an attempt to gain access to other private languages,
%   diagrammatic or not... I am especially interested in how people
%   write when they turn their level-of-detail knob to a very high
%   position.}


% It is difficult to publish material about diagrammatic languages
% that are more for {\sl visualition} and {\sl intuition} (see
% \cite{KromerSlides}) than for {\sl proving things}. The handwritten
% notes in \cite{MacLaneNotes} for a course given by MacLane taken by
% one of his students indicate that when he wasn't constrained by what
% could be printed easily he would use several kinds of diagrams that
% are not in \cite{CWM2}. I guess that Freyd and Scedrov have
% experimented with many variants of the languages in \cite{Freyd76}
% and \cite{FreydScedrov} that they never published...



%  ____      _       _           _                      _    
% |  _ \ ___| | __ _| |_ ___  __| | __      _____  _ __| | __
% | |_) / _ \ |/ _` | __/ _ \/ _` | \ \ /\ / / _ \| '__| |/ /
% |  _ <  __/ | (_| | ||  __/ (_| |  \ V  V / (_) | |  |   < 
% |_| \_\___|_|\__,_|\__\___|\__,_|   \_/\_/ \___/|_|  |_|\_\
%                                                            
% «related-and-unrelated»  (to ".related-and-unrelated")
% (misp 59 "related-and-unrelated")
% (misa    "related-and-unrelated")
%  sec: 9
% Orig: (favp 55 "related-and-unrelated")
%       (fava    "related-and-unrelated")
%  sec: 10
%
\section{Related and unrelated work \DONE}
\label{related-and-unrelated}

% (find-books "__cats/__cats.el" "coecke")
% (find-books "__cats/__cats.el" "coecke-newstrup")
% (find-books "__cats/__cats.el" "marsden-ctusd")
% (find-books "__cats/__cats.el" "selinger-surveygl")

The diagrammatic language that I described here seems to be unrelated
to the ones in \cite{CoeckePQP} and \cite{CoeckeNewStruP} --- that
describe {\sl lots} of diagrammatic languages --- and also unrelated
to \cite{MarsdenCTUSD}. We lower the level of abstraction --- see for
example Section \ref{2-category-of-cats} --- while they (usually)
raise it.

% (find-books "__cats/__cats.el" "caccamo-winskel")

I've taken an approach that is the opposite of \cite{CaccamoWinskel}
and \cite{CaccamoPhD}. Cáccamo and Winskel define a derivation system
that can only construct functors, natural transformations, etc, that
obey the expected naturality conditions, while we allow some kinds of
sloppinesses, like constructing something that looks like a functor
and pretending that it is a functor when it may not be. When I started
working on this diagrammatic language I had a companion derivation
system for it; \cite[Section 14]{IDARCT} mentions it briefly, but it
doesn't show the introduction rules that create (proto)functors and
(proto)natural transformations and that allow being sloppy (``in the
syntactical world''). That derivation system was incomplete in all
senses --- it even had ``rules'' that I knew how to apply in
particular cases but I didn't know how to formalize.

% (find-books "__phil/__phil.el" "corfield")
% (find-books "__cats/__cats.el" "kromer")
% (find-books "__cats/__cats.el" "kromer-slides")
% (find-books "__cats/__cats.el" "cheng-morally")

Some of my excuses for allowing one to pretend that a functor is a
functor and leaving the verification to a second stage come from
\cite{ChengMorally}. I learned a {\sl lot} on how mathematicians use
intuition and diagrams from \cite{Kromer} --- \cite{KromerSlides} is a
great summary --- and \cite{Corfield}, and they have helped me to
identify which characteristics of my diagrammatic language are very
unusual and may be new, and that deserve to be presented in detail.

% (find-idarctpage 19 "14. Preservations, Frobenius, Beck-Chevalley")
% (find-idarcttext 19 "14. Preservations, Frobenius, Beck-Chevalley")

Many of the first ideas for my diagrammatic language appeared when I
was reading \cite{SeelyBeck}, \cite{SeelyLCCC}, \cite{SeelyPLC},
\cite{Jacobs}, and \cite{SeelyDiff} and trying to draw the ``missing
diagrams'' in those papers in both the original notation and in the
``archetypal case'' (\cite[Section 16]{IDARCT}).

Many of the later ideas appeared when I was trying to understand
sheaves using a certain approach ``for children'' (\cite{PH2}): I
learned how to draw diagrams showing a Grothendieck topology, its
corresponding Lawvere-Tierney topology, and its corresponding nucleus
{\sl in particular cases}, and I knew that {\sl there had to be a way}
(in the sense of \cite{ChengMorally}) to ``lift'' these diagrams of
the correspondences in particular cases to a diagram of the
correspondences in the general case... the details of this ``lifting''
were hard to formalize, but missing details started to become clear
when I required the diagrams to be translatable to a pseudocode that
could be translated to Agda. At this moment \cite{PH2} is still
incomplete, but some of the ideas in DL were motivated by its
conceptual holes.



% (p2ap 27 "7._toposes")
% (p2aa    "7._toposes")

% (find-idarctpage 23 "16. Archetypal Models")
% (find-idarcttext 23 "16. Archetypal Models")





% (find-books "__cats/__cats.el" "fong-spivak")
% (find-books "__cats/__cats.el" "milewski-ctfp")
% (find-books "__cats/__cats.el" "perrone")
% (find-books "__cats/__cats.el" "sobocinski")


% end of body

% «ifluatex-2»  (to ".ifluatex-2")
% (find-dn6 "output.lua" "write_dnt_file")
%L write_dnt_file("2022on-the-missing.dnt")
\pu

% «references»  (to ".references")
% (misp 60 "references")
% (misa    "references")
% Orig: (favp 58 "references")
%       (fava    "references")

\printbibliography

\GenericWarning{Success:}{Success!!!}  % Used by `M-x cv'

\end{document}

%  _____           _ 
% | ____|_ __   __| |
% |  _| | '_ \ / _` |
% | |___| | | | (_| |
% |_____|_| |_|\__,_|
%                    
% ----------------------------------------

% «save-body»  (to ".save-body")
% For: (find-LATEX "2022ochs-meteor1.tex")

* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
pat = "\n%% beginning of body\n(.-)%% end of body"
fname_in  = "~/LATEX/2022on-the-missing.tex"
fname_out = "~/LATEX/2022ochs-meteor1-body.tex"
bigstr = ee_readfile(fname_in)
body = bigstr:match(pat)
= #bigstr, #body
ee_writefile(fname_out, body)
-- (find-tkdiff "2022on-the-missing.tex" "2022ochs-meteor1-body.tex")


% «extract-cites»  (to ".extract-cites")
% (find-angg "LUA/bib.lua" "meteor")

* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
fname = "~/LATEX/2022on-the-missing.tex"
bigstr = ee_readfile(fname)
bigstr2 = bigstr:gsub("\n%%[^\n]*", "")
for a,b in bigstr2:gmatch("(\\cite{(.-)})") do
  printf("%-20s %s\n", b, a)
end
for a,b,c in bigstr2:gmatch("(\\cite%[(.-)%]{(.-)})") do
  aa = a:gsub("%s+", " ")
  printf("%-20s %s\n", c, aa)
end


%  _____           _       
% |_   _|__     __| | ___  
%   | |/ _ \   / _` |/ _ \ 
%   | | (_) | | (_| | (_) |
%   |_|\___/   \__,_|\___/ 
%                          
% «TODO»  (to ".TODO")
% Trebor: https://mail.google.com/mail/u/0/#inbox/FMfcgzGtwqFHBBKrWsvPTVMDJsnNSvzh


%  __  __       _        
% |  \/  | __ _| | _____ 
% | |\/| |/ _` | |/ / _ \
% | |  | | (_| |   <  __/
% |_|  |_|\__,_|_|\_\___|
%                        
% «make-arxiv»  (to ".make-arxiv")
% (find-LATEX "2020clops-and-tops.tex" "arxiv")
% (find-build-for-arxiv-links "2022on-the-missing")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd ~/LATEX/
#export PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH
#export PATH=/usr/local/texlive/2019/bin/x86_64-linux:$PATH
export PATH=/usr/local/texlive/2020/bin/x86_64-linux:$PATH
#export PATH=/usr/local/bin:$PATH
which biber
biber --version
make -f 2019.mk STEM=2022on-the-missing veryclean
lualatex             2022on-the-missing.tex
biber                2022on-the-missing
pdflatex -record     2022on-the-missing.tex

# (find-LATEXfile "2022on-the-missing.fls" "biblatex/")

cd ~/LATEX/
flsfiles-zip 2022on-the-missing.fls 2022on-the-missing.zip
rm -rfv /tmp/2022on-the-missing.zip
rm -rfv /tmp/edrx-latex/
cd /tmp/
cp -v ~/LATEX/2022on-the-missing.zip .
mkdir    /tmp/edrx-latex/
unzip -d /tmp/edrx-latex/ /tmp/2022on-the-missing.zip
cd       /tmp/edrx-latex/
pdflatex 2022on-the-missing.tex
pdflatex 2022on-the-missing.tex

cp -v    2022on-the-missing.pdf /tmp/

# (find-pdf-page "/tmp/edrx-latex/2022on-the-missing.pdf")
# (find-pdf-text "/tmp/edrx-latex/2022on-the-missing.pdf")
# (find-fline    "/tmp/edrx-latex/")
# (find-fline    "/tmp/edrx-latex/2022on-the-missing.bbl")
# (find-fline    "/tmp/edrx-latex/2022on-the-missing.bbl" "version")
# (find-fline    "/usr/local/texlive/")
# (find-fline    "/usr/local/texlive/" "2019")
# (find-fline "/tmp/2022on-the-missing.zip")

# Package biblatex Warning: File '2022on-the-missing.bbl' is wrong format version
# - expected 3.1.

% «make»  (to ".make")
% (to "defs-slowdiag")
% (find-LATEX "catsem-slides.bib")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-LATEXfile "2019planar-has-1.mk")
# (find-LATEXfile "2019.mk")
make -f 2019.mk STEM=2022on-the-missing veryclean
make -f 2019.mk STEM=2022on-the-missing pdf

% Local Variables:
% coding: utf-8-unix
% ee-tla: "mis"
% End: