Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
% (find-angg "LATEX/2019ilha-grande-poster-a4.tex")
% (defun c () (interactive) (find-LATEXsh "lualatex -record 2019ilha-grande-poster-a4.tex" :end))
% (defun d () (interactive) (find-pdf-page "~/LATEX/2019ilha-grande-poster-a4.pdf"))
% (defun e () (interactive) (find-LATEX "2019ilha-grande-poster-a4.tex"))
% (defun u () (interactive) (find-latex-upload-links "2019ilha-grande-poster-a4"))
% (find-xpdfpage "~/LATEX/2019ilha-grande-poster-a4.pdf")
% (find-sh0 "cp -v  ~/LATEX/2019ilha-grande-poster-a4.pdf /tmp/")
% (find-sh0 "cp -v  ~/LATEX/2019ilha-grande-poster-a4.pdf /tmp/pen/")
%   file:///home/edrx/LATEX/2019ilha-grande-poster-a4.pdf
%               file:///tmp/2019ilha-grande-poster-a4.pdf
%           file:///tmp/pen/2019ilha-grande-poster-a4.pdf
% http://angg.twu.net/LATEX/2019ilha-grande-poster-a4.pdf

% «.is-associated-to»		(to "is-associated-to")
% «.parallel-diagrams»		(to "parallel-diagrams")
% «.projections-and-liftings»	(to "projections-and-liftings")
% «.drawing-topologies»		(to "drawing-topologies")
%   «.2CGs»			(to "2CGs")
%   «.ZHAs»			(to "ZHAs")
%   «.logic-in-a-ZHA»		(to "logic-in-a-ZHA")
%   «.J-operators»		(to "J-operators")
%   «.question-marks»		(to "question-marks")
% «.toposes-for-children»	(to "toposes-for-children")
%   «.classifier»		(to "classifier")
%   «.local-operators»		(to "local-operators")
% «.the-factorization»		(to "the-factorization")
% «.references»			(to "references")
%
% «.write-poster-body»		(to "write-poster-body")

\documentclass[oneside,12pt]{extarticle}
\usepackage[colorlinks,citecolor=violet,urlcolor=DarkRed]{hyperref} % (find-es "tex" "hyperref")
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pict2e}
%\usepackage{indentfirst}
\usepackage[x11names,svgnames]{xcolor} % (find-es "tex" "xcolor")
%
% (find-dn6 "preamble6.lua" "preamble0")
\usepackage{proof}   % For derivation trees ("%:" lines)
\input diagxy        % For 2D diagrams ("%D" lines)
\xyoption{curve}     % For the ".curve=" feature in 2D diagrams
%
\usepackage{edrx15}               % (find-LATEX "edrx15.sty")
\input edrxaccents.tex            % (find-LATEX "edrxaccents.tex")
\input edrxchars.tex              % (find-LATEX "edrxchars.tex")
\input edrxheadfoot.tex           % (find-LATEX "edrxheadfoot.tex")
%\input edrxgac2.tex              % (find-LATEX "edrxgac2.tex")
%\input edrx17defs.tex            % (find-LATEX "edrx17defs.tex")
\input 2017planar-has-defs.tex    % (find-LATEX "2017planar-has-defs.tex")
%
\usepackage[backend=biber,
   style=alphabetic]{biblatex} % (find-es "tex" "biber")
\addbibresource{catsem-u.bib}  % (find-LATEX "catsem-u.bib")
%
\begin{document}

\catcode`\^^J=10
\directlua{dofile "dednat6load.lua"}  % (find-LATEX "dednat6load.lua")

% (find-es "tex" "newlength")
\newlength{\colwidth}
\setlength{\colwidth}{\textwidth}



% FROM HERE

\def\bbG{{\mathbb{G}}}
\def\sh{{\mathbf{sh}}}
\def\catX{{\mathbf{X}}}
\def\catY{{\mathbf{Y}}}
\def\resizediag#1#2#3{\resizebox{#1}{#2}{$\diag{#3}$}}
\def\eqQ{\sim_Q}

% (find-2a nil '(d))

%L dofile "edrxtikz.lua"  -- (find-LATEX "edrxtikz.lua")
%L dofile "edrxpict.lua"  -- (find-LATEX "edrxpict.lua")
\pu

%L deletecomments = function (str)
%L     return (str:gsub("%%[^\n]*\n[ \t]*", ""))
%L   end

% (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}''}

% (find-LATEX "2017planar-has-defs.tex" "squigbijtest")
% (find-LATEX "2017planar-has-defs.tex" "squigbijtest" "values")
\def\squigbijy{-2.5}   % for 12pt



% Title
% (find-LATEXfile "2019elephant-poster.tex" "\\title")

\title{On some missing diagrams in the Elephant}
\date{2019-05-10}
\author{Eduardo Ochs}
%\email{eduardoochs@gmail.com}
%\homepage{http://angg.twu.net/math-b.html}
% \orcid{0000-0003-0290-4698}
%\affiliation{Universidade Federal Fluminense, Rio das Ostras, RJ, Brazil}

\maketitle

The abstract of the extended abstract that I submitted to the
conference was just this:

% (find-es "tex" "abstract")

\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
  𝐢{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.

  Here we will reconstruct, in the sense above, some of the ``missing
  diagrams'' in two factorizations of geometric morphisms in section
  A4 of Johnstone's ``Sketches of an Elephant'', and also some
  ``missing examples''. Our criteria for determining what is
  ``missing'' and how to fill out the holes are essentially the ones
  presented in the ``Logic for Children'' workshop at the UniLog 2018;
  they are derived from a certain 𝐢{definition} of ``children'' that
  turned out to be especially fruitful.

\end{quotation}

Its focus was the factorization in the last paragraph --- let me call
it simply ``the factorization'' from here on; it is explained in the
section \ref{the-factorization} of the poster.

In this poster I will try to do something different: I will try to
give a broad view of the whole project, and show that the
factorization is just a cherry on top of the sundae --- a cherry that
is there to please the mathematicians who believe that constructions
and techniques only relevant when they {\sl prove new theorems}.

% The ``whole project''' --- we need a short name for it... the
% ``sundae''?

The references in boldface in this poster are to papers, slides and
notes that can accessed from the section titled ``On some missing
diagrams in the Elephant'' in my webpage:
%
$$\begin{tabular}{l}
  \url{http://angg.twu.net/math-b.html} \\
  \url{http://angg.twu.net/math-b.html\#missing-diagrams-elephant} \\
  \end{tabular}
$$

% (find-es "tex" "biber")
% (find-books "__cats/__cats.el" "mclarty-risingsea")

They are:
%
$$\begin{tabular}{ll}
  \cite{IDARCT}: & {\bf Internal Diagrams and Archetypal Reasoning} \\
                 & {\bf in  Category Theory} \\
                 & (Logica Universalis, 2013) \\
  \cite{PH1}: & {\bf Planar Heyting Algebras for Children} \\
              & (Accepted @ South Americal Journal of Logic) \\
  \cite{MDE}  & {\bf On Some Missing Diagrams in the Elephant} \\
              & (My extended abstract to the ACT2019 --- it's not \\
              & in the conference website because poster session people \\
              & are second-class people, duh) \\
  \cite{NYo}: & {\bf Notes on the Yoneda Lemma} \\
              & (In which each node and arrow can be \\
              & interpreted precisely as a ``term'', \\
              & and most of the interpretations are \\
              &``obvious''; plus dictionaries!!!) \\
              & (slides, 2019) \\
  \end{tabular}
$$




% «is-associated-to»  (to ".is-associated-to")
\section{``Is associated to''}

The symbol `$\squigbijbody$' will be pronounced ``is associated to'',
but the {\sl formal} meaning of `$A \squigbij B$' will depend on the
types of $A$ and $B$. For example,
%
$$(P,A) \squigbij H$$
%
will mean that the 2-column graph $(P,A)$ is associated to the Planar
Heyting Algebra (a ``ZHA'') $H$ through the standard bijection between
2CGs and ZHAs;
%
$$((P,A),Q) \squigbij (H,J)$$
%
will mean that besides $(P,A) \squigbij J$ the equivalence relation
induced by set of question marks $Q$ is ``the same'' as the one
induced by J-operator $J$; and
%
$$J \squigbij j$$
%
means that in the topos that we are talking about the J-operator $J$
(J-operators are a concept that fell out of fashion) is associated to
the local operator $j:Ω→Ω$ --- something is everyone (?!?) knows that
induces a notion of ``sheaf'' on the topos we're in.





% \section{Outsiders}

% This is ``Category Theory for outsiders'' in several senses... I teach
% in a small countryside campus of a Federal 

% (ph1p 2 "introduction")
% (ph1    "introduction")
% (ph1p 2 "introduction" "everything felt far too abstract")
% (ph1    "introduction" "everything felt far too abstract")






%  ____                 _ _      _       _ _                 
% |  _ \ __ _ _ __ __ _| | | ___| |   __| (_) __ _  __ _ ___ 
% | |_) / _` | '__/ _` | | |/ _ \ |  / _` | |/ _` |/ _` / __|
% |  __/ (_| | | | (_| | | |  __/ | | (_| | | (_| | (_| \__ \
% |_|   \__,_|_|  \__,_|_|_|\___|_|  \__,_|_|\__,_|\__, |___/
%                                                  |___/     
%
% «parallel-diagrams»  (to ".parallel-diagrams")
\section{Parallel diagrams (of several kinds)}
\label{parallel-diagrams}
% (igap 3 "parallel-diagrams")
% (igap 4 "parallel-diagrams")
% (iga    "parallel-diagrams")
% (ph1p 4 "internal-external")
% (ph1    "internal-external")

Look at the diagram below. Let's call its three subdiagrams $\sm{A \;
  B \\ C}$. Each of the subdiagrams $A$, $B$, $C$ have an ``external
diagram'', or an ``external view'', below, and an ``internal diagram''
or ``internal view'' above.

\def\ooo (#1,#2){\begin{picture}(0,0)\put(0,0){\oval(#1,#2)}\end{picture}}
\def\oooo(#1,#2){{\setlength{\unitlength}{1ex}\ooo(#1,#2)}}
%
%D diagram second-blob-function
%D 2Dx     100 +20   +20   
%D 2D  100 a-1 |-->  b-1    
%D 2D  +08 a0  |-->  b0    
%D 2D  +08 a1  |-->  b1    
%D 2D  +08 a2  |-->  b2    
%D 2D  +08 a3  |-->  b3    
%D 2D  +08 a4  |-->  b4    
%D 2D  +14 a5  |-->  b5    
%D 2D  +25 \N  --->  \R
%D 2D
%D ren a-1 a0 a1 a2 a3 a4 a5 ==> -1 0 1 2 3 4 n
%D ren b-1 b0 b1 b2 b3 b4 b5 ==> -1 0 1 \sqrt{2} \sqrt{3} 2 \sqrt{n}
%D ((  a0 a5 midpoint .TeX= \oooo(7,23) y+= -2 place
%D    b-1 b5 midpoint .TeX= \oooo(7,25) y+= -2 place
%D       b-1 place
%D    a0 b0 |->
%D    a1 b1 |->
%D    a2 b2 |->
%D    a3 b3 |->
%D    a4 b4 |->
%D    a5 b5 |->
%D    \N \R -> .plabel= a \sqrt{\phantom{a}}
%D    a-1 relplace -7 -7 \phantom{foo}
%D    b5  relplace  7  7 \phantom{bar}
%D ))
%D enddiagram
%D
%D diagram generic-adjunction
%D 2Dx     100  +30    +35  +25
%D 2D  100      LA <-| A    
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +30 G    LB <-| B    I
%D 2D      |    |      |    |   
%D 2D      v    v      v    v   
%D 2D  +30 H    C |--> RC   J
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +30      D |--> RD   
%D 2D                       
%D 2D  +20      E <==> F    
%D 2D
%D ren LA A ==> LA' A'
%D ren LB B ==> LA  A
%D ren C RC ==> B  RB
%D ren D RD ==> B' RB'
%D ren E F  ==> \catB \catA
%D ren G H  ==> LRB B
%D ren I J  ==> A RLA
%D
%D (( LA A <-| .plabel= a L_0
%D    LB B <-| .plabel= a L_0
%D    C RC |-> .plabel= b R_0
%D    D RD |-> .plabel= b R_0
%D
%D    LA  B harrownodes nil 20 nil <-| sl^ .plabel= a L_1
%D    LB RC harrownodes nil 20 nil <-| sl^ .plabel= a ♭
%D    LB RC harrownodes nil 20 nil |-> sl_ .plabel= b ♯
%D    C  RD harrownodes nil 20 nil |-> sl^ .plabel= b R_1
%D
%D    LA LB -> .plabel= l Lα
%D     A  B -> .plabel= r  α
%D    LB  C -> .plabel= l \sm{g^♭\\f}
%D     B RC -> .plabel= r \sm{g\\f^♯}
%D     C  D -> .plabel= l β
%D    RC RD -> .plabel= r Rβ
%D    E F <- sl^ .plabel= a L
%D    E F -> sl_ .plabel= b R
%D    G H -> .plabel= l εB
%D    I J -> .plabel= r ηA
%D ))
%D enddiagram
%D
%D diagram (xB)-|(B->)
%D 2Dx     100  +45    +35  +40
%D 2D  100      LA <-| A    
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +30 G    LB <-| B    I
%D 2D      |    |      |    |   
%D 2D      v    v      v    v   
%D 2D  +30 H    C |--> RC   J
%D 2D           |      |    
%D 2D           v      v    
%D 2D  +30      D |--> RD   
%D 2D                       
%D 2D  +20      E <==> F    
%D 2D
%D ren LA A ==> A{×}C A
%D ren LB B ==> B{×}C B
%D ren C RC ==> D (C{→}D)
%D ren D RD ==> E (C{→}E)
%D ren E F  ==> \Set \Set
%D ren G H  ==> (C{→}D){×C} D
%D ren I J  ==> B (C→B{×}C)
%D ren I J  ==> B (C{→}(B{×}C))
%D
%D (( LA A <-| # .plabel= a ({×}B)_0
%D    LB B <-| # .plabel= a ({×}B)_0
%D    C RC |-> # .plabel= b (B{→})_0
%D    D RD |-> # .plabel= b (B{→})_0
%D
%D    LA  B harrownodes nil 20 nil <-| sl^ # .plabel= a L_1
%D    LB RC harrownodes nil 20 nil <-| sl^ .plabel= a ♭
%D    LB RC harrownodes nil 20 nil |-> sl_ .plabel= b ♯
%D    C  RD harrownodes nil 20 nil |-> sl^ # .plabel= b R_1
%D
%D    LA LB -> .plabel= l λp.(f(πp),π'p)
%D     A  B -> .plabel= r f
%D    LB  C -> .plabel= l \sm{λp.g(πp)(π'p)\\\phantom{mmmmmm}h}
%D     B RC -> .plabel= r \sm{g\phantom{mmmmm}\\λb.λc.h(b,c)}
%D     C  D -> .plabel= l k
%D    RC RD -> .plabel= r λf.λc.k(fc)
%D    E F <- sl^ .plabel= a ({×}C)
%D    E F -> sl_ .plabel= b (C{→})
%D    G H -> .plabel= l λp.(πp)(π'p)
%D    I J -> .plabel= r λb.λc.(b,c)
%D ))
%D enddiagram
%D
\pu
$$\begin{array}{c}
 \resizediag{!}{!}{second-blob-function}
 \qquad
 \resizediag{!}{!}{generic-adjunction}
 \\
 \\
 \resizediag{!}{!}{(xB)-|(B->)}
 \end{array}
$$

\def\sqrtph{\sqrt{\phantom{a}}}

Our notions of ``external'' and ``internal'' are the same as in
\cite{LawvereSchanuel} or \cite{LawvereRosebrugh}, but our use of
arrows is much more precise. Note that in diagram $A$

\begin{itemize}

\item we distinguish `$→$' and `$↦$' in the usual way --- $\N
  \ton{\sqrtph} \R$ is a {\sl typing},

\item one of the `$↦$' arrows above $\N \ton{\sqrtph} \R$ is
  ``generic'': $n ↦ \sqrt{n}$ shows how to produce the image of a
  generic element $n∈\N$ --- i.e., as an untyped $λ$-calculus term,
  $\sqrtph = λn.\sqrt{n}$,

\def\U#1{\underline{#1}}

\item \U{all the other} `$↦$' arrows \U{above} $\N \ton{\sqrtph} \R$
  are \U{substituition instances} of $n ↦ \sqrt{n}$, \U{maybe after
    some term reductions}.

  ``$3 ↦ \sqrt{3}$'' is just a substituion instance of ``$n ↦
  \sqrt{n}$'', but ``$4 ↦ 2$'' is a substitution instance of ``$n ↦
  \sqrt{n}$'' followed by the reduction that transforms ``$√4$'' into
  ``2''.

\end{itemize}

The notion of ``above'' in these diagrams is very important. The blob
above $\N$ shows some elements of $\N$; same for $\R$, and the `$↦$'
arrows above the `$→$' are internal views of the `$→$'.

The subfigure $B$ shows the external view and the internal view of a
(generic) adjunction. Things are much more complex now --- we don't
draw the blobs; above $\catB$ we have six objects and four morphisms
from the category $\catB$, and the same for $\catA$; the arrows marked
`$L_0$' above $L$ are the action of $L$ on objects and the arrow
`$L_1$' is the action of $L$ on morphisms, and the same for $R$; we
draw the transpositions $♭$ and $♯$; we draw the unit and the counit.

The subfigure $C$ is a particular case of the subfigure $B$ --- among
other things it has exactly the same shape as $B$, and we can extract
from it the definitions of $L_0$, $L_1$, etc in this particular case.

The ``general case'' $B$ and the ``particular case'' $C$ are evidently
parallel diagrams, but in each of $A$, $B$, $C$ we have a internal
diagram parallel to an external diagram --- but the internal diagrams
are much bigger.

\msk

Note: these diagrams can be interpreted in proof assistants! See
\cite{NYo} for a reasonably big example worked out in all detail!

(A curiosity: many years ago I spent a lot of time studying
\cite{Jacobs} and trying to create a bridge between his
fibration-based categorical models for type theory and what I thought
that were the ``archetypal cases'' motivating them. Some of my
conventions for ``above'', ``below'', etc, comes from conventions for
fibrations.)



% \msk
% \msk
% \msk
% 
% 
% 
% The second way to explain the goals of PH123 is by taking {\sl
%   Diagrammatic Reasoning} as the main theme. Let me start with an
% anecdote (90\% true). Many, many years ago, when I tried to learn
% Topos Theory for the first time, mainly from \cite{Johnstone} and
% \cite{Goldblatt}, everything felt far too abstract: most of the
% diagrams were omitted, and the motivating examples were mentioned very
% briefly, if at all. The intended audience for those books surely knew
% how to supply by themselves the missing diagrams, examples,
% calculations, and details --- but I didn't. My slogan became: ``I need
% a version for children of this!''.
% 
% At first this expression, ``for children'', was informal, and I used
% it as a half-joke. Very gradually it started to acquire a precise
% sense: clearly, CT done in a purely algebraic way is ``for adults'',
% and diagrams, particular cases, and finite examples are ``for
% children''. Writing ``for adults'' only and keeping the mentions to
% the ``for children'' part very brief is considered good style because
% ``adults'' have the technical machinery for producing more or less
% automatically the ``for children'' part when they need it, and people
% who are not yet ``adults'' can become ``adults'' by struggling with
% the texts ``for adults'' long enough and learning by themselves how to
% handle the new level of abstraction.
% 
% A clear frontier between ``for adults'' and ``for children'' appears
% when we realize that we can draw a diagram for the general case (``for
% adults'') of a categorical concept and the diagram for a particular
% case of it (``for children'') side by side. The two diagrams will have
% roughly the same shape, and we can transport knowledge between them in
% both ways: from the general to the particular, {\sl and back}. Look at
% Figure \ref{fig:internal-external}; let's name its subdiagrams as $A$,
% $B$, and $C$, like this: $\sm{A \; B \\ C}$. Each one of $A$, $B$, $C$
% has an {\sl internal view} above and an {\sl external view} below.






%  ____            _                       _   _ _  __ _       
% |  _ \ _ __ ___ (_)___    __ _ _ __   __| | | (_)/ _| |_ ___ 
% | |_) | '__/ _ \| / __|  / _` | '_ \ / _` | | | | |_| __/ __|
% |  __/| | | (_) | \__ \ | (_| | | | | (_| | | | |  _| |_\__ \
% |_|   |_|  \___// |___/  \__,_|_| |_|\__,_| |_|_|_|  \__|___/
%               |__/                                           
%
% «projections-and-liftings»  (to ".projections-and-liftings")
% (find-angg ".emacs" "idarct-preprint")
% (idap 1 "projs-and-lifts")
% (ida    "projs-and-lifts")

\section{Projections and liftings}

One of the first ideas presented in \cite{IDARCT} is that we can treat
operations that discard information, like {\sl particularization}, as
{\sl projections}, and we can treat {\sl generalization} as {\sl
  lifting}... and the paper shows how to represent visually several
operations that {\sl erase} and that {\sl reconstruct} information.

Suppose that we learned adjunctions from \cite{CWM}. His presentation
is not very visual, so we worked a bit (or a lot) and found the
diagrams for adjunctions in sec.\ref{parallel-diagrams}; we are now in
a situation where we know the ``algebraic'' definition of an
adjunction plus a diagrammatic way to represent it. We work a bit more
and we get a diagram for a particular case -- the adjunction
$({×}B)⊣(B{→})$.

There are some advantages in knowing the ``algebraic version'', plus
having a diagram for the general case, that lets us play with some
sequences operations as if they were shape and movement, plus having
particular cases that let us test conjectures quickly... in recent
texts about the Philosophy of Mathematics, like \cite{Kromer},
\cite{Mancosu}, \cite{Corfield} we can even find {\sl names} for each
kind of reasoning, and each kind of intuition, that becomes accessible
to us after we get another view of, say, adjunctions...

The diagram below let us visualize these ``states of knowledge'':
%
%L forths["-"] = function () pusharrow("-") end
%
%D diagram ??
%D 2Dx     100  +40 +40  +40   +40
%D 2D  100          \EVT
%D 2D
%D 2D  +40     \GAD      \GPD
%D 2D
%D 2D  +40 \GA      \GD        \PD
%D 2D
%D 2D  +40              \SHAPE
%D 2D
%D
%D (( \EVT \GAD - \EVT \GPD -
%D    \GAD \GA -  \GAD \GD - \GPD \GD - \GPD \PD -
%D    \GD \SHAPE - \PD \SHAPE -
%D ))
%D enddiagram
%D
%   
%               generic     parallel
%                 case,     diagrams
%               alg+diag
% 
%     generic         general    particular
%      case,           case,        case,
%    algebraic        diagram      diagram
% 
%                             shape
% 
$$\pu
  \def\ta#1{\begin{tabular}{c}#1\end{tabular}}
  \def\EVT{\ta{(everything)}}
  \def\GAD{\ta{generic \\ case, \\ alg $+$ diag }}
  \def\GPD{\ta{generic and \\ particular \\ in parallel }}
  \def\GA {\ta{generic \\ case, \\ algebraic }}
  \def\GD {\ta{generic \\ case, \\ diagram }}
  \def\PD {\ta{particular \\ case, \\ diagram}}
  \def\SHAPE{\ta{(shape)}}
  \diag{??}
$$

There are some processes that I discuss in \cite{IDARCT} that are only
mentioned very, very briefly in the three references above --- namely,
forgetting details and then reconstructing them, and ``omitting
diagrams'' for publication followed by ``reconstructing the diagrams
that the author had in mind'' as explained in the abstract in the
beginning of the poster.

Also, there is an idea in \cite{IDARCT} that I haven't seen anywhere
else and that became a long-term project for me, that is that we can
``project out'' all the terms in a categorical construction or proof
that mention equalities of morphisms --- I call this ``dropping the
boring part and keeping only the fun part'' of the categorical
constructions and arguments ---, then we do our constructions there,
and {\sl after we're finished with this part} we reconstruct the
``boring'' part in a way that matches the rest.












%  ____                     _               _                  
% |  _ \ _ __ __ ___      _(_)_ __   __ _  | |_ ___  _ __  ___ 
% | | | | '__/ _` \ \ /\ / / | '_ \ / _` | | __/ _ \| '_ \/ __|
% | |_| | | | (_| |\ V  V /| | | | | (_| | | || (_) | |_) \__ \
% |____/|_|  \__,_| \_/\_/ |_|_| |_|\__, |  \__\___/| .__/|___/
%                                   |___/           |_|        
%
% «drawing-topologies»  (to ".drawing-topologies")

\section{Drawing topologies}

%L kite  = ".1.|2.3|.4.|.5."
%L house = ".1.|2.3|4.5"
%L W     = "1.2.3|.4.5."
%L guill = ".1.2|3.4.|.5.6"
%L hex   = ".1.2.|3.4.5|.6.7."
%L mp = MixedPicture.new({def="dagKite", meta="s", scale="5pt"}, z):zfunction(kite):output()
%L mp = MixedPicture.new({def="dagKite",  meta="t", scale="4pt"}, z):zfunction(kite):output()
%L mp = MixedPicture.new({def="dagHouse", meta="s", scale="5pt"}, z):zfunction(house):output()
%L mp = MixedPicture.new({def="dagW",     meta="s", scale="4pt"}, z):zfunction(W):output()
%L mp = MixedPicture.new({def="dagGuill", meta="s", scale="4pt"}, z):zfunction(guill):output()
%L mp = MixedPicture.new({def="dagHex",   meta="s", scale="4pt"}, z):zfunction(hex):output()
\pu

We can draw subsets of a set $\dagKite$ by their characteristic
functions: $\dagKite10110$, $\dagKite00111$, and so on. The {\sl order
  topology} on a set $\dagKite$ is defined by:
%
$$\begin{tabular}{l}
  a subset of $\dagKite$ is {\sl open} \\
  when its characteristic function \\
  {\sl doesn't have} a `1' above a `0'. \\
  \end{tabular}
$$

We can draw topologies as directed graphs. Let ``$A ⊂_1 B$'' stand
for: ``$A⊂B$, and the difference $B∖A$ has exactly one element''. We
will draw the topology $(X,\Opens(X))$ as the DAG $(\Opens(X), ⊂_1)$,
meaning that there will be an arrow $V→U$ when $V⊂_1U$. We have:
%
% (ph1p 25 "topologies-as-partial-orders")
% (ph1     "topologies-as-partial-orders")
%
%R local house, ohouse = 2/  #1  \, 7/       !h11111                     \
%R                        |#2  #3|   |              !h01111              |
%R                        \#4  #5/   |       !h01011       !h00111       |
%R                                   |!h01010       !h00011       !h00101|
%R                                   |       !h00010       !h00001       |
%R                                   \              !h00000              /
%R
%R  house:tomp({def="zfHouse#1#2#3#4#5", scale="5pt", meta="s"}):addcells():output()
%R  house:tomp({zdef="House" , scale="20pt", meta=nil}):addbullets():addarrows():output()
%R ohouse:tomp({zdef="OHouse", scale="28pt", meta=nil}):addcells():addarrows("w"):output()
%R
%R local guill, oguill = 2/  #1  #2\, 8/                !g111111                \
%R                        |#3  #4  |   |        !g101111        !g011111        |
%R                        \  #5  #6/   |                !g001111        !g010111|
%R                                     |        !g001011        !g000111        |
%R                                     |!g001010        !g000011                |
%R                                     |        !g000010        !g000001        |
%R                                     \                !g000000                /
%R
%R  guill:tomp({def="zfGuill#1#2#3#4#5#6", scale="3.5pt", meta="s"}):addcells():output()
%R  guill:tomp({zdef="Guill",  scale="20pt",  meta=nil}):addbullets():addarrows():output()
%R oguill:tomp({zdef="OGuill", scale="28pt",  meta=nil}):addcells():addarrows("w"):output()
%R
%R local w, womit, W =
%R 2/#1  #2  #3\, 2/    a     \, 7/              !w11111              \
%R  \  #4  #5  /   |  b c d   |   |       !w11011!w10111!w01111       |
%R                 |  e f g   |   |       !w10011!w01011!w00111       |
%R                 |h   i   j |   |!w10010       !w00011       !w00101|
%R                 |  k   l   |   |       !w00010       !w00001       |
%R                 \    m     /   \              !w00000              /
%R w:tomp({def="zfW#1#2#3#4#5",   scale="3.5pt", meta="s"}):addcells():output()
%R w:tomp({zdef="W",  scale="20pt", meta=nil}):addbullets():addarrows() :output()
%R W:tomp({zdef="OW", scale="28pt", meta=nil}):addcells():addarrowsexcept("w", "(2,4)0"):output()
\pu
%
$$(\Opens(\dagHouse), ⊂_1) = \def\h{\zfHouse}\zha{OHouse}$$

$$(\Opens(\dagGuill), ⊂_1) = \def\g{\zfGuill}\zha{OGuill}$$

$$(\Opens(\dagW), ⊂_1) = \def\w{\zfW}\zha{OW}$$


The DAGs $(\Opens(\dagHouse), ⊂_1)$ and
$(\Opens(\dagGuill), ⊂_1)$ are planar (neat!), and \\
$(\Opens(\dagW), ⊂_1)$ is non-planar (clumsy!). The nonplanarity
comes from $\dagW$ having three independent points; the subDAG
generated by the open sets of the form $\dagW???11$ is a cube.


%  ____   ____ ____     
% |___ \ / ___/ ___|___ 
%   __) | |  | |  _/ __|
%  / __/| |__| |_| \__ \
% |_____|\____\____|___/
%                       
% «2CGs»  (to ".2CGs")
\subsection{2-Column Graphs (``2CGs'')}

One way to make sure that our topologies will be neat (i.e., planar)
is to forbid having three independent points, and one way to do this
is to declare that we are only interested in topologies in {\sl
  2-columns graphs} (2CGs).

This is an example of a 2CG, and its topology:
%
% (oxap 7 "fig:2CGs-ZHA")
% (oxa    "fig:2CGs-ZHA")
% (oxa    "fig:2CGs-ZHA" "\\tcg{(P,A)}")
% 
%L tdims = TCGDims {qrh=5, q=15, crh=12, h=60, v=25, crv=7}   -- with v arrows
%L tspec_PA  = TCGSpec.new("46; 11 22 34 45, 25")
%L tspec_PAQ = TCGSpec.new("46; 11 22 34 45, 25", ".???", "???.?.")
%L tspec_PA :mp  ({zdef="O_A(P)"})  :addlrs():print()            :output()
%L tspec_PAQ:mp  ({zdef="O_A(P),J"}):addlrs():print()            :output()
%L tspec_PA :tcgq({tdef="(P,A)",   meta="1pt p"}, "lr q h v ap") :output()
%L tspec_PAQ:tcgq({tdef="(P,A),Q", meta="1pt p"}, "lr q h v ap") :output()
%L
%L tspec_PAC = TCGSpec.new("46; 11 22 34 45, 25", "?...", "???...")
%L tspec_PAC:mp  ({zdef="closed-op"}) :addlrs():print()            :output()
%L tspec_PAC:tcgq({tdef="closed-op", meta="1pt p"}, "lr q h v ap") :output()
%L 
\pu
%
$$\Opens\tcg{(P,A)} \quad = \quad \zha{O_A(P)}$$
%
but we are drawing the open sets using a two-digit notation...

% (oxap 6  "2CGs-and-ZHAs" "{specification} for a 2CG")
% (oxa     "2CGs-and-ZHAs" "{specification} for a 2CG")
%
We write $\pile(ab)$ for the set $\{a▁,\dots,1▁, \;\; ▁1,\ldots,▁b\}$;
the characteristic function of $\pile(a,b)$ is a pile of $a$ `1's in
the left column and $b$ `1's in the right column.

We sometimes omit the `$\pile$'s; for example, the 25 above means
%
$$25 ≡ \pile(2,5) = \{2▁,1▁, \;\; ▁1,▁2,▁3,▁4,▁5\},$$
%
an open set. Note the $\pile(2,1)$ is not an open set --- its
characteristic functions has a `1' (in the position $2▁$) pointing to
a `0' (in the position $▁2$).

A {\sl specification} of a 2CG is a 4-uple $(l,r,R,L)$; it generates a
2CG $(P,A)$ with $P:=\pile(lr)$, and with sets of intercolumn arrows
$R$ (going right) and $L$ (going left). The set $A$ of arrows of
$(P,A)$ is $R∪L$ plus all the intracolumn arrows that point one step
down. The 2CG above is generated by this specification:
%
$$(4,6,\csm{\ltor45, \\ \ltor34, \\ \ltor22, \\ \ltor11,},
       \csm{\lotr25})
$$

In the library that I wrote to calculate with these objects that
specification is represented as a string: \co{"46; 11 22 34 45, 25"}.


%  ______   _    _        
% |__  / | | |  / \   ___ 
%   / /| |_| | / _ \ / __|
%  / /_|  _  |/ ___ \\__ \
% /____|_| |_/_/   \_\___/
%                         
% «ZHAs»  (to ".ZHAs")
\subsection{Planar Heyting Algebras (``ZHAs'')}

We can treat the topology above as a subset of $\Z^2$. Here's how.

\msk

$(x,y)$ means: start at $(0,0)$, walk $x$ steps east and $y$ steps north.

$〈a,b〉$ means: start at $(0,0)$, walk $a$ steps northwest and

$b$ steps northeast --- i.e., $〈a,b〉 = (0,0) + a\VEC{-1,1} + b\VEC{1,1}$.

$\LR$ is $\setofst{〈a,b〉}{a,b∈\N}$ --- like $\N^2$ tilted $45°$
counterclockwise.

$ab$ is an abbreviation for $〈a,b〉$.

\msk

Look at the topology above again. It is generated by a 2CG whose
specification in \co{"46; 11 22 34 45, 25"}. The 46 is the top element
of the topology, and the \co{"11 22 34 45"} and the \co{"25"} are the
points where the left wall and the right wall have ``bumps''.

\cite{PH1} defines ZHAs in sec.4 as a finite subset of $\LR$ ``between
a left wall and a right wall'' (long story --- see the paper), and it
shows a correspondence that we write as:
%
$$(P,A) \squigbij H$$
%
we pronounce that as: ``every 2CG $(P,A)$ is associated to a ZHA $H$
and vice-versa''.

Topologies are Heyting Algebras, so the order topology
$(P,\Opens_A(P))$ of a 2CG is a Heyting Algebra --- and we can
interpret intuitionistic propositional logic on it.

\bsk

Here is a particular case of $(P,A) \squigbij H$:
%
$$\tcg{(P,A)} \;\; \squigbij \;\;\; \zha{O_A(P)}$$




%  _                _        _                 ______   _    _    
% | |    ___   __ _(_) ___  (_)_ __     __ _  |__  / | | |  / \   
% | |   / _ \ / _` | |/ __| | | '_ \   / _` |   / /| |_| | / _ \  
% | |__| (_) | (_| | | (__  | | | | | | (_| |  / /_|  _  |/ ___ \ 
% |_____\___/ \__, |_|\___| |_|_| |_|  \__,_| /____|_| |_/_/   \_\
%             |___/                                               
%
% «logic-in-a-ZHA»  (to ".logic-in-a-ZHA")
% (ph1p 11 "prop-calc-ZHA")
% (ph1     "prop-calc-ZHA")
% (ph1p 12 "prop-calc-ZHA" "valuations")
% (ph1     "prop-calc-ZHA" "valuations")
% (ph1p 12 "HAs")
% (ph1     "HAs")
% (ph1p 13 "HAs" "helpful for visualizing")
% (ph1     "HAs" "helpful for visualizing")
% (ph1p 18 "logic-in-HAs")
% (ph1     "logic-in-HAs")
\subsection{Logic in a ZHA}

The standard way of interpreting logic on a topology $(X,\Opens(X))$
is: the truth values are the open sets $P,Q,R,\ldots∈\Opens(X)$;
$⊤=X$; $⊥=∅$; $P∧Q=P∩Q$; $P∨Q=P∪Q$; $P→Q = \Int((X∖P)∪Q)$. On a ZHA
the operations $⊤,⊥,∧,∨$ are very easy to visualize...
%
%R local PQaoi =
%R     1/    T    \
%R      |   . .   |
%R      |  . . .  |
%R      | . o . i |
%R      |. P . . .|
%R      | . . Q . |
%R      |  . a .  |           
%R      |   . .   |           
%R      \    F    /           
%R local T = {a="(∧)", o="(∨)", i="(\\!→\\!)", n="(¬)", d="(\\!\\!¬¬\\!)",
%R            T="·", F="·", T="⊤", F="⊥", }
%R PQaoi:tozmp({zdef="PQaoi", scale="12pt", meta=nil}):addcells(T):addcontour():output()
%R PQaoi:tozmp({zdef="lozfive", scale="12pt", meta=nil}):addlrs():addcontour():output()
$$
  \pu
  \zha{lozfive} \qquad \zha{PQaoi}
$$

There is a way to calculate $P→Q$ {\sl visually}, but the formula has
four subcases. For example, if $P$ is ``left of'' $Q$ then $P→Q$ is
$𝐬{ne}(Q)$, i.e.: start from $Q$ and walk northeast as many steps as
possible. The diagram above shows that $31→12=14$ --- you can check
that by calculating $\Int((\pile(44)∖\pile(31))∪\pile(12))$.

By the way, this is one of the first things that I present to students
in a hands-on seminar course called ``$λ$-Calculus, Logics, and
Translations''... they learn how the interpret the definitions for
$⊤,⊥,∧,∨,→,¬$ in a ZHA, then they see that in these logics some
classical tautologies sometimes give results different from $⊤$,
%
%R local znotnotP =
%R 1/ T   \
%R  |  .  |
%R  | . c |
%R  |b . a|
%R  | P . |
%R  \  F  /
%R local T = {F="⊥", T="⊤", a="P'", b="P''", c="→"}
%R znotnotP:tozmp({def="znotnotP", scale="12pt", meta=nil}):addcells(T):addcontour():output()
%R
%R local zdemorgan =
%R 1/ T   \
%R  |  o  |
%R  | . . |
%R  |q . p|
%R  | P Q |
%R  \  a  /
%R local T = {F="⊥", T="⊤", p="P'", q="Q'", a="∧", o="∨"}
%R zdemorgan:tozmp({def="zdemorgan", scale="12pt", meta=nil}):addcells(T):addcontour():output()
%R
%R zdemorgan:tozmp({def="ohouse",    scale="12pt", meta=nil}):addlrs():output()
%
%UB (¬ ¬ P) → P
%UB     --   --
%UB     10   10
%UB    ---
%UB    02
%UB  -----
%UB   20
%UB ----------- 
%UB       12
%L
%L defub "notnotP"
%
%UB ¬(P ∧ Q) → (¬ P ∨ ¬ Q)
%UB   -- --      --    --
%UB   10 01      10    01
%UB   -----     ---   ---
%UB     00      02    20
%UB -------     ---------
%UB    32          22
%UB ----------------------
%UB          22
%L
%L defub "demorgan"
%
$$\pu
  \begin{array}{ccccl}
  \ohouse && \znotnotP  && \mat{\ub{notnotP}} \\ \\
          && \zdemorgan && \mat{\ub{demorgan}} \\
  \end{array}
$$
%
and only then they learn what is a Heyting Algebra, and they check
that ZHAs with these operations are Heyting Algebras, they learn
topologies, etc, etc... the ordering of topics is very unusual ---
from particular to general --- but it works!




%      _                                  _                 
%     | |       ___  _ __   ___ _ __ __ _| |_ ___  _ __ ___ 
%  _  | |_____ / _ \| '_ \ / _ \ '__/ _` | __/ _ \| '__/ __|
% | |_| |_____| (_) | |_) |  __/ | | (_| | || (_) | |  \__ \
%  \___/       \___/| .__/ \___|_|  \__,_|\__\___/|_|  |___/
%                   |_|                                     
%
% «J-operators»  (to ".J-operators")
\subsection{J-operators on ZHAs}
% (p2lp 1 "J-operators")
% (p2l    "J-operators")

\catcode`¹=13 \def¹{^{*}}
\catcode`²=13 \def²{^{**}}
\catcode`³=13 \def³{^{***}}

A {\sl J-operator} on a Heyting Algebra $H$ is a function $J:H→H$ that
obeys the axioms $\J1$, $\J2$, $\J3$ below; we usually write $J$ as
$·^*:Ω→Ω$, and write the axioms as rules.
%
%L addabbrevs(".\\eqJ.", " \\eqJ ")
%L -- addabbrevs("&", "\\&", "vv", "∨", "->", "→")
%L -- addabbrevs("<=", "≤", "!!", "^{**}", "!", "^*")
% (fooi "!!" "²" "!" "¹" "^*" "¹" "<=" "≤" "->" "→" "&" "∧" "vv" "∨")
%:
%:    -----\J1   ------\J2   ------------\J3
%:    P≤P¹       P¹=P²       (P∧Q)¹=P¹∧Q¹
%:
%:    ^J1         ^J2          ^J3
%:
\pu
$$\ded{J1} \qquad \ded{J2} \qquad \ded{J3}$$
\par $\J1$ says that the operation $·^*$ is non-decreasing.
\par $\J2$ says that the operation $·^*$ is idempotent.
\par $\J3$ is a bit mysterious but has amazing consequences.

\msk

A J-operator induces an equivalence relation: $P∼Q$ iff $P¹=Q¹$. Let's
write $[P]^J$ for the equivalence class of $P$.

It is possible to prove that every equivalence class $[P]^J$ has a
maximal element, a minimal element, and contains all the elements of
$H$ between the minimal and the maximal element, and nothing else.
Also, for all elements $Q∈[P]^J$ we have that $Q^*$ is the maximal
element of $[P]^J$. So we can represent a J-operator graphically by
the fences between its equivalence classes; if we interpret this as a
J-operator,
%
%L mp = mpnew({def="foo", meta="10pt"}, "1234567654321")
%L mp:addlrs():addcuts("c 10w-14n 11n-61n 42w-46n 44n-04e"):output()
$$\pu
  \foo
$$
%
then $32¹=44¹=44$, $30¹=61¹=61$, etc...

...but this has ``cuts stopping midway'', and a --- very non-trivial
--- consequence of $\J1$, $\J2$, $\J3$ is that we can't have ``cuts
stopping midway''!

{\bf Definition} (informal): a {\sl slashing} on a ZHA $H$ is any
drawing obtained by cutting $H$ by diagonals cuts without ``cuts
stopping midway''. This is an example of a ZHA with a slashing:
%
% (ph2p 4 "piccs-and-slashings")
% (ph2    "piccs-and-slashings")
%
%L mp = mpnew({def="ZQuot"},      "12345RR4321"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp = mpnew({def="ZQuotients"}, "1R2R3212RL1"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp:print()
%
$$\pu
  \ZQuotients
$$

I said that every J-operator ``is'' a slashing. The converse is also
true: every slashing ``is'' a J-operator.


%   ___                  _   _                             
%  / _ \ _   _  ___  ___| |_(_) ___  _ __    _ __ ___  ___ 
% | | | | | | |/ _ \/ __| __| |/ _ \| '_ \  | '_ ` _ \/ __|
% | |_| | |_| |  __/\__ \ |_| | (_) | | | | | | | | | \__ \
%  \__\_\\__,_|\___||___/\__|_|\___/|_| |_| |_| |_| |_|___/
%                                                          
% «question-marks»  (to ".question-marks")
\subsection{Question marks}
\label{question-marks}

Take a 2CG $(P,A)$, and choose a subset $Q⊆P$. This $Q$ will be the
{\sl set of question marks}, and we will represent it by drawing `?'s
at the side of its points. A structure $((P,A),Q)$ will be called a
{\sl 2CG with question marks}.

Suppose that $(P,A) \squigbij H$. A set of question marks $Q⊆P$
induces an equivalence relation $\eqQ$ on $H$: $ab \eqQ cd$ if and
only if $\pile(ab)$ and $\pile(cd)$ differ only on points of $Q$ ---
or, more formally, $\pile(ab)∖Q = \pile(cd)∖Q$.

It is easy to convert a set of question marks to a slashing and
vice-versa --- and slashings correspond to J-operators and vice-versa.
Our favourite way of writing these bijection is as:
%
$$((P,A),Q) \squigbij (H,J),$$
%
and here is a particular case of it:
%
$$\tcg{(P,A),Q} \squigbij \zha{O_A(P),J}$$

Note that if we erase the question marks and the cuts above we get a
particular case of $(P,A) \squigbij H.$





% (oxap 7 "fig:2CGs-ZHA")\
% (oxa    "fig:2CGs-ZHA")

% (oxap 7 "fig:2CGs-ZHA")
% (oxa    "fig:2CGs-ZHA")
% (oxap 7 "fig:2CGs-ZHA" "$Q$-equivalent")
% (oxa    "fig:2CGs-ZHA" "$Q$-equivalent")







%  _____                                     _                       
% |  ___|_ _ _ __ ___   ___  _   _ ___      | |       ___  _ __  ___ 
% | |_ / _` | '_ ` _ \ / _ \| | | / __|  _  | |_____ / _ \| '_ \/ __|
% |  _| (_| | | | | | | (_) | |_| \__ \ | |_| |_____| (_) | |_) \__ \
% |_|  \__,_|_| |_| |_|\___/ \__,_|___/  \___/       \___/| .__/|___/
%                                                         |_|        
%
%\subsection{Some famous J-operators}
% (ph2p 29 "polynomial-J-ops")
% (ph2     "polynomial-J-ops")
% (ph2     "polynomial-J-ops" "open quotient")




%  _____                                  __                   _     
% |_   _|__  _ __   ___  ___  ___  ___   / _| ___  _ __    ___| |__  
%   | |/ _ \| '_ \ / _ \/ __|/ _ \/ __| | |_ / _ \| '__|  / __| '_ \ 
%   | | (_) | |_) | (_) \__ \  __/\__ \ |  _| (_) | |    | (__| | | |
%   |_|\___/| .__/ \___/|___/\___||___/ |_|  \___/|_|     \___|_| |_|
%           |_|                                                      
%
% «toposes-for-children»  (to ".toposes-for-children")
\section{Toposes for children}

My favourite very short {\sl explanation} for what a topos is is:

\begin{enumerate}

\item a Cartesian Closed Category (CCC) is a category with a terminal,
  binary products, and exponentials,

\item CCCs are exactly the categories in which we can interpret the
  simply-typed $λ$-calculus (``$λ1$''),

\item the archetypal CCC is $\Set$ (see \cite{IDARCT}),

\item every Heyting Algebra is a CCC,

\item a topos is a CCC with pullbacks and a classifier object.

\item toposes are exactly the categories in which we can interpret a
  certain form of intuitionistic, typed Set Theory,

\item the archetypal topos is $\Set$,

\item the subcategory $\Sub(1)⊂\calE$ of a topos $\calE$ is a Heyting
  Algebra --- the ``logic'' of $\calE$,

\item for every small category $\catA$ the category $\Set^\catA$ is a
  topos,

\item for every 2CG $(P,A) \squigbij H$ the category $\Set^{(P,A)}$ is
  a topos whose ``logic'' is $H$.

\end{enumerate}


%   ____ _               _  __ _           
%  / ___| | __ _ ___ ___(_)/ _(_) ___ _ __ 
% | |   | |/ _` / __/ __| | |_| |/ _ \ '__|
% | |___| | (_| \__ \__ \ |  _| |  __/ |   
%  \____|_|\__,_|___/___/_|_| |_|\___|_|   
%                                          
% «classifier»  (to ".classifier")
\subsection{The classifier}


% From:
% (find-LATEX "2017planar-has-3.tex" "classifier")

%L tcg_big  = {scale="10pt", meta="p",   dv=2, dh=3, ev=0.32, eh=0.2}
%L tcg_med  = {scale= "8pt", meta="p s", dv=1, dh=2, ev=0.32, eh=0.25}
%L tcgnew = function (opts, def, str)
%L     return TCG.new(opts, def, unpack(split(str, "[ %d]+")))
%L   end
%L tcgbig  = function (def, spec) return tcgnew(tcg_big,  def, spec or tcg_spec) end
%L tcgmed  = function (def, spec) return tcgnew(tcg_med,  def, spec or tcg_spec) end
%L
%L tcg_bigq = {scale="10pt", meta="p",   dv=2, dh=3, ev=0.32, eh=0.2,  dq=1.4}
%L tcg_medq = {scale= "8pt", meta="p s", dv=1, dh=2, ev=0.32, eh=0.25, dq=1.4}
%L tcg_Medq = {scale="10pt", meta="p",   dv=1, dh=3, ev=0.32, eh=0.25, dq=1.4}
%L
%L tcgbigq = function (def, spec) return tcgnew(tcg_bigq, def, spec or tcg_spec) end
%L tcgmedq = function (def, spec) return tcgnew(tcg_medq, def, spec or tcg_spec) end
%L tcgMedq = function (def, spec) return tcgnew(tcg_Medq, def, spec or tcg_spec) end

%L -- (find-dn6 "zhas.lua" "TCG")
%L -- (find-dn6 "zhas.lua" "TCG" "lrs =")
%L
%L TCG.__index.QL    = function (tcg, y) return v(0     -tcg.lp.dq, tcg.dv*y) end
%L TCG.__index.QR    = function (tcg, y) return v(tcg.dh+tcg.lp.dq, tcg.dv*y) end
%L TCG.__index.putql = function (tcg, y, str) tcg.lp:put(tcg:QL(y), str) end
%L TCG.__index.putqr = function (tcg, y, str) tcg.lp:put(tcg:QR(y), str) end
%L TCG.__index.qmarks = function (tcg, lstr, rstr)
%L     for y=1,tcg.l do tcg:putql(y, lstr:sub(y, y)) end
%L     for y=1,tcg.r do tcg:putqr(y, rstr:sub(y, y)) end
%L     return tcg
%L   end

%L mytcgspec  = "3, 3; 32, 13"
%L myspec = "1232RL1"
%L mycuts = "c 32/10 012|3"
%L mytop  = v"35"
%L myf    = "lr -> lr:below(mytop) and lr:lr() or '..'"
%L 
%L foo = function (top, opts)
%L     mytop = v(top)
%L     mpnew(opts, myspec):addcutssub(mytop, mycuts):zhalrf0(myf):print():output()
%L   end
%L foo("33", {zdef="(H,J)"})
%L
%L foo("32", {zdef="3_"})
%L foo("20", {zdef="2_"})
%L foo("10", {zdef="1_"})
%L foo("13", {zdef="_3"})
%L foo("02", {zdef="_2"})
%L foo("01", {zdef="_1"})

%L claOpts = {scale="90pt", meta="p",   dv=1.2, dh=1.4, ev=0.45, eh=0.28}
%L claT = tcgnew(claOpts, "fooT", mytcgspec)
%L claT:strs("\\zha{1_} \\zha{2_} \\zha{3_}", "\\zha{_1} \\zha{_2} \\zha{_3}"):hs():vs():output()

%L local tcg = tcgbigq("footcg", mytcgspec)
%L tcg:lrs():hs():vs()
%L tcg:qmarks("? ?", "?? ")
%L tcg:output()


Choose a 2CG $(P,A)$. Let $\calE$ be the topos $\Set^{(P,A)}$. There
is an easy way to draw the classifier $Ω_\calE$, but the result is
big. Let's see an example. Suppose that $(P,A) \squigbij H$ is:
%
\pu
$$\footcg
  \quad
  \squigbij
  \quad
  \zha{(H,J)}
$$

Ignore the question marks and the slashing for the moment. Then
$Ω_\calE$ is (ignoring the slashings):
%
$$\fooT$$

Now stop ignoring the question marks and the slashing above. We get an
2CG with question marks $((P,A),Q)$ and its associated ZHA with
J-operator $(H,J)$...



% $$(H,J) = \zha{(H,J)}
%   \quad
%   \squigbij
%   \quad
%   ((P,A),Q) = \footcg
% $$
% 
% $$\calE = \Set^{(P,A)} = \Set^{\footcg}$$





%  _                    _                   
% | |    ___   ___ __ _| |   ___  _ __  ___ 
% | |   / _ \ / __/ _` | |  / _ \| '_ \/ __|
% | |__| (_) | (_| (_| | | | (_) | |_) \__ \
% |_____\___/ \___\__,_|_|  \___/| .__/|___/
%                                |_|        
% «local-operators»  (to ".local-operators")
%\subsection{Local operators}




%\section{Geometric morphisms}
% (oxap 5 "fig:internal-gms")
% (oxa    "fig:internal-gms")

% (oxap 8 "two-factorizations-gms")
% (oxa    "two-factorizations-gms")

% (find-LATEXfile "2019oxford-abs.tex" "Conditions on the functors")


%  _____          _             _          _   _             
% |  ___|_ _  ___| |_ ___  _ __(_)______ _| |_(_) ___  _ __  
% | |_ / _` |/ __| __/ _ \| '__| |_  / _` | __| |/ _ \| '_ \ 
% |  _| (_| | (__| || (_) | |  | |/ / (_| | |_| | (_) | | | |
% |_|  \__,_|\___|\__\___/|_|  |_/___\__,_|\__|_|\___/|_| |_|
%                                                            
% «the-factorization»  (to ".the-factorization")
\section{The factorization}
\label{the-factorization}

% (oxap 9 "fig:factorizations")
% (oxa    "fig:factorizations")


%  _____          _             _          _   _             
% |  ___|_ _  ___| |_ ___  _ __(_)______ _| |_(_) ___  _ __  
% | |_ / _` |/ __| __/ _ \| '__| |_  / _` | __| |/ _ \| '_ \ 
% |  _| (_| | (__| || (_) | |  | |/ / (_| | |_| | (_) | | | |
% |_|  \__,_|\___|\__\___/|_|  |_/___\__,_|\__|_|\___/|_| |_|
%                                                            
% «two-factorizations-gms»  (to ".two-factorizations-gms")
% (oxap 8 "two-factorizations-gms")
% (oxa    "two-factorizations-gms")

%\section{Two factorizations of geometric morphisms}
%\label{two-factorizations-gms}

The Elephant presents in its sections A4.2 and A4.5 two factorizations
of geometric morphisms that can be combined in a single diagram ---
see Figure~\ref{fig:factorization-1}. An arbitrary geometry morphism
$g:\calA→\calD$ can be factored in an essentially unique way as a
surjection followed by an inclusion ([EA4.2.10]), and an inclusion
$i:\calB→\calD$ can be factored in an essentially unique way as a
dense g.m.\ followed by a closed g.m.\ ([EA4.5.20]). A canonical way
to build these factorizations is by taking $\calB := \calA_\bbG$,
where $\bbG$ is a certain comonad on $\calA$ ([EA4.2.8]), and taking
$\calC := \sh_j(\calD)$, where $j$ is a certain local operator on
$\calD$.

% (elep 10 "elephant-fact-p.182")
% (ele     "elephant-fact-p.182")
% (elep 10 "elephant-A4.2.10" "surjection followed by an inclusion")
% (ele     "elephant-A4.2.10" "surjection followed by an inclusion")
% (find-elephantpage (+ 17 183) "Theorem 4.2.10")

% (elep 16 "elephant-A4.5.20" "factorization" "dense" "closed")
% (ele     "elephant-A4.5.20" "factorization" "dense" "closed")

% (vgmp 15 "a-factorization")
% (vgm     "a-factorization")

% «fig:factorizations»  (to ".fig:factorizations")
% (oxap 9 "fig:factorizations")
% (oxa    "fig:factorizations")
%
%D diagram factorization-1
%D 2Dx     100 +50 +40 +40
%D 2D  100 A0          A3
%D 2D
%D 2D  +12 B0  B1      B3
%D 2D
%D 2D  +12     C1  C2  C3
%D 2D
%D 2D  +12     D1  D2
%D 2D
%D ren A0       A3 ==> \calA             \calD
%D ren B0 B1    B3 ==> \calA \calB       \calD
%D ren    C1 C2 C3 ==>       \calB \calC \calD
%D ren    D1 D2    ==> \calA_\bbG \sh_j(\calD)
%D
%D (( A0 A3 -> .plabel= a \vtext{g}{\anygm}
%D    B0 B1 -> .plabel= a \vtext{s}{surjection}
%D    B1 B3 -> .plabel= a \vtext{i}{inclusion}
%D    C1 C2 -> .plabel= a \vtext{d}{dense}
%D    C2 C3 -> .plabel= a \vtext{c}{closed}
%D    D1 place
%D    D2 place
%D ))
%D enddiagram
%D
%D diagram factorization-2
%D 2Dx     100 +55 +45 +45
%D 2D  100 A0          A3
%D 2D
%D 2D  +12 B0  B1      B3
%D 2D
%D 2D  +12     C1  C2  C3
%D 2D
%D 2D  +12     D1  D2
%D 2D
%D 2D  +20 a0          a3
%D 2D
%D 2D  +12 b0  b1      b3
%D 2D
%D 2D  +12     c1  c2  c3
%D 2D
%D ren A0       A3 ==> \Set^\catA                       \Set^\catD
%D ren B0 B1    B3 ==> \Set^\catA \Set^\catB            \Set^\catD
%D ren    C1 C2 C3 ==>            \Set^\catB \Set^\catC \Set^\catD
%D ren    D1 D2    ==>     (\Set^\catA)_\bbG \sh_j(\Set^\catD)
%D
%D ren a0       a3 ==>       \catA                           \catD
%D ren b0 b1    b3 ==>       \catA     \catB                 \catD
%D ren    c1 c2 c3 ==>                 \catB      \catC      \catD
%D
%D (( A0 A3 -> .plabel= a \vtext{g}{\anygm}
%D    B0 B1 -> .plabel= a \vtext{s}{surjection}
%D    B1 B3 -> .plabel= a \vtext{i}{inclusion}
%D    C1 C2 -> .plabel= a \vtext{d}{dense}
%D    C2 C3 -> .plabel= a \vtext{c}{closed}
%D    D1 place
%D    D2 place
%D    a0 a3 -> .plabel= a g
%D    b0 b1 -> .plabel= a s
%D    b1 b3 -> .plabel= a i
%D    c1 c2 -> .plabel= a d
%D    c2 c3 -> .plabel= a c
%D ))
%D enddiagram
%D
%D diagram fact-characterization
%D 2Dx     100 +20 +30 +20 +45 +20 +30 +20 +35 +20 +30 +20 +20 +20 +30 +20
%D 2D  100 A0  A1  A2  A3  B0  B1                  B2  B3  
%D 2D                                                      
%D 2D  +20 A4  A5  A6  A7  B4  B5                  B6  B7  
%D 2D                                                      
%D 2D  +20     A8  A9          B8                  B9      
%D 2D                                                      
%D 2D  +20     a8  a9          b8                  b9      
%D 2D
%D 2D  +20                 C0  C1  C2  C3  D0  D1  D2  D3 
%D 2D                                                     
%D 2D  +20                 C4  C5  C6  C7  D4  D5  D6  D7 
%D 2D                                                     
%D 2D  +20                     C8  C9          D8  D9     
%D 2D                                                     
%D 2D  +20                     c8  c9          d8  d9     
%D 2D
%D ren A4 A5 A6 A0 ==> A A s_*A s^*s_*A
%D ren A3 A2 A1 A7 ==> B B s^*B s_*s^*B
%D ren A8 A9 a8 a9 ==> \Set^\catA \Set^\catB \catA \catB
%D
%D ren B4 B5 B6 B0 ==> B B i_*B i^*i_*B
%D ren B3 B2 B1 B7 ==> D D i^*D i_*i^*D
%D ren B8 B9 b8 b9 ==> \Set^\catB \Set^\catD \catB \catD
%D
%D ren C4 C5 C6 C0 ==>  B B d_*B d^*d_*B
%D ren C3 C2 C1 C7 ==> kC C d^*C d_*d^*kC
%D ren C8 C9 c8 c9 ==> \Set^\catB \Set^\catC \catB \catC
%D
%D ren D4 D5 D6 D0 ==> C C c_*C c^*c_*C
%D ren D3 D2 D1 D7 ==> D D c^*D c_*c^*D
%D ren D8 D9 d8 d9 ==> \Set^\catC \Set^\catD \catC \catD
%D
%D (( A0 A4 -> .plabel= l {}
%D    A3 A7 -> .plabel= r \text{(monic)}
%D    A1 A2 <-| A1 A5 -> A2 A6 -> A5 A6 |->
%D    A1 A6 harrownodes nil 20 nil <->
%D    A8 A9 <- sl^ .plabel= a s^*
%D    A8 A9 -> sl_ .plabel= b s_*
%D    a8 a9 ->     .plabel= a s
%D ))
%D 		   
%D (( B0 B4 -> .plabel= l \text{(iso)}
%D    B3 B7 -> .plabel= r {}
%D    B1 B2 <-| B1 B5 -> B2 B6 -> B5 B6 |->
%D    B1 B6 harrownodes nil 20 nil <->
%D    B8 B9 <- sl^ .plabel= a i^*
%D    B8 B9 -> sl_ .plabel= b i_*
%D    b8 b9 ->     .plabel= a i
%D ))
%D 		   
%D (( C0 C4 -> .plabel= l {}
%D    C3 C7 -> .plabel= r \sm{\text{(monic}\\\text{on\;c.p.s)}}
%D    C1 C2 <-| C1 C5 -> C2 C6 -> C5 C6 |->
%D    C1 C6 harrownodes nil 20 nil <->
%D    C8 C9 <- sl^ .plabel= a d^*
%D    C8 C9 -> sl_ .plabel= b d_*
%D    c8 c9 ->     .plabel= a d
%D ))
%D 		   
%D (( D0 D4 -> .plabel= l {}
%D    D3 D7 -> .plabel= r {}
%D    D1 D2 <-| D1 D5 -> D2 D6 -> D5 D6 |->
%D    D1 D6 harrownodes nil 20 nil <->
%D    D8 D9 <- sl^ .plabel= a c^*
%D    D8 D9 -> sl_ .plabel= b c_*
%D    d8 d9 ->     .plabel= a c
%D ))
%D 		   
%D enddiagram
%D
\pu
%\begin{figure}[!htbp]
%  \centering
  $$
   \def\vtext#1#2{#1\text{ (#2)}}
   \def\anygm{any g.m.}
   \diag{factorization-1}
  $$

  %\caption{Two factorizations of geometric morphisms.}
  %\label{fig:factorization-1}
  % \bsk
  % \bsk
  % \bsk
  % $$
  %  \def\vtext#1#2{#1\text{ (#2)}}
  %  \def\anygm{any g.m.}
  %  \diag{factorization-2}
  % $$
  %\caption{The same factorizations, but on ZGMs.}
  %\label{fig:factorization-2}
  \bsk
  \bsk
  \bsk
  $\resizebox{0.8\colwidth}{!}{$%
    \diag{fact-characterization}
  $}
  $
  %\caption{Conditions on the functors $\catA \ton{s} \catB \ton{i}
  %  \catD$ and $\catB \ton{d} \catC$.}
  %\label{fig:factorization-3}
%\end{figure}

These factorizations are almost completely opaque to people who know
just the basics of toposes. How can we produce a version ``for
children'' of them in the sense of the introduction?

The trick is to start with geometric morphisms whose internal views
can be drawn explicity --- the ZGMs of section
\ref{internal-diagrams}. Actually we start with the lower level of
Figure 2, and with the 𝐢{belief} that all factorizations can be
performed within ZGMs.





%  _____          _               _________ __  __     
% |  ___|_ _  ___| |_ ___  _ __  |__  / ___|  \/  |___ 
% | |_ / _` |/ __| __/ _ \| '__|   / / |  _| |\/| / __|
% |  _| (_| | (__| || (_) | |     / /| |_| | |  | \__ \
% |_|  \__,_|\___|\__\___/|_|    /____\____|_|  |_|___/
%                                                      
% «two-factorizations-zgms»  (to ".two-factorizations-zgms")
% (oxap 10 "two-factorizations-zgms")
% (oxa     "two-factorizations-zgms")

\section{Two factorizations of ZGMs}
\label{two-factorizations-gms}

The Elephant defines surjections by a list of equivalent conditions,
and the same for inclusions and dense and closed geometric morphisms.
Some of these conditions --- the ones drawn in
Figure~\ref{fig:factorization-3} --- are very easy to test on ZGMs.

% (elep 8 "elephant-A4.2.6" "surjection")
% (elep 9 "elephant-A4.2.6" "surjection" "(iv)")
% (ele    "elephant-A4.2.6" "surjection")
% [EA] 4.2.6 (iv)
%
1. $\Set^\catA \ton{s} \Set^\catB$ is a 𝐢{surjection} when for every
object $B∈\Set^\catB$ the unit map $ηB$ is monic ([EA4.2.6 (iv)]);

% (elep 9 "elephant-A4.2.9" "inclusion")
% (ele    "elephant-A4.2.9" "inclusion")
% [EA], 4.2.8-4.2.9
%
2. $\Set^\catB \ton{i} \Set^\catD$ is an 𝐢{inclusion} when for every
object $B∈\Set^\catB$ the counit map $εB$ is an iso ([EA4.2.8]);

% (elep 5 "dense-closed")
% (ele    "dense-closed")
% (elep 16 "elephant-A4.5.20" "factorization" "dense" "closed")
% (ele     "elephant-A4.5.20" "factorization" "dense" "closed")
%
3. $\Set^\catB \ton{d} \Set^\catC$ is an 𝐢{dense} when for every
constant presheaf $kC$ the unit map $εkC$ is a monic 𝐢{[I can't find a
    reference for this now]}.

\msk

We also have two conditions for ``dense'' and ``close'' that are easy
to state on ``restrictions'' in the sense of section
\ref{restrictions} --- but it's not trivial to derive them from the
material in the Elephant. Let's state them anyway:

4. A restriction $\Set^\catB \ton{d} \Set^\catC$ is 𝐢{dense} when all
its question marks ``have non-question marks ahead of them'', i.e.:
for every $α$ in $\catC$ such that $α∈Q$ there is an arrow $α→β$ in
$\catC$ with $β \not∈ Q$;

5. A restriction $\Set^\catC \ton{d} \Set^\catD$ is 𝐢{closed} when all
its question marks ``are at the end'', i.e.: there are no arrows $α→β$
in $\catD$ with $α∈Q$ and $β \not∈ Q$.

\msk

We will say that a ZFunctor $\catA \ton{s} \catB$ 𝐢{induces a
  surjection} when the ZGM $\Set^\catA \ton{s} \Set^\catB$ induced by
it is a surjection; and the same for inclusion, dense, and closed.

How can we factor a ZFunctor $\catA \ton{g} \catD$ into ZFunctors
$\catA \ton{s} \catB \ton{i} \catD$ that induce a surjection and an
inclusion, and how do we factor this $\catB \ton{i} \catD$ into $\catB
\ton{d} \catC \ton{c} \catD$? Here is a way to get a good part of a
possible answer.

We can think that a ZFunctor $f:\catX→\catY$ does several 𝐢{actions}.
If we think that $\catX$ is ``before'' and $\catY$ is ``after'', then
$f$ can, for example: create isolated objects, collapse isolated
objects, collapse two ordered objects, create an arrow, create objects
at the beginning of a connected set, create objects at the middle of a
connected set, create objects at the end of a connected set... here
are some examples that only do one of these actions each:
%
$$\def\-{\hbox{$→$}}
  \def\.{\phantom{\hbox{$→$}}}
  \begin{array}{rcl}
  % surjective actions:
  %
        (1 \- 1') &→& (1) \\
        (1 \. 1') &→& (1) \\
         (1 \. 2) &→& (1 \- 2) \\
  %
  % dense actions:
              (2) &→& (1 \- 2) \\
         (1 \- 3) &→& (1 \- 2 \- 3) \\
  %
  % closed actions:
              (1) &→& (1 \. 2) \\
              (1) &→& (1 \- 2) \\
  \end{array}
$$

When we take $\catA \ton{g} \catD$ as each one of the seven ZFunctors
and we try to factor that $g$ as $\catA \ton{s} \catB \ton{d} \catC
\ton{c} \catD$ we see that the first three functors factor as $(s=g,
d=\id, c=\id)$, the next two as $(s=\id, d=g, c=\id)$, and the last
two as $(s=\id, d=\id, c=g)$. The leads to a:

% (find-es "tex" "newtheorem")

% \begin{conjecture}

{\bf Theorem.}
Take a ZFunctor $\catA \ton{g} \catD$. Factor it into $\catA \ton{s}
\catB \ton{d} \catC \ton{c} \catD$ in the following way: $s$ collapses
objects and creates arrows; $c$ creates objects at the middle and at
the beginnings of connected sets; $d$ creates objects at the ends of
connected sets. Then this factorization of ZFunctors induces a
surjective-dense-closed factorization of ZGMs.

%\end{conjecture}





% (ph1p 8 "ZHAs")
% (ph1    "ZHAs")

















%  ____       __                                   
% |  _ \ ___ / _| ___ _ __ ___ _ __   ___ ___  ___ 
% | |_) / _ \ |_ / _ \ '__/ _ \ '_ \ / __/ _ \/ __|
% |  _ <  __/  _|  __/ | |  __/ | | | (_|  __/\__ \
% |_| \_\___|_|  \___|_|  \___|_| |_|\___\___||___/
%                                                  
% «references»  (to ".references")
% (find-LATEX "2019oxford-abs.tex" "references")
% (find-es "tex" "bibtex-2017")
% (find-kopkadaly4page (+ 12 217) "9.3.1   Bibliography by hand")
% (find-kopkadaly4text (+ 12 217) "9.3.1   Bibliography by hand")
% (find-kopkadaly4page (+ 12 310) "\\bibliographystyle{style}")
% (find-kopkadaly4text (+ 12 310) "\\bibliographystyle{style}")



% TO HERE

\printbibliography




\end{document}

(fooi "2019elephant-poster" "2019ilha-grande-poster")

% «write-poster-body»  (to ".write-poster-body")
% (find-LATEX "2019ilha-grande-poster.tex" "input-poster-body")
% (find-LATEX "2019ilha-grande-poster-body.tex")

* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
fname1 = "2019ilha-grande-poster-a4.tex"     -- input
fname2 = "2019ilha-grande-poster-body.tex"   -- output
bigstr = ee_readfile(fname1)
smallerstr = bigstr:match("%% FROM HERE.-%% TO HERE\n")
head = "\\directlua{tf_push(\""..fname2.."\")}\n"
tail = "\\directlua{tf_pop()}\n"
= head
= tail
newbody = head..smallerstr..tail
ee_writefile(fname2, newbody)
-- (find-fline "2019ilha-grande-poster-body.tex")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-LATEXfile "2017planar-has-1.mk")
make -f 2017planar-has-1.mk STEM=2019ilha-grande-poster-a4 veryclean
make -f 2017planar-has-1.mk STEM=2019ilha-grande-poster-a4 pdf
make -f 2017planar-has-1.mk STEM=2019ilha-grande-poster veryclean
make -f 2017planar-has-1.mk STEM=2019ilha-grande-poster pdf
# (igap)
# (igap 18)
# (igpp)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
mount
sudo umount /dev/sdb1
mkdir /tmp/pen/
sudo mount -o uid=$UID         /dev/sdb1 /tmp/pen/
sudo mount -o uid=$UID         /dev/sdc1 /tmp/pen/
sudo mount -o uid=$UID         /dev/sdb  /tmp/pen/
sudo mount -o uid=$UID         /dev/sdc  /tmp/pen/
# (find-fline "/tmp/pen/")

cp -v ~/LATEX/2019ilha-grande-poster.pdf /tmp/pen/
# (find-pdf-page "/tmp/pen/2019ilha-grande-poster.pdf")

sudo umount /tmp/pen
sync




\end{document}

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