% (find-angg "LATEX/2009unilog-dnc.tex")
% (find-dn4ex "edrx08.sty")
% (find-angg ".emacs.templates" "s2008a")
% (find-angg                 ".zshrc" "makebbl")
% (defun b () (interactive) (find-zsh "makebbl 2009unilog-dnc.bbl catsem,filters"))
% (defun b () (interactive) (find-zsh "bibtex  2009unilog-dnc"))
% (defun b () (interactive) (find-zsh "bibtex  2009unilog-dnc; makeindex 2009unilog-dnc"))
% (defun c () (interactive) (find-zsh "cd ~/LATEX/ && ~/dednat4/dednat41 2009unilog-dnc.tex && latex    2009unilog-dnc.tex"))
% (defun c () (interactive) (find-zsh "cd ~/LATEX/ && ~/dednat4/dednat41 2009unilog-dnc.tex && pdflatex 2009unilog-dnc.tex"))
% (eev "cd ~/LATEX/ && Scp 2009unilog-dnc.{dvi,pdf} edrx@angg.twu.net:slow_html/LATEX/")
% (defun d () (interactive) (find-dvipage "~/LATEX/2009unilog-dnc.dvi"))
% (defun i () (interactive) (find-LATEXsh "egrep '^% \\((chap|sec|subsec) ' 2009unilog-dnc.tex"))
% (defun i () (interactive) (find-LATEXsh "egrep '\\\\index' 2009unilog-dnc.tex"))
% (defun i () (interactive) (find-LATEXgrep "grep -nH -e '\\\\index' 2009unilog-dnc.tex"))
% (find-dvipage "~/LATEX/2009unilog-dnc.dvi")
% (find-pspage  "~/LATEX/2009unilog-dnc.pdf")
% (find-pspage  "~/LATEX/2009unilog-dnc.ps")
% (find-zsh0 "cd ~/LATEX/ && dvips -D 300 -o 2009unilog-dnc.ps 2009unilog-dnc.dvi")
% (find-zsh0 "cd ~/LATEX/ && dvips -D 600 -P pk -o 2009unilog-dnc.ps 2009unilog-dnc.dvi && ps2pdf 2009unilog-dnc.ps 2009unilog-dnc.pdf")
% (find-zsh0 "cd ~/LATEX/ && dvips -D 600 -P pk -o 2009unilog-dnc.ps 2009unilog-dnc.dvi && ps2pdf 2009unilog-dnc.ps 2009unilog-dnc.pdf")
% (find-zsh0 "cd ~/LATEX/ && dvips -D 300 -o tmp.ps tmp.dvi")
% (find-pspage  "~/LATEX/tmp.ps")
% (ee-cp "~/LATEX/2009unilog-dnc.pdf" (ee-twupfile "LATEX/2009unilog-dnc.pdf") 'over)
% (ee-cp "~/LATEX/2009unilog-dnc.pdf" (ee-twusfile "LATEX/2009unilog-dnc.pdf") 'over)
% http://angg.twu.net/LATEX/2009unilog-dnc.pdf

% (find-LATEXfile "2009unilog-dnc.bbl")
% (find-LATEXfile "2009unilog-dnc.ilg")
% (find-LATEXfile "2009unilog-dnc.ind")

% (find-angg "bin/gsub.lua")
% (find-LATEXfile "2009unilog-dnc.aux" "\\newlabel{dn-lawvere-70-eq}{{3.24.3}{47}}")
% (find-LATEXsh0 "gsub.lua '^.newlabel{dn-(.*)' '(%1)' < 2009unilog-dnc.aux")
% (find-LATEXsh0 "gsub.lua '^.newlabel{(.*)}' '(%1)' < 2009unilog-dnc.aux")
% (find-LATEXsh0 "echo gsub.lua '^.newlabel{(.*)}' '(%1)'")

% (find-fline "/tmp/pen/")
% (find-sh0 "cp -v ~/LATEX/2009unilog-dnc.pdf /tmp/pen/")

% (fooi-re "\\\\mysection {\\([^{}]*\\)} {\\([^{}]*\\)}" "% (sec \"\\1\" \"\\2\")")

% (find-LATEX "2009unilog-abs1.tex")



\documentclass[oneside]{book}
% \documentclass[oneside]{article}
\usepackage[colorlinks]{hyperref} % (find-es "tex" "hyperref")
\usepackage[latin1]{inputenc}
\usepackage{longtable}
% (find-es "tex" "makeindex")
\usepackage{makeidx}
\usepackage{showidx}
\usepackage{showlabels}
\makeindex
\usepackage{edrx08}       % (find-dn4ex "edrx08.sty")
%L process "edrx08.sty"  -- (find-dn4ex "edrx08.sty")
\input edrxheadfoot.tex   % (find-dn4ex "edrxheadfoot.tex")
\begin{document}

\def\diagprep#1{}
\def\defprepareddiag#1#2#3{\expandafter\def\csname diag-#1\endcsname{#2\bfig#3\efig}}
\def\defdiag#1#2{\expandafter\def\csname diag-#1\endcsname{\bfig#2\efig}}
\def\ifdiagundefined#1{\expandafter\ifx\csname diag-#1\endcsname\relax}
\def\diag#1{\ifdiagundefined{#1}
    \errmessage{UNDEFINED DIAGRAM: #1}
  \else
    \csname diag-#1\endcsname
  \fi
}
%

\input 2009unilog-dnc.dnt

%
% (eedn4-51-bounded)

%Index of the slides:
%\msk
% To update the list of slides uncomment this line:
%\makelos{tmp.los}
% then rerun LaTeX on this file, and insert the contents of "tmp.los"
% below, by hand (i.e., with "insert-file"):
% (find-fline "tmp.los")
% (insert-file "tmp.los")

\widemtos

% (find-es "tex" "llangle-and-rrangle")
% (find-dn4ex "edrx08.sty" "ttchars")
% (find-symbolspage 54 "\\llangle")
% (find-symbolstext    "\\llangle")
% http://ubuntuforums.org/archive/index.php/t-722871.html
\def\llangle{\langle\!\langle}
\def\rrangle{\rangle\!\rangle}
\def\angg#1{\llangle#1\rrangle}
\def\nat{\natural}
\def\myotherttchars{
  \def«{\ttchar{$\llangle$}}
  \def»{\ttchar{$\rrangle$}}
  }
\def\myttchars{\basicttchars\myotherttchars}

% For "article":
\def\mychapter   #1#2{\section{#1}\label{#2}}
\def\mysection   #1#2{\subsection{#1}\label{#2}}
\def\mysubsection#1#2{\subsubsection{#1}\label{#2}}

% For "book":
\def\mychapter   #1#2{\chapter{#1}\label{#2}}
\def\mysection   #1#2{\section{#1}\label{#2}}
\def\mysubsection#1#2{\subsection{#1}\label{#2}}

\def\Sub{¯{Sub}}
\def\Sub{\text{Sub}}
\def\Cod{\operatorname{Cod}}
\def\Nat{\operatorname{Nat}}

\def\Monicto{\diagxyto/ >->/<150>}
\def\CanSub{\operatorname{CanSub}}
\def\Sub   {\operatorname{Sub}}



%:&\land 
%:==\equiv 
%:>->\monicto 
%:-.->\TNto 

%% (find-dn4 "experimental.lua" "thereplusxy")
%L thereplusxy = function (dx, dy, tag)
%L     ds[1] = storenode({x = ds[1].x + dx, y = ds[1].y + dy, tag = tag})
%L     return ds[1]
%L   end
%L forths["there+xy:"] = function ()
%L     thereplusxy(getwordasluaexpr(), getwordasluaexpr(), getword())
%L   end

\def\Eq{Ð{Eq}}
\def\sm#1{\begin{smallmatrix}#1\end{smallmatrix}}
\def\catAK{{\catA_T}}
\def\catAEM{{\catA^T}}
\def\KOBJ  #1#2{[#1 \diagxyto/-->/<150> #2]}
\def\EMOBJ #1#2#3{[#1 \diagxyto/<-/<150>^{#3} #2]}
\def\EMOBJT#1#2{[#1 \diagxyto/<-/<150>^{#2} T#1]}

\def\projdiag#1#2#3#4#5#6{
  #1 \diagxyto/<-/<#5>^{_{#2#3}} #2×#3 \diagxyto/->/<#6>^{'_{#2#3}} #4
}

\def\ren    {¯{ren}}
\def\iso    {¯{iso}}

\def\Cur     {¯{Cur}^\sharp}
\def\Uncur   {¯{Cur}^\flat}
\def\Cur     {¯{Cur}}
\def\Uncur   {¯{Uncur}}
\def\Ptrue   {ÐP§}
\def\Ptruenat{ÐP§^\nat}
\def\Pand    {ÐP´}
\def\Pandnat {ÐP´^\nat}
\def\Pimp    {ÐP¶}
\def\Pimpnat {ÐP¶^\nat}
\def\Frob    {Ð{Frob}}
\def\Frobnat {Ð{Frob}^\nat}
\def\BCCL    {Ð{BCCL}}
\def\BCCLnat {Ð{BCCL}^\nat}
\def\BCCR    {Ð{BCCR}}
\def\BCCRnat {Ð{BCCR}^\nat}
\def\BCCex   {Ð{BCCÎ}}
\def\BCCexnat{Ð{BCCÎ}^\nat}
\def\BCCeq   {Ð{BCC{=}}}
\def\BCCeqnat{Ð{BCC{=}}^\nat}
\def\BCCfa   {Ð{BCCÎ}}
\def\BCCfanat{Ð{BCCÎ}^\nat}

\def\cur{\operatorname{cur}}
\def\uncur{\operatorname{uncur}}
\def\app{\operatorname{app}}
\def\lnameof#1{\ulcorner#1\urcorner}



\tableofcontents



% Set the marker "i" to the end of the list of anchors
% before running the <<myexpandsecs>>...
%
% (defun mymove () (interactive) (eek "C-a C-SPC <down> C-w   C-x r SPC a  C-x r j i   C-y   C-x r SPC i  C-x r j a"))
% (defun myexpandsec () (interactive (eek "M-e 2*RET 7*<up> <<mymove>> RET 6*<down>")))
% (setq last-kbd-macro (kbd "<<myexpandsec>>"))
% (eek "C-e 2*RET C-x r SPC i")



% «.introduction»		(to "introduction")
%   «.abstract»			(to "abstract")
%   «.no-theorems»		(to "no-theorems")
% «.syntactical-world»		(to "syntactical-world")
%   «.proto-cats»		(to "proto-cats")
%   «.proto-functors»		(to "proto-functors")
%   «.proto-NTs»		(to "proto-NTs")
%   «.proto-isos»		(to "proto-isos")
%   «.proto-epis-and-monics»	(to "proto-epis-and-monics")
%   «.proto-adjunctions»	(to "proto-adjunctions")
%   «.proto-monads»		(to "proto-monads")
%     «.proto-kleisli»		(to "proto-kleisli")
%     «.proto-EM»		(to "proto-EM")
%     «.proto-comparison»	(to "proto-comparison")
%     «.proto-monadicity»	(to "proto-monadicity")
%     «.proto-beck»		(to "proto-beck")
%   «.proto-universals»		(to "proto-universals")
%   «.proto-yoneda»		(to "proto-yoneda")
%   «.proto-products»		(to "proto-products")
%   «.to-deserve-a-name»	(to "to-deserve-a-name")
%     «.mad-names»		(to "mad-names")
%   «.proto-exponentials»	(to "proto-exponentials")
%   «.proto-terminals»		(to "proto-terminals")
%   «.proto-cart-cats»		(to "proto-cart-cats")
%   «.proto-CCCs»		(to "proto-CCCs")
%   «.proto-ind-fib-hyp»	(to "proto-ind-fib-hyp")
%     «.proto-subobjects»	(to "proto-subobjects")
%     «.proto-arch-fibration»	(to "proto-arch-fibration")
%     «.proto-indexed-cats»	(to "proto-indexed-cats")
%     «.proto-cart-morphs»	(to "proto-cart-morphs")
%     «.proto-cleavages»	(to "proto-cleavages")
%     «.proto-cleavages-2»	(to "proto-cleavages-2")
%     «.proto-change-of-base»	(to "proto-change-of-base")
%     «.proto-fibers»		(to "proto-fibers")
%     «.proto-preservations»	(to "proto-preservations")
%     «.proto-frobenius»	(to "proto-frobenius")
%     «.proto-BCC»		(to "proto-BCC")
%     «.proto-adjs-to-cobs»	(to "proto-adjs-to-cobs")
% «.dn-intro»			(to "dn-intro")
%   «.dn-simple»		(to "dn-simple")
%   «.dn-functors»		(to "dn-functors")
%   «.dn-cats»			(to "dn-cats")
%   «.dn-pseudopoints»		(to "dn-pseudopoints")
%   «.dn-NTs»			(to "dn-NTs")
%   «.dn-adjunctions»		(to "dn-adjunctions")
%   «.dn-CCCs»			(to "dn-CCCs")
%   «.dn-contexts»		(to "dn-contexts")
%     «.dn-contexts-single»	(to "dn-contexts-single")
%     «.dn-context-morphs»	(to "dn-context-morphs")
%     «.dn-contexts-multi»	(to "dn-contexts-multi")
%     «.dn-discharges»		(to "dn-discharges")
%   «.dn-subsets»		(to "dn-subsets")
%   «.dn-subobjects»		(to "dn-subobjects")
%   «.dn-proj-functors»		(to "dn-proj-functors")
%   «.dn-uc-intro»		(to "dn-uc-intro")
%     «.dn-uc-semi-logical»	(to "dn-uc-semi-logical")
%     «.dn-uc-lawvere»		(to "dn-uc-lawvere")
%     «.dn-uc-seely»		(to "dn-uc-seely")
%     «.dn-uc-jacobs»		(to "dn-uc-jacobs")
%     «.dn-uc-maclane»		(to "dn-uc-maclane")
%     «.dn-uc-awodey»		(to "dn-uc-awodey")
%   «.dn-arch-hyperdoctrine»	(to "dn-arch-hyperdoctrine")
%   «.dn-change-of-base»	(to "dn-change-of-base")
%   «.dn-preservations»		(to "dn-preservations")
%   «.dn-display-maps»		(to "dn-display-maps")
%   «.dn-quantifiers»		(to "dn-quantifiers")
%   «.dn-equality»		(to "dn-equality")
%   «.dn-bcc-for-exists»	(to "dn-bcc-for-exists")
%   «.dn-bcc-for-forall»	(to "dn-bcc-for-forall")
%   «.dn-bcc-for-equality»	(to "dn-bcc-for-equality")
%   «.dn-frob-for-exists»	(to "dn-frob-for-exists")
%   «.dn-frob-for-equality»	(to "dn-frob-for-equality")
%   «.dn-hyperdoctrines»	(to "dn-hyperdoctrines")
%   «.dn-lawvere-70»		(to "dn-lawvere-70")
%     «.dn-frob-and-pimp»	(to "dn-frob-and-pimp")
%     «.dn-arbitrary-cobs»	(to "dn-arbitrary-cobs")
%     «.dn-lawvere-70-eq»	(to "dn-lawvere-70-eq")
% «.notes-and-further»		(to "notes-and-further")




% --------------------
% «introduction»  (to ".introduction")
% (chap   "Introduction" "introduction")
\mychapter {Introduction} {introduction}

\noindent{\bf Downcasing types (working draft, 2009nov16)}
{\myttchars
\footnotesize
\begin{verbatim}
Eduardo Ochs
LLaRC, PURO/UFF
eduardoochs@gmail.com
http://www.uff.br/llarc/
http://angg.twu.net/
\end{verbatim}
\noindent The latest version can be found at:

\noindent \url{http://angg.twu.net/LATEX/2009unilog-dnc.pdf}
}

\msk

Note: this is a {\sl first, very rough working draft} of a paper on
Downcasing Types... let me explain how it came into being. When I
started writing down my material about DNC (from ``DowNCasing'') a few
months ago I was with the impression that it would be too hard to
publish it as an article in a journal --- because of the reasons in
section \ref{no-theorems} --- but it occurred to me that I could take
an alternative route: to write first a technical report, mainly for a
very specific audience --- for the people in my research group in Rio
das Ostras and for few other groups in Rio de Janeiro (and there are
no categorists in the strict sense here!), with all details and all
dictionaries of notations, to help these people understand some papers
and books in CT...

% (find-w3m "~/TH/L/math-b.html#PhD")

Then another excuse to finish it appeared: I was trying to help
Valeria de Paiva --- whom I knew from several events in Logic in
Brazil, and who had even watched my very first international talk (see
\url{http://angg.twu.net/math-b.html#PhD}) --- to find out how she
could become a visiting researcher in Brazil for a few months, and at
one point she asked casually if I wasn't going to submit anything to
the session on Categorical Logic at UNILOG'10, where she was one of
the organizers... I wrote the first version of the abstract --- not
the one below ---, asked for comments (``what she thought the referees
could complain about'', etc, as we still had ten days before the
deadline), and she pointed out that I made liftings look too easy,
that the notion of downcasing --- and its non-triviality --- didn't
make enough sense from what I wrote, and a few other things that don't
matter now...

Then, in the space of little more than one week, I was able to write
all this down (with some bits of cut-and-paste from past seminar
notes, of course). It doesn't matter exactly what Valeria said; in
some situations what really matters is {\sl what we do} with what
other people say to us --- and we both wanted these ideas to be
written down, and now they are {\sl much} closer to being in a
readable form than they were before...

\msk

[Expect big changes in the text below over the next few weeks...]



% --------------------
% «abstract»  (to ".abstract")
% (sec      "Abstract" "abstract")
\mysection {Abstract} {abstract}

(Taken from: \url{http://angg.twu.net/LATEX/2009unilog-abs1.pdf})

\msk

When we represent a category $\catC$ in Type Theory it becomes a
7-uple: $(\catC_0, \Hom_\catC, \id_\catC, ¢_\catC; Ð{assoc}_\catC,
Ð{idL}_\catC, Ð{idR}_\catC)$, where the first four components are
``structure'' and the last three are ``properties''.

We call the ``structure'' components the ``syntactical part'', and the
``properties'' components the ``logical part''. A {\sl protocategory}
is a 4-uple $(\catC_0, \Hom_\catC, \linebreak[1] \id_\catC, ¢_\catC)$
--- just the ``syntactical skeleton'' of what a category is, without
the components that talk about equality of morphisms. By splitting at
the right places the uples that represent functors, natural
transformations, isos, adjunctions, limits, etc, we define
proto-functors, proto-NTs, and so on.

The operation that takes entities and returns the corresponding
proto-entities behaves as a projection, and we say that it goes from
the ``real world'' --- where everything has both a ``syntactical'' and
a ``logical'' part --- to the ``syntactical world'', where only the
syntactical parts have been kept.

The opposite of to {\sl project} is to {\sl lift}. We may start with a
proto-something, $s^-$, in the syntactical world, and try to lift it
to an $s$ in the real world that projects into $s^-$. Meta-theorems
about lifting are hard to obtain, but we know many interesting
liftings --- each object $r$ of the (projectable fragment of the) real
world projects to an proto-object $r^-$ that can be lifted back to $r$
--- and we can start by studying them to understand how liftings
behave.

% about lifting are hard to obtain, but each object of the
% (projectable fragment of the) real world may be lifted by first
% constructing its projection and then ``completing'' it using
% information from the original object.

Proto-objects --- even proto-proofs --- are especially amenable to
being represented diagrammatically, and there is a simple way to
attribute a precise meaning to each entity --- each node, arrow, etc
--- appearing in these diagrams. We will show how to formalize two
such diagrammatic proofs --- the Yoneda Lemma and one of the weakest
monadicity theorems --- as terms in Coq.

\def\BCCLobj{f^* \Pi_{\pi_{BC}} P}
\def\BCCRobj{\Pi_{\pi_{AC}} (f×C)^* P}
\def\BCCS{\ssst{aÝA}{ýcÝC.P(fa,c)}}

\def\psst#1#2{(#1\;||\;#2)}
\def\psst#1#2{#1||#2}
\def\bccp{\psst{a}{ýc.P(fa,c)}}
\def\bcc{\psst{a}{ýc.P(fa,c)}}
\def\bcca{\psst{a}{ýc.P}}
\def\bccbc{\psst{b,c}{P}}

For most applications in Categorical Semantics one further trick is
needed: ``downcasing types'', that lets us name entities by what they
represent in the ``archetypical case''. For example, in a
hyperdoctrine, if $P$ is an object over $B×C$ and $f:A \to B$ then
Beck-Chevalley Condition for $\forall$ says that the natural morphism
from $\BCCLobj$ to $\BCCRobj$ should be an iso. In the archetypical
hyperdoctrine, $\Sub(\Set)$, $P$ ``is'' a subset
$\sst{(b,c)ÝB×C}{P(b,c)}$ of $B×C$, and both $\BCCLobj$ and $\BCCRobj$
``deserve the name'' $\sst{aÝA}{ýcÝC.\,P(fa,c)}$. The downcasing of
$P$ is $\psst{b,c}{P}$, and the BCC map becomes a map $\bcca \mto
\bcca$ that is not the identity, whose construction can be read out
from a diagram.

% In the downcasing, this becomes $\psst{a}{ýc.P(fa,c)} \mto
% \psst{a}{ýc.P(fa,c)}$, which looks like an identity map; however, if
% we give a unique tag to each node and arrow and define the BCC
% morphism by a diagram showing its construction, then the BCC
% morphism becomes an iso between the two objects that ``are'' the
% same {\sl in the archetypal hyperdoctrine}, $\Sub(\Set)$.

Roughly, what is the happening is the following: the formal definition
of hyperdoctrine generalizes {\sl some} of the structure of
$\Sub(\Set)$; with our way of interpreting diagrams we can define all
this structure diagrammatically, in a notation that ``suggests'' that
we are in $\Sub(\Set)$, i.e., ``in the archetypical case'', and then
we can ``lift'' these definitions to diagrams with the same
two-dimensional structure, but in any of the standard notations.

Several categorical theorems become quite clear when we find
``archetypical diagrams'' for their (proto-)proofs, and then we lift
those to standard notations; we will show some examples from Lawvere's
``Adjointness in Foundations'' (1969) and ``Equality in
Hyperdoctrines'' (1970) papers.

% Hi Jean-Yves, Andrei, Valeria,
%
% > Ask the selected contributors to send before December 22 to
% > unilog2010@gmail.com a description of their talk within an e-mail
% > with no special formatation, no attachment and with the name of the
% > session as object of the e-mail. The description should be as
% > follows: Name, Institution, E-mail Title of the talk Abstract of 10
% > to 20 lines, with few mathematical symbols and few bibliographical
% > references.
%
% Here it goes: 22 non-blank lines, plus 3 blanks, plus name/
% institution/title. Is that acceptable? Feel free to remove the {\it}s,
% the {\bf}s and to simplify $P^-$ to "P^-" or "P-" (in ascii)...
%
% Sorry for the delay - my academic semester ended two hours ago - I
% just typed the last student grades into a web interface... I hope
% (again!) that it's not too late... 8-\
%
%
% Name: Eduardo Ochs
% Instituion: LLaRC / PURO-UFF
% Title of the talk and short abstract:
%
% Downcasing Types
% ================
%
% When we represent a category C in a type system it becomes a 7-uple,
% whose first four components - class of objects, Hom, id, composition -
% are ``structure''; the other three components are ``properties'', and
% only these last three involve equalities of morphisms.
%
% We can define a projection that keeps the ``structure'' and drops the
% ``properties'' part; it takes a category and returns a
% ``proto-category'', and it also acts on functors, isos, adjunctions,
% proofs, etc, producing proto-functors, proto-proofs, and so on.
%
% We say that this projection goes from the ``real world'' to the
% ``syntactical world''; and that it takes a ``real proof'', P, of some
% categorical fact, and returns its ``syntactical skeleton'', P^-. This
% P^- is especially amenable to diagrammatic representations, because it
% has only the {\it constructions} from the original P --- the diagram
% chasings have been dropped.
%
% We will show how to ``lift'' the proto-proofs of the Yoneda Lemma and
% of some facts about monads and about hyperdoctrines from the
% syntactical world to the real world. Also, we will show how each arrow
% in our diagrams is a term in a precise diagrammatic language, and how
% these diagrams can be read out as definitions. The ``downcased''
% diagrams for hyperdoctrines, in particular, look as diagrams about
% {\bf Set} (the archetypical hyperdoctrine), yet they state the
% definition of an arbitrary hyperdoctrine, plus (proto-)theorems.
%
%  Cheers,
%    Eduardo





% --------------------
% «no-theorems»  (to ".no-theorems")
% (sec      "There Are no Theorems in This Paper" "no-theorems")
\mysection {There Are no Theorems in This Paper} {no-theorems}

...because the things that we usually call ``theorems'' in Category
Theory belong to the real world --- they are a construction {\sl plus
  something more}.

Take for example the Yoneda Lemma. It says that given a functor $R:
\catB \to \Set$ and an object $B$ of $\catB$ we have a bijection
between the set $RB$ and the set of natural transformations $C \TNto
((B \to C) \to RC)$. Here we are working in the syntactical world only
--- we {\sl mention} liftings, but we don't do any liftings
explicitly, and so what we get is just the projection of that
bijection, which is a proto-iso between $RB$ and the set of proto-NTs
$C \TNto ((B \to C) \to RC)$. Usually a ``theorem'' involving a such
construction would have to either show that it is always a bijection,
or to show a case where it is {\sl not} a bijection.

What we do have here is the definition of the two worlds (mostly via
examples, but whatever...), of the projections, of the liftings, some
ideas of how to work with this splitting of worlds, and examples.



% --------------------
% «syntactical-world»  (to ".syntactical-world")
% (chap   "The syntactical world" "syntactical-world")
\mychapter {The syntactical world} {syntactical-world}



% --------------------
% «proto-cats»  (to ".proto-cats")
% (sec      "Categories" "proto-cats")
\mysection {Categories} {proto-cats}

[Typeset this from my handwritten notes]



% --------------------
% «proto-functors»  (to ".proto-functors")
% (sec      "Functors" "proto-functors")
\mysection {Functors} {proto-functors}



% --------------------
% «proto-NTs»  (to ".proto-NTs")
% (sec      "Natural Transformations" "proto-NTs")
\mysection {Natural Transformations} {proto-NTs}



% --------------------
% «proto-isos»  (to ".proto-isos")
% (sec      "Isos" "proto-isos")
\mysection {Isos} {proto-isos}



% --------------------
% «proto-epis-and-monics»  (to ".proto-epis-and-monics")
% (sec      "Epis and Monics" "proto-epis-and-monics")
\mysection {Epis and Monics} {proto-epis-and-monics}



% --------------------
% «proto-adjunctions»  (to ".proto-adjunctions")
% (sec      "Adjunctions" "proto-adjunctions")
\mysection {Adjunctions} {proto-adjunctions}

If $L$ and $R$ are functors going in opposite directions between two
categories, say,
%
$$\catB \two/<-`->/<150>^L_R \catA$$
%
then a {\sl proto-adjunction}, $L \dashv R$, is an 8-uple,
%
$$(\catA, \catB, L, R, \flat, \sharp, \eta, \ee)$$
%
that we draw as:
%
%D diagram adj1
%D 2Dx     100    +30     +30   +30
%D 2D  100 S1B   LA <---| A     T0A
%D 2D       |     |       |      |
%D 2D       |     |  <->  |      |
%D 2D       v     v       v      v
%D 2D  +30 S0B    B |---> RB    T1A
%D 2D
%D 2D  +20     \catB <=> \catA
%D 2D
%D (( S1B .tex= LRB S0B .tex= B
%D    S1B S0B -> .plabel= l _B
%D ))
%D (( T0A .tex= A T1A .tex= RLA
%D    T0A T1A -> .plabel= r \eta_A
%D ))
%D (( LA A B RB
%D    @ 0 @ 1 <-|
%D    @ 0 @ 2 -> .PLABEL= _(0.43) g^\flat
%D    @ 0 @ 2 -> .PLABEL= _(0.57) f
%D    @ 1 @ 3 -> .PLABEL= ^(0.43) g
%D    @ 1 @ 3 -> .PLABEL= ^(0.57) f^\sharp
%D    @ 0 @ 3 harrownodes nil 20 nil <-| sl^
%D    @ 0 @ 3 harrownodes nil 20 nil |-> sl_
%D    @ 2 @ 3 |->
%D ))
%D (( \catB \catA <- sl^ .plabel= a L
%D    \catB \catA -> sl_ .plabel= b R
%D ))
%D enddiagram
%D
$$\diag{adj1}$$

% [Transpositions, unit, counit]

There is some redundancy in this definition, as we may reconstruct
some of the entities $\flat$, $\sharp$, $\eta$, $\ee$ in terms of the
other ones:
%
%D diagram adj-reconstruction-LR
%D 2Dx     100     +30    +40     +30     +40     +30
%D 2D  100                L0 <--| L1
%D 2D                     |        |
%D 2D                     |     |  |
%D 2D                     |     |  v
%D 2D  +30                | <-| | L3
%D 2D                     |     v  |
%D 2D                     v        v
%D 2D  +18                L4 <--| L5
%D 2D                               
%D 2D  +15                F0 <--| F1
%D 2D                   / |        |
%D 2D                   | |  <--|  |
%D 2D                   | v        v
%D 2D  +30 C0 <--| C1   | F2 <--| F3     U0 <--| U1             
%D 2D      |        |   | |              |        |             
%D 2D  +12 |        |   \ |       S0     |        |             
%D 2D      |  <--|  |    vv        |\    |  |-->  |             
%D 2D  +6  |        |     F4       | |   |        |             
%D 2D      v        v              v |   v        v             
%D 2D  +12 C2 |--> C3     S1 |--> S2 |   U2 |--> U3             
%D 2D                     |        | |    
%D 2D                     |  |-->  | /    
%D 2D                     v        vv     
%D 2D  +30                S3 |--> S4      
%D 2D                                     
%D 2D  +15                R0 |--> R1                
%D 2D                     |        |                
%D 2D                     v  |     |                
%D 2D  +18                R2 | |-> |
%D 2D                     |  |     |
%D 2D                     |  v     |
%D 2D                     v        v
%D 2D  +30                R4 |--> R5
%D 2D
%D 2D
%D (( F0 .tex= LA  F1 .tex= A
%D    F2 .tex= LRB F3 .tex= RB
%D    F4 .tex= B
%D    F0 F1 <-|
%D    F0 F4 -> .slide= -16pt .plabel= l \sm{g^\flat\;:=\\Lg;_B}
%D    F0 F2 -> .plabel= l Lg
%D    F1 F3 -> .plabel= r g
%D    F0 F3 harrownodes nil 20 nil <-|
%D    F2 F3 <-|
%D    F2 F4 -> .plabel= l _B
%D ))
%D ((             S0 .tex= A
%D    S1 .tex= LA S2 .tex= RLA
%D    S3 .tex= B  S4 .tex= RB
%D    S0 S2 -> .plabel= r \eta_A
%D    S1 S2 |->
%D    S1 S3 -> .plabel= l f
%D    S2 S4 -> .plabel= r Rf
%D    S0 S4 -> .slide= 16pt .plabel= r \sm{f^\sharp\;:=\\\eta_A;Rf}
%D    S1 S4 harrownodes nil 20 nil |->
%D    S3 S4 |->
%D    S3 S4 -> .plabel= l _B
%D ))
%D (( C0 .tex= LRB C1 .tex= RB
%D    C2 .tex= B   C3 .tex= RB
%D    C0 C1 <-|
%D    C0 C2 -> .plabel= l \sm{_B\;:=\\{\id_{RB}}^\flat}
%D    C1 C3 -> .plabel= r \id_{RB}
%D    C2 C3 |->
%D    C0 C3 harrownodes nil 20 nil <-|
%D ))
%D (( U0 .tex= LA U1 .tex= A
%D    U2 .tex= LA U3 .tex= RLA
%D    U0 U1 <-|
%D    U0 U2 -> .plabel= l \id_{LA}
%D    U1 U3 -> .plabel= r \sm{\eta_A\;:=\\{\id_{LA}}^\sharp}
%D    U2 U3 |->
%D    U0 U3 harrownodes nil 20 nil |->
%D ))
%D (( L0 .tex= LA' L1 .tex= A'
%D                 L3 .tex= A
%D    L4 .tex= LA  L5 .tex= RLA
%D    L0 L1 <-|
%D    L0 L4 -> .plabel= l \sm{L\aa\;:=\\(\aa;\eta_A)^\flat}
%D    L1 L5 -> .slide= -10pt
%D    L1 L3 -> .plabel= r \aa
%D    L3 L5 -> .plabel= r \eta_A
%D    L4 L5 <-|
%D    L0 L5 harrownodes nil 20 5   <-|
%D ))
%D (( R0 .tex= LRB R1 .tex= RB
%D    R2 .tex= B
%D    R4 .tex= B'  R5 .tex= RB'
%D    R0 R1 |->
%D    R0 R2 -> .plabel= l \ee_B
%D    R2 R4 -> .plabel= l \bb
%D    R0 R4 -> .slide= 10pt
%D    R1 R5 -> .plabel= r \sm{R\bb\;:=\\(\ee_B;\bb)^\sharp}
%D    R4 R5 |->
%D    R0 R5 harrownodes 5   20 nil |->
%D ))
%D enddiagram
%D
$$\diag{adj-reconstruction-LR}$$



% --------------------
% «proto-monads»  (to ".proto-monads")
% (sec      "Monads" "proto-monads")
\mysection {Monads} {proto-monads}

A {\sl protomonad} for a proto-endofunctor $T: \catA \to \catA$ is a
4-uple:
%
$$(\catA, T, \eta, \mu)$$
%
that we draw as:
%
$$A \diagxyto/->/<150>^{\eta_A} TA \diagxyto/<-/<150>^{\mu_A} TTA$$

% [unit, multiplication]

A {\sl proto-comonad} for a proto-endofunctor $S: \catB \to \catB$ is a
4-uple:
%
$$(\catB, S, , )$$
%
that we draw as:
%
$$B \diagxyto/<-/<150>^{_B} SB \diagxyto/->/<150>^{_B} SSB$$

% [counit, comultiplication]

Each proto-adjunction induces both a proto-monad and a proto-comonad.
We draw all these together as:
%
%D diagram adj-with-monads-1
%D 2Dx     100    +30     +30   +30
%D 2D  100 S2B
%D 2D       ^
%D 2D       |
%D 2D       |
%D 2D  +30 S1B   LA <---| A     T0A
%D 2D       |     |       |      |
%D 2D       |     |  <->  |      |
%D 2D       v     v       v      v
%D 2D  +30 S0B    B |---> RB    T1A
%D 2D                            ^
%D 2D  +15                       |
%D 2D                            |
%D 2D  +15     \catB <=> \catA  T2A
%D 2D
%D (( S2B .tex= LRLRB S1B .tex= LRB S0B .tex= B
%D    S2B S1B <- .plabel= l \sm{_B\;:=\\L\eta_{RB}}
%D    S1B S0B -> .plabel= l \sm{_B\;:=\\\id_{RB}{}^\flat}
%D ))
%D (( T0A .tex= A T1A .tex= RLA T2A .tex= RLRLA
%D    T0A T1A -> .plabel= r \sm{\eta"A\;:=\\\id_{LA}{}^\sharp}
%D    T1A T2A <- .plabel= r \sm{\mu"A\;:=\\R\ee_{LA}}
%D ))
%D (( LA A B RB
%D    @ 0 @ 1 <-|
%D    @ 0 @ 2 -> .PLABEL= _(0.43) g^\flat
%D    @ 0 @ 2 -> .PLABEL= _(0.57) f
%D    @ 1 @ 3 -> .PLABEL= ^(0.43) g
%D    @ 1 @ 3 -> .PLABEL= ^(0.57) f^\sharp
%D    @ 0 @ 3 harrownodes nil 20 nil <-| sl^
%D    @ 0 @ 3 harrownodes nil 20 nil |-> sl_
%D    @ 2 @ 3 |->
%D ))
%D (( \catB \catA <- sl^ .plabel= a L
%D    \catB \catA -> sl_ .plabel= b R
%D ))
%D enddiagram
%D
$$\diag{adj-with-monads-1}$$

We define $\mu_A := R\ee_{LA}$ and $_B := L\eta_{RB}$:
%:
%:                   LA                             RB
%:           -----------------\ee          -----------------\sharp
%:           \ee_{LA}:LRLA->LA             \eta_{RB}:RB->RLRB
%:  -----------------------------R    -------------------------L
%:  \mu_A:=R\ee_{LA}:RLRLA->RLA     _B:=L\eta_{RB}:LRB->LRLRB
%:
%:  ^def-muA                                   ^def-deltaB
%:
$$\ded{def-muA} \qquad \ded{def-deltaB}$$

We have seen how a proto-adjunction induces a proto-monad; now we will
see how a proto-monad induces {\sl two} proto-adjunctions.



% --------------------
% «proto-kleisli»  (to ".proto-kleisli")
% (subsec     "The Kleisli Category of a Monad" "proto-kleisli")
\mysubsection {The Kleisli Category of a Monad} {proto-kleisli}

The {\sl Kleisli proto-category} of a proto-monad $(\catA, T, \eta,
\mu)$ is the proto-category:
%
$$\catAK := ((\catAK)_0, \Hom_\catAK, \id_\catAK, ¢_\catAK)$$
%
where $(\catAK)_0$ is equal to $\catA_0$, but we write the objects of
$(\catAK)_0$ in a funny way: an object $A Ý \catA$ becomes
%
$$\KOBJ{A}{TA}$$
%
when we regard it as an object of $(\catAK)_0$.

A morphism in $\Hom_\catAK(\KOBJ{A}{TA}, \KOBJ{C}{TC})$ is just a map
$f:A \to TC$ in $\Hom_\catA(A, TC)$. We write it as $[f]:
\Hom_\catAK(\KOBJ{A}{TA}, \KOBJ{C}{TC})$ to stress that its (formal)
type is different from $f$.

The identity operation, $\id_\catAK$, is the $\eta$ (the ``unit'') of
the monad in disguise:
%
%$$\id_\catAK(\KOBJ{A}{TA}) := [\eta_A]$$
%
%Note that:
%:
%:  A
%:  ------------\eta
%:  \eta_A:A->TA
%:  -----------------------------------\ren
%:  [\eta_A]:\KOBJ{A}{TA}->\KOBJ{A}{TA}
%:  -----------------------------------------------------\ren
%:  \id_{[A-"->TA]}:\Hom_\catAK(\KOBJ{A}{TA},\KOBJ{A}{TA})
%:
%:  ^typing-id-kleisli
%:
%:  \id_\catAK(\KOBJ{A}{TA}):\Hom_\catAK(\KOBJ{A}{TA},\KOBJ{A}{TA})
%:
$$\ded{typing-id-kleisli}$$

The composition, $¢_\catAK$, needs a trick: if $f:A \to TC$ and $g: C
\to TE$ then $[f];[g] := [f;Tg;\mu_E]$. In diagrams:
%
%D diagram kleisli-id-and-comp
%D 2Dx     100    +60   +30    +30
%D 2D  100 A0     A{}
%D 2D       |        \
%D 2D       |         \
%D 2D       v          v
%D 2D  +30 A1           TA
%D 2D
%D 2D  +30 KA     A
%D 2D       |       \
%D 2D       |        \
%D 2D       v         v
%D 2D  +30 KC     C ..> TC
%D 2D       |       \      \
%D 2D       |        \      \
%D 2D       v         v      v
%D 2D  +30 KE     E ..> TE <-- TTE
%D 2D
%D (( A0 .tex= \KOBJ{A}{TA} BOX
%D    A1 .tex= \KOBJ{A}{TA} BOX
%D    A0 A1 -> .plabel= r \id_{[A-"->TA]:=[\eta_A]}
%D ))
%D (( A{} TA -> .plabel= r \eta_A
%D ))
%D (( KA .tex= \KOBJ{A}{TA} BOX
%D    KC .tex= \KOBJ{C}{TC} BOX
%D    KE .tex= \KOBJ{E}{TE} BOX
%D    KA KC -> .plabel= r [f]
%D    KC KE -> .plabel= r [g]
%D    KA KE -> .slide= 27pt .plabel= r \sm{[f];[g]\;:=\\"[f;Tg;\mu_E]}
%D ))
%D (( A TC -> .plabel= r f
%D    C TC -->
%D    C TE -> .plabel= r g   TC TTE -> .plabel= r Tg
%D    E TE --> TE TTE <- .plabel= b \mu_E
%D ))
%D enddiagram
%D
$$\diag{kleisli-id-and-comp}
$$

The dashed arrow in, say, $\KOBJ{A}{TA}$, is to suggest three things:

that morphisms in $\catAK$ follow the direction of the
`$\diagxyto/-->/<150>$',

that a morphism $A \to TA$ is not part of the definition of an object
$\KOBJ{A}{TA}$,

that the `$\diagxyto/-->/<150>$' is the ghost of the unit of the monad
--- the unit would go from $A$ to $TA$, but it is not used in the
definitions; nevertheless, its memory remains.

\msk

Note that the functors $L_T$ and $R_T$ act on morphisms in non-trivial
ways. In a diagram:


%D diagram L_T1-and-R_T1
%D 2Dx     100       +40
%D 2D  100 LTA <---| A
%D 2D       |        |
%D 2D       |   <-|  |
%D 2D       v        |
%D 2D  +30 LTA' <--| A'
%D 2D
%D 2D  +20 LTC |---> TC
%D 2D       |        |
%D 2D       |   |->  |
%D 2D       v        |
%D 2D  +30 LTC' |--> TC'
%D 2D
%D (( LTA  .tex= \KOBJ{A}{TA}   BOX   A
%D    LTA' .tex= \KOBJ{A'}{TA'} BOX   A'
%D    @ 0 @ 1 <-|
%D    @ 0 @ 2 -> .plabel= l \sm{L_T\aa\;:=\\{}[\aa;\eta_{A'}]}
%D    @ 1 @ 3 -> .plabel= r \aa
%D    @ 2 @ 3 <-|
%D    @ 0 @ 3 harrownodes nil 20 nil <-|
%D ))
%D ((
%D    LTC  .tex= \KOBJ{C}{TC}   BOX   TC
%D    LTC' .tex= \KOBJ{C'}{TC'} BOX   TC'
%D    @ 0 @ 1 |->
%D    @ 0 @ 2 -> .plabel= l [\cc]
%D    @ 1 @ 3 -> .plabel= r \sm{R_T([\cc])\;:=\\{}T\cc;\mu_{C'}}
%D    @ 2 @ 3 |->
%D    @ 0 @ 3 harrownodes nil 20 nil |->
%D ))
%D enddiagram
%D
$$\diag{L_T1-and-R_T1}$$

\msk

We can draw the Kleisli (proto-)adjunction as:
%
%D diagram kleisli-adj
%D 2Dx     100    +50     +35   +25
%D 2D  100 S2B
%D 2D       ^
%D 2D       |
%D 2D       |
%D 2D  +35 S1B   KA <---| A     T0A
%D 2D       |     |       |      |
%D 2D       |     |  <->  |      |
%D 2D       v     v       v      v
%D 2D  +30 S0B   KC |---> TC    T1A
%D 2D                            ^
%D 2D  +15                       |
%D 2D                            |
%D 2D  +15    \catAK <=> \catA  T2A
%D 2D
%D (( KA .tex= \KOBJ{A}{TA} BOX
%D    KC .tex= \KOBJ{C}{TC} BOX
%D    KA A <-|
%D    KA KC -> .PLABEL= _(0.41) f^\flat:=[f]
%D    KA KC -> .PLABEL= _(0.59) [g]
%D     A TC -> .PLABEL= ^(0.41) f
%D     A TC -> .PLABEL= ^(0.59) [g]^\sharp:=g
%D    KA TC harrownodes nil 20 nil <-| sl^
%D    KA TC harrownodes nil 20 nil |-> sl_
%D    KC TC |-> 
%D ))
%D (( \catAK \catA
%D    @ 0 @ 1 <- sl^ .plabel= a L_T
%D    @ 0 @ 1 -> sl_ .plabel= b R_T
%D ))
%D (( S2B .tex= \KOBJ{TTC}{TTTC} BOX
%D    S1B .tex= \KOBJ{TC}{TTC}   BOX
%D    S0B .tex= \KOBJ{C}{TC}     BOX
%D    S2B S1B <- .plabel= l \sm{\dd_{[C-"->TC]}\;:=\\L_T(\eta_{(R_T[C-"->TC])})\;=\\L_T(\eta_{TC})\;=\\{}[\eta_{TC};\eta_{TTC}]}
%D    S1B S0B -> .plabel= l \sm{\ee_{[C-"->TC]}\;:=\\{}[\id_{TC}]}
%D ))
%D (( T0A .tex= A
%D    T1A .tex= TA
%D    T2A .tex= TTA
%D    T0A T1A -> .plabel= r \eta_A
%D    T1A T2A <- .plabel= r \mu_A
%D ))
%D enddiagram
%D
$$\diag{kleisli-adj}
$$




% --------------------
% «proto-EM»  (to ".proto-EM")
% (subsec     "The Eilenberg-Moore Category of a Monad" "proto-EM")
\mysubsection {The Eilenberg-Moore Category of a Monad} {proto-EM}

The {\sl Eilenberg-Moore proto-category} for a proto-monad $(\catA, T,
\eta, \mu)$ is:
%
$$\catAEM := ((\catAEM)_0, \Hom_\catAEM, \id_\catAEM, ¢_\catAEM)$$
%
where a (proto-)object of $\catAEM$ is a pair $(A,\aa)$ (a
``proto-algebra''), that we write as:
%
$$\EMOBJT{A}{\aa}$$
%
We use a non-dashed arrow, `$\diagxyto/<-/<150>$', to stress that
the map $\aa:\Hom_\catA(TA, A)$ is part of the definition of the
object.

A proto-morphism $f:\EMOBJT{A}{\aa} \to \EMOBJT{C}{\cc}$ is just a
morphism $f:\Hom_\catA(A,C)$.

% A morphism $f:\EMOBJT{A}{\aa} \to \EMOBJT{C}{\cc}$ is a morphism
% $f:\Hom_\catA(A,C)$ plus the assurance that $(\aa;f)=(Tf;\cc)$.

{\sl Important.} The Eilenberg-Moore {\sl category} for a monad $T$
has fewer objects, and fewer morphisms, than the Eilenberg-Moore {\sl
  proto-}category for $T$. An {\sl algebra} is a pair $(A,\aa)$ plus
the assurance that $\mu_A;\aa=T\aa;\aa$. A {\sl morphism} $f:(A,\aa)
\to (C,\cc)$ of algebras is a map $f:A \to C$ plus the assurance that
$\aa;f=Tf;\cc$.

We will focus our attention on the Eilenberg-Moore {\sl
  proto-}category.


The identity $\id_\catAEM$ and the
composition $¢_\catAEM$ are defined in the obvious way (inherited from
$\catA$).

The Eilenberg-Moore adjunction can be drawn as:
%
%D diagram em-adj
%D 2Dx     100    +50       +40    +30
%D 2D  100 S2B
%D 2D       ^
%D 2D       |
%D 2D       |
%D 2D  +30 S1B    EMA <---| A     T0A
%D 2D       |      |        |      |
%D 2D       |      |   <->  |      |
%D 2D       v      v        v      v
%D 2D  +30 S0B    EMC |---> TC    T1A
%D 2D                              ^
%D 2D  +15      \catAEM <=> \catA  |
%D 2D                              |
%D 2D  +15                        T2A
%D 2D
%D (( EMA .tex= \EMOBJT{TA}{\mu_A} BOX
%D    EMC .tex= \EMOBJT{C}{\cc}    BOX
%D    EMA A <-|
%D    EMA EMC -> .PLABEL= _(0.41) f^\flat:=Tf;\cc
%D    EMA EMC -> .PLABEL= _(0.59) g
%D      A  TC -> .PLABEL= ^(0.41) f
%D      A  TC -> .PLABEL= ^(0.59) g^\sharp:=\eta_A;g
%D    EMA  TC harrownodes nil 20 nil <-| sl^
%D    EMA  TC harrownodes nil 20 nil |-> sl_
%D    EMC  TC |-> 
%D ))
%D (( \catAEM \catA
%D    @ 0 @ 1 <- sl^ .plabel= a L^T
%D    @ 0 @ 1 -> sl_ .plabel= b R^T
%D ))
%D (( S2B .tex= \EMOBJT{TTC}{TT\cc} BOX
%D    S1B .tex= \EMOBJT{TC}{T\cc}   BOX
%D    S0B .tex= \EMOBJT{C}{\cc}     BOX
%D    S2B S1B <- .plabel= l \dd_\cc:=T\eta_C?
%D    S1B S0B -> .plabel= l \ee_\cc:=\cc
%D ))
%D (( T0A .tex= A
%D    T1A .tex= TA
%D    T2A .tex= TTA
%D    T0A T1A -> .plabel= r \eta_A
%D    T1A T2A <- .plabel= r \mu_A
%D ))
%D enddiagram
%D
$$% \savebox{\myboxa}{$\EMOBJT{TA}{\mu_A}$}
  % \savebox{\myboxc}{$\EMOBJT{C}{\cc}$}
  % \savebox{\myboxd}{$\EMOBJT{TC}{T\cc}$}
  % \savebox{\myboxe}{$\EMOBJT{TTC}{TT\cc}$}
  \diag{em-adj}
$$
%
where [two triangles showing the transpositions]:

%D diagram em-transpositions
%D 2Dx     100
%D 2D  100
%D 2D
%D 2D  +20
%D 2D
%D ((
%D
%D ))
%D enddiagram
%D
$$\diag{em-transpositions}$$





% --------------------
% «proto-comparison»  (to ".proto-comparison")
% (subsec     "The Comparison Theorem" "proto-comparison")
\mysubsection {The Comparison Theorem} {proto-comparison}

If $\catB \two/<-`->/<150>^L_R \catA$ and $\catB'
\two/<-`->/<150>^{L'}_{R'} \catA$ are two proto-adjunctions --- the
full definition with `$\flat$'s, `$\sharp$'s, `$\eta$'s and `$$'s
will not be relevant now --- then a {\sl proto-comparison} from $L'
\dashv R'$ to $L \dashv R$ is just a proto-functor $F:\catB' \to
\catB$,
%
%D diagram comparison
%D 2Dx     100     +40
%D 2D  100 \catB'
%D 2D
%D 2D  +20         \catA
%D 2D
%D 2D  +20 \catB
%D 2D
%D (( \catB' \catA \catB
%D    @ 0 @ 2 ->     .plabel= l F
%D    @ 0 @ 1 <- sl^ .plabel= a L'
%D    @ 0 @ 1 -> sl_ .plabel= b R'
%D    @ 2 @ 1 <- sl^ .plabel= a L
%D    @ 2 @ 1 -> sl_ .plabel= b R
%D ))
%D enddiagram
%D
$$\diag{comparison}$$
%
such that $(L';F)_0 = L_0$ and $(F;R)_0 = R'_0$, i.e., two of the
triangles in the figure commute on objects (remember that in the
syntactical world equality of morphisms rarely matters). Note that we
only need to care for the objects of $\catB$ that are images of
objects in $\catB'$.

Now start with a proto-adjunction, $\catB \two/<-`->/<150>^L_R \catA$,
build its protomonad,
%
$$(\catA, T, \eta, \mu) = (A, (R;L), \eta,
    (ðA¨\catA_0.R(\id_{RLA}{}^\flat))),$$
%
and build its Kleisli proto-adjunction $\catA_T
\two/<-`->/<150>^{L_T}_{R_T} \catA$, and its Eilenberg-Moore
proto-adjunction, $\catA^T \two/<-`->/<150>^{L^T}_{R^T} \catA$. It
turns out that we have proto-comparison functors $F_T:\catA_T \to
\catB$ and $F^T: \catB \to \catA^T$:

% (find-LATEX "2008monads.tex" "monads-resolutions-cat")
%
%D diagram comparisons
%D 2Dx     100     +35      +35
%D 2D  100       \catA_T
%D 2D
%D 2D  +35 \catB           \catA
%D 2D
%D 2D  +35       \catA^T
%D 2D
%D ((       \catA_T
%D    \catB         \catA
%D          \catA^T
%D    @ 0 @ 1 ->     .plabel= l F_T
%D    @ 1 @ 3 ->     .plabel= l F^T
%D    @ 0 @ 2 <- sl^ .plabel= a L_T
%D    @ 0 @ 2 -> sl_ .plabel= b R_T
%D    @ 1 @ 2 <- sl^ .PLABEL= ^(0.46) L
%D    @ 1 @ 2 -> sl_ .PLABEL= _(0.46) R
%D    @ 3 @ 2 <- sl^ .plabel= a L^T
%D    @ 3 @ 2 -> sl_ .plabel= b R^T
%D ))
%D enddiagram
%D
\def\red#1{{\color{red}#1}}
\def\ph{\red}
\def\ph{\phantom}
%D
%D diagram kleisli-and-em
%D 2Dx     100         +50       +50
%D 2D  100          / k1
%D 2D	           //  - /\
%D 2D	          //   |  \\
%D 2D	         //    v   \\
%D 2D  +20      //    k2    \\
%D 2D	      //   //    \\  \\
%D 2D	     \/   //      \\  \\
%D 2D  +20 r1 <================= o1
%D 2D	   -  \\//          \\ //-
%D 2D	   |  /\\            \// |
%D 2D	   v \/ \\           //v v
%D 2D  +20 r2 ===\\=========//=> o2
%D 2D	      \\  \\       //  /\
%D 2D	        \\  \/    \/  //
%D 2D  +20       \\    em1   //
%D 2D	          \\    -   //
%D 2D	           \\   |  //
%D 2D	            \/  v //
%D 2D  +20             em2
%D 2D
%D (( k1  .tex= \KOBJ{A}{RLA} BOX
%D    k2  .tex= \KOBJ{C}{RLC} BOX    k1  place k2  place
%D    em1 .tex= \EMOBJ{RLA}{RLRLA}{\mu_A} BOX
%D    em2 .tex= \EMOBJ{RLC}{RLRLC}{\mu_C} BOX  em1 place em2 place
%D    r1  .tex= LA   o1  .tex= A
%D    r2  .tex= LC   o2  .tex= RLC
%L    comp_KL, comp_KR, comp_EML, comp_EMR = 9, 6, 16, 14
%D    k1  there+xy: -comp_KL  0 k1L  .tex= \ph{A}
%D    k2  there+xy: -comp_KL  0 k2L  .tex= \ph{C}
%D    k1  there+xy:  comp_KR  0 k1R  .tex= \ph{RLA}
%D    k2  there+xy:  comp_KR  0 k2R  .tex= \ph{RLC}
%D    em1 there+xy: -comp_EML 0 em1L .tex= \ph{RLA}
%D    em2 there+xy: -comp_EML 0 em2L .tex= \ph{RLC}
%D    em1 there+xy:  comp_EMR 0 em1R .tex= \ph{RLRLA}
%D    em2 there+xy:  comp_EMR 0 em2R .tex= \ph{RLRLC}
%D    o1 o2 ->
%D    r1 r2 ->
%D    k1 k2 ->
%D    em1 em2 ->
%D    k1R  o1   <-| k2R  o2   |->
%D    r1   o1   <-| r2   o2   |->
%D    em1R o1   <-| em2R o2   |->
%D    k1L  r1   |-> k2L  r2   |->
%D    r1   em1L |-> r2   em2L |->
%D    k1R  k2R  midpoint o1 o2 midpoint dharrownodes nil 20 nil <->
%D    r1   r2   midpoint o1 o2 midpoint dharrownodes nil 25 nil <->
%D    em1R em2R midpoint o1 o2 midpoint dharrownodes nil 15 nil <->
%D ))
%D enddiagram
%
$$\diag{comparisons}
 \qquad
 \diag{kleisli-and-em}
$$
%
where the functor $F_T$ acts like this on morphisms,
%:
%:  [g]:\KOBJ{A}{RLA}->\KOBJ{C}{RLC}
%:  --------------------------------\ren
%:            g:A->RLC
%:        --------------\flat
%:        F_T([g]):=g^\flat:LA->LC
%:
%:        ^F_T_1
%:
$$\ded{F_T_1}$$
%
and the functor $F^T$, that appears as $LA \mto
\EMOBJ{RLA}{RLRLA}{\mu_A}$ in the diagram, is actually something a bit
more general --- $B \mto \EMOBJ{RB}{RLRB}{R\ee_B}$ --- because its
action needs to be defined on all objects of $\catB$, not only on
those of the form $LA$. Compare:
%:
%:           A
%:          --L     
%:          LA                          B           
%:   -----------------\ee          ------------\ee    
%:   \ee_{LA}:LRLA->LA             \ee_B:LRB->B       
%:  --------------------R         -------------R          
%:  \mu_A=R\ee_{LA}:RLRLA->RLA    R\ee_B:RLRB->RB            
%:                                                  
%:     ^F^T_1                         ^F^T_2        
%:
%:               
%:            
%:               
%:       
%:                  
%:               
%:       
%:
$$\ded{F^T_1} \qquad \ded{F^T_2}$$

We need to impose the condition $ýA.(\mu_A=R\ee_{LA})$, but this
holds in any (non-proto-) category.


% --------------------
% «proto-monadicity»  (to ".proto-monadicity")
% (subsec     "Monadicity" "proto-monadicity")
\mysubsection {Monadicity} {proto-monadicity}

[Define proto-equivalence of categories]

[Define tripleable functor]

[Give examples?]

[Define proto-equalizer]

[Define preservation and reflection of proto-equalizers]

[Prove Theorem 1 of Beck's thesis (p.8 of the reprint)] 

\url{http://www.tac.mta.ca/tac/reprints/articles/2/tr2abs.html}

\msk

% (find-angg ".emacs.papers" "beck")
% (find-beckthesispage 8 "tripleable")
% (find-beckthesistext)

DEFINITION 3. The adjoint pair $\aa:F \dashv U$ is tripleable if
$\Phi: B \to A^T$ is an equivalence of categories.

DEFINITION 3'. A functor $U: B \to A$ is tripleable if $U$ has a left adjoint $F$ and the
adjoint pair $F \dashv U$ is tripleable.

% --------------------
% «proto-beck»  (to ".proto-beck")
% (subsec     "Beck's Lemma" "proto-beck")
\mysubsection {Beck's Lemma} {proto-beck}

THEOREM 1. Let $\aa: F \dashv U$ be an adjoint pair.

(1) If $B$ has coequalizers, then there exists a left adjoint
$\hat\Phi \dashv \Phi$.

Assuming the existence of $\hat\Phi$:

(2) If $U$ preserves coequalizers, then the unit of $\hat\Phi \dashv
\Phi$ is an isomorphism $AT \ton{\equiv} \hat\Phi\Phi$.

(3) If $U$ reflects coequalizers, then the counit is an isomorphism
$\Phi \hat\Phi \ton{\equiv} B$.

Finally, in the presence of (2), (3) can be replaced by:

(3') If $U$ reflects isomorphisms, then the counit is an isomorphism
$\Phi \hat\Phi \ton{\equiv} B$.





% --------------------
% «proto-universals»  (to ".proto-universals")
% (sec      "Universals" "proto-universals")
\mysection {Universals} {proto-universals}

In an adjunction, each morphism $A \to RLA$ induces a natural
transformation $B \TNto ((A \to B) \to (A \to RB))$, by:
%
%D diagram adj-universal-1
%D 2Dx     100     +30
%D 2D  100         D0  
%D 2D               | \
%D 2D  +15          | |
%D 2D               v |    
%D 2D  +15 D1 |--> D2 |    
%D 2D      |        | |               
%D 2D  +15 |  |-->  | /               
%D 2D      v        vv                
%D 2D  +15 D3 |--> D4                 
%D 2D
%D 2D  +20 \catB  \catA  
%D 2D
%D ((             D0 .tex= A
%D    D1 .tex= LA D2 .tex= RLA
%D    D3 .tex= B  D4 .tex= RB
%D    D0 D2 -> .plabel= r f
%D    D1 D2 |->
%D    D1 D3 -> .plabel= l g
%D    D2 D4 -> .plabel= r Rg
%D    D0 D4 -> .slide= 16pt .plabel= r f;Rg
%D    D1 D4 harrownodes nil 20 nil |->
%D    D3 D4 |->
%D ))
%D (( \catB \catA <- sl^ .plabel= a L
%D    \catB \catA -> sl_ .plabel= b R
%D ))
%D enddiagram
%D
$$\diag{adj-universal-1}$$
%
and for $f=\eta_A$ the natural transformation is a natural iso. The
notion of ``universal'' generalizes this, and makes sense when we only
have the functor $R: \catB \to \catA$.

A {\sl preuniversal} for a functor $R: \catB \to \catA$ is a triple
$(A:\catA_0, B:\catB_0, f:A \to RB)$, that we will draw as:
%
%D diagram preuniversal-1
%D 2Dx     100    +25
%D 2D  100        A
%D 2D             |
%D 2D             |f
%D 2D             v
%D 2D  +25 B |--> RB
%D 2D
%D (( A RB -> .plabel= r f
%D    B RB |->
%D ))
%D enddiagram
%D
$$\diag{preuniversal-1}$$
%
or as $(A, LA, f)$ i.e.,
%
%D diagram preuniversal-2
%D 2Dx     100    +25
%D 2D  100        A
%D 2D             |
%D 2D             |f
%D 2D             v
%D 2D  +25 LA |-> RLA
%D 2D
%D ((  A RLA -> .plabel= r f
%D    LA RLA |->
%D ))
%D enddiagram
%D
$$\diag{preuniversal-2}$$
%
where the `$LA$' is just a ``long name'' for an object of $\catB$ (see
section \ref{dn-simple}) --- we don't have a functor $L$ anymore, so
$L$ is just a letter.

A {\sl universal} is a preuniversal plus ``universality'', where {\sl
  universality} is the assertion that the induced natural
transformation is a natural iso. In the syntactical world universality
looks more like extra structure than like a property: a
(proto-)universal is a (proto-)preuniverse $(A, LA, f:A \to RLA)$ plus
a proto-inverse for its induced natural transformation.

The idea --- let me make it clearer --- is that in the syntactical
world we ``prove'' than an $(A, LA, f)$ is a universal by {\sl
  constructing a proto-inverse for it}, where the proto-inverse is an
operation that behaves ``syntactically'' (i.e., in the types) as an
inverse to the natural transformation, and checking that this
proto-inverse is a real inverse is something that is left to a later
stage --- the ``lifting''.

An example should make this clearer. Any diagram $A \ton{i} C \otn{i'}
B$ (mnemonic: $C$ will ``deserve the name'' $A+B$, as we will see in
the next section) induces a natural transformation $X \TNto ((C \to X)
\to (A \to X)×(B \to X))$, by:
%
%D diagram adj-universal-+
%D 2Dx     100     +40
%D 2D  100         D0  
%D 2D               | \
%D 2D  +15          | |
%D 2D               v |    
%D 2D  +15 D1 |--> D2 |    
%D 2D      |        | |               
%D 2D  +15 |  |-->  | /               
%D 2D      v        vv                
%D 2D  +15 D3 |--> D4                 
%D 2D
%D 2D  +20 \Set   \Set×\Set
%D 2D
%D ((             D0 .tex= (A,B)
%D    D1 .tex= C  D2 .tex= (C,C)
%D    D3 .tex= X  D4 .tex= (X,X)
%D    D0 D2 -> .plabel= r (i,i')
%D    D1 D2 |->
%D    D1 D3 -> .plabel= l g
%D    D2 D4 -> .plabel= r (g,g)
%D    D0 D4 -> .slide= 22pt .plabel= r (i;g,i';g)
%D    D1 D4 harrownodes nil 20 nil |->
%D    D3 D4 |->
%D ))
%D (( \Set \Set×\Set
%D    @ 0 @ 1 <. sl^ .plabel= a (+)
%D    @ 0 @ 1 -> sl_ .plabel= b \Delta
%D ))
%D enddiagram
%D
$$\diag{adj-universal-+}$$



[...]

[$X \TNto (\Hom(C,X) \to \Hom(A,X)×\Hom(B,X))$]

[$X \TNto (\Hom(C,X) \to \Hom((A,B),(X,X))$]

[$X \TNto (\Hom_\Set(L(A,B), X) \to \Hom_{\Set×\Set}((A,B),RX)$]

[...]


\newpage

% --------------------
% «proto-yoneda»  (to ".proto-yoneda")
% (sec      "The Yoneda Lemma" "proto-yoneda")
\mysection {The Yoneda Lemma} {proto-yoneda}

% (find-LATEX "2009dnc-in-coq.tex" "yoneda")
% (find-angg ".emacs" "caderno")
% (find-caderno2page 45 "(Yoneda in 6 diagrams)")
% (find-angg ".emacs.papers" "barr")
% (find-books "__cats/__cats.el" "awodey")

%\def\pdiagwithboxes#1{\left(\diagprep{#1}\diag{#1}\right)}
%\def\fdiagwithboxes#1{\fbox{\!\!\!$\diagprep{#1}\diag{#1}$}}
%\def\pdiagwithboxes#1{\left(\diag{#1}\right)}
%\def\fdiagwithboxes#1{\fbox{\!\!\!$\diag{#1}$}}
\def\pdiag#1{\left(\diag{#1}\right)}
\def\fdiag#1{\fbox{\!\!\!$\diag{#1}$}}

%D diagram pdiagluniv
%D 2Dx     100    +18
%D 2D  100        #1
%D 2D             -
%D 2D           #4|
%D 2D             v
%D 2D  +16 #2 ==> #3
%D 2D
%D (( #1 #3 |-> .plabel= l #4
%D    #2 #3  =>
%D ))
%D enddefpdiagram 4

\def\pdiagpreuniv#1#2#3{\pdiagluniv{#1}{#2}{#3}{}}
\def\pdiagetauniv#1#2#3{\pdiagluniv{#1}{#2}{#3}{\eta}}
\def\pdiaguniv   #1#2#3{\pdiagluniv{#1}{#2}{#3}{\text{univ}}}

\def\piso{\scriptscriptstyle\text{(iso)}}

%D diagram pdiagntvv
%D 2Dx     100    +15   +15
%D 2D  100        #2    #4
%D 2D             -     -
%D 2D   +8 #1 -.> | |-> |
%D 2D             v     v
%D 2D   +8        #3    #5
%D 2D
%D (( #1   #2 #3   #4 #5
%D    @ 1 @ 2 |->  @ 3 @ 4 |->
%D    @ 0 @ 1 @ 2 midpoint -> .plabel= a 
%D    @ 1 @ 4 harrownodes nil 16 nil |-> .plabel= a #6
%D ))
%D enddefpdiagram 6

%D diagram pdiagntve
%D 2Dx     100    +15   +15
%D 2D  100        #2
%D 2D             -
%D 2D  +8  #1 -.> | |-> #4
%D 2D             v
%D 2D  +8        #3
%D 2D
%D (( #1   #2 #3   #4
%D    @ 1 @ 2 |->
%D    @ 0 @ 1 @ 2 midpoint -> .plabel= a 
%D    @ 1 @ 2 midpoint #4 |-> .plabel= a #5
%D ))
%D enddefpdiagram 5

%D diagram eta-sharp-in-adjunctions
%D 2Dx     100      +60
%D 2D  100 preuniv  ntvv
%D 2D
%D (( preuniv .tex= \pdiagetauniv{a}{a^L}{a^{LR}}        BOX
%D    ntvv    .tex= \pdiagntvv{c}{a^L}{c}{a}{c^R}{\piso} BOX
%D    @ 0 @ 1 <->
%D ))
%D # OUTBOXES
%D enddiagram
%D
% $$\fdiagwithboxes{eta-sharp-in-adjunctions}$$

%D diagram lemma-on-preuniversals
%D 2Dx     100      +60
%D 2D  100 preuniv  ntvv
%D 2D
%D (( preuniv .tex= \pdiagpreuniv{a}{b}{b^R}    BOX
%D    ntvv    .tex= \pdiagntvv{c}{b}{c}{a}{c^R}{} BOX
%D    @ 0 @ 1 <->
%D ))
%D # OUTBOXES
%D enddiagram
%D
% $$\fdiagwithboxes{lemma-on-preuniversals}$$

%D diagram def-of-univ-arrow
%D 2Dx     100      +60
%D 2D  100 preuniv  ntvv
%D 2D
%D (( preuniv .tex= \pdiaguniv{a}{b}{b^R}              BOX
%D    ntvv    .tex= \pdiagntvv{c}{b}{c}{a}{c^R}{\piso} BOX
%D    @ 0 @ 1 <->
%D ))
%D OUTBOXES
%D enddiagram
%D
% $$\fdiagwithboxes{def-of-univ-arrow}$$

%D diagram yoneda-lemma
%D 2Dx     100      +60
%D 2D  100 preuniv  ntvv
%D 2D
%D 2D  +40 b^R      ntve
%D 2D
%D (( preuniv .tex= \pdiagpreuniv{*}{b}{b^R}      BOX
%D    ntvv    .tex= \pdiagntvv{c}{b}{c}{*}{c^R}{} BOX
%D    b^R
%D    ntve    .tex= \pdiagntve{c}{b}{c}{c^R}{}    BOX
%D    @ 0 @ 1 <->
%D    @ 0 @ 2 <->
%D    @ 1 @ 3 <->
%D ))
%D OUTBOXES
%D enddiagram
%D
% $$\fdiagwithboxes{yoneda-lemma}$$

\def\ctabular#1{\begin{tabular}{c}#1\end{tabular}}
\def\ltabular#1{\begin{tabular}{c}#1\end{tabular}}
%\def\fdiagwithboxest#1#2{\ltabular{#2 \\ \fdiag{#1}}}
\def\fdiagest       #1#2{\ltabular{#2 \\ \fdiag{#1}}}

%D diagram def-of-univ-arrow-and-elt
%D 2Dx     100      +60
%D 2D  100 preuniv  ntvv
%D 2D
%D 2D  +45 b^R      ntve
%D 2D
%D (( preuniv .tex= \pdiaguniv{*}{b}{b^R}              BOX
%D    ntvv    .tex= \pdiagntvv{c}{b}{c}{*}{c^R}{\piso} BOX
%D    b^R     .tex= \ctabular{$b^R$\\(universal\\element)}
%D    ntve    .tex= \ctabular{$\pdiagntve{c}{b}{c}{c^R}{\piso}$\\($R$"is"representable\\and"is"represented"by"$B$)}    BOX
%D    @ 0 @ 1 <->
%D    @ 0 @ 2 <->
%D    @ 1 @ 3 <->
%D ))
%D OUTBOXES
%D enddiagram
%D
% $$\fdiagwithboxes{def-of-univ-arrow-and-elt}$$

%D diagram yoneda-corollary
%D 2Dx     100      +62
%D 2D  100 preuniv  ntvv
%D 2D
%D 2D  +40 a|->b    ntve
%D 2D
%D (( preuniv .tex= \pdiagpreuniv{*}{b}{a|->b}      BOX
%D    ntvv    .tex= \pdiagntvv{c}{b}{c}{*}{a|->c}{} BOX
%D    a|->b
%D    ntve    .tex= \pdiagntvv{c}{b}{c}{a}{c}{}     BOX
%D    @ 0 @ 1 <->
%D    @ 0 @ 2 <->
%D    @ 1 @ 3 <->
%D ))
%D OUTBOXES
%D enddiagram
%D
% $$\fdiagwithboxes{yoneda-corollary}$$

%D diagram yoneda-and-friends
%D 2Dx      100        +125
%D 2D  100  eta-sharp
%D 2D
%D 2D  +60 pre-univs   univ-arrow
%D 2D
%D 2D  +80  yoneda-L   univ-elt
%D 2D
%D 2D +100  yoneda-C
%D 2D
%D (( eta-sharp  .tex= \fdiagest{eta-sharp-in-adjunctions}{$(\eta<->\sharp)$"in"adjunctions:} BOX
%D    pre-univs  .tex= \fdiagest{lemma-on-preuniversals}{Lemma"on"preuniversals:}   BOX
%D    yoneda-L   .tex= \fdiagest{yoneda-lemma}{Yoneda"Lemma:} BOX
%D    yoneda-C   .tex= \fdiagest{yoneda-corollary}{Corollary:} BOX
%D    univ-arrow .tex= \fdiagest{def-of-univ-arrow}{Definition"of"universal"arrow:} BOX
%D    univ-elt   .tex= \fdiagest{def-of-univ-arrow-and-elt}{Definitions"of"universal"element\\and"representable"functor:} BOX
%D      y+= 2.5
%D    @ 0 @ 1 |->
%D    @ 1 @ 2 |->
%D    @ 2 @ 3 |->
%D    @ 0 @ 4 |->
%D    @ 4 @ 5 |->
%D ))
%D OUTBOXES
%D enddiagram
%D
$$\thinmtos
  \diag{yoneda-and-friends}
$$


\newpage


% \ref{proto-universals}

%D diagram pdiagLUNIV
%D 2Dx     100    +18
%D 2D  100        #1
%D 2D             |
%D 2D           #4|
%D 2D             v
%D 2D  +16 #2 |-> #3
%D 2D
%D (( #1 #3 -> .plabel= l #4
%D    #2 #3 |->
%D ))
%D enddefpdiagram 4

%D diagram pdiagNTVV
%D 2Dx     100    +15   +15
%D 2D  100        #2    #4
%D 2D             |     |
%D 2D   +8 #1 -.> | --> |
%D 2D             v     v
%D 2D   +8        #3    #5
%D 2D
%D (( #1   #2 #3   #4 #5
%D    @ 1 @ 2 ->  @ 3 @ 4 ->
%D    @ 0 @ 1 @ 2 midpoint -> .plabel= a .
%D    @ 1 @ 4 harrownodes nil 16 nil -> .plabel= a #6
%D ))
%D enddefpdiagram 6

The diagram above starts from the idea of universal, 

A preuniversal (for the functor $R: \bbB \to \bbA$, on an object $A$;
but let's consider $R$ and $A$ fixed) is a pair $(BÝ\bbB,\, f:A \to
RB)$. We will write a preuniversal $B,f$ in diagrammatic form as
%
$$\pdiagLUNIV{A}{B}{RB}{f} \qquad \text{or as} \qquad \pdiagluniv{a}{b}{b^R}{} \quad,$$
%
where the notation at the right is a downcasing for the (more)
standard notation on the left.

We will denote the space of preuniversals for $R$ on $A$ by:
%
$$\pdiagLUNIV{A}{B}{RB}{}$$

As $A$ and $R$ are fixed, then for each object $B$ of $\bbB$ we can
form the functors $\Hom_\bbB(B,-), \Hom_bbA(A,F-): \bbB \to \Set$; we
can write their actions on objects as $C \mto (B \to C)$ and $C \mto
(A \to RC)$.

We can also form the space of natural transformations between these
two functors, the we can write as:

$$\Nat(\Hom_\bbB(B,-), \Hom_\bbA(A,F-))                  \qquad\text{or as}$$
$$\Hom_{\bbB \to \Set}(\Hom_\bbB(B,-), \Hom_\bbA(A,F-))  \qquad\text{or as}$$
$$                 ((C \mto (B \to C)) \to (C \mto (A \to RC)))  \qquad\text{or as}$$
$$\Hom_{\bbB \to \Set}((C \mto (B \to C)), (C \mto (A \to RC)))  \qquad\text{or as}$$
$$C \TNto ((B \to C) \to (A \to RC)) \qquad\text{or as}$$

$$\pdiagNTVV{C}{B}{C}{A}{RC}{}$$

Our convention (section ???) is that $X \to Y$ is a hom-set and $X
\ton{f} Y$ is a specific arrow in $X \to Y$. Using this idea, we can
denote a specific natural (or proto-natural) transformation, $T$, by:

$$C \TNto ((B \to C) \ton{T_C} (A \to RC))$$
$$((B \ton{f} C) \mton{T_C} (A \ton{T_C(f)} RC))$$

Each preuniversal $B \mto RB \otn{f} A$ induces a proto-natural
transformation
%
$$C \TNto ((B \ton{g} C) \mton{ðg.(f;Rg)} (A \ton{f;Rg} RC))$$
%
whose action can be defined more formally as $ðC.ðg.(f;Rg)$; it turns
out to be a natural transformation, but in the syntactical world that
doesn't matter. And each proto-natural transformation
%
$$C \TNto ((B \to C) \ton{T} (A \to RC))$$
%
induces a preuniversal $(B, \, T_B(\id_B):A \to RB)$.

These two operations form a proto-bijection
%
%D diagram yoneda-proto-bij-1
%D 2Dx       100                      +100
%D 2D               T:=ðC.ðg.(f;Rg)
%D 2D  100 PREUNIV |---------------> PROTOTN
%D 2D              <---------------|
%D 2D                f:=T_B(\id_B)
%D 2D
%D (( PREUNIV .tex= \pdiagLUNIV{A}{B}{RB}{f} BOX
%D    PROTOTN .tex= \pdiagNTVV{C}{B}{C}{A}{RC}{T} BOX
%D    @ 0 @ 1 |-> sl^ .plabel= a T\;:=\;ðC.ðg.(f;Rg)
%D    @ 0 @ 1 <-| sl_ .plabel= b f\;:=\;T_B(\id_B)
%D ))
%D OUTBOXES
%D enddiagram
%D
$$\diag{yoneda-proto-bij-1}$$
%
that we downcase as:
%
$$\diag{lemma-on-preuniversals}$$

This is the ``lemma on preuniversals''; note that the mechanics of the
construction are exactly the same as the idea, from adjunctions, that
we can define $\eta$ from $\sharp$ and vice-versa --- and so the big
diagram indicates that the lemma on preuniversals comes from $(\eta
\bij \sharp)$.

When $\bbA = \Set$ we can take $A = 1 = \{*\}$; this particular case
is the horizontal bijection in the Yoneda Lemma.

For any object $BÝ\bbB$, each arrow $1 \to RB$ selects an element of
$RB$ (a ``$b^R$''); and as the set $1 \to RC$ is isomorphic to $RC$
the functor $C \mto (1 \to RC)$ can be replaced by $C \mto RC$ in $C
\TNto ((B \to C) \to (1 \to RC))$; the details are:
%
%D diagram yoneda-V1
%D 2Dx     100       +90
%D 2D  100 1->RB     T
%D 2D
%D 2D
%D 2D
%D 2D  +30 b^RÝRB    T'
%D 2D
%D (( 1->RB .tex= (1->^{f}RB)
%D    b^RÝRB
%D    T  .tex= C-.->((B->C)->^{T}(1->RC))
%D    T' .tex= C-.->((B->C)->^{T'}RC)
%D    @ 0 @ 1 <-| sl_ .plabel= l ðb^R.ð*.b^R
%D    @ 0 @ 1 |-> sl^ .plabel= r ðf.f(*)
%D    @ 2 @ 3 <-| sl_ .plabel= l T\;:=\;ðC.ðf.ð*.((T'C)f)
%D    @ 2 @ 3 |-> sl^ .plabel= r T'\;:=\;ðC.ðf.TCf*
%D ))
% D OUTBOXES
%D enddiagram
%D
$$\diag{yoneda-V1}$$

we can downcase all this --- the two ``vertical'' proto-bijections
that we just defined, plus the ``horizontal'' proto-bijection that we
defined before --- as:
%
$$\diag{yoneda-lemma}$$

The best way to think of the formalization of the diagram above is
that it is a big uple, with many components, where each of these
components can be accessed by name; for example,

$$b^R \mto \pdiagntve{c}{b}{c}{c^R}{}$$

is the composite of three of the lambda-terms that we have just
defined --- this composite turns out to be, after many
$\bb$-reductions,
%
$$ðb^R.ðC.ðg.((Rg)(b^R))$$
%
and its (proto-)inverse is:
%
$$ðT.((T_B)(\id_B))$$

This is the Yoneda Lemma.

\msk

Now we specialize again. Fix an object $A$ of $\bbB$ (note that in the
lemma on preuniversals we had $A \in \catA$!) and take $R :=
\Hom_\catB(A,-)$, i.e., $R$ is now $C \mto (A \to C)$. Each element of
$RB$ is an arrow from $A$ to $B$, and we can replace the functor $C
\mto (1 \to (A \to C))$ by $C \mto (A \to C)$. We get this:

%D diagram yoneda-V2
%D 2Dx     100         +90
%D 2D  100 1->(A->B)   T
%D 2D
%D 2D
%D 2D
%D 2D  +30 A->B        T'
%D 2D
%D (( 1->(A->B) .tex= (1->^{f}RB)
%D    A->B      .tex= A->^{f'}B
%D    T  .tex= (C-.->((B->C)->^{T}(1->(A->C))))
%D    T' .tex= (C-.->((B->C)->^{T'}(A->C)))
%D    @ 0 @ 2 |-> sl^
%D    @ 0 @ 2 <-| sl_
%D    @ 0 @ 1 <-| sl_
%D    @ 0 @ 1 |-> sl^
%D    @ 2 @ 3 <-| sl_
%D    @ 2 @ 3 |-> sl^
%D ))
% D OUTBOXES
%D enddiagram
%D
$$\diag{yoneda-V2}$$

% (find-angg ".emacs" "find-epalette")
% (find-epalette my-palette)
% (eev-glyphs-set-face 'eev-glyph-face-shortverb "magenta" "darkolivegreen")
% (eev-glyphs-set-face 'eev-glyph-face-shortverb "magenta" "gray15")
% (eev-set-glyph ?\C-V ?V 'eev-glyph-face-shortverb)
% (find-es "tex" "shortvrb")

[Coq demo:]

{\MakeShortVerb{}
 \ttchars
 \par(a,b) := «$(1\ton{f}RB)$», «$\pdiagLUNIV{A}{B}{RB}{f}$»;
 \DeleteShortVerb{}
}





% --------------------
% «proto-products»  (to ".proto-products")
% (sec      "Products" "proto-products")
\mysection {Products} {proto-products}

\def\twolinehorizNT#1#2#3#4#5#6#7#8{
  \begin{array}[t]{ccrcl}
    #1 & #2 & (#3 & #4 & #5) \\
       &    &  #6 & #7 & #8
  \end{array}
}
\def\pdiag#1{\left(\diag{#1}\right)}

If $B$ and $C$ are two objects of a category $\bbC$, $B×C$ is their
product, and $:B×C \to B$ and $':B×C \to C$ the projection maps,
then we can regard the diagram
%
%D diagram fatslim-prod-1
%D 2Dx     100     +30     +30
%D 2D  100         A
%D 2D
%D 2D  +30 B <--- B×C ---> C
%D 2D
%D (( A B B×C C
%D    @ 0 @ 1 -> .plabel= a f
%D    @ 0 @ 2 -> .plabel= m \ang{f,g}
%D    @ 0 @ 3 -> .plabel= a g
%D    @ 1 @ 2 <- .plabel= b \pi
%D    @ 2 @ 3 -> .plabel= b \pi'
%D ))
%D enddiagram
%D
$$\diag{fatslim-prod-1}$$

as ``being'' the tuple $(B, C, B×C, \pi, \pi', (\ang{,}))$, where
$\ang,$ is the inverse for the natural transformation

$$\twolinehorizNT
  {A^\op} {\tnto} {\Hom_\bbC(A,B×C)} {\to} {\Hom_{\bbC×\bbC}((A,A),(B,C))}
                                  h {\mto} {(h;\pi,\,h;pi')}
$$

A {\sl pre-product diagram} in a category $\bbC$ is a 5-uple:

$$B \otn{p} B×C \ton{p'} C \quad \equiv \quad (B, C, P, p:P \to B, p':P \to C)$$

Any pre-product diagram induces a natural transformation

$$\twolinehorizNT
  {A^\op} {\tnto} {\Hom_\bbC(A,P)} {\to} {\Hom_{\bbC×\bbC}((A,A),(B,C))}
                                h {\mto} {(h;p,\,h;p')}
$$

that we can draw as:

%D diagram fatslim-prod-2
%D 2Dx     100           +40
%D 2D  100 (A,A) <-----| A
%D 2D        |           |
%D 2D        |     <-|   |
%D 2D        v           v
%D 2D  +30 (B,C) |- - -> P 
%D 2D
%D (( (A,A) A  (B,C) P
%D    @ 0 @ 1 <-|
%D    @ 0 @ 2 -> .plabel= m (h;p,\,h;p')
%D    @ 1 @ 3 -> .plabel= r h
%D    @ 2 @ 3 |-->
%D    @ 0 @ 3 harrownodes 10 20 nil <-|
%D ))
%D enddiagram
%D
$$A^\op \TNto \pdiag{fatslim-prod-2}$$

A {\sl product diagram} in $\bbC$ is a 6-uple, $(B, C, B×C, \pi, \pi',
(\ang{,}))$, which is a pre-product diagram plus an inverse to the
natural transformation just described:

%D diagram fatslim-prod-3
%D 2Dx     100           +40
%D 2D  100 (A,A) <-----| A
%D 2D        |           |
%D 2D        |     |->   |
%D 2D        v           v
%D 2D  +30 (B,C) |- - -> P 
%D 2D
%D (( (A,A) A  (B,C) P
%D    @ 0 @ 1 <-|
%D    @ 0 @ 2 -> .plabel= l (f,g)
%D    @ 1 @ 3 -> .plabel= r \ang{f,g}
%D    @ 2 @ 3 |-->
%D    @ 0 @ 3 harrownodes nil 20 nil |->
%D ))
%D enddiagram
%D
$$A^\op \TNto \pdiag{fatslim-prod-3}$$

We will draw a product diagram like this:

$$\diag{fatslim-prod-1}$$

Note that from the middle arrow we can infer the name of the inverse
of the original natural transformation; the operation `$\ang,$'
factors the pair $(f,g)$ through the product.

When $B \otn{p} B×C \ton{p'} C$ is a product diagram we will say that
$P$ ``deserves the name'' $B×C$, and that the projections $p$ and $p'$
``deserve the names'' $$ and $'$.

An object $B×C$ can only deserve the `$×$' in its name if we also have
projections $:B×C \to B$ and $':B×C \to C$ also deserving their
names. A product ``comes together'' with its projections --- but we
are somehow shifting this notion to the dictionary.

A ``dictionary'' --- in the real, non-mathematical world --- maps
``names'' to ``definitions''. In our case, this part of a dictionary
corresponds to the ``interpretation function'' of a model: a model $M$
for a language $L$ maps each name (...) But dictionaries, in the
non-mathematical world, also have other parts --- for example, they
may have forewords in which some features of the language are
discussed, and where some conventions are explained ---, and within
the conventions we may have that whenever we have an entry for `$B×C$'
we will also have entries for $:B×C \to B$ and $':B×C \to C$ (or
maybe `$_{BC}$' for and `$'_{BC}$' instead --- $$ and $'$ may be
shorthands), and then the tuple $(B, C, B×C, , ')$ will have
properties such and such...

Note that in the ``real world'' (now I'm using ``real world'' in the
sense of section [...]) the natural transformation $\ang,$ is an {\sl
inverse} for
%
$$(-;,-;') \;\; = \;
  \twolinehorizNT
  {A^\op} {\TNto} {\Hom_\bbC(A,B×C)} {\to} {\Hom_{\bbC×\bbC}((A,A),(B,C))}
                                  h {\mto} {(h;\pi,\,h;pi')}
$$
%
and so we could as well have just required that $(-;,-;')$ be
inversible. But the right corresponding notion in the syntactical
world is that $(\ang,)$ should be a proto-inverse for $(-;,-;')$.
And so:

%D diagram fatslim-nt-1
%D 2Dx     100    +25   +30
%D 2D  100        #2    #4
%D 2D             |     |
%D 2D  +15 #1 -.> | --> |
%D 2D             v     v
%D 2D  +15        #3    #5
%D 2D
%D (( #1 .tex= A^\op  #2 .tex= (A,A) #3 .tex= (B,C)   #4 .tex= A #5 .tex= B×C
%D    @ 1 @ 2 ->  @ 3 @ 4 ->
%D    @ 0 @ 1 @ 2 midpoint -> .plabel= a .
%D    @ 1 @ 4 harrownodes nil 20 nil -> .plabel= a {}
%D ))
%D enddiagram

$$\diag{fatslim-nt-1}$$




% --------------------
% «to-deserve-a-name»  (to ".to-deserve-a-name")
% (sec      "To Deserve a Name" "to-deserve-a-name")
\mysection {To Deserve a Name} {to-deserve-a-name}

In a diagram $A \ton{i} C \otn{i'} B$ we say that the `$C$' {\sl
  deserves the name} `$A+B$', and that $i$ and $i'$ deserve the names
$\iota$ and $\iota'$, when $A \ton{i} C \otn{i'} B$ is a coproduct
diagram.

[Similarly for products, pullbacks, etc...]

We say that the `$C$' is a {\sl candidate for} `$A+B$' when... [This
  is similar to stating: ``{\sl Proposition: Foo}'', and then
  proceeding to a proof of Foo.]



% --------------------
% «mad-names»  (to ".mad-names")
% (subsec     "Mad Names" "mad-names")
\mysubsection {Mad Names} {mad-names}

In section \ref{dn-simple} we hint to a definition for ``downcasing''
and ``uppercasing'' that is much stricter than the one that is really
useful...

``Downcasing'' and ``uppercasing'' should {\sl not} be precise
syntactical transformations on names! Instead, what works well is to
keep a set of loosely-defined guidelines for downcasings and
uppercasing, that need not be followed very rigorously, and to keep a
``dictionary of uppercasings and downcasings'' with several entries
like ``$a' \mto b : A \to B$', `$f \equiv a \mto b$' (I use `$\equiv$'
to mean ``change of notation'', usually from standard to downcased)...
if this dictionary can be reconstructed from very hints, the better.

There is {\sl nothing} --- apart from the desire to think clearly and
to communicate our thoughts --- that prevents us, in the formalization
of some construction or theorem in Coq with \LaTeX{} chunks (section
\ref{dn-simple}), from using ``mad names'' like, say, `$\$_\#^\%$'
instead of `$a \mto b$'. The language of long names and downcasings
presented here is not like an internal language, like the ones that we
use for toposes (see \cite{BellLST}, \cite{LambekScott}, etc); rather,
it is more like {\sl half} of an internal language: a corpus of
sentences and diagrams, as they are ``spoken'', but without a fixed
grammar --- we've split the {\sl use of a language} from its {\sl
  formalization}.

By the way, we can use the idea of ``diagrams as dictionaries between
notations'' (see section \ref{notes-and-further}) to change from the
$n$-th attempt to a good notation to the ($n+1$)-th attempt; the
diagrams keep the same shape...






% --------------------
% «proto-exponentials»  (to ".proto-exponentials")
% (sec      "Exponentials" "proto-exponentials")
\mysection {Exponentials} {proto-exponentials}



% --------------------
% «proto-terminals»  (to ".proto-terminals")
% (sec      "Terminals" "proto-terminals")
\mysection {Terminals} {proto-terminals}



% --------------------
% «proto-cart-cats»  (to ".proto-cart-cats")
% (sec      "Cartesian Categories" "proto-cart-cats")
\mysection {Cartesian Categories} {proto-cart-cats}



% --------------------
% «proto-CCCs»  (to ".proto-CCCs")
% (sec      "Cartesian Closed Categories" "proto-CCCs")
\mysection {Cartesian Closed Categories} {proto-CCCs}



% --------------------
% «proto-ind-fib-hyp»  (to ".proto-ind-fib-hyp")
% (sec      "Indexed Categories, Fibrations, Hyperdoctrines" "proto-ind-fib-hyp")
\mysection {Indexed Categories, Fibrations, Hyperdoctrines} {proto-ind-fib-hyp}



% --------------------
% «proto-subobjects»  (to ".proto-subobjects")
% (subsec     "Subobjects" "proto-subobjects")
\mysubsection {Subobjects} {proto-subobjects}

If $B$ is an object of a category $\bbB$, a {\sl subobject of $B$} is
a pair $(B', \bb:B' \Monicto B)$; we will often abbreviate $(B'. \bb)$
as $B' \Monicto B$. We say that two subobjects of $B$, $B' \Monicto B$
and $B'' \Monicto B$, are {\sl isomorphic} when there is an iso $B'
\bij B''$ making the obvious diagram commute.

For every category $\bbB$ we can define the category $\Sub(\bbB)$
whose objects are the subobjects of objects of $\bbB$. A morphism
$(f',f): (A' \monicto A) \to (B' \Monicto B)$ in $\Sub(\bbB)$ is a
pair of morphisms in $\bbB$, $f':A' \to B'$ and $f:A \to B$, making
the obvious square commute.

When the category $\bbB$ is $\Set$ the following definition makes
sense:

\begin{quote}
A {\sl canonical subobject} is the inclusion of a subset in its
ambient set.
\end{quote}

We will write canonical subobjects like this:
%
$$\sst{bÝB}{Q(b)} \Monicto B$$
%
and we will sometimes abbreviate that as:
%
$$\ssst{bÝB}{Q(b)}$$

We will denote by $\CanSub(\Set)$ the subcategory of $\Sub(\Set)$ made
by the canonical subobjects of $\Set$ and the morphisms between them.
Note that a morphism
%
$$(f', f): \ssst{aÝA}{P(a)} \to \ssst{bÝB}{Q(b)}$$
%
in $\CanSub(\Set)$ is in fact a pair of morphisms in $\Set$:

%D diagram CanSubSet
%D 2Dx     100       +60
%D 2D           f'
%D 2D  100 A' -----> B'
%D 2D      v         v
%D 2D      |         |
%D 2D      v    f    v
%D 2D  +30 A ------> B
%D 2D
%D (( A' .tex= \sst{aÝA}{P(a)}
%D    B' .tex= \sst{bÝB}{Q(b)}
%D    A B
%D    @ 0 @ 1 -> .plabel= a f'
%D    @ 0 @ 2 >->
%D    @ 1 @ 3 >->
%D    @ 2 @ 3 -> .plabel= a f'
%D
%D ))
%D enddiagram
%D
$$\diag{CanSubSet}$$

We will think of subobjects of $B$ as being, or representing,
propositions over~$B$. Each subobject of a set $B$ is isomorphic to a
unique canonical subobject of~$B$:

{\myttchars
\footnotesize
\begin{verbatim}
B' <--> {b|Îb'ÝB'.\bb(b')=b}
  v     v
   \   /
    v v
     B
\end{verbatim}
}


% --------------------
% «proto-arch-fibration»  (to ".proto-arch-fibration")
% (subsec     "Our archetypal fibration" "proto-arch-fibration")
\mysubsection {Our archetypal fibration} {proto-arch-fibration}

$\Cod: \CanSub(\Set) \to \Set$ is a fibration:

{\myttchars
\footnotesize
\begin{verbatim}
    {a||Pa} ------------
          \             \
ýa.Pa¶Rgfa \          _  \ ýa.Pa¶Rha
            v         g_R v
             {b||Rgb} ---> {c||Rc}
                      <--|
                       g^*
       A --------------
         \             \ h
        f \             \
           v       g     v
             B ----------> C
\end{verbatim}
}

The change-of-base functor $f^*$ associated to a morphism $f:A \to B$
in $\bbB$ acts as $\ssst{b}{Qb} \mto \ssst{a}{Qfa}$.

$\CanSub(\Set)$ has a lot of structure. Each fiber $\bbE_A$ is a BiCCC:

{\myttchars
\footnotesize
\begin{verbatim}
          -- {a||Pa} --           {a||Pa}  {a||Pa´Qa} <--| {a||Pa}
         /      |      \             |          |            |
        /       |       \            |          |    <-->    |
       v        v        v           v          v            v
{a||Qa} <- {a||Qa´Ra} -> {a||Ra}  {a||§}    {a||Ra} |--> {a||Qa¶Ra}

{a||Pa} -> {a||Pa´Qa} <- {a||Qa}  {a||®}
       \        |        /           |
        \       |       /            |
         \      v      /             v
          -> {a||Ra} <-           {a||Pa}
\end{verbatim}
}

Each change-of-base functor has both a left adjoint, $Î_f \equiv
(\ssst{a}{Pa} \mto \ssst{b}{Îa.fa=b´Pa})$, and a right adjoint, $ý_f
\equiv (\ssst{a}{Ra} \mto \ssst{b}{ýa.fa=b¶Ra})$:

{\myttchars
\footnotesize
\begin{verbatim}
{a||Pa} |---> {b||Îa.fa=b´Pa}
    |              |
    |     <->      |
    v              v
{a||Qfa} <---| {b||Qb}
    |              |
    |     <->      |
    v              v
{a||Ra} |---> {b||ýa.fa=b¶Ra}

          f
    A -----------> B
\end{verbatim}
}

The diagram above specializes to:

{\myttchars
\footnotesize
\begin{verbatim}
{a,b||Pab} |---> {a||Îb.Pab}   {a,b||Pab} |---> {a,b,b'||b=b'´Pab} 
    |                |             |                   |             
    |       <->      |             |        <->        |             
    v                v             v                   v             
{a,b||Qa} <------| {a||Qa}     {a,b||Qabb} <---| {a,b,b'||Qabb'}   
    |                |             |                   |             
    |       <->      |             |        <->        |             
    v                v             v                   v             
{a,b||Rab} |---> {a||ýb.Rab}   {a,b||Rab} |---> {a,b,b'||b=b'¶Rab} 
                                                     
                                                           
   A×B ------------> A            A×B -------------> A×B×B
\end{verbatim}
}

The preservation rules $\Pand$, $\Ptrue$, $\Pimp$ hold trivially in
$\CanSub(\Set)$ --- the objects that they require to be isomorphic are
actually the same, for syntactical reasons (examples?)... Same for
$\BCCex$, $\BCCfa$. Frobenius holds too, albeit for less trivial
reasons.

$\CanSub(\Set)$ is also a {\sl comprehension category with unit}
(\cite{Jacobs}, definition\ 10.4.7):

{\myttchars
\footnotesize
\begin{verbatim}
{a||Pa} ---> {b||§} --------> {c||Qc}
   -     ^     ^    ^         -
   |     |     |    |        /
   v     v     -    v       v
   A --------> B ---> {c|Qc}
\end{verbatim}
}


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




% --------------------
% «proto-indexed-cats»  (to ".proto-indexed-cats")
% (subsec     "Indexed Categories" "proto-indexed-cats")
\mysubsection {Indexed Categories} {proto-indexed-cats}

% (find-books "__cats/__cats.el" "jacobs")
% (find-jacobspage (+ 19  27) "fibred category")
% (find-jacobspage (+ 19  50) "indexed category")

%D diagram indexed-cat-1
%D 2Dx         100          +45      +35    +30
%D 2D  100 (f;g;h)^*P                             @0
%D 2D
%D 2D  +20 (f;g)^*h^*P                            @1
%D 2D
%D 2D  +20 f^*g^*h^*P    g^*h^*P    h^*P    P     @2  @5  @7  @8
%D 2D
%D 2D  +20 f^*(g;h)^*P   (g;h)^*P                 @3  @6
%D 2D
%D 2D  +30 (f;g;h)^*P{}                           @4
%D 2D
%D 2D  +20     A            B        C      D
%D 2D
%D (( (f;g;h)^*P (f;g)^*h^*P f^*g^*h^*P f^*(g;h)^*P (f;g;h)^*P{}
%D    g^*h^*P (g;h)^*P h^*P P 
%D    @ 0 @ 1 <-> @ 1 @ 2 <-> @ 2 @ 3 <-> @ 3 @ 4 <->
%D    @ 5 @ 6 <->
%D    @ 0 @ 8 <-|
%D    @ 1 @ 7 <-|
%D    @ 2 @ 5 <-| @ 5 @ 7 <-| @ 7 @ 8 <-|
%D    @ 3 @ 6 <-| @ 6 @ 8 <-|
%D    @ 4 @ 8 <-|
%D ))
%D (( A B -> .plabel= a f
%D    B C -> .plabel= a g
%D    C D -> .plabel= a h
%D ))
%D enddiagram

%D diagram indexed-cat-2
%D 2Dx        100         +35    +30
%D 2D  100 (f;\id)^*P
%D 2D
%D 2D  +20 f^*\id^*P    \id^*P   P
%D 2D
%D 2D  +20   f^*P        P{}
%D 2D
%D 2D  +20    A           B      B{}
%D 2D
%D (( (f;\id)^*P
%D     f^*\id^*P   \id^*P   P
%D       f^*P        P{}
%D    @ 0 @ 1 <-> @ 1 @ 4 <->
%D    @ 2 @ 5 <->
%D    @ 0 @ 3 <-|
%D    @ 1 @ 2 <-| @ 2 @ 3 <-|
%D    @ 4 @ 5 <-|
%D ))
%D (( A B   -> .plabel= a f
%D    B B{} -> .plabel= a \id
%D ))
%D enddiagram

%D diagram indexed-cat-3
%D 2Dx        100        +35    +30
%D 2D  100 (\id;f)^*P
%D 2D
%D 2D  +20 \id^*f^*P    f^*P    P
%D 2D
%D 2D  +20   f^*P{}
%D 2D
%D 2D  +20    A          A{}    B
%D 2D
%D (( (\id;f)^*P
%D     \id^*f^*P   f^*P   P
%D       f^*P{}
%D    @ 0 @ 1 <-> @ 1 @ 4 <->
%D    @ 3 @ 5 <->
%D    @ 0 @ 3 <-|
%D    @ 1 @ 2 <-| @ 2 @ 3 <-|
%D ))
%D (( A A{} -> .plabel= a \id
%D    A{} B -> .plabel= a f
%D ))
%D enddiagram
%D

$$\diag{indexed-cat-3} \qquad \diag{indexed-cat-2}$$
\msk
$$\diag{indexed-cat-1}$$



% --------------------
% «proto-cart-morphs»  (to ".proto-cart-morphs")
% (subsec     "Cartesian Morphisms" "proto-cart-morphs")
\mysubsection {Cartesian Morphisms} {proto-cart-morphs}

A ``vee'' in a category $\bbA$ is a pair of maps $(h:A \to C, \, g:B
\to C)$ with the same codomain; we will draw vees as:
%
%D diagram vee-1
%D 2Dx     100 +15 +15
%D 2D  100 A       B
%D 2D
%D 2D  +20     C
%D 2D
%D (( A C -> .plabel= l h
%D    B C -> .plabel= r g
%D ))
%D enddiagram
%
%D diagram vee-2
%D 2Dx     100 +15 +20
%D 2D  100 A
%D 2D
%D 2D  +20     B   C
%D 2D
%D (( A C -> .plabel= a h
%D    B C -> .plabel= b g
%D ))
%D enddiagram
%
$$\diag{vee-1} \qquad \text{or as:} \quad \diag{vee-2} \quad \text{.}$$

A {\sl completion} for a vee $(h:A \to C, \, g:B \to C)$ is a map $f:
A \to B$ such that $f;g=h$. Let's draw the set of all completions for
the vee $(h:A \to C, \, g:B \to C)$ as this:
%
%D diagram all-completions-1
%D 2Dx     100 +15 +20
%D 2D  100 A
%D 2D
%D 2D  +20     B   C
%D 2D
%D (( A C -> .plabel= a h
%D    B C -> .plabel= b g
%D    A B --> .plabel= l f
%D ))
%D enddiagram
%
%D diagram all-completions-2
%D 2Dx     100 +15 +20
%D 2D  100 FA
%D 2D
%D 2D  +20     FB  FC
%D 2D
%D (( FA FC -> .plabel= a Fh
%D    FB FC -> .plabel= b Fg
%D    FA FB --> .plabel= l f'
%D ))
%D enddiagram
%
$$\diag{all-completions-1} \qquad .$$

The standard notation for that, using slice categories (see
\cite{BarrWells}, p.3, or \cite{Awodey}, p.15), would be:
%
$$\Hom_{\bbA/C}(h:A \to C, \, g:B \to C).$$

% (find-awodeyctpage (+ 10 15) "slice category")
% (find-tttpage      (+ 13  3) "slice category")

A functor $F: \bbA \to \bbB$ takes vees in $\bbA$ to vees in $\bbB$,
%
$$(h:A \to C, \, g:B \to C) \; \mto \; (Fh:FA \to FC, \, Fg:FB \to FC)$$
%
and induces functions from sets of completions to sets of completions:
%
%D diagram F-on-completions
%D 2Dx            100             +85      +70
%D 2D  100 \usebox{\myboxa}    {f:A->B}    f
%D 2D
%D 2D  +45 \usebox{\myboxb}  {f':FA->FB}  Ff
%D 2D
%D (( \usebox{\myboxa} \usebox{\myboxb} ->
%D      {f:A->B}  .tex= \sst{f:A->B}{f;g=h}
%D    {f':FA->FB} .tex= \sst{f':FA->FB}{f';Fg=Fh}
%D    ->  
%D    f Ff |->
%D ))
%D enddiagram
%D
$$\savebox{\myboxa}{$\diag{all-completions-1}$}
  \savebox{\myboxb}{$\diag{all-completions-2}$}
  \diag{F-on-completions}
$$

\def\pdiag#1{\diag{#1}}
\def\pdiag#1{\left(\diag{#1}\right)}

When a map $\pdiag{all-completions-1} \to \pdiag{all-completions-2}$
is a bijection there is a unique completion $f: A \to B$ corresponding
to each completion $f': FA \to FB$. We will then say that this $f$ is
the {\sl lifting} of the corresponding $f'$, and we will say that the
vee $(h,g)$ {\sl has unique liftings} (for the functor $F$; but let's
think of $F$ as fixed).

When a map $g:B \to C$ has the property that all vees of the form
$(h,g)$ have unique liftings --- note that this must hold for all
possible choices of domains for $h$, i.e., now the `$A$' is free ---
then we will say that $g$ is {\sl cartesian}. This property is not so
rare as it might seem.

{\sl Fact.} If $F: \Set^\to \to \Set$ is the ``codomain'' functor,
$\Cod$, then pullbacks in $\Set$ --- regarded as morphisms in
$\Set^\to$ --- are cartesian morphisms for $F$.

The diagram below is the core of the proof. Each completion $(f',f)$
``above'' is mapped to a completion $f$ ``below''; each completion $f$
below lifts to a completion $(\ang{a;f,h'},f)$ above.
%
\def\poo#1#2#3{\begin{pmatrix}
    #1 \\
    \scriptstyle{#2} \dnto \phantom{\scriptstyle{#2}} \\
    #3 \\
    \end{pmatrix}
  }
\def\poom#1#2{(#1,#2)}
\def\poom#1#2{\begin{smallmatrix}#1,\\#2\end{smallmatrix}}
\def\poom#1#2{\left(\begin{smallmatrix}#1,\\#2\end{smallmatrix}\right)}
\def\poom#1#2{\begin{smallmatrix}#1\\#2\end{smallmatrix}}
%
%D diagram pullbacks-are-cartesian
%D 2Dx     100 +40  +50
%D 2D  100 AA
%D 2D
%D 2D  +30     BB   CC
%D 2D
%D 2D  +15 A
%D 2D
%D 2D  +30     B    C
%D 2D
%D (( AA .tex= \poo{A'}{a}{A}
%D    BB .tex= \poo{B×_{C}C'}{\pi}{B}
%D    CC .tex= \poo{C'}{c}{C}
%D    AA BB -> .plabel= l \poom{\ang{a;f,h'}}{f}
%D    BB CC -> .plabel= b \poom{\pi'}{g}
%D    AA CC -> sl^^ .plabel= a \poom{h'}{h}
%D    A B -> .plabel= l f
%D    B C -> .plabel= b g
%D    A C -> .plabel= a h
%D ))
%D enddiagram
%D
$$\diag{pullbacks-are-cartesian}$$


% --------------------
% «proto-cleavages»  (to ".proto-cleavages")
% (subsec     "Cleavages" "proto-cleavages")
\mysubsection {Cleavages} {proto-cleavages}

Now let's clean up the notation. The functor $F: \bbA \to \bbB$ will
become the ``projection functor'' $p: \bbE \to \bbB$, going from the
``entire category'' $\bbE$ to the ``base category''. Projection
functors are just normal functors, but they are downcased in a funny
way, as we shall see soon.

The objects of $\bbB$ will be called $A$, $B$, $C$, $D$, $\ldots$. the
objects of $\bbE$ will be called $P$, $Q$, $R$, $S$, $\ldots$; in the
archetypal case --- namely, $p \equiv \Cod: \Sub(\Set) \to \Set$ ---
they will stand for {\sl propositions} over {\sl sets}. For example,
an object $Q$ of $\bbE$ over an object $B$ of $\bbB$ will stand for
the subobject $\sst{bÝB}{Q(b)} \monicto B$:
%
%D diagram p-on-subobjs
%D 2Dx        100        +70
%D 2D  100 \Sub(\Set)    Q
%D 2D
%D 2D  +20   \Set       pQ=\Cod"Q=B
%D 2D
%D (( \Sub(\Set) \Set |-> .plabel= l p==\Cod
%D    Q .tex= Q==(\sst{bÝB}{Q(b)}>->B)
%D    pQ=\Cod"Q=B |->
%D ))
%D enddiagram
%D
$$\diag{p-on-subobjs}$$

An object $Q$ of $\bbE$ is said to be {\sl over} its projection $pQ$;
similarly, morphisms in $\bbE$ are said to be {\sl over} their images.
For each object $B$ of $\bbB$ the subcategory of $\bbE$ formed by the
objects and morphisms over $B$ and $\id_B$ is called the {\sl fiber
  over $B$}, and denoted by $\bbE_B$. Also, we will tend to draw
objects and morphisms of $\bbE$ over their images and omit the funtor
arrows for $p$. So
%
%D diagram p-omit-1
%D 2Dx     100   +30
%D 2D  100 Q --> R
%D 2D
%D 2D  +20 B --> C
%D 2D
%D (( Q R -> .plabel= a g'
%D    B C -> .plabel= a g
%D ))
%D enddiagram
%
%D diagram p-omit-2
%D 2Dx       100     +45    +25
%D 2D  100   Q ----> R     \bbE
%D 2D
%D 2D  +20 B=pQ --> C=pR   \bbB
%D 2D
%D (( Q R -> .plabel= a g'
%D    B=pQ C=pR -> .plabel= a g=pg'
%D    Q B=pQ |-> R C=pR |->
%D    \bbE \bbB -> .plabel= r p
%D ))
%D enddiagram
%
$$\diag{p-omit-1}
  \qquad \text{is shorthand for} \quad
  \diag{p-omit-2} \quad .
$$

Morphisms in a fiber are said to be {\sl vertical}.

\msk

A {\sl cleavage} for a projection funtor $p$ is a pair of operations,
$(·^*, \ov·)$, that produces, for each morphism $g: B \to C$ in $\bbB$
and for each $R$ in $\bbE$ over $C$, a cartesian morphism $\ov g_R:
g^*R \to R$ over $g$.

A {\sl cartesian lifting} for $g: B \to C$ at an object $R$ over $C$
is a cartesian morphism $Q \to R$ over $g$ with codomain $R$. A
cleavage $(·^*, \ov·)$ chooses a particular cartesian lifting for each
pair $(R,\, g:B \to pR)$.

A {\sl cloven fibration} is a projection functor $p: \bbE \to \bbB$
plus a cleavage $(·^*, \ov·)$. A {\sl fibration} is slightly less than
this: a projection functor $p:\bbE \to \bbB$ plus the guarantee that
each pair $(R,\, g:B \to pR)$ has at least one cartesian lifting.

We will not use ``plain'' fibrations here; cleavages are too
convenient.

\msk

The following fact may at first look too technical to be useful.

{\sl Fact (technical).} In a cloven fibration $p: \bbE \to \bbB$, for each object
$R$ in $\bbE$ the ``projection'' operation $p_R: \bbE/R \to \bbB/pR$
is left adjoint to the ``cartesian lifting'' operation $\ov·_R:
\bbB/pR \to \bbE/R$. In diagrams:

%D diagram p-|cart
%D 2Dx       100     +25  +20    +25    +30         +50
%D 2D  100           P -------\
%D 2D  +10 \bbE/R      ->      v        P->R ---> g^*R->R
%D 2D  +10   |^         g^*R --> R       -           ^
%D 2D        ||                          |           |
%D 2D  +10   v|     pP -------\          v           -
%D 2D  +10 \bbB/pR     ->      v       pP->pR ---> B->pR
%D 2D  +10                B --> pR
%D 2D
%D (( \bbE/R \bbB/pR
%D    @ 0 @ 1 -> sl_ .plabel= l p_R
%D    @ 0 @ 1 <- sl^ .plabel= r \ov·_R 
%D ))
%D (( P g^*R R     
%D    pP B pR
%D    @ 0 @ 1 --> .plabel= b f'
%D    @ 1 @ 2 -> .plabel= b \ov"g_R
%D    @ 0 @ 2 -> .plabel= a h'
%D    @ 3 @ 4 --> .plabel= b f
%D    @ 4 @ 5 -> .plabel= b g
%D    @ 3 @ 5 -> .plabel= a ph'
%D
%D ))
%D ((  P->R   .tex= (P->^{h'}R)     g^*R->R .tex= (g^*R->^{\ov"g_R}R)
%D     pP->pR .tex= (pP->^{ph'}pR)  B->pR   .tex= (B->^{g}pR)
%D     @ 0 @ 1  -> .plabel= a f'
%D     @ 0 @ 2 |-> .plabel= l p_R
%D     @ 1 @ 3 |-> .plabel= r \ov·_R
%D     @ 2 @ 3 -> .plabel= b f
%D     @ 0 @ 3 varrownodes nil 20 nil |-> sl_ .plabel= l \flat
%D     @ 0 @ 3 varrownodes nil 20 nil <-| sl^ .plabel= r \sharp
%D ))
%D enddiagram
%D
$$\diag{p-|cart}$$

The transposition `$\flat$' is a familiar operation: it take each $f'$
to its projection $pf'$. The inverse transposition, `$\sharp$', is
something new, and extremely important --- it factors $h'$ through the
cartesian morphism $\ov g_R$, returning a morphism $f'$ over $f$.

In a vee $(h':P \to R,\, g':Q \to R)$ over $(h:A \to C,\, g:B \to C)$
in which $g'$ is cartesian each completion $f:A \to B$ of the lower
vee lifts in a unique way to a completion $f':P \to Q$ of the upper
vee. When the upper vee is clear from the context we will denote this
$f'$ by $f^\sharp$, and we will call $f^\sharp$ the ``factorization of
$h'$ through $g'$ (over $f$)''. Note that here $g'$ is any cartesian
morphism --- not necessarily one returned by the cleavage.

%D diagram cart-factorization
%D 2Dx      100 +20    +25
%D 2D  100  P -------\
%D 2D  +10    ->      v   
%D 2D  +10      Q ---> R  
%D 2D                     
%D 2D  +10  A -------\    
%D 2D  +10    ->      v   
%D 2D  +10      B ---> C  
%D 2D
%D (( P Q --> .plabel= l f^\sharp
%D    Q R -> .plabel= b g'
%D    P R -> .plabel= a h'
%D    A B -> .plabel= l f
%D    B C -> .plabel= b g
%D    A C -> .plabel= a h
%D ))
%D enddiagram
%D
$$\diag{cart-factorization}$$


For any morphism $g:B \to C$ in the base, the operation $R \mto g^* R$
given by the cleavage is the action of a functor on objects. To
construct the action of the functor $g^*:\bbE_C \to \bbE_B$ on
morphisms we use the factorization `$\sharp$': if $r:R' \to R$ is a
morphism in $\bbE_C$, then $g^*r: g^*R' \to g^*R$ is the factorization
of $\ov g_{R'};r$ through $\ov g_R$ (over $\id_B$).

%D diagram g*-on-morphisms
%D 2Dx     100     +40
%D 2D  100 g^*R'   R'
%D 2D
%D 2D  +25 g^*R    R
%D 2D
%D 2D  +15 B       C
%D 2D
%D (( g^*R' R' g^*R R
%D    @ 0 @ 1 -> .plabel= a \ov"g_{R'}
%D    @ 0 @ 2 -> .plabel= l \sm{g^*R\;:=\\{\id_B}^\sharp}
%D    @ 1 @ 3 -> .plabel= r r
%D    @ 2 @ 3 -> .plabel= a \ov"g_{R}
%D    B C -> .plabel= a g
%D ))
%D enddiagram
%D
$$\diag{g*-on-morphisms}$$

Each $g^*$ turned out to be a functor; it turns also out that each
$\ov g$ is a natural transformation. More precisely: for each morphism
$g:B \to C$ in the base the operation $R \mto (g^*R \ton{\ov g_R} \ov
g)$ is the action of a natural transformation $\ov g$ from $g^*:
\bbE_C \to \bbE_B$ to $\id_{\bbE_C}: \bbE_C \to \bbE_C$.


% --------------------
% «proto-cleavages-2»  (to ".proto-cleavages-2")
% (subsec     "Proto-cleavages" "proto-cleavages-2")
\mysubsection {Proto-cleavages} {proto-cleavages-2}

Let's see what all this becomes in the syntactical world.

A {\sl proto-vee} is just a vee.

A {\sl proto-completion} for a vee $(h:A \to C,\, g:B \to C)$ is just
a morphism $f:A \to B$.

A morphism $f':P \to Q$ is {\sl proto-above} a morphism $f:A \to B$ if
$pP=A$ and $pQ=B$. This is like being above, but here we check only
the domain and the codomain; the condition $pf'=f$ has been dropped.

The condition of ``having unique liftings'' for a vee becomes an
operation in the syntactical world: a proto-inverse for the  (...)

\msk

A {\sl vee with proto-unique liftings} is a vee $(h:A \to C,\, g:B \to
C)$ plus an operation that takes each proto-completion $f'$ of $(Fh:FA
\to FC,\, Fg:FB \to FC)$ to a proto-completion $f$ of $(h:A \to C,\,
g:B \to C)$. Note that there may be many more proto-completions of
$(Fh,Fg)$ than completions. We may draw a proto-unique lifiting for
$(h,g)$ as
%
$$\pdiag{all-completions-1} \ot \pdiag{all-completions-2}$$
%
i.e., as a proto-inverse for the natural arrow `$\to$' from the first
set of proto-completions to the second.

A {\sl proto-cartesian arrow} $g:B \to C$ is an arrow $g: B \to C$
plus an operation
%
$$(A,\, A \ton{h}C) \mto (\pdiag{all-completions-1} \ot \pdiag{all-completions-2})$$
%
that takes the each possible other leg for the vee and returns a
corresponding proto-unique lifting.

A {\sl proto-projection functor} is just a proto-functor.

A {\sl proto-cleavage} for a proto-projection functor $p:\bbE \to
\bbB$

[Missing: proto-above]./



% --------------------
% «proto-change-of-base»  (to ".proto-change-of-base")
% (subsec     "Change-of-Base Functors" "proto-change-of-base")
\mysubsection {Change-of-Base Functors} {proto-change-of-base}



% --------------------
% «proto-fibers»  (to ".proto-fibers")
% (subsec     "The Logical Structure in Each Fiber" "proto-fibers")
\mysubsection {The Logical Structure in Each Fiber} {proto-fibers}



% --------------------
% «proto-preservations»  (to ".proto-preservations")
% (subsec     "Preservations" "proto-preservations")
\mysubsection {Preservations} {proto-preservations}

For $f:A \to B$ a morphism in the base category and $P$, $Q$, $R$
objects over $B$:
%:
%:      f                                   f                
%:   ===========\Ptruenat                -----------\Ptrue
%:   f^*§_B|-§_A                         §_A|-f^*§_B         
%:
%:    ^Ptruenat-short-std                ^Ptrue-std                  
%:
%:       f   P  Q                           f   P   Q           
%:  ===================\Pandnat          -------------------\Pand   
%:  f^*(P´Q)|-f^*P´f^*Q                  f^*P´f^*Q|-f^*(P´Q)
%:                                                                                    
%:     ^Pandnat-short-std                ^Pand-std                  
%:
%:       f   Q  R                            f   Q  R           
%:  ===================\Pimpnat          -------------------\Pimp   
%:  f^*P´f^*Q|-f^*(Q¶R)                  f^*(Q¶R)|-f^*P¶f^*Q
%:                                                                                    
%:     ^Pimpnat-short-std                ^Pimp-std                  
%:
$$\index{preservation!of `true'!rules}
  \ded{Ptruenat-short-std} \qquad \ded{Ptrue-std}
$$
$$\index{preservation!of `and'!rules}
  \ded{Pandnat-short-std} \qquad \ded{Pand-std}
$$
$$\index{preservation!of `implies'!rules}
  \ded{Pimpnat-short-std} \qquad \ded{Pimp-std}
$$


%D diagram Ptrue-std
%D 2Dx    100      +30
%D 2D 100 T0 <==== T1
%D 2D	   -
%D 2D	   |
%D 2D	   v
%D 2D +20 T2
%D 2D
%D 2D +15 ta |---> tb
%D 2D
%D (( T0 .tex= f^*§_B  T1 .tex= §_B
%D    T2 .tex= §_A
%D    ta .tex= A      tb .tex= B
%D    T0 T1 <-|
%D    T0 T2 -> sl_ .plabel= l \Ptruenat
%D    T0 T2 <- sl^ .plabel= r \Ptrue
%D    ta tb -> .plabel= a f
%D ))
%D enddiagram
%:
%:       B
%:      ---§
%:   f  §_B
%:   ------·^*
%:   f^*§_B
%:   -----------!
%:   f^*§_B|-§_A
%:
%:   ^Ptruenat-std

%D diagram Pand-std
%D 2Dx    100     +45      +45
%D 2D 100 A0 <============ A1
%D 2D	   ^  ^             ^
%D 2D	   |   \      <-|   |
%D 2D	   -    -           -
%D 2D +20 A2 <--| A3 <==== A4
%D 2D	   -    -           -
%D 2D	   |   /      <-|   |
%D 2D	   v  v             v
%D 2D +20 A5 <============ A6
%D 2D
%D 2D +15 aa |-----------> ab
%D 2D
%D (( A0 .tex= f^*P                          A1 .tex= P
%D    A2 .tex= f^*P&f^*Q  A3 .tex= f^*(P&Q)  A4 .tex= P&Q
%D    A5 .tex= f^*Q                          A6 .tex= Q
%D        aa x+= 10 .tex= A       ab .tex= B
%D    A0 A1 <-|
%D    A0 A2 <- A0 A3 <-
%D    A1 A4 <-
%D    A0 A3 midpoint A1 A4 midpoint harrownodes nil 20 nil <-|
%D    A2 A3 <- sl^ .plabel= a {î} A2 A3 -> sl_ .plabel= b \Pand  A3 A4 <-|
%D    A2 A5 -> A3 A5 ->
%D    A4 A6 ->
%D    A3 A5 midpoint A4 A6 midpoint harrownodes nil 20 nil <-|
%D    A5 A6 <-|
%D    aa ab -> .plabel= a f
%D ))
%D enddiagram
%:
%:      P  Q              P   Q
%:      ------           -----'
%:   f  P´Q|-P            P´Q|-Q
%:  -------------·^*   -------------·^*
%:  f^*(P´Q)|-f^*P      f^*(P´Q)|-f^*Q
%:  ----------------------------------\ang{,}
%:         f^*(P´Q)|-f^*P´f^*Q
%:
%:         ^Pandnat-std

Here is the construction for $\Ptruenat$:
%
$$\index{preservation!of `true'!standard diagram}
  \diag{Ptrue-std}
  \qquad \qquad
  \index{preservation!of `true'!standard tree}
  \cded{Ptruenat-std}
$$

% Where $\Ptruenat$, $\Pandnat$, $\Pimpnat$ are:

Here is the construction for $\Pandnat$:
%
$$\index{preservation!of `and'!standard diagram}
  \diag{Pand-std}
  \qquad
  \index{preservation!of `and'!standard tree}
  \cded{Pandnat-std}
$$

%D diagram Pimp-std
%D 2Dx    100    +60                 +55   +60
%D 2D 100 B0 <-> B0' <============== B1
%D 2D	  -/\                        -/\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\==================== B3  \\
%D 2D	   \\  \\                     \\  \\
%D 2D +25   \\   B4 <===================== B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \/v                        Vv
%D 2D +20        B6                        B7
%D 2D
%D 2D +0  b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= f^*(P¶Q)&f^*P  B0' .tex= f^*((P¶Q)&P)   B1 .tex= (P¶Q)&P
%D    B2 .tex= f^*Q           B3  .tex= Q
%D    B4 .tex= f^*(P¶Q)       B5 .tex= P¶Q
%D    B6 .tex= f^*P¶f^*Q      B7 .tex= P¶Q
%D    B0  B0' <- sl^ .plabel= a {î}
%D    B0  B0' -> sl_ .plabel= b ÐP&
%D    B0' B1 <-| B0 B2 -> B0' B2 -> B1 B3 -> B2 B3 <-|
%D    B0 B4 <-| B2 B6 |->
%D    B1 B5 <-| B3 B7 |->
%D    B4 B5 <-| B5 B7 -> .plabel= r \id
%D    B4 B6 -> sl_ .plabel= l î B4 B6 <- sl^ .plabel= r ÐP¶
%D    B0' B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 b2 midpoint .TeX= A b1 b3 midpoint .TeX= B -> .plabel= a f
%D ))
%D enddiagram
%:
%:                                               Q  R 
%:                                               ----¶
%:                                               Q¶R
%:                                               ---\id
%:         Q   R                            Q¶R|-Q¶R
%:         -----¶                           --------\Uncur
%:     f    Q¶R         Q                f  (Q¶R)´Q|-R
%:   ---------------------------\Pand    ------------·^*
%:   f^*(Q¶R)´f^*Q|-f^*((Q¶R)´Q)         f^*((Q¶R)´Q)|-f^*R
%:   ------------------------------------------------------;
%:                 f^*(Q¶R)´f^*Q|-f^*R
%:                 -------------------\Cur
%:                 f^*(Q¶R)|-f^*Q¶f^*R
%:   
%:                 ^Pimpnat-std
%:
%:

And here is the construction for $\Pimpnat$. Note that it uses
$\Pand$.
%
$$\index{preservation!of `implies'!standard diagram}
  \diag{Pimp-std}
$$
$$\index{preservation!of `implies'!standard tree}
  \ded{Pimpnat-std}
$$




% --------------------
% «proto-frobenius»  (to ".proto-frobenius")
% (subsec     "Frobenius" "proto-frobenius")
\mysubsection {Frobenius} {proto-frobenius}

For $f:A \to B$ a morphism in the base category, $P$ an object over
$A$ and $Q$ an object over $B$:
%:
%:       f   P  Q                        f    P  Q          
%:  =====================\Frobnat        ---------------------\Frob
%:  Î_f(P´f^*Q)|-(Î_fP)´Q                Î_f(P´f^*Q)|-(Î_fP)´Q                
%:                                                                                      
%:     ^Frobnat-short-std                 ^Frob-std                   
%:
$$\ded{Frobnat-short-std} \qquad \ded{Frob-std}$$

How to build $\Frobnat$:
%
%D diagram Frob-std
%D 2Dx    100          +45 +35 +10
%D 2D 100 B0 ================> B1
%D 2D	  ^                  ^ ^ 
%D 2D	  |                 /  | 
%D 2D	  -                \   - 
%D 2D +20 B2 ========> B3 <--> B3'
%D 2D	  -                /   - 
%D 2D	  |                 \  |
%D 2D	  v                  v v
%D 2D +20 B4 <================ B5         
%D 2D
%D 2D +15 b0 |-----------> b1
%D 2D
%D ((
%D    B0 .tex= P                            B1  .tex=  Î_fP
%D    B2 .tex= P&f^*Q  B3 .tex= Î_f(P&f^*Q) B3' .tex= (Î_fP)&Q
%D    B4 .tex= f^*Q                         B5  .tex=     Q
%D    B0 B1 |->   B2 B0 -> B3 B1 -> B3' B1 ->
%D    B4 B5 <-|   B2 B4 -> B3 B5 -> B3' B5 ->
%D    B2 B3 |->   B3 B3' -> sl^ .plabel= a î  B3 B3' <- sl_ .plabel= b \Frob
%D    B0 B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil |->
%D    B2 B4 midpoint B3 B5 midpoint  harrownodes nil 20 nil |->
%D ))
%D (( b0 .tex= A b1 .tex= B   b0 b1 -> .plabel= a f
%D ))
%D enddiagram
%
$$\index{Frobenius!generic!standard diagram}
  \diag{Frob-std}
$$
%:
%:           f  Q                f   Q      
%:           ---·^*             ----·^*
%:       P   f^*Q            P    f^*Q
%:       ---------         ------------'
%:       P´f^*Q|-P   f      P´f^*Q|-f^*Q
%:   -----------------Î_f   --------------{Î_f}^\flat
%:   Î_f(P´f^*Q)|-Î_fP      Î_f(P´f^*Q)|-Q
%:   -------------------------------------\ang{,}
%:              Î_f(P´f^*Q)|-(Î_fP)´Q
%:
%:              ^Frobnat-std
%:
$$\index{Frobenius!generic!tree}
  \ded{Frobnat-std}
$$



% --------------------
% «proto-BCC»  (to ".proto-BCC")
% (subsec     "Beck-Chevalley" "proto-BCC")
\mysubsection {Beck-Chevalley} {proto-BCC}

% (to "dn-bcc-for-exists")

For any arrows $c:C \to B$ and $f:A \to B$, arrows $c'$ and $f'$
completing a pullback in the base category, and any object $P$ over
$C$:
%:
%:         c f c' f' P                           c f c' f' P                   
%:  ===========================\BCCLnat   ---------------------------\BCCL  
%:  Î_{c'}f^{\prime*}P|-f^*Î_cP           f^*Î_cP|-Î_{c'}f^{\prime*}P          
%:                                                                             
%:  ^BCCL-short-std                       ^BCCL-std                        
%:
%:         c f c' f' P                           c f c' f' P                   
%:  ===========================\BCCRnat   ---------------------------\BCCR  
%:  f^*ý_cP|-ý_{c'}f^{\prime*}P           ý_{c'}f^{\prime*}P|-f^*ý_cP
%:                                                                             
%:  ^BCCR-short-std                       ^BCCR-std                        
%:
$$\ded{BCCL-short-std} \qquad \ded{BCCL-std}$$
$$\ded{BCCR-short-std} \qquad \ded{BCCR-std}$$

The following diagram shows how to build the $\BCCLnat$ arrow:

% (and also the $\BCCeqnat$ arrow --- see the sections
% \ref{dn-bcc-for-exists} and \ref{dn-bcc-for-equality})

%D diagram BCCL-std
%D 2Dx    100     +45                +55   +45
%D 2D 100 B0 <====================== B1
%D 2D	  -\\                        -\\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\> B2' ============== B3  \\
%D 2D	   /\  \/                     /\  \/
%D 2D +15   \\   B4                    \\  B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \\v                        \v
%D 2D +20        B6 <===================== B7
%D 2D
%D 2D +10 b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= f^{\prime*}P                                      B1 .tex= P
%D    B2 .tex= c^{\prime*}f^*Î_cP  B2' .tex= f^{\prime*}c^*Î_cP  B3 .tex= c^*Î_cP
%D    B4 .tex= Î_{c'}f^{\prime*}P                                B5 .tex= Î_cP
%D    B6 .tex= f^*Î_cP                                           B7 .tex= Î_cP
%D    B0 B1 <-| B0 B2 -> B0 B2' -> B1 B3 -> B2 B2' <-> B2' B3 <-|
%D    B0 B4 |-> B1 B5 |->
%D    B2 B6 <-| B3 B7 <-|
%D    B6 B7 <-| B5 B7 -> .plabel= r \id
%D    B4 B6 -> sl_ .plabel= l î B4 B6 <- sl^ .plabel= r \BCCL
%D    B0 B2' midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 .tex= A×_{B}C b1 .tex= C b2 .tex= A b3 .tex= B
%D    b0 b1 -> .plabel= b f'
%D    b0 b2 -> .plabel= l c'
%D    b1 b3 -> .plabel= r c
%D    b2 b3 -> .plabel= b f
%D    b0 relplace 20 7 \pbsymbol{7}
%D ))
%D enddiagram
%
$$% \index{Beck-Chevalley!for `exists'!standard diagram}
  % \index{Beck-Chevalley!for equality!standard diagram}
  \index{Beck-Chevalley!left!standard diagram}
  \diag{BCCL-std}
$$

%D diagram BCCR-std
%D 2Dx    100    +45                 +55   +45
%D 2D 100 B0 <-> B0' <============== B1
%D 2D	  -/\                        -/\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\==================== B3  \\
%D 2D	   \\  \\                     \\  \\
%D 2D +15   \\   B4 <===================== B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \/v                        Vv
%D 2D +20        B6                        B7
%D 2D
%D 2D +10 b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= c^{\prime*}f^*ý_cP  B0' .tex= f^{\prime*}c^*ý_cP  B1 .tex= c^*ý_cP
%D    B2 .tex= f^{\prime*}P        B3  .tex= P
%D    B4 .tex= f^*ý_cP             B5 .tex= ý_cP
%D    B6 .tex= ý_{c'}f^{\prime*}P     B7 .tex= ý_cP
%D    B0  B0' <-> B0' B1 <-| B0 B2 -> B0' B2 -> B1 B3 -> B2 B3 <-|
%D    B0 B4 <-| B2 B6 |->
%D    B1 B5 <-| B3 B7 |->
%D    B4 B5 <-| B5 B7 -> .plabel= r \id
%D    B4 B6 -> sl_ .plabel= l î B4 B6 <- sl^ .plabel= r \BCCR
%D    B0' B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 .tex= A×_{B}C b1 .tex= C b2 .tex= A b3 .tex= B
%D    b0 b1 -> .plabel= b f'
%D    b0 b2 -> .plabel= l c'
%D    b1 b3 -> .plabel= r c
%D    b2 b3 -> .plabel= a f
%D    b0 relplace 20 7 \pbsymbol{7}
%D ))
%D enddiagram
%
$$\index{Beck-Chevalley!right!standard diagram}
  \diag{BCCR-std}
$$

%:
%:       P  c
%:       ----Î_0
%:       Î_cP
%:       ----\id
%:       Î_cP|-Î_cP
%:       ----------Î^\sharp
%:  f'   P|-c^*Î_cP                           (f';c)=(c';f)    Î_cP
%:  --------------------------------·^*  ======================================
%:  f^{\prime*}P|-f^{\prime*}c^*Î_cP     f^{\prime*}c^*Î_cP|-c^{\prime*}f^*Î_cP
%:  ---------------------------------------------------------------------------;
%:           f^{\prime*}P|-c^{\prime*}f^*Î_cP
%:           --------------------------------Î^\flat
%:           Î_{c'}f^{\prime*}P|-f^*Î_cP
%:
%:           ^BCCLnat-std
%:
%:                                               P  c                          
%:                                               ----ý_0                       
%:                                               ý_cP                          
%:                                               ----\id                       
%:                                               ý_cP|-ý_cP                    
%:                                               ----------ý^\flat             
%:       (f';c)=(c';f)    ý_cP              f'   c^*ý_cP|-P                    
%:  ======================================  --------------------------------·^*
%:  c^{\prime*}f^*ý_cP|-f^{\prime*}c^*ý_cP  f^{\prime*}c^*ý_cP|-f^{\prime*}P
%:  ------------------------------------------------------------------------;
%:           c^{\prime*}f^*ý_cP|-f^{\prime*}P
%:           --------------------------------ý^\sharp
%:           f^*ý_cP|-ý_{c'}f^{\prime*}P
%:
%:           ^BCCRnat-std
%:
$$\index{Beck-Chevalley!left!standard tree}
  \ded{BCCLnat-std}
$$
$$\index{Beck-Chevalley!right!standard tree}
  \ded{BCCRnat-std}
$$






% --------------------
% «proto-adjs-to-cobs»  (to ".proto-adjs-to-cobs")
% (subsec     "Adjoints to Change-of-Base Functors" "proto-adjs-to-cobs")
\mysubsection {Adjoints to Change-of-Base Functors} {proto-adjs-to-cobs}



% --------------------
% «dn-intro»  (to ".dn-intro")
% (chap   "Downcasing Types" "dn-intro")
\mychapter {Downcasing Types} {dn-intro}



% --------------------
% «dn-simple»  (to ".dn-simple")
% (sec      "Simple Proofs" "dn-simple")
\mysection {Simple Proofs} {dn-simple}

In the BHK interpretation propositions $P$, $Q$ $R$ are seen as the
sets of their proofs, and a proof of $P´Q$ is a pair made of a proof
of $P$ and a proof of $Q$ and a proof of $P¶Q$ is a function that
receives proofs of $P$ and returns proofs of $Q$.

As $P$, $Q$ and $R$ are sets the default choices for names of
variables ranging over them are $p$, $q$ and $r$. Let's forget
temporarily the syntactical distinctions between variables and terms,
and let their names also stand for names when needed; also, let's
allow ``long names'': ``$p,q$'' will be our default choice of name for
a term or variable whose type is $P×Q = P´Q$, ``$p \mto q$'' the
default for a term or variable in $P \to Q = Q^P = P¶Q$. We call the
passage from $P´Q \to R$ to $p,q \mto r$ ``downcasing'', and the
opposite direction ``uppercasing''.

The tree at the left below is a proof of $Q¶R \vdash P´Q ¶ P´R$ in
Natural Deduction; the tree at the right is its downcasing,
%:
%:            [P´Q]^1 	                [p,q]^1 	      
%:            -------	                -------	      
%:  [P´Q]^1      Q     Q¶R    [p,q]^1      q     q|->r    
%:  -------      ---------    -------      ---------    
%:     P             R	         p             r	      
%:     ---------------	         ---------------	      
%:         P´R		             p,r		      
%:       -------1	           -------1	      
%:       P´Q¶P´R                   p,q|->p,r              
%:
%:       ^foo1                     ^foo2
%:
$$\ded{foo1} \qquad \ded{foo2}$$
%
and we may interpret each of its bars in a way that parallels the
logic: for example,
%:
%:  Q  Q¶R
%:  ------
%:    R
%:
%:    ^foo3
%:
$$\ded{foo3}$$
%
can be read as: ``if we know that $Q$ and that $Q¶R$ (i.e., that both
$Q$ and $Q¶R$ are true) then we know that $R$ (is true too)''; in the
downcased tree, this is: ``if we know $q$ and $q \mto r$ (in the sense
that we have values/definitions/meanings for these terms, i.e., we
know that their corresponding types are inhabited), then we know $r$
(we have a ``natural definition'' for an $r:R$ in terms $q$ and $q
\mto r$, and so we know that $R$ is inhabited)''.

The downcased tree induces these definitions:
%
$$\begin{array}{rcl}
  p &:=& \pi \, (p,q) \\
  q &:=& \pi' \, (p,q) \\
  r &:=& (q \mto r) \, q \\
  p,r &:=& \ang{p,r} \\
  p,q \mto p,r &:=& ð(p,q)¨(P´Q).\ang{p,r} \\
  \end{array}
$$
%
and we can formalize this in Coq as:
%
$$(...)$$

The ``$\angg{\ldots}$''s above are long names, in their ascii form. A
simple preprocessor reads files with these ``$\angg{\ldots}$''s and
converts them to tokens that Coq can treat, like:

$$(...)$$

The same translator generates another kind of output, in which a few
ascii abbreviations within ``$\angg{\ldots}$''s are expanded, ---
`\verb.|->.' becomes `\verb.\mapsto .', etc; we can add more, and the
result of these expansions is treated as \LaTeX{} input in
mathematical mode, and the rest is typeset in verbatim mode. By \LaTeX
ing this output we get:

$$(...)$$

We will use this pretty-printed representation in this paper. Note
that we can put arbitrary \TeX{} code in long names --- even macros
that generate diagrams.

If $A$, $B$, $C$ are sets, a similar downcasing interprets:

%:
%:            [a,b]^1 	                  [p:A×B]^1
%:            -------	                  ---------	      
%:  [a,b]^1      b     b|->c   [p:A×B]^1    'p:B     f:B->C    
%:  -------      ---------     ---------    ----------------    
%:     a             c	         p:A           f('p):C
%:     ---------------	         -----------------------      
%:         a,c		            \ang{p,f('p)}:A×C
%:       -------1	            --------------------
%:       a,b|->a,c              ðp:A×B.\ang{p,f('p)}:A×B->A×C     
%:
%:       ^bar1                     ^bar2
%:
$$\ded{bar1} \qquad \ded{bar2}$$



% --------------------
% «dn-functors»  (to ".dn-functors")
% (sec      "Functors" "dn-functors")
\mysection {Functors} {dn-functors}

Now fix a set $A$. The functor $(A×):\Set \to \Set$ takes each set $B$
to the set $A×B$, and each function $f:B \to C$ to $(A×)f:A×B \to
A×C$, where $(A×)f = ðp:A×B.\ang{p,f('p)}$.

We downcase the diagram of the functor,
%
%D diagram functor1
%D 2Dx     100     +30
%D 2D  100 B |---> A×B
%D 2D      |        |
%D 2D      |  |->   |
%D 2D      v        v
%D 2D  +30 C |---> A×C
%D 2D
%D (( B A×B C A×C
%D    @ 0 @ 1 |-> .plabel= a A×
%D    @ 2 @ 3 |-> .plabel= b A×
%D    @ 0 @ 3 harrownodes nil 20 nil |->
%D    @ 0 @ 2 -> .plabel= l f
%D    @ 1 @ 3 -> .plabel= r \sm{(A×)f\;:=\hfill\\ðp:A×B.\ang{p,f('p)}}
%D ))
%D enddiagram
%D
$$\diag{functor1}$$
%
as:
%
%D diagram downfunctor1
%D 2Dx     100    +30
%D 2D  100 b ===> a,b
%D 2D
%D 2D  +30 c ===> a,c
%D 2D
%D (( b a,b c a,c
%D    @ 0 @ 1 => @ 0 @ 2 |-> @ 1 @ 3 |-> @ 2 @ 3 =>
%D    @ 0 @ 3 harrownodes nil 20 nil |->
%D ))
%D enddiagram
%D
$$\diag{downfunctor1}$$

We use the arrow `$\funto$' for functors to suggest that functors have
two actions --- one on objects, one on morphisms.

It is also useful to think that a functor $b \funto a,b$ has a
``syntactical action'', which is to prepend an `$a,$' to the names of
objects. The functor $b \funto a,b$ takes the ``space of `$b$'s'' to
the ``space of `$a,b$'s'', and takes each arrow $b \mto c$ to an arrow
$a,b \mto a,c$ (here we applied its syntactical action to both the
source and the target).


% --------------------
% «dn-cats»  (to ".dn-cats")
% (sec      "Categories" "dn-cats")
\mysection {Categories} {dn-cats}

Now let $A$, $B$, $C$ be objects in a category $\catC$ --- which no
longer needs to be $\Set$. If $\catC$ has products, we can speak of
objects $A×B$ and $A×C$, and now we have:

$$b \mto c : B \to C = \Hom_\catC(B, C)$$
$$a,b \mto a,c : A×B \to A×C = \Hom_\catC(B, C)$$

We still have a construction for $a,b \to a,c$ starting from $b \mto
c$, but now it's a different one:
%:
%:                A  B
%:               -------\pi'
%:    A   B      a,b|->b      b|->c
%:   -------\pi  ------------------;
%:   a,b|->a      a,b|->c
%:   --------------------
%:        a,b|->a,c
%:
%:        ^bla1
%:
%:                       A   B
%:                   --------------
%:       A   B       '_{AB}:A×B->B   f:B->C
%:   -------------   -----------------------
%:   _{AB}:A×B->A      '_{AB};f:A×B->C
%:   -----------------------------------
%:   A×f:=\ang{_{AB},'_{AB};f}:A×B->A×C
%:
%:        ^bla2
%:
$$\ded{bla1}$$
%
that uppercases to:
%
$$\ded{bla2}$$

Note that if someone says ``take {\sl the} functor whose downcasing is
$b \funto a,b$'' then we just have to understand its action on objects
(which is $A×$) and its action on morphisms (that we have just
constructed, in slightly different ways, in $\Set$ and in $\catC$);
the other person is assuring us, through the ``the'', that these
actions exist, are not too hard to find, are functorial, and are
well-defined; if we were just conjecturing that a functor named ``$b
\funto a,b$'' should exist we would have to do all the steps. And in
the syntactical world some of the steps --- functoriality,
well-definedness --- are simply not relevant; the introduction of the
syntactical world permits stating results that are mathematical
precise and coherent doing only a fraction of the work that is needed
for results in the real world --- and proving functorialities,
naturalities, etc, can be seen as a separate step.




% --------------------
% «dn-pseudopoints»  (to ".dn-pseudopoints")
% (sec      "Pseudopoints" "dn-pseudopoints")
\mysection {Pseudopoints} {dn-pseudopoints}

If $\catC$ is an arbitrary category with finite products and $A$, $B$,
$C$ are objects of $\catC$ then we have clear meanings for $b \mto c$
and $a,b \mto a,c$ --- as seen above --- but what are ``$b$'',
``$a,b$'', etc? Does the typing $a:A$ mean something?

One solution is to say that `$b$', `$a,b$', etc are ``pseudopoints'',
and treat them as syntactical devices that we can use in building
larger expressions, which do have meaning (or: ``have semantics'' ---
$b \mto c$ and $a,b \mto a,c$ have semantics because they can appear
in the Coq code as variables, constants or terms).

In the case where $A$, $B$ $C$ were sets we could say:

\msk

``$a$ is an element of $A$'',

``$A$ is the space of `$a$'s'',

``an `$a,b$' is a pair made of an `$a$' and a `$b$'\,'',

``$A×B$ is the space of `$a,b$'s'',

``a $b \mto c$ is a function that takes `$b$'s to `$c$'s''

(Note that we tend to use indefinite articles when we speak of
downcasings!)

\msk

but when $A$, $B$ and $C$ are objects of $\catC$ it is better to say:

\msk

``a $b \mto c$ is a morphism from $B$ to $C$'',

``$\Hom_\catC(B, C)$ is the space of `$b \mto c$'s'',

``$B$ is the object of `$b$'s'',

``$B×C$ is the object of `$b,c$'s'',

``a $b,c$ is a pseudopoint of $B×C$''.

\msk

So the idea of ``pseudopoints'' exists only to let us have a name for
the syntactical function of the `$a,b$' and the `$a,c$' in a morphism
$a,b \mto a,c$.

Pseudopoints may have a concrete semantics in the archetypal category
that motivates certain kinds of categories; but that will be treated
in section \_\_\_.

Here's one example in which pseudopoints have no reasonable semantics.
Let $A^\op$ and $B^\op$ be objects of $\Set^op$; an arrow $A^\op \to
B^\op$ is an arrow $B \to A$ in disguise. If we downcase $f:A^\op \to
B^\op$ to $a^\op \mto b^\op$, then what is an $a^\op$?

% (find-books "__cats/__cats.el" "kromer")
% (find-kromerpage (+ 34  83) "The diagrams incorporate a large amount of information.")
% (find-kromerpage (+ 34 152) "absence of elements" "painfully difficult")
% (find-kromerpage (+ 33 218) "objects cannot be penetrated")
% (find-angg ".emacs.papers" "freyd")
% (find-freydabcatspage (+ 27  9) "painfully difficult")
% (find-books "__cats/__cats.el" "mclarty")




% --------------------
% «dn-NTs»  (to ".dn-NTs")
% (sec      "Natural Transformations" "dn-NTs")
\mysection {Natural Transformations} {dn-NTs}



% --------------------
% «dn-adjunctions»  (to ".dn-adjunctions")
% (sec      "Adjunctions" "dn-adjunctions")
\mysection {Adjunctions} {dn-adjunctions}



% --------------------
% «dn-CCCs»  (to ".dn-CCCs")
% (sec      "CCCs" "dn-CCCs")
\mysection {CCCs} {dn-CCCs}

% http://en.wikipedia.org/wiki/Wreath_product
% (find-books "__cats/__cats.el" "lambek-scott")
% (find-lambekscottpage (+ 8  49) "the following two derived rules of inference")

These are the rules for both the ``big presentation'' and the ``short
presentation'' for CCCs. In the ``big presentation'' all the rules
below are primitive; in the ``short presentation'' only the ones with
a single bar are primitive, and the double bar rules are derived rules.
%:
%:  B  C          B  C	       B  C	 a|-b  a|-c          b|-c  b'|-c'
%:  ----×        ------      ------'   ----------\ang{,}   ============×_1
%:  B×C          b,c|-b	      b,c|-c	   a|-b,c             b,b'|-c,c'
%:		                         
%:  ^CCC-shd-p1  ^CCC-shd-p2  ^CCC-shd-p3  ^CCC-shd-p4        ^CCC-shd-prod1
%:
%:  B  C            B  C           a,b|-c         a|-(b|->c)            A   B
%:  ----"->     ------------\ev   ----------\cur  ==========\uncur  ============\eta
%:  B{->}C      (b|->c),b|-c      a|-(b|->c)       a,b|-c	    a|-(b|->a,b)
%:
%:  ^CCC-shd-e1  ^CCC-shd-e2      ^CCC-shd-e3      ^CCC-shd-uncur   ^CCC-shd-eta
%:
%:  b'|-b  c|-c'        a|-b  a|-(b|->c)
%:  ============{->}_1  ================\app
%:  (b|->c)|-(b'|->c')      a|-c
%:
%:  ^CCC-shd-->1            ^CCC-shd-app
%:
%:                 A           a|-b	          *|-(a|->b)	      
%:  -1           ----!      ==========\lnameof{}  ==========\wr
%:  1            a|-*       *|-(a|->b)        	  a|-b
%:
%:  ^CCC-shd-!1 ^CCC-shd-!2 ^CCC-shd-nameof       ^CCC-shd-*app
%:
%:  
$$\ded{CCC-shd-p1} \qquad \ded{CCC-shd-p2} \qquad \ded{CCC-shd-p3} \qquad \ded{CCC-shd-p4} \qquad \ded{CCC-shd-prod1}$$
$$\ded{CCC-shd-e1} \qquad \ded{CCC-shd-e2} \qquad \ded{CCC-shd-e3} \qquad \ded{CCC-shd-uncur} \qquad \ded{CCC-shd-eta}$$
$$\ded{CCC-shd-->1} \qquad \ded{CCC-shd-app}$$
$$\ded{CCC-shd-!1} \qquad \ded{CCC-shd-!2} \qquad \ded{CCC-shd-nameof} \qquad \ded{CCC-shd-*app}$$

Here's how to expand the derived rules:
%:
%:   B  C              B  C
%:  ------           ------'
%:  b,c|-b   b|-b'    b,c|-c    c|-c'   
%:  --------------;   --------------;   
%:     b,c|-b'         b,c|-c'       
%:     -----------------------\ang{,}
%:        b,c|-b',c'
%:
%:        ^CCC-lod-prod1
%:
%:  a|-(b|->c)   B        B  C
%:  ==============    ------------\ev
%:  a,b|-(b|->c),b    (b|->c),b|-c
%:  ------------------------------;
%:            a,b|-c
%:
%:            ^CCC-lod-uncur
%:
%:    A  B
%:  ========
%:  a,b|-a,b
%:  ------------\cur
%:  a|-(b|->a,b)
%:
%:  ^CCC-lod-eta
%:
%:     B  C
%:    ------"->
%:    B{->}C    b'|-b            B  C
%:  =====================   ------------\ev
%:  (b|->c),b'|-(b|->c),b   (b|->c),b|-c     c|-c'
%:  ---------------------------------------------;;
%:                (b|->c),b'|-c'
%:                --------------\cur
%:                (b|->c)|-(b'|->c')
%:  
%:                ^CCC-lod-->1
%:
%:   a|-(b|->c)  a|-b               B  C
%:   ----------------\ang{,}    ------------\ev
%:    a|-(b|->c),b              (b|->c),b|-c
%:    --------------------------------------;
%:                 a|-c
%:
%:                 ^CCC-lod-app
%:
%:    1  A
%:   ------'
%:   *,a|-a  a|-b
%:   ------------;
%:       *,a|-b
%:     ----------\cur
%:     *|-(a|->b)
%:
%:     ^CCC-lod-nameof
%:
%:   A      A
%:  ----!  ----\id
%:  a|-*   a|-a          *|-(a|->b)
%:  -----------\ang{,}   ========\uncur
%:     a|-*,a             *,a|-b
%:     -------------------------
%:         a|-b
%:
%:         ^CCC-lod-*app
%:
%:
$$\def\foo#1#2{\ded{#1} &:=& \ded{#2} \\ \\}
  \begin{array}{rcl}
  \foo{CCC-shd-prod1}  {CCC-lod-prod1}
  \foo{CCC-shd-uncur}  {CCC-lod-uncur}
  \end{array}
$$

$$\def\foo#1#2{\ded{#1} &:=& \ded{#2} \\ \\}
  \begin{array}{rcl}
    \foo{CCC-shd-eta}    {CCC-lod-eta}
  \foo{CCC-shd-->1}    {CCC-lod-->1}
  \foo{CCC-shd-app}    {CCC-lod-app}
  \end{array}
$$

$$\def\foo#1#2{\ded{#1} &:=& \ded{#2} \\ \\}
  \begin{array}{rcl}
  \foo{CCC-shd-nameof} {CCC-lod-nameof}
  \foo{CCC-shd-*app}   {CCC-lod-*app}
  \end{array}
$$

\bsk



% --------------------
% «dn-contexts»  (to ".dn-contexts")
% (sec      "Contexts" "dn-contexts")
\mysection {Contexts} {dn-contexts}



% --------------------
% «dn-contexts-single»  (to ".dn-contexts-single")
% (subsec     "Single Hypothesis: CCs" "dn-contexts-single")
\mysubsection {Single Hypothesis: CCs} {dn-contexts-single}

In a cartesian category we have a natural way to interpret judgments
involving only pairings and projections, like, for example,

$$p:A×B, q:A×C \vdash \ang{\ang{q,p},\ang{'p,'p}} : (A×A)×(B×B)$$

They become clearer with our long names and dictionaries:

$$(a,b):A×B, (a',c):A×C \vdash ((a',a),(b,b))$$
$$\begin{array}[t]{rcl}
    p &\equiv& a,b \\
    q &\equiv& a',c \\
  \end{array}
  %
  \begin{array}[t]{rcl}
              a &:=& \,(a,b)   \\
             a' &:=& \,(a',c)  \\
              b &:=& '\,(a,b)  \\
           a',a &:=& \ang{a',a} \\
            b,b &:=& \ang{b,b}  \\
   (a',a),(b,b) &:=& \ang{(a',a),(b,b)} \\
  \end{array}
$$

We can omit the types, as they can be reconstructed from the
downcasings. We can reduce the judgment above to:

$$(a,b),(a',c) \vdash (a',a),(b,b)$$

A standard trick in Categorical Semantics is to represent the context
as the product of the types of its variables, and the `$\vdash$' as a
morphism from that product to the type of the result. So our judgment
becomes this:

$$\begin{array}{rcl}
  (A×B)×(A×C)  &  \to & (A×A)×(B×B) \\
  (a,b),(a',c) & \mto & (a',a),(b,b) \\
               &      & \text{where} \\
               &      & (a,b) := \,((a,b),(a',c)) \\
               &      & (a',c) := '\,((a,b),(a',c)) \\
               &      & \text{etc...} \\
  \end{array}
$$

In a cartesian category we have projection maps,
%
$$ \projdiag{A×B}{(A×B)}{(C×D)}{C×D}{500}{500} $$
$$ \projdiag{A}{A}{B}{B}{200}{200}
   \qquad
   \qquad
   \qquad
   \qquad
   \projdiag{A}{A}{C}{C}{200}{200}
$$
%
and factorizations through products, like:
%
%D diagram fact-thorugh-prod
%D 2Dx     100     +30     +30
%D 2D  100         A
%D 2D
%D 2D  +30 B <--- B×C ---> C
%D 2D
%D (( A B B×C C
%D    @ 0 @ 1 -> .plabel= a f
%D    @ 0 @ 2 -> .plabel= m \ang{f,g}_{ABC}
%D    @ 0 @ 3 -> .plabel= a g
%D    @ 1 @ 2 <- @ 2 @ 3 ->
%D ))
%D enddiagram
%D
$$\diag{fact-thorugh-prod}$$

The construction for the map $(A×B)×(A×C) \to (A×A)×(B×B)$ can be
extracted from these trees:
%:
%:  --------_{(A×B)(A×C)}   ----_{AB}
%:  (a,b),(a',c)|-a,b      a,b|-a
%:  -------------------------------;
%:         (a,b),(a',c)|-a
%:
%:         ^CC-1
%:
%:  --------'_{(A×B)(A×C)}  ------_{AC}
%:  (a,b),(a',c)|-a',c       a',c|-a'
%:  -------------------------------;
%:         (a,b),(a',c)|-a'
%:
%:         ^CC-2
%:
%:  --------_{(A×B)(A×C)}  ------'_{AB}
%:  (a,b),(a',c)|-a,b       a,b|-b
%:  -------------------------------;
%:         (a,b),(a',c)|-b
%:
%:         ^CC-3
%:
%:  ================  ===============
%:  (a,b),(a',c)|-a'  (a,b),(a',c)|-a
%:  ---------------------------------\ang{,}_{((A×B)×(A×C))AA}
%:      (a,b),(a',c)|-a',a
%:
%:         ^CC-4
%:
%:  ================  ===============
%:  (a,b),(a',c)|-b   (a,b),(a',c)|-b
%:  ---------------------------------\ang{,}_{((A×B)×(A×C))BB}
%:      (a,b),(a',c)|-b,b
%:
%:         ^CC-5
%:
%:  ==================  =================
%:  (a,b),(a',c)|-a',a  (a,b),(a',c)|-b,b
%:  -------------------------------------\ang{,}_{((A×B)×(A×C))(A×A)(B×B)}
%:      (a,b),(a',c)|-(a',a),(b,b)
%:
%:         ^CC-6
%:
$$\ded{CC-1}$$
$$\ded{CC-2}$$
$$\ded{CC-3}$$
$$\ded{CC-4}$$
$$\ded{CC-5}$$
$$\ded{CC-6}$$

The final result is this, if we omit the typings in the `$_{\_\_}$'s,
`$'_{\_\_}$'s and `$\ang{,}_{\_\_\_}$'s to make it smaller:

$$\begin{array}{rcl}
  \ang{\ang{';,;'},\ang{';,;'}}: (A×B)×(A×C) & \to& (A×A)×(B×B) \\
                                      ((a,b),(a',c)) &\mto& ((a',a),(b,b)) \\
  \end{array}
$$

What matters here is: with the downcasings and the operations in a
proto-cartesian category --- projections, pairing --- we can build the
categorical interpretations of judgments like
%
$$\begin{array}{rcl}
  (a',a):(A×B),(b,b):(A×C) &\vdash& ((a',a),(b,b)):(A×A)×(B×B) \\
              (a,b),(a',c) &\vdash& (a',a),(b,b) \\
  \end{array}
$$

These categorical constructions behave as expected. For example, the
composite of two ``flip'' functions,
%:
%:  ==========   ==========
%:  a,a'|-a',a   a',a|-a,a'
%:  -----------------------
%:     a,a'|-a,a'
%:
%:     ^flipflip
%:
$$\ded{flipflip}$$
%
is the identity --- but the proof of this lives in the real world.





% --------------------
% «dn-context-morphs»  (to ".dn-context-morphs")
% (subsec     "Context Morphisms" "dn-context-morphs")
\mysubsection {Context Morphisms} {dn-context-morphs}



% --------------------
% «dn-contexts-multi»  (to ".dn-contexts-multi")
% (subsec     "Several Hypotheses: CCs (With a Trick)" "dn-contexts-multi")
\mysubsection {Several Hypotheses: CCs (With a Trick)} {dn-contexts-multi}

We can also construct the term for $(a,b),(a',c) \vdash (a',a),(b,b)$
from a tree in Natural Deduction-style, to which we add the contexts:
%:
%:              ----------\id   ----------\id
%:  a,b   a,b   (a,b)|-a,b      (a,b)|-a,b
%:  ---   ---   ----------;'   ----------;'
%:   b     b     (a,b)|-b        (a,b)|-b
%:   -------     ------------------------\ang{,}
%:     b,b          (a,b)|-b,b
%:
%:     ^nd-cc-1     ^nd-cc-2
%:
$$\ded{nd-cc-1} \quad \squigto \quad \ded{nd-cc-2}$$

({\sl Note:} think of trees with judgments at the nodes as being in
``sequent calculus style''... so for us ``Natural Deduction'' is when
the contexts are hidden, and ``sequent calculus'' is when they are
explicit.)

This is easy to do when all the nodes have exactly the same single
hypothesis --- we would have that in the case $\gamma:(A×B)×(A×C)
\vdash \ldots$, but not in the case $p:(A×B),q:(A×C) \vdash \ldots$,
where we have some cases where contexts have to be merged; a nice way
to handle the mergings is to represent them as extra steps in the tree
of judgments:
%:
%:                     ------------\id    ----------\id   
%:                     (a',c)|-a',c       (a,b)|-a,b      
%:                     ----------;       ----------;    
%:  a',c   a,b          (a',c)|-a'         (a,b)|-a
%:  ----  ---       ---------------';  ---------------;
%:   a'     a         (a,b),(a',c)|-a'    (a,b),(a',c)|-a
%:   --------\ang{,}  ------------------------------------\ang{,}
%:     a',a                    (a,b),(a',c)|-a',a
%:
%:     ^nd-cc-1                 ^nd-cc-2
%:
$$\ded{nd-cc-1} \qquad \ded{nd-cc-2}$$

The order of the variables in the context is immaterial, in a sense
--- the ND tree at the left above can also be expanded to a sequent
calculus ``proof'' (i.e., construction) of $(a',c),(a,b) \vdash a',a$,

[But one can be obtained from the other one by composing with
  (iso)morphisms that scramble the variables in the context...]

[Explain the convention for parentheses in the context: $(a,b),(a',c)
  \vdash \ldots$ is $(a,b):A×B,(a',c):A×C \vdash \ldots$,
  $((a,b),(a',c)) \vdash \ldots$ is $((a,b),(a',c)):(A×B)×(AxC) \vdash
  \ldots$, and $a,b,a',c \vdash \ldots$ is $a:A,b:B,a':A,c:C \vdash
  \ldots$.]

[The internal language: examples]

[Adding $+$ and $·$ to the language with morphisms $+:A×A \to A$ and
  $·:A×A \to A$, that we downcase to $a,a' \mto a+a$ and $a,a' \mto
  aa'$; the downcasing of the composite of $x,y \mto xy,y$ and $z,w
  \mto z+w$ is $x,y \mto xy+y$]

% (find-books "__cats/__cats.el" "lambek-scott")
% (find-lambekscottpage (+ 8  75) "internal language L(A) of a cartesian closed category")



% --------------------
% «dn-discharges»  (to ".dn-discharges")
% (subsec     "Discharges: CCCs" "dn-discharges")
\mysubsection {Discharges: CCCs} {dn-discharges}



% --------------------
% «dn-subsets»  (to ".dn-subsets")
% (sec      "Subsets" "dn-subsets")
\mysection {Subsets} {dn-subsets}



% --------------------
% «dn-subobjects»  (to ".dn-subobjects")
% (sec      "Subobjects" "dn-subobjects")
\mysection {Subobjects} {dn-subobjects}



% --------------------
% «dn-proj-functors»  (to ".dn-proj-functors")
% (sec      "Projection Functors" "dn-proj-functors")
\mysection {Projection Functors} {dn-proj-functors}

A {\sl prefibration} is just a functor $p: \bbE \to \bbB$ --- a
``projection functor'' going from the ``entire category'' to the
``base category''. A {\sl fibration} is a prefibration with enough
``cartesian morphisms'' in $\bbE$, as we will see.

We say that an object $X$ of $\bbE$ is ``above'' its image $pX$, and
the same for morphisms. Usually when we draw a morphism $X \ton{f} Y$
of $\bbE$ above a morphism $I \ton{u} J$ of $\bbB$ this means that
$u=pf:pX \to pY$. For each object I of $\bbB$ we call the subcategory
$p^{-1}(I)$ of $\bbE$ the {\sl fiber above} (or ``{\sl of}'') $I$, and
we write $\bbE_I$ for $p^{-1}(I)$.

Each object $Z$ of $\bbE$ induces a functor $p/Z: \bbE/Z \to \bbB/pZ$
between slice categories. We say that a morphism $g:Y \to Z$ of $\bbE$
is {\sl cartesian} when for each object $f:X \to Y$ of $\bbE/Z$ the
mapping $\Hom_{\bbE/Z}(f,g) \to \Hom_{\bbB/pZ}(pf, pg)$ --- that takes
each $h:X \to Y$ to $ph:pX \to pY$ --- is a bijection.

%D diagram cart-std
%D 2Dx     100 +20   +30
%D 2D  100 e0 ----_
%D 2D        \     \
%D 2D         v     v
%D 2D  +25     e1 -> e2
%D 2D
%D 2D  +10 b0 ----_
%D 2D        \     \
%D 2D         v     v
%D 2D  +25     b1 -> b2
%D 2D
%D (( e0 .tex= P
%D    e1 .tex= Q
%D    e2 .tex= R
%D    b0 .tex= pP
%D    b1 .tex= pQ
%D    b2 .tex= pR
%D    e0 e2 ->  .plabel= a f
%D    e1 e2 ->  .plabel= b g
%D    e0 e1 .>  .plabel= l h
%D    b0 b2 ->  .plabel= a pf
%D    b1 b2 ->  .plabel= b pg
%D    b0 b1 .>  .plabel= l ph
%D ))
%D enddiagram
%D
%D diagram cart-std2
%D 2Dx     100 +20   +30
%D 2D  100 e0 ----_
%D 2D        \     \
%D 2D         v     v
%D 2D  +25     e1 -> e2
%D 2D
%D 2D  +10 b0 ----_
%D 2D        \     \
%D 2D         v     v
%D 2D  +25     b1 -> b2
%D 2D
%D (( e0 .tex= P
%D    e1 .tex= v^*R
%D    e2 .tex= R
%D    b0 .tex= pP
%D    b1 .tex= B
%D    b2 .tex= C
%D    e0 e2 ->  .plabel= a f
%D    e1 e2 ->  .plabel= b \ov{v}R
%D    e0 e1 .>  .plabel= l h
%D    b0 b2 ->  .plabel= a pf
%D    b1 b2 ->  .plabel= b v
%D    b0 b1 .>  .plabel= l ph
%D ))
%D enddiagram
%D
%D diagram cart-dnc
%D 2Dx     100 +20   +30
%D 2D  100 e0 ----_
%D 2D        \     \
%D 2D         v     v
%D 2D  +25     e1 -> e2
%D 2D
%D 2D  +10 b0 ----_
%D 2D        \     \
%D 2D         v     v
%D 2D  +25     b1 -> b2
%D 2D
%D (( e0 .tex= a||P
%D    e1 .tex= b||Q
%D    e2 .tex= c||R
%D    b0 .tex= a
%D    b1 .tex= b
%D    b2 .tex= c
%D    e0 e2 |--> e1 e2 |-> .plabel= a ñ e0 e1 |->
%D    b0 b2 |->  b1 b2 |-> b0 b1 |.>
%D ))
%D enddiagram
%D
$$\diag{cart-std} \qquad \diag{cart-std2} \qquad \diag{cart-dnc}$$


This can be made much clearer. Our archetypical fibration is $\cod:
\Sub(\Set) \to \Set$ [that we sometimes call just $\Sub(\Set)$]. An
object of $\Sub(\Set)$ is a monic $A' \monicto A$, and $\cod(A'
\monicto A)$ is its codomain, $A$. Let's restrict our attention to
subobjects where $A'$ is a subset of $A$ and `$\monicto$' is the
inclusion; better yet, let's regard $A'$ as the set of the `$a$'s in
$A$ that obey some property $P$. So our subobject $A' \monicto A$
becomes:
%
$$ \sst{aÝA}{P(a)} \monicto A$$

Now let's contract it further, by the use of a double vertical bar in
the `$\{\;\}$'. This
%
$$ \ssst{a}{P(a)} $$
%
will be our notation for the whole monic/subobject, and a morphism
%
$$ \ssst{a}{P(a)} \to \ssst{b}{Q(b)} $$
%
in $\Sub(\Set)$ is in fact a commuting square in $\Set$:
%
%D diagram a||P->b||Q
%D 2Dx     100     +60
%D 2D  100 A' ---> B'
%D 2D      v       v
%D 2D      |       |
%D 2D      v       v
%D 2D  +20 A ----> B
%D 2D
%D (( A' .tex= \sst{aÝA}{P(a)}
%D    B' .tex= \sst{bÝB}{Q(b)}
%D    A' B' ->   A' A >-> B' B >->   A B ->
%D ))
%D enddiagram
%D
$$\diag{a||P->b||Q}$$
%
The projection functor $\cod$ says that $$\ssst{a}{P(a)} \to
\ssst{b}{Q(b)}$$ is over $A \to B$ in the fibration $\cod:\Sub(\Set)
\to \Set$:
%
%D diagram a||P->b||Q-over
%D 2Dx     100     +60        +60
%D 2D  100 A' ---> B'   \bbE=\Sub(\Set)
%D 2D                        |
%D 2D                        |p=\cod
%D 2D                        v
%D 2D  +30 A ----> B      \bbB=\Set
%D 2D
%D (( A' .tex= \ssst{aÝA}{P(a)}
%D    B' .tex= \ssst{bÝB}{Q(b)}
%D    A' B' ->   A B ->
%D    \bbE=\Sub(\Set) \bbB=\Set -> .plabel= r p=\cod
%D ))
%D enddiagram
%D
$$\diag{a||P->b||Q-over}$$

Each map $f:A \to B$ in $\B$ induces a ``change-of-base functor'',
$f^*:\bbE_B \to \bbE_A$:
%
%D diagram change-of-base-1
%D 2Dx       100           +60      +60
%D 2D  100 \bbE_A <----- \bbE_B
%D 2D
%D 2D  +20 {a||Q} <----| {b||Q}
%D 2D         |            |
%D 2D  +15    |    <-|     |       \bbE
%D 2D         v            v         |
%D 2D  +15 {a||Q'} <---| {b||Q'}     |
%D 2D                                |
%D 2D               f                v
%D 2D  +20   A ----------> B       \bbB
%D 2D
%D (( \bbE_A \bbE_B <- .plabel= a f^*
%D    \bbE   \bbB   -> .plabel= r p
%D    A B -> .plabel= a f
%D ))
%D (( {a||Q}  .tex= \ssst{a}{Q(f(a))}
%D    {b||Q}  .tex= \ssst{b}{Q(b)}
%D    {a||Q'} .tex= \ssst{a}{Q'(f(a))}
%D    {b||Q'} .tex= \ssst{a}{Q'(b)}
%D    @ 0 @ 1 <-| .plabel= a f^*
%D    @ 0 @ 2  -> .plabel= l \sma
%D    @ 1 @ 3  -> .plabel= r \smb
%D    @ 2 @ 3 <-| .plabel= b f^*
%D    @ 0 @ 3 harrownodes nil 20 nil <-|
%D ))
%D enddiagram
%D
$$\def\sma{\sm{ýaÝA.\,Q(f(a))¶Q'(f(a)) \\
               \text{or} \\
               a;Q(f(a))\vdash Q'(f(a)) \\
          }}
  \def\smb{\sm{baÝB.\,Q(b)¶Q'(b) \\
               \text{or} \\
               b;Q(b)\vdash Q'(b) \\
          }}
  \diag{change-of-base-1}
$$

and also a natural transformation, that produces for each object
$\ssst{b}{Q(b)}$ over $B$ a ``horizontal'' map (we will define
``horizontality'' and ``verticality'' in $\bbE$ precisely very soon),
$\ssst{a}{Q(f(a))} \to \ssst{b}{Q(b)}$, in $\bbE$. If we expand this
``horizontal'' map into a square in $\Set$ we see that what we've got
is a pullback:

%D diagram cart-pb-1
%D 2Dx     100    +35          +55    +45         +65
%D 2D  100                           {a|Q} ----> {b|Q}
%D 2D                                  v _|        v
%D 2D  +10 \bbE {a||Q} <---> {b||Q}    |           |
%D 2D        |                         v           v
%D 2D  +10   |                        {}A ------> {}B
%D 2D        v
%D 2D  +20 \bbB   A ---------> B      {A} ------> {B}
%D 2D
%D (( \bbE \bbB ->
%D ))
%D (( {a||Q} .tex= \ssst{a}{Q(f(a))}
%D    {b||Q} .tex= \ssst{b}{Q(b)}
%D    A B
%D    @ 0 @ 1 -> sl^
%D    @ 0 @ 1 <-| sl_ .plabel= b f^*
%D    @ 2 @ 3 ->
%D ))
%D (( {a|Q} .tex= \sst{aÝA}{Q(f(a))}
%D    {b|Q} .tex= \sst{bÝB}{Q(b)}
%D    {}A {}B
%D    {A} {B}
%D    @ 0 @ 1 ->  @ 0 @ 2 >-> @ 1 @ 3 >->  @ 2 @ 3 ->
%D    @ 0 relplace 15 7 \pbsymbol{7}
%D    @ 4 @ 5 ->
%D    @ 0 @ 3 harrownodes 10 25 nil <-| .plabel= m f^*
%D ))
%D enddiagram
%D
$$\diag{cart-pb-1}$$

It is these ``maps in $\Sub(\Set)$ that correspond to pullbacks in
$\Set$'' that we will call ``cartesian'' --- but the actual formal
definition of cartesianness is more abstract; it is the one using a
universal property, that we saw at the beginning of this section.

Before proceeding let's see some further shorthands, and their
downcasings. Let's write $\ssst{c}{R(c)}$ as just $\sst{c}{R}$, and
$\ssst{b}{R(g(b))}$ as just $\sst{b}{R}$; we will say that in a
diagram
%
%D diagram cart-deserve
%D 2Dx       100        +40
%D 2D  100 {b||Q} --> {c||R}
%D 2D
%D 2D  +20   B -------> C
%D 2D
%D (( {b||Q} .tex= \ssst{b}{Q}
%D    {c||R} .tex= \ssst{c}{R}
%D    B C
%D    @ 0 @ 1 -> @ 2 @ 3 -> .plabel= a g
%D ))
%D enddiagram
%D
$$\diag{cart-deserve}$$

the object $\ssst{b}{Q}$ {\sl deserves the name $\ssst{b}{R}$} when
the arrow $\ssst{b}{Q} \to \ssst{c}{R}$ is cartesian. We will downcase
$\ssst{c}{R}$ to $c||R$, and we will drop the `$c||$' in diagrams when
we can deduce it from the projections below. Also, we will write
$\ov{f}$ for the natural transformation that returns cartesian
morphisms, we will shrink ``$\ssst{c}{R}$'' even more to just `$R$'
(now we've reached the ``standard'' level of abstraction: $R$ is an
object over $C$), and we will use a `$ñ$' in the downcased notation to
stress that a morphism is cartesian. So:

%D diagram cart-shorthands
%D 2Dx     100    +50  +40    +40  +30    +30
%D 2D  100 A0 <-> A1   B0 <-> B1   C0 <-> C1   
%D 2D                                          
%D 2D  +20 A2 |-> A3   B2 |-> B3   C2 |-> C3
%D 2D
%D 2D  +30 D0 <-> D1   E0 <-> E1   F0 <-> F1   
%D 2D                                          
%D 2D  +20 D2 |-> D3   E2 |-> E3   F2 |-> F3
%D 2D
%D (( A0 .tex= \ssst{b}{R(g(b))}
%D    A1 .tex= \ssst{c}{R(c)}
%D    A2 .tex= B A3 .tex= C
%D    @ 0 @ 1  -> sl^ .plabel= a \ov{f}R
%D    @ 0 @ 1 <-| sl_ .plabel= b f^*
%D    @ 2 @ 3  -> .plabel= a g
%D ))
%D (( B0 .tex= \ssst{b}{R}
%D    B1 .tex= \ssst{c}{R}
%D    B2 .tex= B B3 .tex= C
%D    @ 0 @ 1  -> sl^ .plabel= a \ov{f}R
%D    @ 0 @ 1 <-| sl_ .plabel= b f^*
%D    @ 2 @ 3  -> .plabel= a g
%D ))
%D (( C0 .tex= f^*R
%D    C1 .tex= R
%D    C2 .tex= B C3 .tex= C
%D    @ 0 @ 1  -> sl^ .plabel= a \ov{f}R
%D    @ 0 @ 1 <-| sl_ .plabel= b f^*
%D    @ 2 @ 3  -> .plabel= a g
%D ))
%D (( D0 .tex= b\;||\;R(g(b))
%D    D1 .tex= c\;||\;R(c)
%D    D2 .tex= b D3 .tex= c
%D    @ 0 @ 1 <-| sl^ .plabel= a {ñ}
%D    @ 0 @ 1 => sl_
%D    @ 2 @ 3 |->
%D ))
%D (( E0 .tex= b\;||\;R
%D    E1 .tex= c\;||\;R
%D    E2 .tex= b E3 .tex= c
%D    @ 0 @ 1 <-| sl^ .plabel= a {ñ}
%D    @ 0 @ 1 => sl_
%D    @ 2 @ 3 |->
%D ))
%D (( F0 .tex= R
%D    F1 .tex= R
%D    F2 .tex= b F3 .tex= c
%D    @ 0 @ 1 <-| sl^ .plabel= a {ñ}
%D    @ 0 @ 1 => sl_
%D    @ 2 @ 3 |->
%D ))
%D enddiagram
%D
$$\diag{cart-shorthands}$$





[Cartesian liftings]

[The adjunction]

[Cleavage]

[Change-of-base functors]

[$\ov{v}$ as a natural transformation]

[Vertical and horizontal; mention ``prone'']

[Every morphism in $\bbE$ factors as `vertical;horizontal']

[Archetypical case 1: $\cod: \Sub(\Set) \to \Set$. Subobjects]

[Archetypical case 2: $\cod: \Set^\to \to \Set$. Display maps]

[Archetypical case 3: $\Set//\Set$. Simplified display maps]

% (find-books "__cats/__cats.el" "lambek-scott")
% (find-books "__cats/__cats.el" "jacobs")






% --------------------
% «dn-uc-intro»  (to ".dn-uc-intro")
% (sec      "Some Uppercasings" "dn-uc-intro")
\mysection {Some Uppercasings} {dn-uc-intro}



% --------------------
% «dn-uc-semi-logical»  (to ".dn-uc-semi-logical")
% (subsec     "A Semi-Logical Notation" "dn-uc-semi-logical")
\mysubsection {A Semi-Logical Notation} {dn-uc-semi-logical}



% --------------------
% «dn-uc-lawvere»  (to ".dn-uc-lawvere")
% (subsec     "Lawvere" "dn-uc-lawvere")
\mysubsection {Lawvere} {dn-uc-lawvere}



% --------------------
% «dn-uc-seely»  (to ".dn-uc-seely")
% (subsec     "Seely" "dn-uc-seely")
\mysubsection {Seely} {dn-uc-seely}



% --------------------
% «dn-uc-jacobs»  (to ".dn-uc-jacobs")
% (subsec     "Jacobs" "dn-uc-jacobs")
\mysubsection {Jacobs} {dn-uc-jacobs}



% --------------------
% «dn-uc-maclane»  (to ".dn-uc-maclane")
% (subsec     "Maclane" "dn-uc-maclane")
\mysubsection {Maclane} {dn-uc-maclane}



% --------------------
% «dn-uc-awodey»  (to ".dn-uc-awodey")
% (subsec     "Awodey" "dn-uc-awodey")
\mysubsection {Awodey} {dn-uc-awodey}

\cite{Awodey}


% --------------------
% «dn-change-of-base»  (to ".dn-change-of-base")
% (sec      "Change-of-base" "dn-change-of-base")
\mysection {Change-of-base} {dn-change-of-base}

(Transcribed from the back of p.246 in ``On Property-Like Structures'').

In the archetypical hyperdoctrine, $\Sub(\Set)$ --- and thus also in
the downcased notation --- the adjoints to weakening ($\pi^*$) and
contraction ($\delta^*$) functors take particularly simple forms,
while the adjoints to arbitrary substitution functors ($f^*$) look
more complex, and indeed can be (re)constructed from the adjoints to
weakening and contraction.

This makes more sense in the diagrams. If $\pi \equiv (a,b \mto a)$ is
a projection, its associated change-of-base functor is a ``weakening''
rule because its weakens the context by introducing a new hypothesis:

%D diagram weakening-functor
%D 2Dx       100         +50 
%D 2D  100 a,b||Pa <=== a||Pa
%D 2D         -           -
%D 2D         |    <-|    |
%D 2D         v           v
%D 2D  +25 a,b||Qa <=== a||Qa
%D 2D
%D 2D  +20   a,b |-----> a
%D 2D
%D (( a,b||Pa a||Pa
%D    a,b||Qa a||Qa
%D    a,b a
%D    @ 0 @ 1 <=
%D    @ 0 @ 2 |-> .plabel= l a,b||Pa|-Qa
%D    @ 1 @ 3 |-> .plabel= r   a||Pa|-Qa
%D    @ 2 @ 3 <=
%D    @ 0 @ 3 harrownodes nil 20 nil <-| .plabel= a \pi^*
%D    @ 0 @ 3 harrownodes nil 20 nil <-| .plabel= b \text{weakening}
%D    @ 4 @ 5 |-> .plabel= a \pi
%D    @ 4 @ 5 |-> .plabel= b \text{projection}
%D ))
%D enddiagram
%D
$$\diag{weakening-functor}$$

If $\delta \equiv (a,b \mton{b':=b} a,b,b')$ is a ``duplication'' (or
``diagonal''), the associated change-of-base functor is a
``contraction'' rule, that collapses two hypotheses of the same type
into one:

%D diagram contraction-functor
%D 2Dx       100              +60 
%D 2D  100 a,b||Pabb <=== a,b,b'||Pabb'
%D 2D         -                -
%D 2D         |       <-|      |
%D 2D         v                v
%D 2D  +25 a,b||Qabb <=== a,b,b'||Qabb'
%D 2D
%D 2D  +20   a,b |--------> a,b,b'
%D 2D
%D (( a,b||Pabb a,b,b'||Pabb'
%D    a,b||Qabb a,b,b'||Qabb'
%D    a,b a,b,b'
%D    @ 0 @ 1 <=
%D    @ 0 @ 2 |-> .plabel= l     a,b||Pabb|-Qabb
%D    @ 1 @ 3 |-> .plabel= r a,b,b'||Pabb'|-Qabb'
%D    @ 2 @ 3 <=
%D    @ 0 @ 3 harrownodes nil 20 nil <-| .plabel= a \delta^*
%D    @ 0 @ 3 harrownodes nil 20 nil <-| .plabel= b \text{contraction}
%D    @ 4 @ 5 |-> .plabel= a \delta
%D    @ 4 @ 5 |-> .plabel= b \sm{\text{duplication/}\\\text{diagonal}\\(b':=b)}
%D ))
%D enddiagram
%D
$$\diag{contraction-functor}$$

In the case of an arbitrary morphism, say, $f \equiv (a \mto b)$, we
will say that the associated change of base functor, $f^*$, is just a
``substitution'':

%D diagram substitution-functor
%D 2Dx        100           +50 
%D 2D  100 a||P(fa) <=== b||P(b)
%D 2D         -             -
%D 2D         |      <-|    |
%D 2D         v             v
%D 2D  +25 a||Q(fa) <=== b||Q(b)
%D 2D
%D 2D  +20    a |---------> b
%D 2D
%D (( a||P(fa) b||P(b)
%D    a||Q(fa) b||Q(b)
%D    a b
%D    @ 0 @ 1 <=
%D    @ 0 @ 2 |-> .plabel= l a||P(fa)|-Q(fa)
%D    @ 1 @ 3 |-> .plabel= r  b||P(b)|-Q(b)
%D    @ 2 @ 3 <=
%D    @ 0 @ 3 harrownodes nil 20 nil <-| .plabel= a f^*
%D    @ 0 @ 3 harrownodes nil 20 nil <-| .plabel= b \text{substitution}
%D    @ 4 @ 5 |-> .plabel= a f
%D    @ 4 @ 5 |-> .plabel= b b:=fa
%D ))
%D enddiagram
%D
$$\diag{substitution-functor}$$

Note that we are claiming that these change-of-base functors, $\pi^*$,
$\delta^*$, $f^*$, deserve the names ``$a,b||Qa \funot a||Qa$'',
``$a,b||Qabb \funot a,b,b'||Qabb'$'', ``$a||Q(fa) \funot b||Q(b)$'';
to check that these names are adequate (in the archetype, of course!)
we need to check that the implied cartesian morphisms
%
$$a,b||Qa \mton{ñ} a||Qa$$
%
are really cartesian, which amounts to checking that these diagrams
represent adjunction:

{\myttchars
\footnotesize
\begin{verbatim}
    a||Pa |---------------------\
         | - >                   v
               b,c||Qb |-cart?-> b||Qb

     a |-----------------------\
       | - - - >                v
                b,c |-----------> b
\end{verbatim}
}


% (Transcribed from the back of p.244 in ``On Property-Like Structures'').

We say that a morphism $b||Q \mto c||R$ in $\bbE$ is {\sl
  pre-cartesian} when it is ``on the way to becoming cartesian''; this
means that we have not yet constructed the universal condition that
proves that it is cartesian, but we are going towards that.

Note that this terminology --- ``on the way to becoming'', ``not
yet'', ``towards that'' --- imply that there are underlying notions of
{\sl time} and {\sl aim}; they refer to a mathematician (or a proof
assistant) who is working on a proof.

We can picture the situation as this:

{\myttchars
\footnotesize
\begin{verbatim}
        statement
        + proof   |- - ->
                           S+P^-
                  <- - -|
        statement
        + witness
\end{verbatim}
}

Take a statement $S$; for example, ``$b,c||Rc \mto c||Rc$ is
cartesian''. We may have a witness, $W$, for ``$\sigma$ is true''; in
our everyday practice a ``witness'' may be a mathematician --- in
flesh and bones; or a book; or an article, an e-mail, etc --- who says
that $\sigma$ is true; in a purely mathematical world, however, a
witness for $\sigma$ may be something as abstract as a point in the
set
%
$$\sst{xÝ\{*\}}{\text{$\sigma$ is true}},$$
%
which is a singleton if $\sigma$ is true, or the empty set if $\sigma$
is false.

Starting from $S$ and $W$ --- or even from just $S$, if we are brave
--- we may try to work towards a situation where we have even more
information: $S+P$, where $P$ is a proof of the statement $S$. In our
example, a proof is an inverse for a certain natural map.

If you, reader, are a strictly classical mathematician, I urge you to
skip the rest of this paragraph; for those who are still reading, an
inverse for the natural transformation

{\myttchars
\footnotesize
\begin{verbatim}
a||P |--------\
    |->        v
       b||Q |-> c||R

 a |----------\
   |->         v
       b |-----> c
\end{verbatim}
}

is a {\sl construction} that receives triples $(\sof{a||P}, (a||P \mto
c||R), (a \mto b))$ obeying a certain commutativity condition and
return the unique corresponding $a||P \mto b||Q$.

[And constructions are lambda-terms.]



% --------------------
% «dn-arch-hyperdoctrine»  (to ".dn-arch-hyperdoctrine")
% (sec      "Our archetypal hyperdoctrine" "dn-arch-hyperdoctrine")
\mysection {Our archetypal hyperdoctrine} {dn-arch-hyperdoctrine}


% (find-LATEX "2008bcc.tex" "adjs-of-change-of-base")

%D diagram adjs-to-change-of-base-dnc
%D 2Dx     100     +30    +30     +35    +30     +40    
%D 2D  100 A0 ===> A1     B0 ===> B1     C0 ===> C1     
%D 2D      -       -      -       -      -       -                                             
%D 2D      |  <->  |      |  <->  |      |  <->  |                                             
%D 2D      v       v      v       v      v       v            
%D 2D  +20 A2 <=== A3     B2 <=== B3     C2 <=== C3     
%D 2D      -       -      -       -      -       -                                             
%D 2D      |  <->  |      |  <->  |      |  <->  |                                             
%D 2D      v       v      v       v      v       v            
%D 2D  +20 A4 ===> A5     B4 ===> B5     C4 ===> C5     
%D 2D                                                   
%D 2D  +20 a0 |--> a1     b0 |--> b1     c0 |--> c1     
%D 2D
%D (( A0 .tex= Pab  A1 .tex= Îb.Pab
%D    A2 .tex= Qa   A3 .tex= Qa
%D    A4 .tex= Rab  A5 .tex= ýb.Rab
%D    a0 .tex= a,b  a1 .tex= a
%D    A0 A1 =>
%D    A0 A2 |-> A1 A3 |-> A0 A3 harrownodes nil 20 nil <->
%D    A2 A3 <=
%D    A2 A4 |-> A3 A5 |-> A2 A5 harrownodes nil 20 nil <->
%D    A4 A5 =>
%D    a0 a1 |->
%D ))
%D (( B0 .tex= Pab    B1 .tex= b=b'´Pabb
%D    B2 .tex= Qabb   B3 .tex= Qabb'
%D    B4 .tex= Rab    B5 .tex= b=b'¶Rab
%D    b0 .tex= a,b  b1 .tex= a,b,b'
%D    B0 B1 =>
%D    B0 B2 |-> B1 B3 |-> B0 B3 harrownodes nil 20 nil <->
%D    B2 B3 <=
%D    B2 B4 |-> B3 B5 |-> B2 B5 harrownodes nil 20 nil <->
%D    B4 B5 =>
%D    b0 b1 |->
%D ))
%D (( C0 .tex= Pa    C1 .tex= Îa.a=fb´Pa
%D    C2 .tex= Qfa   C3 .tex= Qb
%D    C4 .tex= Ra    C5 .tex= ýa.a=fb¶Pa
%D    c0 .tex= a     c1 .tex= b
%D    C0 C1 =>
%D    C0 C2 |-> C1 C3 |-> C0 C3 harrownodes nil 20 nil <->
%D    C2 C3 <=
%D    C2 C4 |-> C3 C5 |-> C2 C5 harrownodes nil 20 nil <->
%D    C4 C5 =>
%D    c0 c1 |-> .plabel= a f
%D ))
%D enddiagram
%D
$$\diag{adjs-to-change-of-base-dnc}$$



% --------------------
% «dn-preservations»  (to ".dn-preservations")
% (sec      "Preservations" "dn-preservations")
\mysection {Preservations} {dn-preservations}

% (find-LATEX "2008hyp.tex" "preservations-overview")
% (find-LATEX "2008hyp.tex" "pres-of-true-and-and")
% (find-LATEX "2008bcc.tex" "first-preservations")

[Explain these diagrams:]

%D diagram new-pres-T-and-AND-dnc
%D 2Dx    100      +30   +30     +45      +45
%D 2D 100                A0 <============ A1
%D 2D	                  ^  ^             ^
%D 2D	                  |   \      <-|   |
%D 2D	                  -    -           -
%D 2D +20 T0 <==== T1    A2 <--| A3 <==== A4
%D 2D	   -              -    -           -
%D 2D	   |              |   /      <-|   |
%D 2D	   v              v  v             v
%D 2D +20 T2             A5 <============ A6
%D 2D
%D 2D +15 ta |---> tb    aa |-----------> ab
%D 2D
%D (( T0 .tex= §  T1 .tex= §
%D    T2 .tex= §
%D    ta .tex= a        tb .tex= b
%D    T0 T1 <= T0 T2 |-> sl_ .plabel= l î T0 T2 <-| sl^ .plabel= r ÐP§
%D    ta tb |->
%D ))
%D (( A0 .tex= P                  A1 .tex= P
%D    A2 .tex= P&Q  A3 .tex= P&Q  A4 .tex= P&Q
%D    A5 .tex= Q                  A6 .tex= Q
%D        aa x+= 10 .tex= a        ab .tex= b
%D    A0 A1 <=
%D    A0 A2 <-| A0 A3 <-|
%D    A1 A4 <-| 
%D    A0 A3 midpoint A1 A4 midpoint harrownodes nil 20 nil <-|
%D    A2 A3 <-| sl^ .plabel= a {î} A2 A3 |-> sl_ .plabel= b ÐP&  A3 A4 <=
%D    A2 A5 |-> A3 A5 |->
%D    A4 A6 |-> 
%D    A3 A5 midpoint A4 A6 midpoint harrownodes nil 20 nil <-|
%D    A5 A6 <=
%D    aa ab |->
%D ))
%D enddiagram

$$\index{preservation!of `true'!DNC diagram}
  \index{preservation!of `and'!DNC diagram}
  \diag{new-pres-T-and-AND-dnc}
$$

% (find-LATEX "2008hyp.tex" "pres-of-true-and-and")
% (find-LATEX "2008bcc.tex" "first-preservations")

[Explain these diagrams:]

% (find-LATEX "2008hyp.tex" "pres-of-imp")
% (find-LATEX "2008bcc.tex" "first-preservations")

%D diagram Pimp-DNC
%D 2Dx    100    +45                 +55   +45
%D 2Dx    100    +60                 +55   +60
%D 2D 100 B0 <-> B0' <============== B1
%D 2D	  -/\                        -/\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\==================== B3  \\
%D 2D	   \\  \\                     \\  \\
%D 2D +15   \\   B4 <===================== B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \/v                        Vv
%D 2D +20        B6                        B7
%D 2D
%D 2D +0  b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= (P¶Q)&P  B0' .tex= (P¶Q)&P   B1 .tex= (P¶Q)&P
%D    B2 .tex= Q        B3  .tex= Q
%D    B4 .tex= P¶Q      B5 .tex= P¶Q
%D    B6 .tex= P¶Q      B7 .tex= P¶Q
%D    B0  B0' <-| sl^ .plabel= a {î}
%D    B0  B0' |-> sl_ .plabel= b ÐP&
%D    B0' B1 <= B0 B2 |-> B0' B2 |-> B1 B3 |-> B2 B3 <=
%D    B0 B4 <= B2 B6 =>
%D    B1 B5 <= B3 B7 =>
%D    B4 B5 <= B5 B7 |-> .plabel= r \id
%D    B4 B6 |-> sl_ .plabel= l î B4 B6 <-| sl^ .plabel= r ÐP¶
%D    B0' B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 b2 midpoint .TeX= a b1 b3 midpoint .TeX= b |->
%D ))
%D enddiagram
%
$$\diag{Pimp-DNC}$$



% --------------------
% «dn-display-maps»  (to ".dn-display-maps")
% (sec      "Display Maps" "dn-display-maps")
\mysection {Display Maps} {dn-display-maps}



% --------------------
% «dn-quantifiers»  (to ".dn-quantifiers")
% (sec      "Quantifiers" "dn-quantifiers")
\mysection {Quantifiers} {dn-quantifiers}



% --------------------
% «dn-equality»  (to ".dn-equality")
% (sec      "Equality" "dn-equality")
\mysection {Equality} {dn-equality}



% --------------------
% «dn-bcc-for-exists»  (to ".dn-bcc-for-exists")
% (sec      "Beck-Chevalley for `Exists'" "dn-bcc-for-exists")
\mysection {Beck-Chevalley for `Exists'} {dn-bcc-for-exists}

% (to "proto-BCC")

%D diagram bcc-for-exists-dnc0
%D 2Dx      100      +45          +55     +45
%D 2D 100  ac;d <=============== bc;d
%D 2D	     -\\  -                - \\
%D 2D	     | \\  \               |  \\
%D 2D	     v  \\  v              v   \\
%D 2D +20 ac;cd <\\> ac;cd' <=== bc;cd  \\
%D 2D	      /\  \/                /\   \/
%D 2D +15      \\   a;cd             \\  b;cd
%D 2D	        \\    -               \\   -
%D 2D	         \\   |                \\  |
%D 2D	          \\  v                 \\ v
%D 2D +20           a;cd' <============= b;cd'
%D 2D
%D 2D +10   ac |----------------> bc
%D 2D	       |--->                 |-->
%D 2D +35            a |----------------> b
%D 2D
%D (( ac;d  .tex= P                        bc;d  .tex= P
%D    ac;cd .tex= Îc.P  ac;cd' .tex= Îc.P  bc;cd .tex= Îc.P
%D    a;cd  .tex= Îc.P                     b;cd  .tex= Îc.P
%D    a;cd' .tex= Îc.P                     b;cd' .tex= Îc.P
%D    ac;d bc;d <= ac;d ac;cd |-> ac;d ac;cd' |-> bc;d bc;cd |-> ac;cd ac;cd' <-> ac;cd' bc;cd <=
%D    ac;d a;cd => bc;d b;cd =>
%D    ac;cd a;cd' <= bc;cd b;cd' <=
%D    a;cd' b;cd' <= b;cd b;cd' |-> .plabel= r \id
%D    a;cd a;cd' |-> sl_ .plabel= l î a;cd a;cd' <-| sl^ .plabel= r Ð{BCC}Î
%D    ac;d ac;cd' midpoint bc;d bc;cd midpoint  harrownodes nil 20 nil <-|
%D    ac;d  ac;cd midpoint a;cd a;cd' midpoint dharrownodes nil 20 nil |->
%D    bc;d  bc;cd midpoint b;cd b;cd' midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( ac .tex= ac bc .tex= bc a .tex= a b .tex= b
%D    ac bc |-> ac a |-> bc b |-> a b |->
%D    ac relplace 20 7 \pbsymbol{7}
%D ))
%D enddiagram
%
$$\index{Beck-Chevalley!for `exists'!DNC diagram}
  \diag{bcc-for-exists-dnc0}
$$

% :p'p

%D diagram bcc-for-exists-dnc1
%D 2Dx      100     +75 +10       +85    +55
%D 2Dx      100     +65 +20       +85    +55
%D 2Dx      100     +55 +30       +85    +55
%D 2D 100  ac;d <=============== bc;d
%D 2D	     -\\  -                - \\
%D 2D	     | \\  \               |  \\
%D 2D	     v  \\  v              v   \\
%D 2D +20 ac;cd <\\> ac;cd' <=== bc;cd  \\
%D 2D	      /\  \/                /\   \/
%D 2D +15      \\   a;cd             \\  b;cd
%D 2D	        \\    -               \\   -
%D 2D	         \\   |                \\  |
%D 2D	          \\  v                 \\ v
%D 2D +20           a;cd' <============= b;cd'
%D 2D
%D 2D +20   ac |----------------> bc
%D 2D	       |--->                 |-->
%D 2D +45           a |----------------> b
%D 2D
%D ((
%D    ac;d   .tex= d:D_{bc}[b{:=}fa]                                                     bc;d   .tex= d:D_{bc}
%D    ac;cd .tex= p':(Æc¨C_b.D_{bc})[b{:=}fa]  ac;cd' .tex= p:(Æc¨C_b.D_{bc})[b{:=}fa]   bc;cd .tex= p:Æc¨C_b.D_{bc}
%D    a;cd   .tex= p:(Æc¨C_b[b{:=}fa].D_{bc}[b{:=}fa])                                     b;cd   .tex= p:Æc¨C_b.D_{bc}
%D    a;cd'  .tex= p':(Æc¨C_b.D_{bc})[b{:=}fa]                                           b;cd'  .tex= p':Æc¨C_b.D_{bc}
%D    ac;d bc;d <= ac;d ac;cd |-> ac;d ac;cd' |-> bc;d bc;cd |-> ac;cd ac;cd' <-> ac;cd' bc;cd <=
%D    ac;d a;cd => bc;d b;cd =>
%D    ac;cd a;cd' <= bc;cd b;cd' <=
%D    a;cd' b;cd' <= b;cd b;cd' |-> .plabel= r \id
%D    a;cd a;cd' |-> sl_ .plabel= l î a;cd a;cd' <-| sl^ .plabel= r Ð{BCC}Î
%D    ac;d ac;cd' midpoint bc;d bc;cd midpoint  harrownodes nil 20 nil <-|
%D    ac;d  ac;cd midpoint a;cd a;cd' midpoint dharrownodes nil 20 nil |->
%D    bc;d  bc;cd midpoint b;cd b;cd' midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( ac .tex= a:A,c:C_b[b{:=}fa]                bc .tex= b:B,c:C_b
%D    a   .tex= a:A                             b   .tex= b:B
%D    ac bc |-> .plabel= a b:=fa
%D    ac a |-> bc b |->
%D    a b |-> .plabel= a b:=fa
%D    ac relplace 28 10 \pbsymbol{7}
%D ))
%D enddiagram
%
$$\index{Beck-Chevalley!for sums!term model diagram}
  \diag{bcc-for-exists-dnc1}
$$

\def\unp{\operatorname{unp}}
\def\ren{\operatorname{ren}}

%:
%:              b:B,c:C|-D_{b}:Þ
%:              -----------------Æ
%:              b:B|-Æc¨C.D_{b}:Þ
%:              ------------------------------------\id
%:              b:B;p:Æc¨C_b.D_{bc}|-p:Æc¨C_b.D_{bc}
%:              -------------------------------------------Æ^\sharp
%:  a:A|-fa:B   b:B,c:C_b;d:D_{bc}|-\ang{c,d}:Æc¨C_b.D_{bc}
%:  -------------------------------------------------------¯{cut}
%:  a:A,c:C_b[b{:=}fa];d:D_{bc}[b{:=}fa]|-\ang{c,d}[b{:=}fa]:(Æc¨C_b.D_{bc})[b{:=}fa]   a,c;p|-p
%:  ------------------------------------------------------------------------------------------;
%:  a:A,c:C_b[b{:=}fa];d:D_{bc}[b{:=}fa]|-\ang{c,d}[b{:=}fa]:(Æc¨C_b.D_{bc})[b{:=}fa]
%:  ------------------------------------------------------------------------------------------Æ^\flat
%:  a:A;p:Æc¨C_b[b{:=}fa].D_{bc}[b{:=}fa]|-\ang{c,d}[b{:=}fa][c,d:=\unp"p]:(Æc¨C_b.D_{bc})[b{:=}fa][c,d:=\unp"p]
%:
%:  ^bcc-for-exists-dnc1
%:
%:
%:
%:
%:
%:
$$\ded{bcc-for-exists-dnc1}$$



[Explain these diagrams:]

%D diagram bcc-for-exists-dnc
%D 2Dx    100     +45                +55   +45
%D 2D 100 B0 <====================== B1
%D 2D	  -\\                        -\\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\> B2' ============== B3  \\
%D 2D	   /\  \/                     /\  \/
%D 2D +15   \\   B4                    \\  B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \\v                        \v
%D 2D +20        B6 <===================== B7
%D 2D
%D 2D +10 b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= P                    B1 .tex= P
%D    B2 .tex= Îc.P B2' .tex= Îc.P  B3 .tex= Îc.P
%D    B4 .tex= Îc.P                 B5 .tex= Îc.P
%D    B6 .tex= Îc.P                 B7 .tex= Îc.P
%D    B0 B1 <= B0 B2 |-> B0 B2' |-> B1 B3 |-> B2 B2' <-> B2' B3 <=
%D    B0 B4 => B1 B5 =>
%D    B2 B6 <= B3 B7 <=
%D    B6 B7 <= B5 B7 |-> .plabel= r \id
%D    B4 B6 |-> sl_ .plabel= l î B4 B6 <-| sl^ .plabel= r Ð{BCC}Î
%D    B0 B2' midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 .tex= a,c b1 .tex= b,c b2 .tex= a b3 .tex= b
%D    b0 b1 |-> b0 b2 |-> b1 b3 |-> b2 b3 |->
%D    b0 relplace 20 7 \pbsymbol{7}
%D ))
%D enddiagram
%
$$\diag{bcc-for-exists-dnc}$$



% --------------------
% «dn-bcc-for-forall»  (to ".dn-bcc-for-forall")
% (sec      "Beck-Chevalley for `For All'" "dn-bcc-for-forall")
\mysection {Beck-Chevalley for `For All'} {dn-bcc-for-forall}

% (find-LATEX "2008hyp.tex" "bcc-for-forall")

%D diagram bcc-for-forall-dnc
%D 2Dx    100    +45                 +55   +45
%D 2D 100 B0 <-> B0' <============== B1
%D 2D	  -/\                        -/\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\==================== B3  \\
%D 2D	   \\  \\                     \\  \\
%D 2D +15   \\   B4 <===================== B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \/v                        Vv
%D 2D +20        B6                        B7
%D 2D
%D 2D +10 b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= ýc.P  B0' .tex= ýc.P   B1 .tex= ýc.P
%D    B2 .tex= P        B3  .tex= P
%D    B4 .tex= ýc.P     B5 .tex= ýc.P
%D    B6 .tex= ýc.P     B7 .tex= ýc.P
%D    B0  B0' <-> B0' B1 <= B0 B2 |-> B0' B2 |-> B1 B3 |-> B2 B3 <=
%D    B0 B4 <= B2 B6 =>
%D    B1 B5 <= B3 B7 =>
%D    B4 B5 <= B5 B7 |-> .plabel= r \id
%D    B4 B6 |-> sl_ .plabel= l î B4 B6 <-| sl^ .plabel= r Ð{BCC}ý
%D    B0' B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 .tex= a,c b1 .tex= b,c b2 .tex= a b3 .tex= b
%D    b0 b1 |-> b0 b2 |-> b1 b3 |-> b2 b3 |->
%D    b0 relplace 20 7 \pbsymbol{7}
%D ))
%D enddiagram
%
$$\diag{bcc-for-forall-dnc}$$



% --------------------
% «dn-bcc-for-equality»  (to ".dn-bcc-for-equality")
% (sec      "Beck-Chevalley for Equality" "dn-bcc-for-equality")
\mysection {Beck-Chevalley for Equality} {dn-bcc-for-equality}

[BCC for equality is the same, categorically; point that in
  \cite{Jacobs} and in \cite{SeelyBeck} they are kept separate,
  because they don't require a left adjoint to all `$f$'s in the base
  --- just for projections and diagonals. The downcased diagram is
  different...]

% (find-LATEX "2008hyp.tex" "bcc-for-equality")


%D diagram bcc-for-equality-dnc
%D 2Dx    100     +45                +55   +45
%D 2D 100 B0 <====================== B1
%D 2D	  -\\                        -\\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\> B2' ============== B3  \\
%D 2D	   /\  \/                     /\  \/
%D 2D +15   \\   B4                    \\  B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \\v                        \v
%D 2D +20        B6 <===================== B7
%D 2D
%D 2D +10 b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= P                              B1 .tex= P
%D    B2 .tex= c{=}c{&}P B2' .tex= c{=}c{&}P  B3 .tex= c{=}c{&}P
%D    B4 .tex= c{=}c'{&}P                     B5 .tex= c{=}c'{&}P
%D    B6 .tex= c{=}c'{&}P                     B7 .tex= c{=}c'{&}P
%D    B0 B1 <= B0 B2 |-> B0 B2' |-> B1 B3 |-> B2 B2' <-> B2' B3 <=
%D    B0 B4 => B1 B5 =>
%D    B2 B6 <= B3 B7 <=
%D    B6 B7 <= B5 B7 |-> .plabel= r \id
%D    B4 B6 |-> sl_ .plabel= l î B4 B6 <-| sl^ .plabel= r Ð{BCC}Î
%D    B0 B2' midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 .tex= a,c b1 .tex= b,c b2 .tex= a,c,c' b3 .tex= b,c,c'
%D    b0 b1 |-> b0 b2 |-> b1 b3 |-> b2 b3 |->
%D    b0 relplace 20 7 \pbsymbol{7}
%D ))
%D enddiagram
%
$$\diag{bcc-for-equality-dnc}$$

%D diagram bcc-for-equality-std
%D 2Dx    100     +45                +55   +45
%D 2D 100 B0 <====================== B1
%D 2D	  -\\                        -\\
%D 2D	  | \\                       | \\
%D 2D	  v  \\                      v  \\
%D 2D +20 B2 <\\> B2' ============== B3  \\
%D 2D	   /\  \/                     /\  \/
%D 2D +15   \\   B4                    \\  B5
%D 2D	     \\  -                      \\ -
%D 2D	      \\ |                       \\|
%D 2D	       \\v                        \v
%D 2D +20        B6 <===================== B7
%D 2D
%D 2D +10 b0 |---------------------> b1
%D 2D	     |->                        |->
%D 2D +35        b2 |--------------------> b3
%D 2D
%D ((
%D    B0 .tex= f'*P                              B1 .tex= P
%D    B2 .tex= c'*f^*\Eq_{c}P  B2' .tex= f'*c^*\Eq_{c}P  B3 .tex= c^*\Eq_{c}P
%D    B4 .tex= \Eq_{c'}f'*P                      B5 .tex= \Eq_{c}P
%D    B6 .tex= f^*\Eq_{c}P                       B7 .tex= \Eq_{c}P
%D    B0 B1 <-| B0 B2 -> B0 B2' -> B1 B3 -> B2 B2' <-> B2' B3 <-|
%D    B0 B4 |-> B1 B5 |->
%D    B2 B6 <-| B3 B7 <-|
%D    B6 B7 <-| B5 B7 -> .plabel= r \id
%D    B4 B6 -> sl_ .plabel= l î B4 B6 <- sl^ .plabel= r Ð{BCC}=
%D    B0 B2' midpoint B1 B3 midpoint  harrownodes nil 20 nil <-|
%D    B0  B2 midpoint B4 B6 midpoint dharrownodes nil 20 nil |->
%D    B1  B3 midpoint B5 B7 midpoint dharrownodes nil 20 nil <-|
%D ))
%D (( b0 .tex= A×C b1 .tex= B×C b2 .tex= A×C×C b3 .tex= B×C×C
%D    b0 b1 -> .plabel= b f'
%D    b0 b2 -> .plabel= l c'
%D    b1 b3 -> .plabel= r c
%D    b2 b3 -> .plabel= b f
%D    b0 relplace 20 7 \pbsymbol{7}
%D ))
%D enddiagram
%
$$\diag{bcc-for-equality-std}$$




% --------------------
% «dn-frob-for-exists»  (to ".dn-frob-for-exists")
% (sec      "Frobenius for `Exists'" "dn-frob-for-exists")
\mysection {Frobenius for `Exists'} {dn-frob-for-exists}

% (find-LATEX "2008hyp.tex" "frob-for-exists")
% (find-LATEX "2008hyp.tex" "frob-for-equality")
% (find-LATEX "2008hyp.tex" "frob-for-ex-eq")

[Explain the diagrams below, and include the diagrams that show that
  in the presence of a left adjoint to change-of-base we have that
  ``Frobenius is equivalent to preservation of `implies'\,''.]

[Frobenius for exists:]

%D diagram frob-for-exists-dnc
%D 2Dx    100          +45 +35 +10
%D 2D 100 B0 ================> B1
%D 2D	  ^                  ^ ^ 
%D 2D	  |                 /  | 
%D 2D	  -                \   - 
%D 2D +20 B2 ========> B3 <--> B3'
%D 2D	  -                /   - 
%D 2D	  |                 \  |
%D 2D	  v                  v v
%D 2D +20 B4 <================ B5         
%D 2D
%D 2D +15 b0 |-----------> b1
%D 2D
%D ((
%D    B0 .tex= P                      B1  .tex=  Îc.P
%D    B2 .tex= P&Q  B3 .tex= Îc.(P&Q) B3' .tex= (Îc.P)&Q
%D    B4 .tex= Q                      B5  .tex=     Q
%D    B0 B1 =>   B2 B0 |-> B3 B1 |-> B3' B1 |->
%D    B4 B5 <=   B2 B4 |-> B3 B5 |-> B3' B5 |->
%D    B2 B3 =>   B3 B3' |-> sl^ .plabel= a î  B3 B3' <-| sl_ .plabel= b Ð{Frob}Î
%D    B0 B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil |->
%D    B2 B4 midpoint B3 B5 midpoint  harrownodes nil 20 nil |->
%D ))
%D (( b0 .tex= b,c b1 .tex= b   b0 b1 |->
%D ))
%D enddiagram
%
$$\index{Frobenius!for `exists'!DNC diagram}
  \diag{frob-for-exists-dnc}
$$

% :  a,b;c =============================> a;(b,c)
% :    ^                          ------>   ^
% :    |                         /          |
% :    -                        \           -
% :  a,b;(c,d) ====> a;(b,(c,d)) |-nat-> a;((b,c),d)
% :    -                        / <-Frob-|  -
% :    |                         \          |
% :    v                          ------->  v
% :  a,b;d <============================== a;d
%:
%:            a|-D                    a|-D
%:           ======                  ======
%:  a,b|-C   a,b|-D         a,b|-C   a,b|-D
%:  ---------------\pi      ---------------\pi'
%:    a,b;(c,d)|-c          a,b;(c,d)|-d
%:  ------------------Æ_1   -------------Æ^\flat
%:  a;(b,(c,d))|-(b,c)      a;(b,(c,d))|-d
%:  --------------------------------------<,>
%:           a;(b,(c,d))|-((b,c),d)
%:
%:           ^Frob-nat
%:
% Engraçado, o Frobenius não é uma associatividade "forte", ele tem
% restrições grandes nas dependências do D....




% --------------------
% «dn-frob-for-equality»  (to ".dn-frob-for-equality")
% (sec      "Frobenius for Equality" "dn-frob-for-equality")
\mysection {Frobenius for Equality} {dn-frob-for-equality}

[Frobenius for equality:]

%D diagram frob-for-equality-dnc
%D 2Dx    100          +50 +40 +15
%D 2D 100 B0 ================> B1
%D 2D	  ^                  ^ ^ 
%D 2D	  |                 /  | 
%D 2D	  -                \   - 
%D 2D +20 B2 ========> B3 <--> B3'
%D 2D	  -                /   - 
%D 2D	  |                 \  |
%D 2D	  v                  v v
%D 2D +20 B4 <================ B5         
%D 2D
%D 2D +15 b0 |-----------> b1
%D 2D
%D ((
%D    B0 .tex= P                            B1  .tex=  c{=}c'{&}P
%D    B2 .tex= P&Q  B3 .tex= c{=}c'{&}(P&Q) B3' .tex= (c{=}c'{&}P)&Q
%D    B4 .tex= Q                            B5  .tex=     Q
%D    B0 B1 =>   B2 B0 |-> B3 B1 |-> B3' B1 |->
%D    B4 B5 <=   B2 B4 |-> B3 B5 |-> B3' B5 |->
%D    B2 B3 =>   B3 B3' |-> sl^ .plabel= a î  B3 B3' <-| sl_ .plabel= b Ð{Frob}=
%D    B0 B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil |->
%D    B2 B4 midpoint B3 B5 midpoint  harrownodes nil 20 nil |->
%D ))
%D (( b0 .tex= b,c b1 .tex= b,c,c'   b0 b1 |->
%D ))
%D enddiagram
%
$$\index{Frobenius!for equality!DNC}
  \diag{frob-for-equality-dnc}
$$

%D diagram frob-for-equality-std
%D 2Dx    100          +45 +35 +10
%D 2Dx    100          +50 +40 +15
%D 2D 100 B0 ================> B1
%D 2D	  ^                  ^ ^ 
%D 2D	  |                 /  | 
%D 2D	  -                \   - 
%D 2D +20 B2 ========> B3 <--> B3'
%D 2D	  -                /   - 
%D 2D	  |                 \  |
%D 2D	  v                  v v
%D 2D +20 B4 <================ B5         
%D 2D
%D 2D +15 b0 |-----------> b1
%D 2D
%D ((
%D    B0 .tex= P                              B1  .tex=  \Eq_cP
%D    B2 .tex= P&c^*Q  B3 .tex= \Eq_c(P&c^*Q) B3' .tex= (\Eq_cP)&Q
%D    B4 .tex= c^*Q                           B5  .tex=     Q
%D    B0 B1 |->   B2 B0 -> B3 B1 -> B3' B1 ->
%D    B4 B5 <-|   B2 B4 -> B3 B5 -> B3' B5 ->
%D    B2 B3 |->   B3 B3' -> sl^ .plabel= a î  B3 B3' <- sl_ .plabel= b Ð{Frob}=
%D    B0 B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil |->
%D    B2 B4 midpoint B3 B5 midpoint  harrownodes nil 20 nil |->
%D ))
%D (( b0 .tex= B×C b1 .tex= B×C×C   b0 b1 -> .plabel= a c
%D ))
%D enddiagram
%
$$\index{Frobenius!for equality!standard}
  \diag{frob-for-equality-std}
$$



[Frobenius for an arbitrary map:]

%D diagram frob-for-ex-eq-dnc
%D 2Dx    100          +60 +55 +25
%D 2D 100 B0 ================> B1
%D 2D	  ^                  ^ ^ 
%D 2D	  |                 /  | 
%D 2D	  -                \   - 
%D 2D +20 B2 ========> B3 <--> B3'
%D 2D	  -                /   - 
%D 2D	  |                 \  |
%D 2D	  v                  v v
%D 2D +20 B4 <================ B5         
%D 2D
%D 2D +15 b0 |-----------> b1
%D 2D
%D ((
%D    B0 .tex= Pa                                B1  .tex=  Îa.b=fa&Pa
%D    B2 .tex= Pa&Qfa  B3 .tex= Îa.b=fa&(Pa&Qfa) B3' .tex= (Îa.b=fa&Pa)&Qb
%D    B4 .tex= Qfa                               B5  .tex=     Qb
%D    B0 B1 =>   B2 B0 |-> B3 B1 |-> B3' B1 |->
%D    B4 B5 <=   B2 B4 |-> B3 B5 |-> B3' B5 |->
%D    B2 B3 =>   B3 B3' |-> sl^ .plabel= a î  B3 B3' <-| sl_ .plabel= b Ð{Frob}Î=
%D    B0 B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil |->
%D    B2 B4 midpoint B3 B5 midpoint  harrownodes nil 20 nil |->
%D ))
%D (( b0 .tex= a b1 .tex= b   b0 b1 |->
%D ))
%D enddiagram
%
$$\index{Frobenius!generic!DNC}
  \diag{frob-for-ex-eq-dnc}
$$

%D diagram frob-for-ex-eq-std
%D 2Dx    100          +60 +55 +25
%D 2D 100 B0 ================> B1
%D 2D	  ^                  ^ ^ 
%D 2D	  |                 /  | 
%D 2D	  -                \   - 
%D 2D +20 B2 ========> B3 <--> B3'
%D 2D	  -                /   - 
%D 2D	  |                 \  |
%D 2D	  v                  v v
%D 2D +20 B4 <================ B5         
%D 2D
%D 2D +15 b0 |-----------> b1
%D 2D
%D ((
%D    B0 .tex= P                              B1  .tex=  \Eq_fP
%D    B2 .tex= P&f^*Q  B3 .tex= \Eq_f(P&f^*Q) B3' .tex= (\Eq_fP)&Q
%D    B4 .tex= f^*Q                           B5  .tex=     Q
%D    B0 B1 |->   B2 B0 -> B3 B1 -> B3' B1 ->
%D    B4 B5 <-|   B2 B4 -> B3 B5 -> B3' B5 ->
%D    B2 B3 |->   B3 B3' -> sl^ .plabel= a î  B3 B3' <- sl_ .plabel= b Ð{Frob}Î=
%D    B0 B2 midpoint B1 B3 midpoint  harrownodes nil 20 nil |->
%D    B2 B4 midpoint B3 B5 midpoint  harrownodes nil 20 nil |->
%D ))
%D (( b0 .tex= A b1 .tex= B   b0 b1 -> .plabel= a f
%D ))
%D enddiagram
%
$$\index{Frobenius!for equality!standard}
  \diag{frob-for-ex-eq-std}
$$



% --------------------
% «dn-hyperdoctrines»  (to ".dn-hyperdoctrines")
% (sec      "Hyperdoctrines" "dn-hyperdoctrines")
\mysection {Hyperdoctrines} {dn-hyperdoctrines}

We say that a cloven fibration $p: \bbE \to \bbB$ is a {\sl hyperdoctrine} when:

(1) the base category $\bbB$ is a CCC,

(2) each fiber $\bbE_B$ is a CCC,

and for each $f:A \to B$ in $\bbB$ the change-of-base functor $f^*$ has:

(3) a left adjoint, $Æ_f \dashv f*$,

(4) a right adjoint, $f^* \dashv å_f$,

and each change-of base functor $f^*$ preserves, modulo iso,

(5) the terminal,

(6) binary products,

(7) exponentials,

and furthermore the following three ``technical conditions'' hold:

(8) Beck-Chevalley for ``exists'',

(9) Beck-Chevalley for ``forall'',

(10) Frobenius.

\msk

Our archetypical fibration $\cod: \Sub(\Set) \to \Set$ is a
hyperdoctrine --- it was the motivation for the definition of
hyperdoctrine, by the way --- and we can use a notation ``lifted''
from $\cod: \Sub(\Set) \to \Set$ to define each of these properties
diagramatically, an to prove a few theorems about hyperdoctrines.






% --------------------
% «dn-lawvere-70»  (to ".dn-lawvere-70")
% (sec      "Three Theorems from Lawvere's ``Hyperdoctrines'' Paper" "dn-lawvere-70")
\mysection {Three Theorems from Lawvere's ``Hyperdoctrines'' Paper} {dn-lawvere-70}

% (find-angg ".emacs.papers" "lawvere")
% (find-LATEX            "2008hyp.tex" "frob-and-pres-imp")
% (find-xpdfpage "~/LATEX/2008hyp.pdf" 21)
% (find-dvipage  "~/LATEX/2008hyp.dvi" 21)
% (find-LATEX            "2008hyp.tex" "bcc-ex-iff-bcc-fa")
% (find-xpdfpage "~/LATEX/2008hyp.pdf" 22)
% (find-dvipage  "~/LATEX/2008hyp.dvi" 22)
% (find-LATEX            "2008hyp.tex" "frob-for-equality-2")
% (find-xpdfpage "~/LATEX/2008hyp.pdf" 34)
% (find-dvipage  "~/LATEX/2008hyp.dvi" 34)
% (find-LATEX            "2008hyp.tex" "dep-eq-from-simple-eq")
% (find-xpdfpage "~/LATEX/2008hyp.pdf" 35)
% (find-dvipage  "~/LATEX/2008hyp.dvi" 35)





% --------------------
% «dn-frob-and-pimp»  (to ".dn-frob-and-pimp")
% (subsec     "Frob and Pimp" "dn-frob-and-pimp")
\mysubsection {Frob and Pimp} {dn-frob-and-pimp}

\thinmtos

%D diagram frob=pres-imp-1
%D 2Dx         100            +45          +40               +45           
%D 2D  100 a,b;(c,d) ===> a;(b,(c,d))      a,b;e <========== a;e 
%D 2D        /\               -^            ||                ||        
%D 2D        ||            nat||Frob        ||                ||        
%D 2D        ||               v-            ||                ||        
%D 2D  +20   ||           a;((b,c),d)       \/                ||        
%D 2D  +10   ||               /\         a,b;(d|->e)_B        ||        
%D 2D        ||               ||            ^-                ||        
%D 2D        ||               ||         nat||PImp            ||        
%D 2D        ||               ||            -v                \/        
%D 2D  +20 a,b;c ========> a;(b,c)       a,b;(d|->e)_A <=== a;(d|->e) 
%D 2D
%D (( a,b;(c,d)  a;(b,(c,d))
%D               a;((b,c),d)
%D     a,b;c     a;(b,c)
%D    @ 0 @ 1 =>
%D    @ 0 @ 3 <=
%D    @ 1 @ 2 |-> sl_ .plabel= l \Frobnat @ 1 @ 2 <-| sl^ .plabel= r \Frob
%D    @ 2 @ 4 <=
%D    @ 3 @ 4 =>
%D ))
%D ((   a;e   a;(d|->e)  
%D          a,b;(d|->e)_A
%D    a,b;e a,b;(d|->e)_B
%D    @ 0 @ 1 =>
%D    @ 0 @ 3 => @ 1 @ 2 =>
%D    @ 2 @ 4 |-> sl_ .plabel= r \Pimpnat @ 2 @ 4 <-| sl^ .plabel= l \Pimp
%D    @ 3 @ 4 =>
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-1}$$

%D diagram frob=pres-imp-1-std-new
%D 2Dx         100            +45           +40              +45           
%D 2D  100 a,b;(c,d) ===> a;(b,(c,d))      a,b;e <========== a;e 
%D 2D        /\               -^            ||                ||        
%D 2D        ||            nat||Frob        ||                ||        
%D 2D        ||               v-            ||                ||        
%D 2D  +20   ||           a;((b,c),d)       \/                ||        
%D 2D  +10   ||               /\         a,b;(d|->e)_B        ||        
%D 2D        ||               ||            ^-                ||        
%D 2D        ||               ||         nat||PImp            ||        
%D 2D        ||               ||            -v                \/        
%D 2D  +20 a,b;c ========> a;(b,c)       a,b;(d|->e)_A <=== a;(d|->e) 
%D 2D
%D (( a,b;(c,d)   .tex= C×b^*\!D
%D    a;(b,(c,d)) .tex= Æ_b(C×b^*\!D)       
%D    a;((b,c),d) .tex= Æ_{b}C×D
%D    a,b;c       .tex= C
%D    a;(b,c)     .tex= Æ_{b}C
%D    @ 0 @ 1 |-> .plabel= a Æ_b
%D    @ 0 @ 3 <-| .plabel= l ×b^*\!D
%D    @ 1 @ 2 -> sl_ .plabel= l \Frobnat @ 1 @ 2 <- sl^ .plabel= r \Frob
%D    @ 2 @ 4 <-| .plabel= r ×D
%D    @ 3 @ 4 |-> .plabel= a Æ_b
%D ))
%D (( a,b;e         .tex= b^*\!E
%D    a;e           .tex= E
%D    a,b;(d|->e)_B .tex= b^*\!D{->}b^*\!E
%D    a,b;(d|->e)_A .tex= b^*(D{->}E)
%D    a;(d|->e)     .tex= D{->}E 
%D    @ 0 @ 1 <-| .plabel= a b^*
%D    @ 0 @ 2 |-> .plabel= l b^*\!D{->}
%D    @ 1 @ 4 |-> .plabel= r D{->}
%D    @ 3 @ 4 <-| .plabel= r b^*
%D    @ 2 @ 3 <- sl_ .plabel= l \Pimpnat @ 2 @ 3 -> sl^ .plabel= r \Pimp
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-1-std-new}$$

%D diagram frob=pres-imp-1-logical-short
%D 2Dx         100            +45           +40              +45           
%D 2D  100 a,b;(c,d) ===> a;(b,(c,d))      a,b;e <========== a;e 
%D 2D        /\               -^            ||                ||        
%D 2D        ||            nat||Frob        ||                ||        
%D 2D        ||               v-            ||                ||        
%D 2D  +20   ||           a;((b,c),d)       \/                ||        
%D 2D  +10   ||               /\         a,b;(d|->e)_B        ||        
%D 2D        ||               ||            ^-                ||        
%D 2D        ||               ||         nat||PImp            ||        
%D 2D        ||               ||            -v                \/        
%D 2D  +20 a,b;c ========> a;(b,c)       a,b;(d|->e)_A <=== a;(d|->e) 
%D 2D
%D (( a,b;(c,d)   .tex= P´Q
%D    a;(b,(c,d)) .tex= Îb.(P´Q)       
%D    a;((b,c),d) .tex= (Îb.P)´Q
%D    a,b;c       .tex= P
%D    a;(b,c)     .tex= Îb.P
%D    @ 0 @ 1 |-> .plabel= a Æ_
%D    @ 0 @ 3 <-| .plabel= l ×b^*\!D
%D    @ 1 @ 2 -> sl_ .plabel= l \Frobnat @ 1 @ 2 <- sl^ .plabel= r \Frob
%D    @ 2 @ 4 <-| .plabel= r ×D
%D    @ 3 @ 4 |-> .plabel= a Æ_
%D ))
%D (( a,b;e         .tex= R
%D    a;e           .tex= R
%D    a,b;(d|->e)_B .tex= Q¶R
%D    a,b;(d|->e)_A .tex= Q¶R
%D    a;(d|->e)     .tex= Q¶R 
%D    @ 0 @ 1 <-| .plabel= a ^*
%D    @ 0 @ 2 |-> .plabel= l b^*\!D{->}
%D    @ 1 @ 4 |-> .plabel= r D{->}
%D    @ 3 @ 4 <-| .plabel= r ^*
%D    @ 2 @ 3 <- sl_ .plabel= l \Pimpnat @ 2 @ 3 -> sl^ .plabel= r \Pimp
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-1-logical-short}$$

%D diagram frob=pres-imp-1-semi-logical
%D 2Dx         100            +45           +40              +45           
%D 2D  100 a,b;(c,d) ===> a;(b,(c,d))      a,b;e <========== a;e 
%D 2D        /\               -^            ||                ||        
%D 2D        ||            nat||Frob        ||                ||        
%D 2D        ||               v-            ||                ||        
%D 2D  +20   ||           a;((b,c),d)       \/                ||        
%D 2D  +10   ||               /\         a,b;(d|->e)_B        ||        
%D 2D        ||               ||            ^-                ||        
%D 2D        ||               ||         nat||PImp            ||        
%D 2D        ||               ||            -v                \/        
%D 2D  +20 a,b;c ========> a;(b,c)       a,b;(d|->e)_A <=== a;(d|->e) 
%D 2D
%D (( a,b;(c,d)   .tex= P´f^*Q
%D    a;(b,(c,d)) .tex= Î_f(P´f^*Q)       
%D    a;((b,c),d) .tex= (Î_fP)´Q
%D    a,b;c       .tex= P
%D    a;(b,c)     .tex= Î_fP
%D    @ 0 @ 1 |-> .plabel= a Æ_f
%D    @ 0 @ 3 <-| .plabel= l ´\,f^*Q
%D    @ 1 @ 2 -> sl_ .plabel= l \Frobnat @ 1 @ 2 <- sl^ .plabel= r \Frob
%D    @ 2 @ 4 <-| .plabel= r ´Q
%D    @ 3 @ 4 |-> .plabel= a Æ_f
%D ))
%D (( a,b;e         .tex= f^*R
%D    a;e           .tex= R
%D    a,b;(d|->e)_B .tex= f^*Q¶f^*R
%D    a,b;(d|->e)_A .tex= f^*(Q¶R)
%D    a;(d|->e)     .tex= Q¶R
%D    @ 0 @ 1 <-| .plabel= a f^*
%D    @ 0 @ 2 |-> .plabel= l f^*Q\,¶
%D    @ 1 @ 4 |-> .plabel= r Q¶
%D    @ 3 @ 4 <-| .plabel= a f^*
%D    @ 2 @ 3 <- sl_ .plabel= l \Pimpnat @ 2 @ 3 -> sl^ .plabel= r \Pimp
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-1-semi-logical}$$


%D diagram frob=pres-imp-2-semil
%D 2Dx          100                    +80
%D 2D                        Æ^b
%D 2D  100    a,b;(c,d)|-e |-----> a;(b,(c,d))|-e
%D 2D           -^         <-----|      -^
%D 2D           ||           Æ^#     nat||Frob
%D 2D        Cur||Uncur                 v-                
%D 2D  +20      ||                 a;((b,c),d)|-e
%D 2D           v-                      -^                 
%D 2D  +20  a,b;c|-(d|->e)_B            ||                                     
%D 2D           -^                   Cur||Uncur
%D 2D        nat||PImp        Æ^b       ||
%D 2D           v-           |--->      v-
%D 2D  +20  a,b;c|-(d|->e)_A <---| a;(b,c)|-(d|->e)
%D 2D                         Æ^#  
%D 2D
%D 2D  +20      A -------------------> B
%D 2D
%D (( a,b;(c,d)|-e     .tex= a,b;P´f^*Q|-f^*R      .tex= P´f^*Q|-f^*R     
%D    a;(b,(c,d))|-e   .tex=   a;Î_f(P´f^*Q)|-R    .tex= Î_f(P´f^*Q)|-R   
%D    a;((b,c),d)|-e   .tex= a,b;Î_fP´Q|-R?        .tex= Î_fP´Q|-R?       
%D    a,b;c|-(d|->e)_B .tex= a,b;P|-f^*Q¶f^*R      .tex= P|-f^*Q¶f^*R     
%D    a,b;c|-(d|->e)_A .tex= a,b;P|-f^*(Q¶R)       .tex= P|-f^*(Q¶R)      
%D    a;(b,c)|-(d|->e) .tex= a;Î_fP|-Q¶R           .tex= Î_fP|-Q¶R          
%D    @ 0 @ 1 |-> sl^ .plabel= a Æ^\flat   @ 0 @ 1 <-| sl_ .plabel= b Æ^\sharp
%D    @ 0 @ 3 <-| sl_ .plabel= l \Uncur    @ 0 @ 3 |-> sl^ .plabel= r \Cur
%D    @ 1 @ 2  -> sl_ .plabel= l \Frob;    @ 1 @ 2 <-  sl^ .plabel= r \Frobnat;
%D    @ 2 @ 5 <-| sl_ .plabel= l \Uncur    @ 2 @ 5 |-> sl^ .plabel= r \Cur
%D    @ 3 @ 4  -> sl_ .plabel= l ;\Pimpnat @ 3 @ 4 <-  sl^ .plabel= r ;\Pimp
%D    @ 4 @ 5 |-> sl^ .plabel= a Æ^\flat   @ 4 @ 5 <-| sl_ .plabel= b Æ^\sharp
%D ))
%D (( A B -> .plabel= a f
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-2-semil}$$

% \newpage

%D diagram frob=pres-imp-2
%D 2Dx          100                    +65
%D 2D                        Æ^b
%D 2D  100    a,b;(c,d)|-e |-----> a;(b,(c,d))|-e
%D 2D           -^         <-----|      -^
%D 2D           ||           Æ^#     nat||Frob
%D 2D        Cur||Uncur                 v-                
%D 2D  +20      ||                 a;((b,c),d)|-e
%D 2D           v-                      -^                 
%D 2D  +20  a,b;c|-(d|->e)_B            ||                                     
%D 2D           -^                   Cur||Uncur
%D 2D        nat||PImp        Æ^b       ||
%D 2D           v-           |--->      v-
%D 2D  +20  a,b;c|-(d|->e)_A <---| a;(b,c)|-(d|->e)
%D 2D                         Æ^#  
%D 2D
%D (( a,b;(c,d)|-e     a;(b,(c,d))|-e
%D                     a;((b,c),d)|-e
%D    a,b;c|-(d|->e)_B
%D    a,b;c|-(d|->e)_A a;(b,c)|-(d|->e)
%D    @ 0 @ 1 |-> sl^ .plabel= a Æ^\flat   @ 0 @ 1 <-| sl_ .plabel= b Æ^\sharp
%D    @ 0 @ 3 <-| sl_ .plabel= l \Uncur    @ 0 @ 3 |-> sl^ .plabel= r \Cur
%D    @ 1 @ 2 |-> sl_ .plabel= l \Frob;    @ 1 @ 2 <-| sl^ .plabel= r \Frobnat;
%D    @ 2 @ 5 <-| sl_ .plabel= l \Uncur    @ 2 @ 5 |-> sl^ .plabel= r \Cur
%D    @ 3 @ 4 |-> sl_ .plabel= l \Pimpnat  @ 3 @ 4 <-| sl^ .plabel= r \Pimp
%D    @ 4 @ 5 |-> sl^ .plabel= a Æ^\flat   @ 4 @ 5 <-| sl_ .plabel= b Æ^\sharp
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-2}$$

% \newpage

Let
$$\begin{array}{rcl}
  A &\equiv& \E[a],   \\
  B &\equiv& \E[a,b], \\
  b &\equiv& a,b \mto b, \\
  C &\equiv& \O[a,b;c], \\
  D &\equiv& \O[a;d], \\
  E &\equiv& \O[a;e]. \\
  \end{array}
$$

Then:
%
%D diagram frob=pres-imp-1-std
%D 2Dx         100            +40         +40          +40           
%D 2D  100 a;((b,c),d) <==== a;(b,c)     a;e ======> a;(d|->e)   
%D 2D          ^-              /\         ||           ||        
%D 2D       nat||Frob          ||         ||           ||        
%D 2D          -v              ||         ||           ||        
%D 2D  +20 a;(b,(c,d))         ||         ||           \/        
%D 2D  +10     /\              ||         ||        a,b;(d|->e)_A
%D 2D          ||              ||         ||           -^        
%D 2D          ||              ||         ||        nat||PImp    
%D 2D          ||              ||         \/           v-        
%D 2D  +20 a,b;(c,d) <====== a,b;c       a,b;e ===> a,b;(d|->e)_B
%D 2D
%D (( a;((b,c),d) .tex= Æ_{b}C×D    a;(b,c) .tex= Æ_{b}C
%D    a;(b,(c,d)) .tex= Æ_b(C×b^*\!D)       
%D     a,b;(c,d)  .tex= C×b^*\!D       a,b;c  .tex= C
%D    @ 0 @ 1 <-| .plabel= a ×D
%D    @ 0 @ 2 <- sl_ .plabel= l \Frobnat @ 0 @ 2 -> sl^ .plabel= r \Frob
%D    @ 2 @ 3 <-| .plabel= l Æ_b   @ 1 @ 4 <-| .plabel= r Æ_b
%D    @ 3 @ 4 <-| .plabel= a ×b^*\!D 
%D ))
%D ((   a;e .tex= E         a;(d|->e)   .tex= D{->}E 
%D                        a,b;(d|->e)_A .tex= b^*(D{->}E)
%D    a,b;e .tex= b^*\!E  a,b;(d|->e)_B .tex= b^*\!D{->}b^*\!E
%D    @ 0 @ 1 |-> .plabel= a D{->}
%D    @ 0 @ 3 |-> .plabel= l b^*  @ 1 @ 2 |-> .plabel= r b^*
%D    @ 2 @ 4 -> sl_ .plabel= l \Pimpnat @ 2 @ 4 <- sl^ .plabel= r \Pimp
%D    @ 3 @ 4 |-> .plabel= b b^*\!D{->}
%D ))
%D ((
%D
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-1-std}$$

%D diagram frob=pres-imp-2-std
%D 2Dx          100                    +75
%D 2D                      cur^b                    
%D 2D  100 a;((b,c),d)|-e <----->| a;(b,c)|-(d|->e) 
%D 2D            -^       |----->       -^
%D 2D         nat||Frob    cur^#        ||           
%D 2D            v-                  Æ^#||Æ^b           
%D 2D  +20 a;(b,(c,d))|-e               ||
%D 2D           -^                      v-            
%D 2D  +20      ||                  a,b;c|-(d|->e)_A                           
%D 2D        Æ^b||Æ^#                   -^
%D 2D           ||          cur^b    nat||PImp                 
%D 2D           v-       <--------|     v-                      
%D 2D  +20  a,b;(c,d)|-e |--------> a,b;c|-(d|->e)_B                 
%D 2D                       cur^#
%D 2D
%D (( a;((b,c),d)|-e .tex= ((Æ_{b}C×D)->E)     a;(b,c)|-(d|->e) .tex= (Æ_{b}C->(D{->}E))
%D    a;(b,(c,d))|-e .tex= (Æ_b(C×b^*\!D)->E)
%D                                             a,b;c|-(d|->e)_A .tex= (C->b^*(D{->}E))
%D     a,b;(c,d)|-e  .tex= ((C×b^*\!D)->b^*E)  a,b;c|-(d|->e)_B .tex= (C->(b^*\!D{->}b^*\!E))
%D    @ 0 @ 1 <- sl^ .plabel= a \Uncur    @ 0 @ 1 -> sl_ .plabel= b \Cur
%D    @ 0 @ 2 -> sl_ .plabel= l \Frobnat; @ 0 @ 2 <- sl^ .plabel= r \Frob;
%D    @ 1 @ 3 -> sl_ .plabel= l Æ^\sharp  @ 1 @ 3 <- sl^ .plabel= r Æ^\flat
%D    @ 2 @ 4 -> sl_ .plabel= l Æ^\sharp  @ 2 @ 4 <- sl^ .plabel= r Æ^\flat
%D    @ 3 @ 5 -> sl_ .plabel= l ;\Pimpnat @ 3 @ 5 <- sl^ .plabel= r ;\Pimp
%D    @ 4 @ 5 <- sl^ .plabel= a \Uncur    @ 4 @ 5 -> sl_ .plabel= b \Cur
%D ))
%D enddiagram
%D
$$\diag{frob=pres-imp-2-std}$$

  
  





% --------------------
% «dn-arbitrary-cobs»  (to ".dn-arbitrary-cobs")
% (subsec     "Adjoints to Arbitrary Changes of Base" "dn-arbitrary-cobs")
\mysubsection {Adjoints to Arbitrary Changes of Base} {dn-arbitrary-cobs}


% --------------------
% «dn-lawvere-70-eq»  (to ".dn-lawvere-70-eq")
% (subsec     "Equality" "dn-lawvere-70-eq")
\mysubsection {Equality} {dn-lawvere-70-eq}

{\myttchars
% \footnotesize
\begin{verbatim}
(find-lawvere70page  6 "Substitutivity of equality")
\end{verbatim}
}

% (find-kopkadaly4page (+ 12 595) "\\textsc")

{\sl \textsc{Proposition (substitutivity of equality).} In any eed in
  which, for every term $f:X \to Y$ and any two attributes $\aa$,
  $\psi$ of type $Y$, the canonical deduction
%
$$f·(\aa \funto \psi) \to f·\aa \funto f·\psi$$
%
is an isomorphism, one also has, for any attribute $\psi$ of type $X$,
a canonical deduction
%
$$\Th_X \to \pi_1·\psi \funto \pi_2·\psi$$
%
over $X×X$.}

\msk

The first canonical deduction that he mentions is my derived rule
$\Pimpnat$:
%:
%:
%:       f  \aa  \psi
%:  ============================\Pimpnat
%:  f·(\aa=>\psi)->f·\aa=>f·\psi
%:
%:      ^law70-pimpnat-1
%:                                                   \aa   \psi
%:                                                   ----------
%:                                                    \aa=>\psi
%:                                               --------------------\id
%:                     \aa  \psi                 \aa=>\psi->\aa=>\psi
%:                     ---------                 --------------------\Uncur
%:       f     \aa     \aa=>\psi                 \aa´\aa=>\psi->\psi
%:  ---------------------------------\Pand     -------------------------(f·)_1
%:  f·\aa´f·(\aa=>\psi)->f·(\aa´\aa=>\psi)     f·(\aa´\aa=>\psi)->f·\psi
%:    ------------------------------------------------------------------\Cur
%:    f·\aa´f·(\aa=>\psi)->f·\psi
%:    ----------------------------\Cur
%:    f·(\aa=>\psi)->f·\aa=>f·\psi
%:
%:    ^law70-pimpnat-2
%:
$$\ded{law70-pimpnat-1}$$
which expands to:
$$\ded{law70-pimpnat-2}$$

The second deduction is this:
%:
%:
%:      \phi
%:  ==============
%:  \phi´1_X->\phi
%:  ---------------\Cur
%:  1_X->\phi=>\phi
%:  ----------------------\iso
%:  1_X->\id·\phi=>\id·\phi
%:  ------------------------\ren
%:  1_X->(_1)·\phi=>(_2)·\phi              _1·\psi   _2·\psi
%:  -------------------------------\iso    --------------------------------------------------\Pimp
%:  1_X->·(_1·\psi)=>·(_2·\psi)        ·(_1·\psi)=>·(_2·\psi)->·(_1·\psi=>_2·\psi)
%:  -----------------------------------------------------------------------------------------;
%:  1_X->·(_1·\psi=>_2·\psi)
%:  -------------------------------\Eq^\flat
%:  1_XÆ(X)->_1·\psi=>_2·\psi
%:  -----------------------------\ren
%:  \Th_X->_1·\psi=>_2·\psi
%:
%:  ^law70-substeq1
%:
%:
$$\ded{law70-substeq1}$$

I just realized that I have never defined the ``iso'' rules... an
example:
%:
%:                                            \aa  \phi  \psi
%:                                            ===============
%:   \aa<->\aa'  \phi<->\phi'  \psi<->\psi'   \aa´\phi=>\psi
%:   -------------------------------------------------------\iso
%:           (\aa´\phi=>\psi)<->(\aa'´\phi'=>\psi')
%:
%:           ^iso-example
%:
$$\ded{iso-example}$$


% --------------------
% «notes-and-further»  (to ".notes-and-further")
% (chap   "Notes and Further Reading" "notes-and-further")
\mychapter {Notes and Further Reading} {notes-and-further}

I've learned hyperdoctrines from \cite{SeelyPLC}, \cite{SeelyBeck},
\cite{Jacobs}, and \cite{StreicherBenabou}, and I found the subject
very hard. The ideas from this paper can be used --- I hope! --- to
make it a bit simpler: we've seen how to split the theory in two
parts, and how to start by the syntactical part; and we can draw
diagrams with the same structure as the ones in these notes but using
the notations of other texts, and then we can compare the diagrams in
different notations and use them as dictionaries between the different
languages.

[To do: dictionaries for the papers and books above, and for
  \cite{LawvereAdjFo} and \cite{LawvereEqHyp}. The most important
  parts are the diagrams for the structure in $\bbB$ and $\bbE$ and
  for the change-of-base functors and their adjoints --- the diagrams
  for the preservations, BCCs and Frobenius don't really need to be
  drawn, as they can be reconstructed from the others; we only need
  the show the notation for the arrows in them that are required to be
  isos.]

[I have the impression that there are very good accounts of fibrations
  in \cite{TaylorPhDThesis} and \cite{Elephant1}, but I haven't read
  them with enough attention yet.]

\msk

[I've learned monads from \cite{CWM}, \cite{BarrWells}, \cite{Schalk},
  \cite{BeckPhDThesis} and \cite{Awodey}; compare their notations. To
  do, also: create a comparison diagram for comonads (easy), discuss
  the case of building $R[x]$ from $R$ when $R$ is a ring (good
  references: \cite{LambekScott}, \cite{Awodey}). Try to find a
  proto-proof for Lambek's theorem (that says that an initial algebra
  in an Eilenberg-Moore category is an iso).]

[A medium-term goal: finish the downcasing of differential categories,
  as presented in \cite{SeelyDiff}. I have crappy ascii-art
  renderizations of some of the downcased diagrams here:
  \url{http://angg.twu.net/2007diffcats.html} (but it may contain
  errors). I don't understand enough of
  \cite{SeelyCartDiff} yet.]

[I have a very nice downcasing of the best part of this: \cite{Kock77}
  --- I presented it in seminars at UFF, but I'd look to clean it up
  (I have better notations now), and I lost the source code for my
  diagrams... (what is the URL of the PDF with the slides?)]

[This looks extremely interesting: \cite{KellyLack}, ``On
  Property-Like Structures'' --- but its ideas are far above my head
  now. It will be better to try to read it when I have more contact
  with grown-up categorists.]

[This looks extremely interesting too: section D1.4, ``Syntactic
  categories'', of \cite{Elephant2}.]

[Point to several parts of \cite{Kromer} where he discusses having
  vs.\ not having elements; my `$a \mto b$' notation is like the
  ``internal view'' of morphisms that appears in [LawvereSchanuelCM],
  p.13 (the ``internal diagram of a set''), and it's like a mix
  between the usual `$x \mto f(x)$' and the `$y=y(x)$' notations.]

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






% (chap   "Abstract" "abstract")
% (chap   "Introduction" "introduction")
% (sec      "There Are no Theorems in This Paper" "no-theorems")
% (chap   "The syntactical world" "syntactical-world")
% (sec      "Categories" "proto-cats")
% (sec      "Functors" "proto-functors")
% (sec      "Natural Transformations" "proto-NTs")
% (sec      "Isos" "proto-isos")
% (sec      "Epis and Monics" "proto-epis-and-monics")
% (sec      "Adjunctions" "proto-adjunctions")
% (sec      "Monads" "proto-monads")
% (subsec     "The Kleisli Category of a Monad" "proto-kleisli")
% (subsec     "The Eilenberg-Moore Category of a Monad" "proto-EM")
% (subsec     "The Comparison Theorem" "proto-comparison")
% (subsec     "Monadicity" "proto-monadicity")
% (subsec     "Beck's Lemma" "proto-beck")
% (sec      "Universals" "proto-universals")
% (sec      "The Yoneda Lemma" "proto-yoneda")
% (sec      "Products" "proto-products")
% (sec      "To Deserve a Name" "to-deserve-a-name")
% (subsec     "Mad Names" "mad-names")
% (sec      "Terminals" "proto-terminals")
% (sec      "Exponentials" "proto-exponentials")
% (sec      "Cartesian Categories" "proto-cart-cats")
% (sec      "Cartesian Closed Categories" "proto-CCCs")
% (sec      "Indexed Categories, Fibrations, Hyperdoctrines" "proto-ind-fib-hyp")
% (subsec     "Subobjects" "proto-subobjects")
% (subsec     "Indexed Categories" "proto-indexed-cats")
% (subsec     "Cartesian Morphisms" "proto-cart-morphs")
% (subsec     "Cleavages" "proto-cleavages")
% (subsec     "Change-of-Base Functors" "proto-change-of-base")
% (subsec     "The Logical Structure in Each Fiber" "proto-fibers")
% (subsec     "Preservations" "proto-preservations")
% (subsec     "Adjoints to Change-of-Base Functors" "proto-adjs-to-cobs")
% (chap   "Downcasing Types" "dn-intro")
% (sec      "Simple Proofs" "dn-simple")
% (sec      "Functors" "dn-functors")
% (sec      "Categories" "dn-cats")
% (sec      "Pseudopoints" "dn-pseudopoints")
% (sec      "Natural Transformations" "dn-NTs")
% (sec      "Contexts" "dn-contexts")
% (subsec     "Single Hypothesis: CCs" "dn-contexts-single")
% (subsec     "Context Morphisms" "dn-context-morphs")
% (subsec     "Several Hypotheses: CCs (With a Trick)" "dn-contexts-multi")
% (subsec     "Discharges: CCCs" "dn-discharges")
% (sec      "Adjunctions" "dn-adjunctions")
% (sec      "Subsets" "dn-subsets")
% (sec      "Subobjects" "dn-subobjects")
% (sec      "Projection Functors" "dn-proj-functors")
% (sec      "Some Uppercasings" "dn-uc-intro")
% (subsec     "A Semi-Logical Notation" "dn-uc-semi-logical")
% (subsec     "Lawvere" "dn-uc-lawvere")
% (subsec     "Seely" "dn-uc-seely")
% (subsec     "Jacobs" "dn-uc-jacobs")
% (subsec     "Maclane" "dn-uc-maclane")
% (subsec     "Awodey" "dn-uc-awodey")
% (sec      "Change-of-base" "dn-change-of-base")
% (sec      "Preservations" "dn-preservations")
% (sec      "Display Maps" "dn-display-maps")
% (sec      "Quantifiers" "dn-quantifiers")
% (sec      "Equality" "dn-equality")
% (sec      "Beck-Chevalley for `Exists'" "dn-bcc-for-exists")
% (sec      "Beck-Chevalley for `For All'" "dn-bcc-for-forall")
% (sec      "Beck-Chevalley for Equality" "dn-bcc-for-equality")
% (sec      "Frobenius for `Exists'" "dn-frob-for-exists")
% (sec      "Frobenius for Equality" "dn-frob-for-equality")
% (sec      "Hyperdoctrines" "dn-hyperdoctrines")
% (sec      "Three Theorems from Lawvere's ``Hyperdoctrines'' Paper" "dn-lawvere-70")
% (subsec     "Frob and Pimp" "dn-frob-and-pimp")
% (subsec     "Adjoints to Arbitrary Changes of Base" "dn-arbitrary-cobs")
% (subsec     "Equality" "dn-lawvere-70-eq")
% (chap   "Notes and Further Reading" "notes-and-further")









%:                                                a,b;c ======> a;(b,c)
%:                                                  -              -   
%:                         a|-D  a,b;c|-d           |              |     a;(b,c)|-d
%:                         --------------Æ^\flat    |              |     ----------Æ^\sharp
%:                           a;(b,c)|-d             |              |     a,b;c|-d
%:                                                  |              |   
%:                           ^Si-flat-0             |              |     ^Si-sharp-0
%:                                                  |              |   
%:                 a|-D_a  a,b;c|-d_{abc}           |              |     a;p|-d_{ap}                        
%:                 ----------------------Æ^\flat    |   Æ^\flat    |     ---------------------------Æ^\sharp
%:             a;p|-d_{abc}[b,c:=\unp{p}]           |    |--->     |     a,b;c|-d_{ap}[p:=\ang{b,c}]        
%:                                                  |    <---|     |   
%:                           ^Si-flat-1             |   Æ^\sharp   |     ^Si-sharp-1
%:                                                  |              |   
%:   (beta)        a|-D_a  a,b;c|-d_{abc}           |              |     a;p|-d_{ap}                          (eta)
%:             --------------------------Æ^\flat    |              |     ---------------------------Æ^\sharp
%:             a;p|-d_{abc}[b,c:=\unp{p}]           |              |     a,b;c|-d_{ap}[p:=\ang{b,c}]
%:  ------------------------------------Æ^\sharp    |              |     ---------------------------------------Æ^\flat
%:  a,b;c|-d_{abc}[b,c:=\unp{p}][p:=\ang{b,c}]      |              |     a;p|-d_{ap}[p:=\ang{b,c}][b,c:=\unp{p}]
%:  ----------------------------------------\ren    |              |     ---------------------------------------\ren
%:  a,b;c|-d_{abc}[b,c:=\unp{\ang{b,c}}]            |              |     a;p|-d_{ap}[p:=\ang{\unp{p}}]
%:                                                  v              v   
%:                           ^Si-beta               v              v     ^Si-eta
%:                                                  v              v   
%:                                                a,b;d <======== a;d  
%:                                                  -              -   
%:                        a|-D  a,b;d|-e            |              |     a;d|-(b|->e)
%:                        --------------å^\sharp    |              |     ------------å^\flat
%:                         a;d|-(b|->e)             |              |     a,b;d|-e
%:                                                  |              |   
%:                          ^Pi-sharp0              |              |     ^Pi-flat0
%:                                                  |              |   
%:                a|-D_a  a,b;d|-e_{abd}            |   å^\flat    |     a;d|-f_{ad}          
%:                ----------------------å^\sharp    |    <---|     |     --------------å^\flat
%:                    a;d|-ðb.e_{abd}               |    |--->     |     a,b;d|-f_{ad}b       
%:                                                  |   å^\sharp   |   
%:                          ^Pi-sharp1              |              |     ^Pi-flat1
%:                                                  |              |   
%:                a|-D_a  a,b;d|-e_{abd}            |              |     a;d|-f_{ad}
%:                ----------------------å^\sharp    |              |     --------------å^\flat
%:       (beta)        a;d|-ðb.e_{abd}              |              |     a,b;d|-f_{ad}b                (eta)
%:                  --------------------å^\flat     |              |     -----------------å^\sharp
%:                  a,b;d|-(ðb.e_{abd})b            |              |     a;d|-ðb.(f_{ad}b)
%:                                                  v              v    
%:                          ^Pi-beta                v              v     ^Pi-eta
%:                                                  v              v    
%:                                                a,b;e =====> a;(b|->e)
%:  
%:  
%:  
%:  
$$\ded{Si-flat-0} \qquad \ded{Si-sharp-0}$$
$$\ded{Si-flat-1} \qquad \ded{Si-sharp-1}$$
$$\ded{Si-beta} \qquad \ded{Si-eta}$$
\bsk
$$\ded{Pi-sharp0} \qquad \ded{Pi-flat0}$$
$$\ded{Pi-sharp1} \qquad \ded{Pi-flat1}$$
$$\ded{Pi-beta} \qquad \ded{Pi-eta}$$

% (find-LATEX            "2008hyp.tex" "adj-functors-as-seq-rules")
% (find-xpdfpage "~/LATEX/2008hyp.pdf" 24)
% (find-dvipage  "~/LATEX/2008hyp.dvi" 24)
% (find-LATEX            "2008hyp.tex" "adj-maps-as-seq-rules")
% (find-xpdfpage "~/LATEX/2008hyp.pdf" 26)
% (find-dvipage  "~/LATEX/2008hyp.dvi" 26)

%D diagram adj-exfa-flsh
%D 2Dx     100        +30
%D 2D  100 Pab ===> Îb.Pab
%D 2D	    -   |b>   -
%D 2D	    |         |
%D 2D	    v   <#|   v
%D 2D  +30 Qa <====== Qa{}
%D 2D	    -   <b|   -
%D 2D	    |         |
%D 2D	    v   |#>   v
%D 2D  +30 Rab ===> ýb.Rab
%D 2D
%D 2D  +15 a,b |----> a
%D 2D
%D (( Pab Îb.Pab   Qa Qa{}   Rab ýb.Rab   a,b a
%D    @ 0 @ 1 =>
%D    @ 0 @ 2 |-> @ 1 @ 3 |->
%D    @ 2 @ 3 <=
%D    @ 2 @ 4 |-> @ 3 @ 5 |->
%D    @ 4 @ 5 =>
%D    @ 0 @ 3 harrownodes nil 20 nil |-> sl^ .plabel= a \flat
%D    @ 0 @ 3 harrownodes nil 20 nil <-| sl_ .plabel= b \sharp
%D    @ 2 @ 5 harrownodes nil 20 nil <-| sl^ .plabel= a \flat
%D    @ 2 @ 5 harrownodes nil 20 nil |-> sl_ .plabel= b \sharp
%D    @ 6 @ 7 |->
%D ))
%D enddiagram

$$\diag{adj-exfa-flsh}$$


% \end{document}





% (find-kopkadaly4page (+ 12 644) "title page")
% (find-kopkadaly4text)
% (find-kopkadaly4page (+ 12  52) "3.3.1   Title page")
% (find-kopkadaly4text            "3.3.1   Title page")




Missing: in the fat presentation for hyps we have the three
preservations, two generic BCCs and generic frob;



% (find-es "tex" "shortvrb")
% (find-LATEX "2008filterp.tex")



% (find-LATEX "2009-planodetrabalho.tex")
% (find-LATEX "catsem.bib" "test")
% (find-LATEX "filters.bib")
% (find-zsh "makebbl 2009-planodetrabalho.bbl catsem,filters")
% (find-es "tex" "makebbl")
% \bibliographystyle{alpha}
\bibliography{catsem,filters}
\bibliographystyle{alpha}

\printindex




%

\end{document}










% Local Variables:
% coding:           raw-text-unix
% ee-anchor-format: "«%s»"
% End:
