% (find-angg "LATEX/2017planar-has.tex")
% (defun c () (interactive) (find-LATEXsh "lualatex -record 2017planar-has.tex"))
% (defun d () (interactive) (find-xpdfpage "~/LATEX/2017planar-has.pdf"))
% (defun b () (interactive) (find-zsh "bibtex 2017planar-has; makeindex 2017planar-has"))
% (defun e () (interactive) (find-LATEX "2017planar-has.tex"))
% (defun u () (interactive) (find-latex-upload-links "2017planar-has"))
% (find-xpdfpage "~/LATEX/2017planar-has.pdf")
% (find-sh0 "cp -v  ~/LATEX/2017planar-has.pdf /tmp/")
% (find-sh0 "cp -v  ~/LATEX/2017planar-has.pdf /tmp/pen/")
%   file:///home/edrx/LATEX/2017planar-has.pdf
%               file:///tmp/2017planar-has.pdf
%           file:///tmp/pen/2017planar-has.pdf
% http://angg.twu.net/LATEX/2017planar-has.pdf

% An improvised index with links to pages:
% (find-LATEXsh "grep phap 2017planar-has.tex")
% (phai)

% (defun geta (str) (string-match "«\\(.*\\)»" str) (match-string 1 str))
% (defun getb () (geta (ee-no-properties (buffer-substring (ee-bol) (ee-eol)))))
% (defun getc () (format "\n%% (phap 0 \"%s\")" (getb)))
% (defun getd () (interactive) (insert (getc)))
% (setq last-kbd-macro (kbd "C-e <<getd>>"))

% (find-LATEXfile "2017ebl-slides.tex" "defun geta ")

% «.picturedots»			(to "picturedots")
% «.title»				(to "title")
% «.introduction»			(to "introduction")
%
% «.positional»				(to "positional")
% «.ZDAGs»				(to "ZDAGs")
% «.LR-coords»				(to "LR-coords")
% «.ZHAs»				(to "ZHAs")
% «.two-conventions»			(to "two-conventions")
% «.prop-calc»				(to "prop-calc")
% «.prop-calc-ZHA»			(to "prop-calc-ZHA")
% «.HAs»				(to "HAs")
% «.implication-new»			(to "implication-new")
% «.implication-formally»		(to "implication-formally")
% «.logic-in-HAs»			(to "logic-in-HAs")
% «.derived-rules»			(to "derived-rules")
% «.topologies»				(to "topologies")
% «.topologies-on-ZSets»		(to "topologies-on-ZSets")
% «.topologies-as-partial-orders»	(to "topologies-as-partial-orders")
% «.where-do-ZHAs-come-from»		(to "where-do-ZHAs-come-from")
% «.2CGs»				(to "2CGs")
% «.topologies-on-2CGs»			(to "topologies-on-2CGs")
% «.converting-ZHAs-2CAGs»		(to "converting-ZHAs-2CAGs")
%
% «.piccs-and-slashings»		(to "piccs-and-slashings")
% «.slash-partitions»			(to "slash-partitions")
% «.slash-max»				(to "slash-max")
% «.cuts-stopping-midway»		(to "cuts-stopping-midway")
% «.slash-ops»				(to "slash-ops")
% «.slash-ops-property»			(to "slash-ops-property")
% «.slash-regions-and-ops»		(to "slash-regions-and-ops")
% «.J-ops-and-regions»			(to "J-ops-and-regions")
% «.no-Y-cuts-no-L-cuts»		(to "no-Y-cuts-no-L-cuts")
% «.J-ops-and-connectives»		(to "J-ops-and-connectives")
% «.J-cubes-as-partial-orders»		(to "J-cubes-as-partial-orders")
% «.valuations-induce-POs»		(to "valuations-induce-POs")
% «.comparing-partial-orders»		(to "comparing-partial-orders")
% «.lindenbaum-fragments»		(to "lindenbaum-fragments")
% «.polynomial-J-ops»			(to "polynomial-J-ops")
% «.algebra-of-piccs»			(to "algebra-of-piccs")
% «.algebra-of-J-ops»			(to "algebra-of-J-ops")
% «.slashings-are-poly»			(to "slashings-are-poly")
%
% «.question-marks»			(to "question-marks")
% «.propagation»			(to "propagation")
% «.relevant-points»			(to "relevant-points")
% «.rectangular-versions»		(to "rectangular-versions")
% «.extremities»			(to "extremities")
% «.J-and-coJ-in-three-steps»		(to "J-and-coJ-in-three-steps")
% «.sub-2CGs»				(to "sub-2CGs")
% «.J-ops-as-adjunctions»		(to "J-ops-as-adjunctions")
%
% «.bibliography»			(to "bibliography")
%
% «.children»				(to "children")
% «.comprehension»			(to "comprehension")


\documentclass[oneside]{article}
\usepackage[colorlinks]{hyperref} % (find-es "tex" "hyperref")
%\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pict2e}
\usepackage{color}                % (find-LATEX "edrx15.sty" "colors")
\usepackage{colorweb}             % (find-es "tex" "colorweb")
\usepackage{tikz}
\usepackage{proof}                % (find-dn6 "preamble6.lua" "preamble0")
\input diagxy                     % (find-dn6 "preamble6.lua" "preamble0")
%
\usepackage{edrx15}               % (find-angg "LATEX/edrx15.sty")
\input edrxaccents.tex            % (find-angg "LATEX/edrxaccents.tex")
\input edrxchars.tex              % (find-LATEX "edrxchars.tex")
\input edrxheadfoot.tex           % (find-dn4ex "edrxheadfoot.tex")
%\input edrxgac2.tex              % (find-LATEX "edrxgac2.tex")
%
\begin{document}

\catcode`\^^J=10
\directlua{dednat6dir = "dednat6/"}
\directlua{dofile(dednat6dir.."dednat6.lua")}
\directlua{texfile(tex.jobname)}
\directlua{verbose()}
\directlua{output(preamble1)}
\def\expr#1{\directlua{output(tostring(#1))}}
\def\eval#1{\directlua{#1}}
\def\pu{\directlua{pu()}}

\directlua{dofile "edrxtikz.lua"} % (find-LATEX "edrxtikz.lua")
\directlua{dofile "edrxpict.lua"} % (find-LATEX "edrxpict.lua")
%L V.__tostring = function (v) return format("(%.3f,%.3f)", v[1], v[2]) end


% «picturedots» (to ".picturedots")
% (find-LATEX "2016-2-GA-algebra.tex" "picturedots")
% (find-LATEX "2016-2-GA-algebra.tex" "comprehension-gab")
% (gaap 5)
%
\def\beginpicture(#1,#2)(#3,#4){\expr{beginpicture(v(#1,#2),v(#3,#4))}}
\def\pictaxes{\expr{pictaxes()}}
\def\pictdots#1{\expr{pictdots("#1")}}
\def\picturedotsa(#1,#2)(#3,#4)#5{%
  \vcenter{\hbox{%
  \beginpicture(#1,#2)(#3,#4)%
  \pictaxes%
  \pictdots{#5}%
  \end{picture}%
  }}%
}
\def\picturedots(#1,#2)(#3,#4)#5{%
  \vcenter{\hbox{%
  \beginpicture(#1,#2)(#3,#4)%
  %\pictaxes%
  \pictdots{#5}%
  \end{picture}%
  }}%
}

\def\sa{\rightsquigarrow}
\def\BPM{\mathsf{BPM}}
\def\WPM{\mathsf{WPM}}
\def\ZHAG{\mathsf{ZHAG}}

\def\catTwo{\mathbf{2}}
%\def\Pts{\mathcal{P}}
\def\calS{\mathcal{S}}
\def\calI{\mathcal{I}}
\def\calK{\mathcal{K}}
\def\calV{\mathcal{V}}

\def\und#1#2{\underbrace{#1}_{#2}}

\def\subst#1{\left[\begin{array}{rcl}#1\end{array}\right]}
\def\subst{\bsm}

% (find-LATEXfile "2015planar-has.tex" "\\def\\Mop")

\def\MP{\mathsf{MP}}

\def\J   {\mathsf{J}}
\def\Mo  {\mathsf{Mo}}
\def\Mop {\mathsf{Mop}}
\def\Sand{\mathsf{Sand}}
\def\ECa {\mathsf{EC}{\&}}
\def\ECv {\mathsf{EC}{∨}}
\def\ECS {\mathsf{ECS}}
\def\pdiag#1{\left(\diag{#1}\right)}
\def\ltor#1#2{#1\_{\to}\_#2}
\def\lotr#1#2{#1\_{\ot}\_#2}
\def\Int{{\operatorname{int}}}
\def\Int{{\operatorname{\mathsf{int}}}}
\def\coInt{{\operatorname{\mathsf{coint}}}}
%\def\Opens{{\mathcal{O}}}
%
\def\NoLcuts{\mathsf{No}λ\mathsf{cuts}}
\def\NoYcuts{\mathsf{NoYcuts}}
\def\astarcube{{\&}^*\mathsf{Cube}}
\def\ostarcube{{∨}^*\mathsf{Cube}}
\def\istarcube{{→}^*\mathsf{Cube}}
\def\acz{{\&}^*\mathsf{C}_0}
\def\ocz{{∨}^*\mathsf{C}_0}
\def\icz{{→}^*\mathsf{C}_0}
%
\def\astarcuben{{\&}^*\mathsf{Cube}_\mathsf{n}}
\def\ostarcuben{{∨}^*\mathsf{Cube}_\mathsf{n}}
\def\istarcuben{{→}^*\mathsf{Cube}_\mathsf{n}}
\def\astarcubev{{\&}^*\mathsf{Cube}_\mathsf{v}}
\def\ostarcubev{{∨}^*\mathsf{Cube}_\mathsf{v}}
\def\istarcubev{{→}^*\mathsf{Cube}_\mathsf{v}}
%
%\catcode`∧=13 \def∧{\mathop{\&}}

\def\biggest {\mathsf{biggest}}
\def\smallest{\mathsf{smallest}}
\def\Cuts    {\mathsf{Cuts}}

\def\myresizebox#1{%
  \noindent\hbox to \textwidth{\hss
    \resizebox{1.0\textwidth}{!}{#1}%
    \hss}
  }





%  _____ _ _   _      
% |_   _(_) |_| | ___ 
%   | | | | __| |/ _ \
%   | | | | |_| |  __/
%   |_| |_|\__|_|\___|
%                     
% (find-LATEX "idarct/idarct-preprint.tex")
% «title» (to ".title")

\title{Planar Heyting Algebras for Children}

\author{Eduardo Ochs}

\begin{abstract}
This paper shows a way to interpret (propositional) intuitionistic
logic {\sl visually} using finite Planar Heyting Algebras (``ZHAs''),
that are certain subsets of $\Z^2$. The ``for children'' of the title
means ``for people without mathematical maturity'', i.e., for people
who are not able to understand structures that are too abstract
straight away, they need particular cases first; everything in the
paper is constructive and easy to visualize using finite diagrams.

We also show the connection between ZHAs and the familiar semantics
for IPL where the truth-values are open sets in a finite topological
space $(P,\Opens(P))$, and we show how each closure operator $J:H→H$
on a ZHA $H⊆\Z^2$ corresponds to a) a way to ``slash'' $H$ using
diagonal cuts, and b) a choice of a subset $S⊆P$; $J$ can be recovered
from $S$ as a restriction map $\Opens(P)→\Opens(S)$ followed by a map
$\Opens(S)→\Opens(P)$ that reconstructs the missing information ``in
the biggest way possible''.

\end{abstract}

\maketitle




%  ___       _            _            _   _             
% |_ _|_ __ | |_ ___   __| |_   _  ___| |_(_) ___  _ __  
%  | || '_ \| __/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ 
%  | || | | | || (_) | (_| | |_| | (__| |_| | (_) | | | |
% |___|_| |_|\__\___/ \__,_|\__,_|\___|\__|_|\___/|_| |_|
%                                                        
% «introduction» (to ".introduction")
% (phap 1 "introduction")

This paper shows a way to interpret (propositional) intuitionistic
logic {\sl visually} (sec.\ref{prop-calc-ZHA}) using finite Planar
Heyting Algebras (``ZHAs'', sec.\ref{ZHAs}), that are certain subsets
of $\Z^2$. The ``for children'' of the title means ``for people
without mathematical maturity'' (sec.\ref{children}). 

In sections \ref{topologies}--\ref{converting-ZHAs-2CAGs} we show the
connection between ZHAs and the familiar semantics for IPL where the
truth-values are open sets in a topological space $(P,\Opens(P))$, and
in sections \ref{piccs-and-slashings}--\ref{slashings-are-poly} we
discuss how each closure operator on a ZHA $H⊆\Z^2$ corresponds to a
way to ``slash'' $H$ using diagonal cuts; in sections
\ref{question-marks}--\ref{J-ops-as-adjunctions} we show how each
closure operator correspond to a subset $S⊆P$, or rather to a
restriction map $\Opens(P)→\Opens(S)$ followed by a map
$\Opens(S)→\Opens(P)$ that reconstructs the missing information ``in
the biggest way possible''.


% The ``for children'' in the title has a precise, but somewhat
% unusual, meaning, that is explained in sec.\ref{children}.

% \bsk

%   ____ _     _ _     _                
%  / ___| |__ (_) | __| |_ __ ___ _ __  
% | |   | '_ \| | |/ _` | '__/ _ \ '_ \ 
% | |___| | | | | | (_| | | |  __/ | | |
%  \____|_| |_|_|_|\__,_|_|  \___|_| |_|
%                                       
% (phap 2 "children")
\section{Children}
\label  {children}

The ``children'' in the title of this paper means: ``people without
mathematical maturity''. ``Children'' in this sense are not able to
understand structures that are too abstract straight away, they need
particular cases first; and they also don't deal well with infinite
objects or with expressions like ``for every proposition $P(x)$'', or
even with {\sl theorems}...

{

In my experience what works best with ``children'' is to teach them
first that ``basic mathematical objects'' are things built from
numbers, sets, and lists --- like this (our first logic!):
%
\def\p#1{\phantom{#1}}
\def\CL{\mathsf{CL}}
\def\fo #1 #2 #3 {((#1,#2),#3)}
\def\ba #1 #2 #3 #4 {
  \foo 0 0 #1 , \\
  \foo 0 1 #2 , \\
  \foo 1 0 #3 , \\
  \foo 1 1 #4 \p, \\
}
\def\foc#1 #2 {(#1,#2)}
\def\co #1 #2 {
  \fooc 0 #1 ,\\
  \fooc 1 #2 \p,\\
}
\def\com {0,\\ 1\p,\\}
\def\cand{\ba 0 0 0 1 }
\def\cor {\ba 0 1 1 1 }
\def\cimp{\ba 1 1 0 1 }
\def\ciff{\ba 1 0 0 1 }
\def\cnot{\co 1 0 }
%
\def\foo#1 #2 #3 {((#1,#2),#3)}
\def\fooc #1 #2 {(#1,#2)}
%
$$\begin{array}{l}
  \CL = (Ω, ⊤, ⊥, ∧, ∨, →, ↔, ¬) = \\
  \psm{\csm{\com}, 1, 0, \csm{\cand}, \csm{\cor}, \csm{\cimp}, \csm{\ciff}, \csm{\cnot}} \\
  \end{array}\;,
$$
%
and then teach them how to calculate with functions, set
comprehension, quantification and $λ$-nota\-tion when the domains are
all finite; only after they acquire some practice, speed and intuition
about {\sl calculations} we can state some theorems as {\sl
  propositions} whose results can be calculated by brute force, and
then discuss why some of these propositions-theorems always yield
``true''.

}

\msk

Except for two last sections all the rest of this paper has been
written to be readable by ``children'' in the sense above, and huge
parts of it have been tested on ``real children'' of mainly two kinds:
a group of ``older children'', who are Computer Science students who
had already completed a course on Discrete Mathematics, and some
``little children'', who are friends of mine who are students of
Psychology or Social Sciences. The text has benefited enormously from
they feedback --- especially their puzzled looks at some points, that
made me modify my presentation and the exercises I was giving to them.
Those exercises are not included here, though, and neither the
rationale behind most style decisions.




% \end{document}


%  ____           _ _   _                   _ 
% |  _ \ ___  ___(_) |_(_) ___  _ __   __ _| |
% | |_) / _ \/ __| | __| |/ _ \| '_ \ / _` | |
% |  __/ (_) \__ \ | |_| | (_) | | | | (_| | |
% |_|   \___/|___/_|\__|_|\___/|_| |_|\__,_|_|
%                                             
% «positional» (to ".positional")
\section{Positional notations}
\label  {positional}
% Good (phap 1 "positional")

% (laq 2)
% (laq 3)
% (gaap 5)
% (to "picturedots")

\unitlength=8pt \def\closeddot{\circle*{0.4}}
\def\closeddot{\circle*{0.5}}

Definition: a {\sl ZSet} is a finite, non-empty subset of $\N^2$ that
touches both axes, i.e., that has a point of the form $(0,\_\_)$ and a
point of the form $(\_\_,0)$. We will often represent ZSets using a
bullet notation, with or without the axes and ticks. For example:
%
$$K =
  \csm{        & (1,3), &        \\
        (0,2), &        & (2,2), \\
               & (1,1), &        \\
               & (1,0)  &        \\
      }
  = \;\picturedotsa(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\;
  = \;\picturedots (0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\;
$$

We will use the ZSet above a lot in examples, so let's give it a short
name: $K$ (``kite'').

The condition of touching both axes is what lets us represent ZSets
unambiguously using just the bullets:
%
$$    \;\picturedotsa(0,0)(4,4){ 3,4 2,3 4,3 3,2 3,1 }\;
  \sa \;\picturedots (0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\;
  \sa \;\picturedotsa(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\;
  \quad =\!(
  \qquad
  \qquad
      \;\picturedotsa(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\;
  \sa \;\picturedots (0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\;
  \sa \;\picturedotsa(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\;
  \quad =)
$$

We can use a positional notation to represent functions {\sl from} a
ZSet. For example, if
%
$$\begin{array}{ccrcl}
  f &:&   K   &→& \N \\
    & & (x,y) &↦& x  \\
  \end{array}
$$
%
then
%
$$f =
  \csm{            & ((1,3),1), &            \\
        ((0,2),0), &            & ((2,2),2), \\
                   & ((1,1),1), &            \\
                   & ((1,0),1)  &            \\
      }
  = 
  \sm{    & 1 &   \\
        0 &   & 2 \\
          & 1 &   \\
          & 1 &   \\
      }
$$

We will sometimes use $λ$-notation to represent functions compactly.
For example:
%
$$λ(x,y){:}K.x =
  \csm{            & ((1,3),1), &            \\
        ((0,2),0), &            & ((2,2),2), \\
                   & ((1,1),1), &            \\
                   & ((1,0),1)  &            \\
      }
  = 
  \sm{    & 1 &   \\
        0 &   & 2 \\
          & 1 &   \\
          & 1 &   \\
      }
$$
%
$$λ(x,y){:}K.y =
  \csm{            & ((1,3),3), &            \\
        ((0,2),2), &            & ((2,2),2), \\
                   & ((1,1),1), &            \\
                   & ((1,0),0)  &            \\
      }
  = 
  \sm{    & 3 &   \\
        2 &   & 2 \\
          & 1 &   \\
          & 0 &   \\
      }
$$

The ``reading order'' on the points of a ZSet $S$ ``lists'' the points
of $S$ starting from the top and going from left to right in each
line. More precisely, if $S$ has $n$ points then
$r_S:S→\{1,\ldots,n\}$ is a bijection, and for example:
%
$$r_K = \sm{   & 1 &   \\
             2 &   & 3 \\
               & 4 &   \\
               & 5 &   \\
           }
$$

Subsets of a ZSet are represented with a notation with `$\bullet$'s
and `$\cdot$', and partial functions from a ZSet are represented with
`$\cdot$'s where they are not defined. For example:
%
$$\sm{   & • &   \\
       · &   & • \\
         & • &   \\
         & · &   \\
     }
  \qquad
  \sm{   & 1 &   \\
       · &   & 3 \\
         & 4 &   \\
         & · &   \\
     }
$$

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

The {\sl characteristic function} of a subset $S'$ of a ZSet $S$ is
the function $\chi_{S'}:S→\{0,1\}$ that returns 1 exactly on the
points of $S'$; for example, $\dagKite10110$ is the characteristic
function of $\dagKite•·••· ⊂ \dagKite•••••$. We will sometimes denote
subsets by their characteristic functions because this makes them
easier to ``pronounce'' by reading aloud their digits in the reading
order --- for example, $\dagKite10110$ is ``one-zero-one-one-zero''
(see sec.\ref{topologies-on-ZSets}).


%  _________    _    ____     
% |__  /  _ \  / \  / ___|___ 
%   / /| | | |/ _ \| |  _/ __|
%  / /_| |_| / ___ \ |_| \__ \
% /____|____/_/   \_\____|___/
%                             
% «ZDAGs» (to ".ZDAGs")
\section{ZDAGs}
\label  {ZDAGs}
% Good (phap 2 "ZDAGs")

We will sometimes use the bullet notation for a ZSet $S$ as a {\sl
  shorthand} for one of the two DAGs induced by $S$: one with its
arrows going up, the other one with them going down. For example:
sometimes
%
% (find-LATEX "2015planar-has.tex" "zhas-visually")
% (find-xpdfpage "~/LATEX/2015planar-has.pdf" 7)
%
%R local K =
%R 1/ o \
%R  |o o|
%R  | o |
%R  \ o /
%R K:tomp({def="Kmini", scale="4pt", meta="s"}):addbullets()             :output()
%R K:tomp({def="Kb", scale="8pt",  meta=nil}):addbullets()               :output()
%R K:tomp({def="KB", scale="20pt", meta=nil}):addbullets():addarrows(nil):output()
%R K:tomp({def="Kn", scale="20pt", meta=nil}):addxys    ():addarrows(nil):output()
%R -- mp:output()
%
\pu
$$%\pu
  \Kb \;\;\;\;\text{will stand for:}\;\;
  \KB =
  \Kn =
$$
$$
  \pmat{
    \csm{        & (1,3), &        \\
          (0,2), &        & (2,2), \\
                 & (1,1), &        \\
                 & (0,0) &        \\
        },
    \csm{ ((1,3),(0,2)), ((1,3),(2,2)), \\
          ((0,2),(1,1)), ((2,2),(1,1)), \\
                  ((1,1),(0,0))         \\            
        }
  }
$$

\msk

Let's formalize this.

Consider a game in which black and white pawns are placed on points of
$\Z^2$, and they can move like this:
%
%R local B, W = 2/    bp    \, 2/wp  wp  wp\
%R               |  swsose  |   |  nwnone  |
%R               \bp  bp  bp/   \    wp    /
%R
%R local T = {bp="\\bullet", wp="\\circ",
%R            sw="↙", so="↓", se="↘",
%R            nw="↖", no="↑", ne="↗"}
%R B:tozmp({def="Bmne", scale="9pt", meta=nil}):addcells(T):output()
%R W:tozmp({def="Wmne", scale="9pt", meta=nil}):addcells(T):output()
$$\pu \Bmne \qquad \Wmne
$$

Black pawns can move from $(x,y)$ to $(x+k,y-1)$ and white pawns from
$(x,y)$ to $(x+k,y+1)$, where $k∈\{-1,0,1\}$. The mnemonic is that
black pawns are ``solid'', and thus ``heavy'', and they ``sink'', so
they move down; white pawns are ``hollow'', and thus ``light'', and
they ``float'', so they move up.

Let's now restrict the board positions to a ZSet $S$. Black pawns can
move from $(x,y)$ to $(x+k,y-1)$ and white pawns from $(x,y)$ to
$(x+k,y+1)$, where $k∈\{-1,0,1\}$, but only when the starting and
ending positions both belong to $S$. The sets of possible black pawn
moves and white pawn moves on $S$ can be defined formally as:
%
$$\mat{
  \BPM(S) = \setofst {((x,y),(x',y'))∈S^2} {x-x'∈\{-1,0,1\}, y'=y-1} \\
  \WPM(S) = \setofst {((x,y),(x',y'))∈S^2} {x-x'∈\{-1,0,1\}, y'=y+1} \\
  }
$$
%
...and now please forget everything else you expect from a game ---
like starting position, capturing, objective, winning... the idea of a
``game'' was just a tool to let us explain $\BPM(S)$ and $\WPM(S)$
quickly.

\msk

A {\sl ZDAG} is a DAG of the form $(S,\BPM(S))$ or $(S,\WPM(S))$,
where $S$ is a ZSet.

A {\sl ZPO} is partial order of the form $(S,\BPM(S)^*)$ or
$(S,\WPM(S)^*)$, where $S$ is a ZSet and the `${}^*$' denotes the
transitive-reflexive closure of the relation.

\msk

Sometimes, when this is clear from the context, a bullet diagram like
$\Kmini$ will stand for either the ZDAGs $(\Kmini,\BPM(\Kmini))$ or
$(\Kmini,\WPM(\Kmini))$, or for the ZPOs $(\Kmini,\BPM(\Kmini)^*)$ or
$(\Kmini,\WPM(\Kmini)^*)$ (sec.\ref{ZHAs}).

%  or even for the ZPOs seen as categories (section $\_\_\_$).




%  _     ____                            _ _             _            
% | |   |  _ \    ___ ___   ___  _ __ __| (_)_ __   __ _| |_ ___  ___ 
% | |   | |_) |  / __/ _ \ / _ \| '__/ _` | | '_ \ / _` | __/ _ \/ __|
% | |___|  _ <  | (_| (_) | (_) | | | (_| | | | | | (_| | ||  __/\__ \
% |_____|_| \_\  \___\___/ \___/|_|  \__,_|_|_| |_|\__,_|\__\___||___/
%                                                                     
% «LR-coords» (to ".LR-coords")
\section{LR-coordinates}
\label  {LR-coords}
% Good (phap 3 "LR-coords")

\def\LR{\mathbb{LR}}

The {\sl lr-coordinates} are useful for working on quarter-plane of
$\Z^2$ that looks like $\N^2$ turned $45°$ to the left. Let $\ang{l,r}
:= (-l+r,l+r)$; then (the bottom part of)
$\setofst{\ang{l,r}}{l,r∈\N}$ is:
%
% (find-LATEX "2015planar-has.tex" "zhas-visually")
% (find-xpdfpage "~/LATEX/2015planar-has.pdf" 7)
% (find-dn6file "zhas.lua" "addxys =")
%
%R local zhav =
%R 1/o o o o o\
%R  | o o o o |
%R  |  o o o  |
%R  |   o o   |
%R  \    o    /
%R mplr = zhav:tomp({def="mplr", scale="14pt", meta="s"})
%R mpxy = zhav:tomp({def="mpxy", scale="14pt", meta="s"})
%R f = function (p) local l,r = p:to_l_r(); return "\\ang{"..l..","..r.."}" end
%R for p,str in mplr:points() do mplr:put(p, f(p-v(4,0))) end
%R for p,str in mpxy:points() do mpxy:put(p, (p-v(4,0)):xy()) end
%R mplr:output()
%R mpxy:output()
%
$$\pu
  \mplr
  \quad =
  \quad
  \mpxy
$$

Sometimes we will write $lr$ instead of $\ang{l,r}$. So:
%
%R local zhav =
%R 1/o o o o o\
%R  | o o o o |
%R  |  o o o  |
%R  |   o o   |
%R  \    o    /
%R mplr = zhav:tomp({def="mplr", scale="13.5pt", meta="s"})
%R mpxy = zhav:tomp({def="mpxy", scale="14pt", meta="s"})
%R f = function (p) local l,r = p:to_l_r(); return l..r end
%R for p,str in mplr:points() do mplr:put(p, f(p-v(4,0))) end
%R for p,str in mpxy:points() do mpxy:put(p, (p-v(4,0)):xy()) end
%R mplr:output()
%R mpxy:output()
%
$$\pu
  \mplr
  \quad =
  \quad
  \mpxy
$$




Let $\LR = \setofst{\ang{l,r}}{l,r∈\N}$.




%  ______   _    _        
% |__  / | | |  / \   ___ 
%   / /| |_| | / _ \ / __|
%  / /_|  _  |/ ___ \\__ \
% /____|_| |_/_/   \_\___/
%                         
% «ZHAs» (to ".ZHAs")
\section{ZHAs}
\label  {ZHAs}
% Good (phap 4 "ZHAs")

A {\sl ZHA} is a subset of $\LR$ ``between a left and a right wall'',
as we will see.

\msk

A triple $(h,L,R)$ is a ``height-left-right-wall'' when:

1) $h∈\N$

2) $L:\{0,\ldots,h\}→\Z$ and $R:\{0,\ldots,h\}→\Z$

3) $L(h)=R(h)$ (the top points of the walls are the same)

4) $L(0)=R(0)=0$ (the bottom points of the walls are the same, $0$)

5) $∀y∈\{0,\ldots,h\}.\,L(y)≤R(y)$ (``left'' is left of ``right'')

6) $∀y∈\{1,\ldots,h\}.\,L(y)-L(y-1)=\pm1$ (the left wall makes no jumps)

7) $∀y∈\{1,\ldots,h\}.\,R(y)-R(y-1)=\pm1$ (the right wall makes no jumps)

\msk

The {\sl ZHA generated by} a height-left-right-wall $(h,L,R)$ is the
set of all points of $\LR$ with valid height and between the left and
the right walls. Formally:

$$\ZHAG(h,L,R) = \setofst {(x,y)∈\LR} {y≤h, L(y)≤x≤R(y)}.$$

A {\sl ZHA} is a set of the form $\ZHAG(h,L,R)$, where the triple
$(h,L,R)$ is a height-left-right-wall.

Here is an example of a ZHA (with the white pawn moves on it):
%
% (find-LATEX "2015planar-has.tex" "zhas-visually")
% (find-xpdfpage "~/LATEX/2015planar-has.pdf" 7)
%
%R local zhav =
%R 1/ o    \  -- L(9)=1 R(9)=1   maxy=9  L(maxy)=R(maxy)
%R  |o o   |
%R  | o    |
%R  |  o   |
%R  |   o  |
%R  |  o o |
%R  | o o o|
%R  |  o o |
%R  |   o o|  -- L(1)=3 R(1)=5
%R  \    o /  -- L(0)=4 R(0)=4   L(0)=R(0)=x_0=4
%R mp = zhav:tozmp({def="zhav", scale="20pt", meta=nil}):addxys():addarrows("w")
%R local L = {[0]=0,-1,-2,-3,-2,-1,-2,-3,-4,-3}
%R local R = {[0]=0, 1, 0, 1, 0,-1,-2,-3,-2,-3}
%R local x = {L=8, R=10.5, a=13.5, b=16.5}
%R local x = {L=4, R=7, a=10, b=12.5}
%R for y=0,9 do
%R   mp:put(v(x.L, y), "L"..y, "L("..y..")="..L[y])
%R   mp:put(v(x.R, y), "R"..y, "R("..y..")="..R[y])
%R end
%R mp:put(v(x.b, 9), "=", "h=9")
%R mp:put(v(x.a, 9), "=", "L(9)=R(9)")
%R mp:put(v(x.a, 0), "=", "\\;\\;\\;\\;L(0)=R(0)=0")
%R mp:output()
%
$$\pu
  \zhav
$$

We will see later (section \ref{prop-calc-ZHA}) that ZHAs (with white
pawn moves) are Heyting Algebras.




%  _____                                                _   _                 
% |_   _|_      _____     ___ ___  _ ____   _____ _ __ | |_(_) ___  _ __  ___ 
%   | | \ \ /\ / / _ \   / __/ _ \| '_ \ \ / / _ \ '_ \| __| |/ _ \| '_ \/ __|
%   | |  \ V  V / (_) | | (_| (_) | | | \ V /  __/ | | | |_| | (_) | | | \__ \
%   |_|   \_/\_/ \___/   \___\___/|_| |_|\_/ \___|_| |_|\__|_|\___/|_| |_|___/
%                                                                             
% «two-conventions» (to ".two-conventions")
\section{Conventions on diagrams without axes}
\label  {two-conventions}
% Good (phap 5 "two-conventions")

We can use a bullet notation to denote ZHAs, but look at what happens
when we start with a ZHA, erase the axes, and then add the axes back
using the convention from sec.\ref{positional}:
%
$$    \quad\picturedotsa(-2,0)(2,5){ 0,0 1,1 2,2  -1,1 0,2 1,3  -2,2 -1,3 0,4   -1,5 }\quad
  \sa \quad\picturedots (-2,0)(2,5){ 0,0 1,1 2,2  -1,1 0,2 1,3  -2,2 -1,3 0,4   -1,5 }\quad
  \sa \quad\picturedotsa (0,0)(4,5){ 2,0 3,1 4,2   1,1 2,2 3,3   0,2  1,3 2,4    1,5 }\quad
$$
%
The new, restored axes are in a different position --- the bottom
point of the original ZHA at the left was $(0,0)$, but in the ZSet at
the right the bottom point is $(2,0)$.

{\sl The convention from sec.\ref{positional} is not adequate for ZHAs.}

Let's modify it!

{\sl From this point on,} the convention on where to
draw the axes will be this one: {\sl when it is clear from the context
  that a bullet diagram represents a ZHA,} then its (unique) bottom
point has coordinate $(0,0)$, and we use that to draw the axes;
otherwise we apply the old convention, that chooses $(0,0)$ as the
point that makes the diagram fit in $\N^2$ and touch both axes.

The new convention with two cases also applies to functions from ZHAs,
and to partial functions and subsets. For example:
%
%L local mpB = mpnew({def="fooB", scale="5pt", meta="s"}, "12321L")
%L local mpx = mpnew({def="foox", scale="5pt", meta="s"}, "12321L")
%L local mpl = mpnew({def="fool", scale="5pt", meta="s"}, "12321L")
%L local mpr = mpnew({def="foor", scale="5pt", meta="s"}, "12321L")
%L f = function (n) return "\\text{"..n.."}" end
%L mpB:addbullets():output()
%L mpx:zhalrf0("P -> f(P[1])"):output()
%L mpl:zhalrf0("P -> P:xytolr()[1]"):output()
%L mpr:zhalrf0("P -> P:xytolr()[2]"):output()
$$
  \pu
  \begin{array}{lll}
  B = \fooB \quad \text{(a ZHA)} & \phantom{m} &
  λ(x,y){:}B.x = \foox \\ \\
  λ\ang{l,r}{:}B.l = \fool & &
  λ\ang{l,r}{:}B.r = \foor \\
  \end{array}
$$

\bsk

We will often denote ZHAs by the identity function on them:
%
%L local mpB = mpnew({def="fooB", scale="5pt", meta="s"}, "12321L")
%L local mp  = mpnew({def="foo",  scale="7pt", meta="s"}, "12321L")
%L mpB:addbullets():output()
%L mp :addlrs()    :output()
$$
  \pu
  λ\ang{l,r}{:}B.\ang{l,r} \;=\;
  λlr{:}B.lr \;=\;
  \foo
  \qquad
  \quad
  B \;=\; \foo
$$
%
Note that we are using the compact notation from the end of section
\ref{LR-coords}: `$lr$' instead of `$\ang{l,r}$'.



%  to denote ZHAs and
% functions from ZHAs compactly, but we have to modify the convention
% for adding the axes back.
% 
% %R local zhav =
% %R 1/ o   \
% %R  |  o  |
% %R  | o o |
% %R  |o o o|
% %R  | o o |
% %R  \  o  /
% %R zhav:tomp ({def="zb", scale="15pt", meta=nil}):addxys():output()
% %R zhav:tozmp({def="za", scale="15pt", meta=nil}):addxys():output()
% %
% $$\pu
%   \za \qquad \sa \qquad \zb
% $$



%  ____                              _      
% |  _ \ _ __ ___  _ __     ___ __ _| | ___ 
% | |_) | '__/ _ \| '_ \   / __/ _` | |/ __|
% |  __/| | | (_) | |_) | | (_| (_| | | (__ 
% |_|   |_|  \___/| .__/   \___\__,_|_|\___|
%                 |_|                       
%
% «prop-calc» (to ".prop-calc")
\section{Propositional calculus}
\label  {prop-calc}
% Good (phap 5 "prop-calc")

A {\sl PC-structure} is a tuple
%
$$L = (Ω,≤,⊤,⊥,∧,∨,→,↔,¬),$$
%
where:

$Ω$ is the ``set of truth values'',

$≤$ is a relation on $Ω$,

$⊤$ and $⊥$ are two elements of $Ω$, 

$∧$, $∨$, $→$, $↔$ are functions from $Ω×Ω$ to $Ω$,

$¬$ is a function from $Ω$ to $Ω$.

\msk

Classical Logic ``is'' a PC-structure, with $Ω=\{0,1\}$, $⊤=1$, $⊥=0$,
$≤=\{(0,0),(0,1),(1,0)\}$, $∧=\csm{((0,0),0), ((0,1),0), \\ ((1,0),0),
  ((1,1),1)}$, etc.

PC-structures let us interpret expressions from Propositional
Calculus, and let us define a notion of {\sl tautology}. For example,
in Classical Logic,
%
\begin{itemize}
\item $¬¬P↔P$ is a tautology because it is valid (i.e., it yields $⊤$)
  for all values of $P$ in $Ω$,

\item $¬(P∧Q)→(¬P∨¬Q)$ s a tautology because it is valid for all
  values of $P$ and $Q$ in $Ω$,

\item but $P∨Q→P∧Q$ is {\sl not} a tautology, because when $P=0$ and
  $Q=1$ the result is not $⊤$:
%
$$\und{\und{\und{P}0 ∨ \und{Q}1}{1} → \und{\und{P}0 ∧\und{Q}1}{0}}{0}$$
\end{itemize}




%  ____                              _        ______   _    _    
% |  _ \ _ __ ___  _ __     ___ __ _| | ___  |__  / | | |  / \   
% | |_) | '__/ _ \| '_ \   / __/ _` | |/ __|   / /| |_| | / _ \  
% |  __/| | | (_) | |_) | | (_| (_| | | (__   / /_|  _  |/ ___ \ 
% |_|   |_|  \___/| .__/   \___\__,_|_|\___| /____|_| |_/_/   \_\
%                 |_|                                            
%
% «prop-calc-ZHA» (to ".prop-calc-ZHA")
\section{Propositional calculus in a ZHA}
\label  {prop-calc-ZHA}
% Good (phap 6 "prop-calc-ZHA")

Let $Ω$ be the set of points of a ZHA and $≤$ the default partial
order on it. The {\sl default meanings for $⊤,⊥,∧,∨,→,↔,¬$} are these
ones:
%
$$\def\o#1{\mathop{\mathsf{#1}}}
  \def\o#1{\mathbin{\mathsf{#1}}}
  \def\a#1#2{\ang{#1,#2}}
  \def\ab{\a ab}
  \def\cd{\a cd}
  \begin{array}{rcl}
  %
  \ab ≤ \cd &:=& a≤c∧b≤d \\
  \ab ≥ \cd &:=& a≥c∧b≥d \\[5pt]
  %
  \ab \o{above} \cd &:=& a≥c∧b≥d \\
  \ab \o{below} \cd &:=& a≤c∧b≤d \\
  \ab \o{leftof} \cd &:=& a≥c∧b≤d \\
  \ab \o{rightof} \cd &:=& a≤c∧b≥d \\[5pt]
  %
  \o{valid}(\ab) &:=& \ab∈Ω \\
  \o{ne}(\ab) &:=& \o{if}   \o{valid}(\a a{b+1})
                   \o{then} \o{ne}(\a a{b+1})
                   \o{else} \ab \;
                   \o{end} \\
  \o{nw}(\ab) &:=& \o{if}   \o{valid}(\a {a+1}b)
                   \o{then} \o{nw}(\a {a+1}b)
                   \o{else} \ab \;
                   \o{end} \\[5pt]
  %
  \ab ∧ \cd &:=& \a{\o{min}(a,c)}{\o{min}(b,d)} \\
  \ab ∨ \cd &:=& \a{\o{max}(a,c)}{\o{max}(b,d)} \\[5pt]
  %
  \ab \to \cd &:=& \begin{array}[t]{llll}
               \o{if}     & \ab \o{below} \cd   & \o{then} & ⊤           \\
               \o{elseif} & \ab \o{leftof} \cd  & \o{then} & \o{ne}(\cd) \\
               \o{elseif} & \ab \o{rightof} \cd & \o{then} & \o{nw}(\cd) \\
               \o{elseif} & \ab \o{above} \cd   & \o{then} & \cd            \\
               \o{end}
               \end{array} \\[5pt]
  %
  ⊤   &:=& \o{sup}(Ω) \\
  ⊥   &:=& \a00 \\
  ¬\ab &:=& \ab→⊥ \\
  \ab↔\cd &:=& (\ab→\cd)∧ (\cd→\ab)\\
  \end{array}
$$
%
% We will sometimes call them $⊤_D,⊥_D,∧_D,∨_D,→_D,↔_D,¬_D$ to
% distinguish them from other ones.

% --- let's say ``with the default logic'', for shortness ---

Let $Ω$ be the ZHA at the top left in the figure below. Then, with the
default meanings for the connectives neither $¬¬P→P$ nor
$¬(P∧Q)→(¬P∨¬Q)$ are tautologies, as there are valuations that make
them yield results different than $⊤=32$:
%
%R local znotnotP =
%R 1/ T   \
%R  |  .  |
%R  | . c |
%R  |b . a|
%R  | P . |
%R  \  F  /
%R local T = {F="⊥", T="⊤", a="P'", b="P''", c="→"}
%R znotnotP:tozmp({def="znotnotP", scale="10pt", meta=nil}):addcells(T):addcontour():output()
%R
%R local zdemorgan =
%R 1/ T   \
%R  |  o  |
%R  | . . |
%R  |q . p|
%R  | P Q |
%R  \  a  /
%R local T = {F="⊥", T="⊤", p="P'", q="Q'", a="∧", o="∨"}
%R zdemorgan:tozmp({def="zdemorgan", scale="10pt", meta=nil}):addcells(T):addcontour():output()
%R
%R zdemorgan:tozmp({def="ohouse",    scale="10pt", meta=nil}):addlrs():output()
%
%L -- ¬¬P→P
%L ubs [[
%L ¬ ¬  P 10 u  Pre 02 u Pre 20 u ()  → P 10 u Bin 12 u
%L   notnotP def   output
%L ]]
%L
%L -- ¬(P∧Q)→(¬P∨¬Q)
%L ubs [[
%L   ¬ P 10 u ∧ Q 01 u Bin 00 u () Pre 32 u
%L   →   ¬ P 10 u Pre 02 u   ∨   ¬ Q 01 u Pre 20 u   Bin 22 u ()   Bin 22 u
%L   demorgan def   output
%L ]]
%L
%
$$\pu
  \begin{array}{ccccl}
  \ohouse && \znotnotP  && \mat{\notnotP} \\ \\
          && \zdemorgan && \mat{\demorgan} \\
  \end{array}
$$

So: {\sl some} classical tautologies are not tautologies in this ZHA.

The somewhat arbitrary-looking definition of `$→$' will be explained
at the end of the next section.



%  _   _    _        
% | | | |  / \   ___ 
% | |_| | / _ \ / __|
% |  _  |/ ___ \\__ \
% |_| |_/_/   \_\___/
%                    
% «HAs» (to ".HAs")
% Good (phap 7 "HAs")

\section{Heyting Algebras}
\label{HAs}

A {\sl Heyting Algebra} is a PC-structure
%
$$H = (Ω,≤_H,⊤_H,⊥_H,∧_H,∨_H,→_H,↔_H,¬_H),$$
%
in which:

1) $(Ω,≤_H)$ is a partial order

2) $⊤_H$ is the top element of the partial order

3) $⊥_H$ is the bottom element of the partial order

4) $P ↔_H Q$ is the same as $(P →_H Q)∧_H(Q →_H P)$

5) $¬_H P$ is the same as $P →_H ⊥_H$

6) $∀P,Q,R∈Ω.\;\; (P ≤_H (Q ∧_H R)) ↔ ((P ≤_H Q) ∧ (P ≤_H R))$

7) $∀P,Q,R∈Ω.\;\; ((P ∨_H Q) ≤_H R) ↔ ((P ≤_H R) ∧ (Q ≤_H R))$

8) $∀P,Q,R∈Ω.\;\; (P ≤_H (Q →_H R)) ↔ ((P ∧_H Q) ≤_H R)$

6') $∀Q,R∈Ω.\, ∃!Y∈Ω.\, ∀P∈Ω.\;\; (P ≤_H Y) ↔ ((P ≤_H Q) ∧ (P ≤_H R))$

7') $∀P,Q∈Ω.\, ∃!X∈Ω.\, ∀R∈Ω.\;\; (X ≤_H R) ↔ ((P ≤_H R) ∧ (Q ≤_H R))$

8') $∀Q,R∈Ω.\, ∃!Y∈Ω.\, ∀P∈Ω.\;\; (P ≤_H Y) ↔ ((P ∧_H R) ≤_H R)$

\msk

The conditions 6', 7', 8' say that there are unique elements in $Ω$
that ``behave as'' $Q ∧_H R$, $P ∨_H Q$ and $Q →_H R$ for given $P$,
$Q$, $R$; the conditions 6,7,8 say that $Q ∧_H R$, $P ∨_H Q$ and $Q
→_H R$ are exactly the elements with this behavior.

\msk

The positional notation on ZHAs is very helpful for visualizing what
the conditions 6',7',8',6,7,8 mean. Let $Ω$ be the ZDAG on the left
below:
%
$$
%R local QoRai, PoQai, PnnP =
%R     1/    T    \, 1/    T    \, 1/ T   \
%R      |   . .   |   |   . .   |   |  .  | 
%R      |  . . .  |   |  . . .  |   | . . | 
%R      | . . . i |   | . o . . |   |d . n| 
%R      |. Q . . .|   |. P . . .|   | P . | 
%R      | . . R . |   | . . Q . |   \  F  / 
%R      |  . a .  |   |  . . .  |           
%R      |   . .   |   |   . .   |           
%R      \    F    /   \    F    /           
%R local T = {a="(∧)", o="(∨)", i="(\\!→\\!)", n="(¬)", d="(\\!\\!¬¬\\!)",
%R            T="·", F="·", T="⊤", F="⊥", }
%R PoQai:tozmp({def="PoQai", scale="10pt", meta=nil}):addcells(T):addcontour():output()
%R QoRai:tozmp({def="QoRai", scale="10pt", meta=nil}):addcells(T):addcontour():output()
%R PnnP :tozmp({def="PnnP" , scale="10pt", meta=nil}):addcells(T):addcontour():output()
%R
%R PoQai:tozmp({def="lozfive", scale="10pt", meta=nil}):addlrs():addcontour():output()
  \pu
  \lozfive \qquad \QoRai \qquad \PoQai
$$
%
we will see that

a) if $Q=31$ and $R=12$ then $Q ∧_H R = 11$,

b) if $P=31$ and $Q=12$ then $P ∨_H Q = 32$,

c) if $Q=31$ and $R=12$ then  $Q →_H R = 14$.

\msk

Let's see each case separately --- but, before we start, note that in
6, 7, 8, 6', 7', 8' we work part with truth values in $Ω$ and part
with standard truth values. For example, in 6, with $P=20$, we have:
%
$$\und{(\und{\und{P}{20} ≤_H (\und{\und{Q}{31} ∧_H \und{R}{12}}{11})}{0}) ↔
       (\und{(\und{\und{P}{20} ≤_H \und{Q}{31}}{1}) ∧
             (\und{\und{P}{20} ≤_H \und{R}{12}}{0})
            }{0})
      }{1}
$$

\bsk

a) Let $Q=31$ and $R=12$. We want to see that $Q ∧_H R = 11$, i.e.,
that
%
$$∀P∈Ω.\;\; (P ≤_H Y) ↔ ((P ≤_H Q) ∧ (P ≤_H R))$$
%
holds for $Y=11$ and for no other $Y∈Ω$. We can visualize the behavior
of $P ≤_H Q$ for all `$P$'s by drawing $λP{:}Ω.(P ≤_H Q)$ in the
positional notation; then we do the same for $λP{:}Ω.(P ≤_H R)$ and
for $λP{:}Ω.((P ≤_H Q) ∧ (P ≤_H R))$. Suppose that the full
expression, `$∀P{:}Ω.\,\_\_\_$', is true; then the behavior of the
left side of the `$↔$', $λP{:}Ω.(P ≤_H Y)$, has to be    a copy of the
behavior of the right side, and that lets us find the only adequate
value for $Y$.

The order in which we calculate and draw things is below, followed by
the results themselves:
%
$$(\und{P ≤_H \und{Y}{(7)}}{(6)}) ↔
  (\und{(\und{P ≤_H \und{Q}{(1)}}{(3)}) ∧
        (\und{P ≤_H \und{R}{(2)}}{(4)})
       }{(5)}
  )
$$
%
$$
%R local z = ZHA.fromspec("123454321")
%R local mpQ = mpnew({def="fooQ", scale="5pt", meta="s"}, "123454321")
%R local mpR = mpnew({def="fooR", scale="5pt", meta="s"}, "123454321")
%R local mpA = mpnew({def="fooA", scale="5pt", meta="s"}, "123454321")
%R mpQ:zhalrf0("P -> P:below(v'31') and 1 or 0"):output()
%R mpR:zhalrf0("P -> P:below(v'12') and 1 or 0"):output()
%R mpA:zhalrf0("P -> P:below(v'11') and 1 or 0"):output()
  \pu
  (\und{P ≤_H \und{Y}{11}}{\fooA}) ↔
  (\und{(\und{P ≤_H \und{Q}{31}}{\fooQ}) ∧
        (\und{P ≤_H \und{R}{12}}{\fooR})
       }{\fooA}
  )
$$

\msk

b) Let $P=31$ and $Q=12$. We want to see that $P ∨_H Q = 32$, i.e.,
that
%
$$∀R{:}Ω.\;\; (X ≤_H R) ↔ ((P ≤_H R) ∧ (Q ≤_H R))$$
%
holds for $X=32$ and for no other $X∈Ω$. We do essentially the same as
we did in (a), but now we calculate $λR{:}Ω.(P ≤_H R)$, $λR{:}Ω.(Q ≤_H
R)$, and $λR{:}Ω.((P ≤_H R) ∧ (Q ≤_H R))$. The order in which we
calculate and draw things is below, followed by the results
themselves:
%
$$(\und{\und{X}{(7)} ≤_H R}{(6)}) ↔
  (\und{(\und{\und{P}{(1)} ≤_H R}{(3)}) ∧
        (\und{\und{Q}{(2)} ≤_H R}{(4)})
       }{(5)}
  )
$$
%
$$
%R local z = ZHA.fromspec("123454321")
%R local mpQ = mpnew({def="fooP", scale="5pt", meta="s"}, "123454321")
%R local mpR = mpnew({def="fooQ", scale="5pt", meta="s"}, "123454321")
%R local mpA = mpnew({def="fooA", scale="5pt", meta="s"}, "123454321")
%R mpQ:zhalrf0("P -> P:above(v'31') and 1 or 0"):output()
%R mpR:zhalrf0("P -> P:above(v'12') and 1 or 0"):output()
%R mpA:zhalrf0("P -> P:above(v'32') and 1 or 0"):output()
  \pu
  (\und{\und{X}{32} ≤_H R}{\fooA}) ↔
  (\und{(\und{\und{P}{31} ≤_H R}{\fooP}) ∧
        (\und{\und{Q}{12} ≤_H R}{\fooQ})
       }{\fooA}
  )
$$

\msk

c) Let $Q=31$ and $R=12$. We want to see that $Q →_H R = 14$, i.e.,
that
%
$$∀P{:}Ω.\;\; (P ≤_H Y) ↔ ((P ∧_H Q) ≤_H R)$$
%
holds for $Y=14$ and for no other $Y∈Ω$. Here the strategy is slightly
different. We start by visualizing $λP{:}Ω.(P ∧_H Q)$, which is a
function from $Ω$ to $Ω$, not a function from $Ω$ to $\{0,1\}$ like
the ones we were using before. The order in which we calculate and
draw things is below, followed by the results:
%
$$(\und{P ≤_H \und{Y}{(6)}}{(5)}) ↔
  (\und{(\und{P ∧_H \und{Q}{(1)}}{(3)}) ≤_H
        \und{R}{(2)}
       }{(4)}
  )
$$
%
$$
%R local z = ZHA.fromspec("123454321")
%R local mpQ = mpnew({def="fooQ", scale="6pt", meta="s"}, "123454321")
%R local mpR = mpnew({def="fooR", scale="5pt", meta="s"}, "123454321")
%R local mpA = mpnew({def="fooA", scale="5pt", meta="s"}, "123454321")
%R mpQ:zhalrf ("P -> P:And  (v'31')           "):output()
%R mpR:zhalrf0("P -> P:below(v'14') and 1 or 0"):output()
%R mpA:zhalrf0("P -> P:below(v'11') and 1 or 0"):output()
  \pu
  (\und{P ≤_H \und{Y}{14}}{\fooR}) ↔
  (\und{(\und{P ∧_H \und{Q}{31}}{\fooQ}) ≤_H
        \und{R}{12}
       }{\fooR}
  )
$$


%      __                         
%      \ \    _ __   _____      __
%  _____\ \  | '_ \ / _ \ \ /\ / /
% |_____/ /  | | | |  __/\ V  V / 
%      /_( ) |_| |_|\___| \_/\_/  
%        |/                       
%
% «implication-new» (to ".implication-new")
% Ongoing (phap 10 "implication-new")
\section{The two implications are equivalent}

{

\def\toC {\ton{\text{C}}}
\def\toHA{\ton{\text{HA}}}

\def\o#1{\mathop{\mathsf{#1}}}
\def\o#1{\mathbin{\mathsf{#1}}}
\def\a#1#2{\ang{#1,#2}}
\def\ab{\a ab}
\def\cd{\a cd}
\def\ef{\a ef}
\def\ab{ab}
\def\cd{cd}
\def\ef{ef}
\def\wh{\widehat}

In sec.\ref{prop-calc-ZHA} we gave a definition of `$→$' that is easy
to calculate, and in sec.\ref{HAs} we saw a way to find by brute
force\footnote{``When in doubt use brute force'' --- Ken Thompson} a
value for $Q→R$ that obeys
%
$$(P≤(Q→R))↔(P≤Q∧R)$$
%
for all $P$. In this section we will see that these two operations ---
called `$\toC$' and `$\toHA$' from here on --- always give the same
results. We will do that by checking that for any ZHA $H$ and $Q,R∈H$
this holds
%
$$(P≤(Q \toC R))↔(P≤Q∧R)$$
%
for all $P∈H$.

\msk

In `$\toC$' the order of the cases is very important. For example, if
$cd=21$ and $ef=23$ then both ``$\cd \o{below} \ef$'' and ``$\cd
\o{leftof} \ef$'' are true, but ``$\cd \o{below} \ef$'' takes
precedence and so $\cd \toC \ef = ⊤$. We can fix this by creating
variants of $\o{below}$, $\o{leftof}$, $\o{righof}$ and $\o{above}$
that make the four cases disjoint. Abbreviating $\o{below}$,
$\o{leftof}$, $\o{righof}$ and $\o{above}$ as $\o{b}$, $\o{l}$,
$\o{r}$ and $\o{a}$, we have:
%
$$\def\foo#1#2#3{\cd\,\o{#1}\,\ef\;:=\; c#2e ∧ d#3f}
  \begin{array}{rrr}
  \foo{b}≤≤ && \foo{b'}≤≤ \\
  \foo{l}≤≥ && \foo{l'}≤> \\
  \foo{r}≥≤ && \foo{r'}>≤ \\
  \foo{a}>>  && \foo{a'}>> \\
  \end{array}
$$
%
visually the regions are these, for $R$ fixed:
%
%L mp = mpnew({def="blraprime", scale="7pt", meta="s"}, "12345654321"):addcuts("c 543/210 012|345")
%L mp:put(v"22", "R")
%L mp:put(v"44", "Q\\o{a}'R")
%L mp:put(v"11", "Q\\o{b}'R")
%L mp:put(v"41", "Q\\o{l}'R")
%L mp:put(v"14", "Q\\o{r}'R")
%L mp:output()
%
$$\pu
  \blraprime
$$

We clearly have:
%
$$Q \toC R
  %
  \;=\;
  %
  \left(
  \!
  \begin{array}{lccl}
    \o{if}     & Q\o{b}R & \o{then} & ⊤        \\
    \o{elseif} & Q\o{l}R & \o{then} & \o{ne}(R) \\
    \o{elseif} & Q\o{r}R & \o{then} & \o{nw}(R) \\
    \o{elseif} & Q\o{a}R & \o{then} & R       \\
    \o{end}
  \end{array}
  \!\!\!
  \right)
  %
  \;=\;
  %
  \left(
  \!
  \begin{array}{lccl}
    \o{if}     & Q\o{b'}R & \o{then} & ⊤        \\
    \o{elseif} & Q\o{l'}R & \o{then} & \o{ne}(R) \\
    \o{elseif} & Q\o{r'}R & \o{then} & \o{nw}(R) \\
    \o{elseif} & Q\o{a'}R & \o{then} & R       \\
    \o{end}
  \end{array}
  \!\!\!
  \right)
$$
%
and $P ≤ Q \toC R$ can be expressed as a conjunction of the four
cases:
%
$$\def\foo#1{((P ≤       #1) ↔ (P∧Q≤R))}
  \def\fooc {((P ≤ Q \toC R) ↔ (P∧Q≤R))}
  \def\cond#1{Q\o{#1}R}
  %
  \begin{array}{l}
  \fooc \\[5pt]
  \quad ↔ \quad
     \left(
     \begin{array}{ll}
     \cond{b'} → \fooc & ∧ \\
     \cond{l'} → \fooc & ∧ \\
     \cond{r'} → \fooc & ∧ \\
     \cond{a'} → \fooc &    \\
     \end{array}
     \right) \\ \\
  \quad ↔ \quad
     \left(
     \begin{array}{ll}
     \cond{b'} → \foo{⊤}         & ∧ \\
     \cond{l'} → \foo{\o{ne}(R)} & ∧ \\
     \cond{r'} → \foo{\o{nw}(R)} & ∧ \\
     \cond{a'} → \foo{R}         &    \\
     \end{array}
     \right) \\
  \end{array}
$$

Let's introduce a notation: a ``$\widehat{a}$'' means ``make this
digit as big possible without leaving the ZHA''. So,
%
%L mpnew({def="foo"}, "123RL232L1"):addlrs():output()
$$\pu
  \text{in} \qquad \foo \qquad \text{we have} \qquad
  \begin{array}{rclcl}
  \wh1\wh2 &=& 54 &=& ⊤, \\
  1\wh2 &=& 13 &=& \o{ne}(12), \\
  \wh12 &=& 42 &=& \o{nw}(12); \\
  \end{array}
  % \quad ;
$$

\def\EF{\wh e \wh f}
\def\Ef{\wh e     f}
\def\eF{    e \wh f}
\def\ef{    e     f}

This lets us rewrite $⊤$ as $\wh e \wh f$, $\o{ne}(ef)$ as $e \wh f$,
and $\o{nw}(ef)$ as $\wh e f$.

Making $P=ab$, $Q=cd$, $R=ef$, we have:

$$\def\fooc    {((ab ≤ cd \toC ef) ↔ (ab∧cd≤ef))}
  \def\foo #1  {((ab ≤         #1) ↔ (ab∧cd≤ef))}
  \def\foor#1#2{((ab ≤         #1) ↔ (ab∧cd≤#2))}
  \def\fooR#1#2{((ab ≤         #1) ↔ #2)}
  \def\cond#1  {cd\o{#1}ef}
  \def\Cond#1#2{c#1e ∧ d#2f}
  %
  \begin{array}{l}
  \fooc \\[5pt]
  \quad ↔ \quad
     \left(
     \begin{array}{ll}
     \cond{b'} → \foo{\EF} & ∧ \\
     \cond{l'} → \foo{\eF} & ∧ \\
     \cond{r'} → \foo{\Ef} & ∧ \\
     \cond{a'} → \foo{\ef} &    \\
     \end{array}
     \right) \\ \\
  \quad ↔ \quad
     \left(
     \begin{array}{ll}
     \Cond≤≤ → \foo{\EF} & ∧ \\
     \Cond>≤ → \foo{\eF} & ∧ \\
     \Cond≤> → \foo{\Ef} & ∧ \\
     \Cond>> → \foo{\ef} &    \\
     \end{array}
     \right) \\ \\
  \quad ↔ \quad
     \left(
     \begin{array}{ll}
     \Cond≤≤ → \foor{\EF}{cd} & ∧ \\
     \Cond>≤ → \foor{\eF}{ed} & ∧ \\
     \Cond≤> → \foor{\Ef}{cf} & ∧ \\
     \Cond>> → \foor{\ef}{ef} &    \\
     \end{array}
     \right) \\ \\
  \quad ↔ \quad
     \left(
     \begin{array}{ll}
     \Cond≤≤ → \fooR{\EF}{⊤} & ∧ \\
     \Cond>≤ → \fooR{\eF}{a≤e} & ∧ \\
     \Cond≤> → \fooR{\Ef}{b≤f} & ∧ \\
     \Cond>> → \fooR{\ef}{(a≤e∧b≤f)} &    \\
     \end{array}
     \right) \\
  \end{array}
$$

In the last conjunction the four cases are trivial to check.

}



%      __      __                            _ _       
%      \ \    / _| ___  _ __ _ __ ___   __ _| | |_   _ 
%  _____\ \  | |_ / _ \| '__| '_ ` _ \ / _` | | | | | |
% |_____/ /  |  _| (_) | |  | | | | | | (_| | | | |_| |
%      /_( ) |_|  \___/|_|  |_| |_| |_|\__,_|_|_|\__, |
%        |/                                      |___/ 
%
% «implication-formally» (to ".implication-formally")
% Bad  (phap 10 "implication-formally")
%\section{Implication, formally}
%\label  {implication-formally}



%  _                _        _         _   _    _        
% | |    ___   __ _(_) ___  (_)_ __   | | | |  / \   ___ 
% | |   / _ \ / _` | |/ __| | | '_ \  | |_| | / _ \ / __|
% | |__| (_) | (_| | | (__  | | | | | |  _  |/ ___ \\__ \
% |_____\___/ \__, |_|\___| |_|_| |_| |_| |_/_/   \_\___/
%             |___/                                      
%
% «logic-in-HAs» (to ".logic-in-HAs")
% Good (phap 12 "logic-in-HAs")

\section{Logic in a Heyting Algebra}
\label  {logic-in-HAs}

In sec.\ref{HAs} we saw a set of conditions --- called 1 to 8' ---
that characterize the ``Heyting-Algebra-ness'' of a PC-structure. It
is easy to see that Heyting-Algebra-ness, or ``HA-ness'', is
equivalent to this set of conditions:
%
$$\begin{array}{|r|lrcccc|l|l|}\hline
  1 & ∀P.     & (P≤P) &    &       &  &        & \id \\
    & ∀P,Q,R. & (P≤R) & ← & (P≤Q) &∧& (Q≤R) & \comp \\ \hline
  2 & ∀P.     & (P≤⊤) &  &        & &        & ⊤_1 \\
  3 & ∀Q.     & (⊥≤Q) &  &        & &        & ⊥_1 \\ \hline \hline
  6 & ∀P,Q,R. & (P≤Q∧R) &→& (P≤Q) &   &         & ∧_1 \\
    & ∀P,Q,R. & (P≤Q∧R) &→&        &   & (P≤R)  & ∧_2 \\
    & ∀P,Q,R. & (P≤Q∧R) &←& (P≤Q) & ∧ & (P≤R)  & ∧_3 \\ \hline
  7 & ∀P,Q,R. & (P∨Q≤R) &→& (P≤R) &   &         & ∨_1 \\
    & ∀P,Q,R. & (P∨Q≤R) &→&        &   & (Q≤R)  & ∨_2 \\
    & ∀P,Q,R. & (P∨Q≤R) &←& (P≤R) & ∧ & (Q≤R)  & ∨_3 \\ \hline
  8 & ∀P,Q,R. & (P≤Q{→}R) &→& \multicolumn{3}{c|}{(P∧Q≤R)} & →_1 \\
    & ∀P,Q,R. & (P≤Q{→}R) &←& \multicolumn{3}{c|}{(P∧Q≤R)} & →_2 \\ \hline
  \end{array}
$$
%
We omitted the conditions 4 and 5, that defined `$↔$' and `$¬$' in
terms of the other operators. The last column gives a name to each of
these new conditions.

These new conditions let us put (some) proofs about HAs in tree form,
as we shall see soon.

\def\t{\text}

\msk

Let us introduce two new notations. The first one,
$$(\t{expr})\subst{v_1 := \t{repl}_1 \\ v_2 := \t{repl}_2}$$ indicates
simultaneous substitution of all (free) occurrences of the variables
$v_1$ and $v_2$ in expr by $\t{repl}_1$ and $\t{repl}_2$. For example,
%
$$((x+y)·z) \subst{ 
    x:=a+y \\
    y:=b+z \\
    z:=c+x \\
  }
  \;\;=\;\;
  ((a+y)+(b+z))·(c+x).
$$

The second is a way to write `$→$'s as horizontal bars. In
%:
%:                                           L   M
%:                                    -\ee   -----\zeta
%:  A  B  C     E  F     H            K        N         O
%:  -------\aa  ----\bb  -\gg  -\dd   --------------------\eta
%:     D         G       I     J               P
%:
%:     ^t1       ^t2     ^t3   ^t4             ^t5
%:
$$\pu
  \ded{t1} \qquad \ded{t2} \qquad \ded{t3} \qquad \ded{t4} \qquad \ded{t5}
$$
%
the trees mean:
%
\begin{itemize}
\item if $A$, $B$, $C$ are true then $D$ is true (by $\aa$),

\item if $E$, $F$, are true then $G$ is true (by $\bb$),

\item if $H$ is true then $I$ is true (by $\gg$),

\item $J$ is true (by $\dd$, with no hypotheses),

\item $K$ is true (by $\ee$); if $L$ and $M$ then $N$ (by $\zeta$);
  if $K$, $N$, $O$, then $P$ (by $\eta$); combining all this we get a
  way to prove that if $L$, $M$, $O$, then $P$,
\end{itemize}
%
where $\aa, \bb, \gg, \dd, \ee, \zeta, \eta$ are usually names
of rules.

\msk

The implications in the table in the beginning of this section can be
rewritten as ``tree rules'' as:
%:
%:             P≤Q  Q≤R
%:   ----\id   ---------\comp    -----⊤_1    -----⊥_1
%:   P≤P         P≤R            P≤⊤        ⊥≤Q
%:
%:    ^id         ^comp           ^T1       ^B1
%:
%:   P≤Q∧R      P≤Q∧R      P≤Q  P≤R
%:   ------∧_1  ------∧_2  -----------∧_3
%:    P≤Q        P≤R         P≤Q∧R
%:
%:    ^and1      ^and2        ^and3
%:
%:   P∨Q≤R      P∨Q≤R      P≤R  Q≤R
%:   ------∨_1  ------∨_2  -----------∨_3
%:    P≤R        Q≤R         P∨Q≤R
%:
%:    ^or1       ^or2         ^or3
%:
%:
%:    P≤Q{→}R         P∧Q≤R
%:    ---------→_1   ---------→_2
%:    P∧Q≤R          P≤Q{→}R
%:
%:     ^imp1           ^imp2
%:
{
\pu
$$\ded{id} \qquad \ded{comp} \qquad \ded{T1} \qquad \ded{B1}$$

$$\ded{and1} \qquad \ded{and2} \qquad \ded{and3}$$

$$\ded{or1} \qquad \ded{or2} \qquad \ded{or3}$$

$$\ded{imp1} \qquad \ded{imp2}$$

}

\msk

Note that the `$∀P,Q,R∈Ω$'s are left implicit in the tree rules, which
means that {\sl every substitution instance of the tree rules hold};
sometimes --- but rarely --- we will indicate the substitution
explicitly, like this,
%:
%:    P≤Q{→}R         P∧Q≤R
%:    ---------→_1   ---------→_2
%:    P∧Q≤R          P≤Q{→}R
%:
%:     ^imp1           ^imp2
%:
%:    P∧(P{→}⊥)≤⊥
%:   ------------------→_2\su
%:   P≤((P{→}⊥){→}⊥)
%:
%:     ^foo
%:
$$\pu
  \def\su{\bsm{Q:=P{→}⊥ \\ R:=⊥}}
  %
  \begin{array}{rcl}
    \left(\cded{imp2}\right) \su &\squigto& {\def\su{} \cded{foo}} \\\\
    (→_2)\su  &\squigto& \cded{foo} \\
  \end{array}
$$
%
Usually we will only say `$→_2$' instead of `$→_2\bsm{Q:=P{→}⊥
  \\ R:=⊥}$' at the right of a bar, and the task of discovering which
substitution has been used is left to the reader.

\msk

The tree rules can be composed in a nice visual way. For example,
this,
%:
%:  ---------\id               ---------\id
%:  P∧Q≤P∧Q                    P∧Q≤P∧Q
%:  ---------∧_1               ---------∧_2
%:   P∧Q≤P       P≤R            P∧Q≤Q       Q≤S
%:   ------------------\comp    ------------------\comp
%:      P∧Q≤R                        P∧Q≤S
%:      ------------------------------------∧_3
%:                    P∧Q≤R∧S
%:
%:                     ^foo
%:
$$\pu
  \ded{foo}
$$
%
``is'' a proof for:
%
%$$∀P,Q,R,S∈Ω.\; (P ≤_H R)∧(Q ≤_H S) → ((P ∧_H Q) ≤_H (R ∧_H S)).$$
%
$$∀P,Q,R,S∈Ω.\; (P ≤ R)∧(Q ≤ S) → ((P ∧ Q) ≤ (R ∧ S)).$$



%  ____            _               _              _           
% |  _ \  ___ _ __(_)_   _____  __| |  _ __ _   _| | ___  ___ 
% | | | |/ _ \ '__| \ \ / / _ \/ _` | | '__| | | | |/ _ \/ __|
% | |_| |  __/ |  | |\ V /  __/ (_| | | |  | |_| | |  __/\__ \
% |____/ \___|_|  |_| \_/ \___|\__,_| |_|   \__,_|_|\___||___/
%                                                             
% «derived-rules» (to ".derived-rules")
% Bad  (phap 14 "derived-rules")
\subsection{Derived rules}
\label     {derived-rules}

\def\HAness{\mathsf{HA-ness}}
\def\HAness{\textsf{HA-ness}}

{\sl Note:} in this section we will ignore the operators `$↔$' and
`$¬$' in PC-structures; we will think that every `$P↔Q$' is as
abbreviation for `$(P{→}Q)∧(Q{→}P)$' and every `$¬P$' is an
abbreviation for `$P{→}⊤$'.

We'll write $[⊤_1], \ldots, [→_2]$ for the ``linear'' versions of the
rules in last section --- for example, $[→_2]$ is $(∀P,Q,R∈Ω.\;
(P∧Q≤R) → (P≤Q{→}R))$ --- and if $S=\{r_1,\ldots,r_n\}$ is a set of
rules, each in tree form, then $[S]=[r_1]∧\ldots∧[r_n]$, and an
``$S$-tree'' is a proof in tree form that only uses rules that are in
the set $S$.


\msk

Let $\HAness_1$, $\HAness_2$, $\HAness_3$, be these sets, with the
rules from sec.\ref{logic-in-HAs}:
%
%$$\HAness_1 = \{\id,\comp,⊤_1,⊥_1,∧_1,∧_2,∧_3,∨_1,∨_2,∨_3,→_1,→_2\},$$
$$\begin{array}{rcl}
  \HAness_1 &=& \{\id,\comp,⊤_1,⊥_1,        ∧_3,        ∨_3,    →_2\}, \\
  \HAness_2 &=& \{                  ∧_1,∧_2,    ∨_1,∨_2,    →_1    \}, \\
  \HAness_3 &=& \HAness_1 ∪ \HAness_2 \\
  \end{array}
$$
%
and let $\HAness_4$, $\HAness_5$ and $\HAness_7$ be these ones, where the new rules
are the ones at the left column of fig.\ref{derived-rules-1}:
%
$$\begin{array}{rcl}
  \HAness_4 &=& \{∧_4,∧_5,∨_4,∨_5,\MP_0,\MP\} \\
  \HAness_5 &=& \HAness_1 ∪ \HAness_4 \\
  \HAness_7 &=& \HAness_1 ∪ \HAness_2 ∪ \HAness_4 \\
  \end{array}
$$

% (laop 8)
% (find-LATEX "2016-2-LA-logic.tex" "derived-rules")

%:
%:                   ---------\id\subst{P:=Q∧R}
%:                   Q∧R≤Q∧R
%:   ------∧_4  :=  ---------∧_1\subst{P:=Q∧R}
%:   Q∧R≤Q          Q∧R≤Q
%:
%:   ^and4a           ^and4b
%:
%:
%:                   ---------\id\subst{P:=Q∧R}
%:                   Q∧R≤Q∧R
%:   ------∧_5  :=  ---------∧_2\subst{P:=Q∧R}
%:   Q∧R≤R          Q∧R≤R
%:
%:   ^and5a           ^and5b
%:
%:                   ---------\id\subst{P:=P∨Q}
%:                   P∨Q≤P∨Q
%:   ------∨_4  :=  ---------∨_1\subst{R:=P∨Q}
%:   P≤P∨Q           P≤P∨Q
%:
%:   ^or4a            ^or4b
%:
%:                   ---------\id\subst{P:=P∨Q}
%:                   P∨Q≤P∨Q
%:   ------∨_5  :=  ---------∨_2\subst{R:=P∨Q}
%:   Q≤P∨Q           Q≤P∨Q
%:
%:   ^or5a            ^or5b
%:
%:                                                ---------\id
%:                                                Q{→}R≤Q{→}R 
%:                       ------------------\id    --------------→_1
%:                       Q∧(Q{→}R)≤(Q{→}R)∧Q     (Q{→}R)∧Q≤R
%:  -----------\MP_0 :=  ---------------------------------------\comp   (wrong)
%:  Q∧(Q{→}R)≤R                   Q∧(Q{→}R)≤R
%:
%:    ^MP0L                         ^MP0R
%:
%:                       
%:                       
%:                        ---------\id    
%:                        Q{→}R≤Q{→}R     
%:  -----------\MP_0 :=   --------------→_1
%:  Q∧(Q{→}R)≤R         (Q{→}R)∧Q≤R      
%:
%:    ^MP0L                  ^MP0R
%:
%:                          P≤Q  P≤Q{→}R
%:                          ------------    ----------\MP_0
%:  P≤Q  P≤Q{→}R          P≤Q∧(Q{→}R)      Q∧(Q{→}R)≤R
%:  ------------\MP  :=     --------------------------\comp
%:      P≤R                         P≤R
%:
%:      ^MPL                         ^MPR
%:
\begin{figure}[htbp]
\pu
$$\fbox{$
  \begin{array}{rcl}
  \ded{and4a} &:=& \ded{and4b}    \\\\
  \ded{and5a} &:=& \ded{and5b}    \\\\
  \ded{or4a}  &:=& \ded{or4b}     \\\\
  \ded{or5a}  &:=& \ded{or5b}     \\\\
  \ded{MP0L}  &:=& \ded{MP0R}     \\\\
  \ded{MPL}   &:=& \ded{MPR}      \\\\
  \end{array}
  $}$$
  \caption{Derived rules}
  \label{derived-rules-1}
\end{figure}

%:
%:
%:
%:                              ------∧_4
%:   P≤Q∧R            P≤Q∧R   Q∧R≤Q
%:   ------∧_1   :=   ----------------\comp
%:    P≤Q                  P≤Q      
%:
%:    ^and1a                ^and1b            
%:
%:                               ------∧_5     
%:   P≤Q∧R             P≤Q∧R   Q∧R≤R           
%:   ------∧_2   :=    ----------------\comp   
%:    P≤R                   P≤R                
%:                                             
%:    ^and2a                 ^and2b            
%:
%:
%:
%:                     ------∨_4
%:   P∨Q≤R            P≤P∨Q     P∨Q≤R      
%:   ------∨_1  :=    ------------------\comp  
%:    P≤R                   P≤R       
%:                               
%:    ^or1a                  ^or1b            
%:
%:                     ------∨_5              
%:   P∨Q≤R            Q≤P∨Q     P∨Q≤R         
%:   ------∨_2  :=    ------------------\comp 
%:    Q≤R                   Q≤R               
%:                                            
%:    ^or2a                  ^or2b            
%:
%:
%:                                 ------∧_4
%:                                 P∧Q≤P     P≤Q{→}R
%:                    ------∧_5    ------------------\comp
%:                    P∧Q≤Q         P∧Q≤Q{→}R
%:                    --------------------------∧_3    -------------\MP_0
%:  P≤Q{→}R              P∧Q≤Q∧(Q{→}R)              Q∧(Q{→}R)≤R
%:  ---------→_1  :=  ----------------------------------------------\comp
%:  P∧Q≤R                    P∧Q≤R
%:
%:  ^imp2a                    ^imp2b
%:
\begin{figure}[htbp]
\pu
$$\fbox{$
  \begin{array}{rcl} \\
  \ded{and1a}     &:=& \ded{and1b}    \\\\
  \ded{and2a}     &:=& \ded{and2b}    \\\\
  \ded{or1a}      &:=& \ded{or1b}     \\\\
  \ded{or2a}      &:=& \ded{or2b}     \\\\
  %\ded{imp2a}     &:=& \ded{imp2b}    \\\\
  \ded{imp2a}     &:=&       \\\\
     \multicolumn{3}{c}{\phantom{mm}\ded{imp2b}} \\\\
  \end{array}
  $}$$
  \caption{Derived rules (2)}
  \label{derived-rules-2}
\end{figure}


% (find-xpdfpage "~/LATEX/2010unilog-current.pdf" 52)

Note that the trees in the right of fig.\ref{derived-rules-1} are
$\HAness_3$-trees.

Fig.\ref{derived-rules-1} can be interpreted in two ways. The first
one is that it shows that
%
$$\begin{array}{rcl}
  [\HAness_3] &→& [∧_4],  \\ \relax
  [\HAness_3] &→& [∧_5],  \\ \relax
  [\HAness_3] &→& [∨_4],  \\ \relax
  [\HAness_3] &→& [∨_5],  \\ \relax
  [\HAness_3] &→& [\MP_0], \\ \relax
  [\HAness_3] &→& [\MP],   \\ \relax
  [\HAness_3] &→& [\HAness_4], \\ \relax
  [\HAness_3] &→& [\HAness_7]; \\
  \end{array}
$$
%
the second one is that it shows a way to replace occurrences of $∧_4$,
$∧_5$, $∨_4$, $∨_5$, $\MP_0$, $\MP$. Take an $\HAness_7$-tree, $T$.
Call it hypotheses $H_1, \ldots, H_n$, and its conclusion $C$, Replace
each occurrence of $∧_4$, $∧_5$, $∨_4$, $∨_5$, $\MP_0$, $\MP$ in $T$
by the corresponding tree in the right side of
fig.\ref{derived-rules-1}. The result is a new tree, $T'$, which is
``equivalent'' to $T$ in the sense of having the same hypotheses and
conclusion as $T$. So,
%
\begin{itemize}

\item every $\HAness_3$-tree is an $\HAness_7$-tree,

\item every $\HAness_7$-tree is ``equivalent'' to an $\HAness_3$-tree.

\end{itemize}

We call this trick ``derived rules'' --- the rules in $\HAness_4$ are
``derived'' from $\HAness_3$, and $\HAness_3$ and $\HAness_7$ are
``equivalent'' in the sense that they ``prove the same things''.

Now look at fig.\ref{derived-rules-2}. It has the rules in $\HAness_2$
at the left, and $\HAness_5$-trees at the right; it shows that
%
$$\begin{array}{rcl}
  [\HAness_5] &→& [∧_1],  \\ \relax
  [\HAness_5] &→& [∧_2],  \\ \relax
  [\HAness_5] &→& [∨_1],  \\ \relax
  [\HAness_5] &→& [∨_2],  \\ \relax
  [\HAness_5] &→& [→_2], \\ \relax
  [\HAness_5] &→& [\HAness_2], \\ \relax
  [\HAness_5] &→& [\HAness_7], \\
  \end{array}
$$
%
and it also shows how to take an $\HAness_7$-tree $T$ and replace
every occurrence of an $\HAness_4$-rule in it by an $\HAness_3$-tree,
producing an $\HAness_3$-tree $T'$ which is ``equivalent'' to $T$.
This means that:
%
\begin{itemize}

\item every $\HAness_5$-tree is an $\HAness_7$-tree,

\item every $\HAness_7$-tree is ``equivalent'' to an $\HAness_5$-tree,

\end{itemize}
%
and that $\HAness_3$, $\HAness_7$ and $\HAness_5$ are all ``equivalent''.







% \bsk
% 
% \def\ab{\ang{a,b}}
% \def\cd{\ang{c,d}}
% \def\ef{\ang{e,f}}
% 
% Let's establish a partial order on $\LR$: we say that $\ab ≤ \cd$ iff
% $a≤c$ and $b≤d$.
% 
% We define ``intervals'' in $\LR$ as:
% %
% $$[\ab,\ef] := \setofst {\cd ∈ \LR} {\ab ≤ \cd ≤ \ef}$$
% %
% If $\ab≤\ef$ then $[\ab,\ef]$ is a lozenge with $\ab$ at the bottom
% and $\ef$ at the top; if $\ab \not≤ \ef$ then $[\ab,\ef]$ is empty.
% 
% We say thay a subset $S \subset \LR$ is {\sl convex} when $\ab,\ef∈S$
% implies $[\ab,\ef]\subset S$.
% 
% \msk



% __        ___                         _         ______   _    _       ___ 
% \ \      / / |__   ___ _ __ ___    __| | ___   |__  / | | |  / \   __|__ \
%  \ \ /\ / /| '_ \ / _ \ '__/ _ \  / _` |/ _ \    / /| |_| | / _ \ / __|/ /
%   \ V  V / | | | |  __/ | |  __/ | (_| | (_) |  / /_|  _  |/ ___ \\__ \_| 
%    \_/\_/  |_| |_|\___|_|  \___|  \__,_|\___/  /____|_| |_/_/   \_\___(_) 
%                                                                           
% «where-do-ZHAs-come-from» (to ".where-do-ZHAs-come-from")
% Deleted (phap 11 "where-do-ZHAs-come-from")

% \section{Where do ZHAs come from?}
% \label  {where-do-ZHAs-come-from}
% 
% In almost any Topos Theory book we find the following facts:
% %
% % \begin{itemize}
% % \item ``The logic of a Heyting Algebras is intuitionistic'', i.e.:
% % \item HAs are the models for Intuitionistic Proposition Logic,
% % \item Topologies are HAs,
% % \item HAs are Cartesian Closed Categories (``CCCs''),
% % \item For any small category $\catC$ the functor category $\catC^\catTwo$ is a HA.
% % \end{itemize}
% % %
% % These other facts are less well-known:
% % %
% % \begin{itemize}
% % \item Finite topologies are Alexandroff,
% % \item Finite topologies are order topologies on finite DAGs.
% % \end{itemize}
% 
% 1) ``The logic of a Heyting Algebras is intuitionistic'', i.e.:
% 
% 2) HAs are the models for Intuitionistic Proposition Logic,
% 
% 3) Topologies are HAs,
% 
% 4) HAs are Cartesian Closed Categories (``CCCs''),
% 
% 5) For any small category $\catC$ the functor category $\catC^\catTwo$ is a HA.
% 
% \ssk
% 
% \noindent These other facts are less well-known:
% 
% 6) Finite topologies are Alexandroff,
% 
% 7) Finite topologies are order topologies on finite DAGs.
% 
% \ssk
% 
% In this section we will see how ZHAs appear as topologies on ``thin''
% finite DAGs. I've tried to structure the explanation to make it
% accessible to people who don't know the concepts above, and to make it
% an introduction to some of those concepts.



%  _____                 _             _           
% |_   _|__  _ __   ___ | | ___   __ _(_) ___  ___ 
%   | |/ _ \| '_ \ / _ \| |/ _ \ / _` | |/ _ \/ __|
%   | | (_) | |_) | (_) | | (_) | (_| | |  __/\__ \
%   |_|\___/| .__/ \___/|_|\___/ \__, |_|\___||___/
%           |_|                  |___/             
%
% «topologies» (to ".topologies")
\section{Topologies}
\label  {topologies}
% Good (phap 18 "topologies")

The best way to connect ZHAs to several standard concepts is by seeing
that ZHAs are topologies on certain finite sets --- actually on
2-column acyclical graphs (sec.\ref{2CGs}). This will be done here and
in the next few sections.

\msk

\noindent
A {\sl topology} on a set $X$ is a subset $\calU$ of $\Pts(X)$ that
contains the ``everything'' and the ``nothing'' and is closed by
binary unions and intersections and by arbitrary unions. Formally:

1) $\calU$ contains $X$ and $\void$,

2) if $P,Q∈\calU$ then $\calU$ contains $P∪Q$ and $P∩Q$,

3) if $\calV ⊂ \calU$ then $\calU$ contains $\bigcup \calV$.

A {\sl topological space} is a pair $(X,\calU)$ where $X$ is a set and
$\calU$ is a topology on $X$.

When $(X,\calU)$ is a topological space and $U∈\calU$ we say that $U$
is {\sl open} in $(X,\calU)$.

\ssk

% (find-dn6 "zhas.lua" "MixedPicture-zset-tests")
%L X = "1.2|.3.|4.5"
%L mp = MixedPicture.new({def="dagX", meta="s", scale="4.5pt"}, z):zfunction(X):output()
\pu

For example, let $X$ be the ZSet $\dagX•••••$, and let's use the
characteristic function notation from sec.\ref{positional} to denote
its subsets --- we write $X=\dagX11111$ and $\void=\dagX00000$ instead
of $X=\dagX•••••$ and $\void=\dagX·····$.

If $\calU = \left\{\dagX10000, \, \dagX01000, \, \dagX00100, \,
\dagX00010, \, \dagX00001 \right\}$ then $\calU⊂\Pts(X)$ but $\calU$
fails all the conditions in 1, 2, 3 above:

1) $X=\dagX11111 \not∈ \calU$ and $\void=\dagX00000 \not∈ \calU$

2) Let $P=\dagX10000∈\calU$ and $Q=\dagX01000∈\calU$. Then
$P∩Q=\dagX00000 \not∈ \calU$ and $P∪Q=\dagX11000 \not∈ \calU$.

3) Let $\calV = \left\{\dagX01000, \, \dagX00100, \, \dagX00010
\right\} ⊂ \calU$. Then $\bigcup\calV = \dagX01000 ∪ \dagX00100 ∪
\dagX00010 = \dagX01110 \not∈ \calU$.

\msk

Now let $K=\dagKite•••••$ and $\calU = \left\{
\dagKite00000, \,
\dagKite00001, \,
\dagKite00011, \,
\dagKite00111, \,
\dagKite01011, \,
\dagKite01111, \,
\dagKite11111
\right\}$. In this case $(K,\calU)$ is a topological space.

\bsk

Some sets have ``default'' topologies on them, denoted with
`$\Opens$'. For example, $\R$ is often used to mean the topological
space $(\R, \Opens(\R))$, where:
%
$$\Opens(\R) = \setofst {U⊂\R} {U \text{ is a union of open
    intervals}}.
$$
%
We say that a subset $U⊂\R$ is ``open in $\R$'' (``in the default
sense''; note that now we are saying just ``open in $\R$'', not ``open
in $(\R, \Opens(\R))$'') when $U$ is a union of open intervals, i.e.,
when $U∈\Opens(\R)$; but note that $\Pts(\R)$ and $\{\void,\R\}$ are
also topologies on $\R$, and:
%
$$\begin{array}{lclll}
  \{2,3,4\}    ∈\Pts(\R),     &\text{so}& \{2,3,4\} \text{ is open in } (\R,\Pts(\R)), \\
  \{2,3,4\}\not∈\Opens(\R),   &\text{so}& \{2,3,4\} \text{ is not open in } (\R,\Opens(\R)), \\
  \{2,3,4\}\not∈\{\void,\R\}, &\text{so}& \{2,3,4\} \text{ is not open in } (\R,\{\void,\R\}); \\
  \end{array}
$$
%
when we say just ``$U$ is open in $X$'', this means that:

1) $\Opens(X)$ is clear from the context, and

2) $U∈\Opens(X)$.



%  _____                               _________       _       
% |_   _|__  _ __  ___    ___  _ __   |__  / ___|  ___| |_ ___ 
%   | |/ _ \| '_ \/ __|  / _ \| '_ \    / /\___ \ / _ \ __/ __|
%   | | (_) | |_) \__ \ | (_) | | | |  / /_ ___) |  __/ |_\__ \
%   |_|\___/| .__/|___/  \___/|_| |_| /____|____/ \___|\__|___/
%           |_|                                                
%
% «topologies-on-ZSets» (to ".topologies-on-ZSets")
\section{The default topology on a ZSet}
\label  {topologies-on-ZSets}
% Good (phap 19 "topologies-on-ZSets")

Let's define a default topology $\Opens(D)$ for each ZSet $D$.

\msk

For each ZSet $D$ we define $\Opens(D)$ as:
%
%$$\label{O(D)}
%  \Opens(D) := \setofst {U⊂D} {∀((x,y),(x',y')){∈}\BPM(D). \; ((x,y){∈}U → (x',y'){∈}U)}
%$$
%
$$\label{O(D)}
  \begin{array}{rcr}
    \Opens(D) &:=& \{\, U⊂D \;|\; ∀((x,y),(x',y'))∈\BPM(D). \qquad\quad \\
                &&                 (x,y)∈U → (x',y')∈U \,\} \\
  \end{array}
$$
%
whose visual meaning is this. Turn $D$ into a ZDAG by adding arrows
for the black pawns moves (sec.\ref{ZDAGs}), and regard each subset
$U⊂D$ as a board configuration in which the black pieces may move down
to empty positions through the arrows. A subset $U$ is ``stable'' when
no moves are possible because all points of $U$ ``ahead'' of a black
piece are already occupied by black pieces; a subset $U$ is
``non-stable'' when there is at least one arrow
$((x,y),(x',y'))∈\BPM(D)$ in which $(x,y)$ had a black piece and
$(x',y')$ is an empty position.

In our two notations for subsets (sec.\ref{positional}) a subset $U⊂D$
is unstable when it has an arrow like `$•→·$' or `$1→0$'; remember
that black pawn moves arrows go down. A subset $U⊂D$ is stable when
none of its `$•$'s or `$1$'s can move down to empty positions.

% A subset $U⊂D$ is open iff it is stable.

``Open'' is the same as ``stable''. $\Opens(D)$ is the set of stable
subsets of $D$.

\msk

Some examples:

$\dagKite00100$ is not open because it has a 1 above a 0,

$\Opens(\dagKite•••••) = \left\{
\dagKite00000, \,
\dagKite00001, \,
\dagKite00011, \,
\dagKite00111, \,
\dagKite01011, \,
\dagKite01111, \,
\dagKite11111
\right\}$,

$\Opens(\dagHouse•••••) = \left\{
\dagHouse00000, \,
\dagHouse00001, \,
\dagHouse00010, \,
\dagHouse00011, \,
\dagHouse00101, \,
\dagHouse00111, \,
\dagHouse01010, \,
\dagHouse01011, \,
\dagHouse01111, \,
\dagHouse11111
\right\}$.

\msk


The definition of $\Opens(D)$ above can be generalized to any directed
graph. If $(A,R)$ is a directed graph, then $(A,\Opens_R(A))$ is a
topological space if we define:
%
$$\Opens_R(A) := \setofst{U⊆A}{∀(a,b)∈R.\;(a∈U→b∈U)}$$
%
The two definitions are related as this: $\Opens(D) =
\Opens_{\BPM(D)}(D)$.

Note that we can see the arrows in $\BPM(D)$ or in $R$ as {\sl
  obligations} that open sets must obey; each arrow $a→b$ says that
every open set that contains $a$ is forced to contain $b$ too.


%  _____                                           _               
% |_   _|__  _ __  ___    __ _ ___    ___  _ __ __| | ___ _ __ ___ 
%   | |/ _ \| '_ \/ __|  / _` / __|  / _ \| '__/ _` |/ _ \ '__/ __|
%   | | (_) | |_) \__ \ | (_| \__ \ | (_) | | | (_| |  __/ |  \__ \
%   |_|\___/| .__/|___/  \__,_|___/  \___/|_|  \__,_|\___|_|  |___/
%           |_|                                                    
%
% «topologies-as-partial-orders» (to ".topologies-as-partial-orders")
\section{Topologies as partial orders}
\label  {topologies-as-partial-orders}
% Good (phap 19 "topologies-as-partial-orders")

For any topological space $(X,\Opens(X))$ we can regard $\Opens(X)$ as
a partial order, ordered by inclusion, with $\void$ as its minimal
element and $X$ as its maximal element; we denote that partial order
by $(\Opens(X),⊆)$.

Take any ZSet $D$. The partial order $(\Opens(D),⊆)$ will {\sl
  sometimes} be a ZHA when we draw it with $\void$ at the bottom, $D$
at the top, and inclusions pointing up, as can be seen in the three
figures below; when $D=\dagHouse•••••$ or $D=\dagGuill••••••$ the
result is a ZHA, but when $D=\dagW•••••$ it not.

Let's write ``$V⊂_1U$'' for ``$V⊆U$ and $V$ and $U$ differ in exactly
one point''. When $D$ is a ZSet the relation $⊆$ on $\Opens(D)$ is the
transitive-reflexive closure of $⊂_1$, and $(\Opens(D),⊂_1)$ is easier
to draw than $(\Opens(D),⊆)$.

% (find-angg ".emacs" "find-planarhas")
% (find-planarhas       "background-story")
% (find-planarhaspage 8 "Background story")
% (find-planarhastext 8 "Background story")
% (find-planarhas       "background-story-2")
% (find-planarhaspage 9 "Background story, 2")
% (find-planarhastext 9 "Background story, 2")

%R local house, ohouse = 2/  #1  \, 7/       !h11111                     \
%R                        |#2  #3|   |              !h01111              |
%R                        \#4  #5/   |       !h01011       !h00111       |
%R                                   |!h01010       !h00011       !h00101|
%R                                   |       !h00010       !h00001       |
%R                                   \              !h00000              /
%R  house:tomp({def="zfHouse#1#2#3#4#5", scale="5pt",   meta="s"}):addcells():output()
%R  house:tomp({def="zdagHouseMicro", scale="6.8pt", meta="t"}):addbullets():addarrows():output()
%R  house:tomp({def="zdagHouse",      scale="15pt",  meta=nil}):addbullets():addarrows():output()
%R ohouse:tomp({def="zdagOHouse",     scale="25pt",  meta=nil}):addcells():addarrows("w"):output()
%R ohouse:tozmp({def="zdagohouse",    scale="12pt",  meta="s"}):addlrs():addarrows("w"):output()

%R local guill, oguill = 2/  #1  #2\, 8/                !g111111                \
%R                        |#3  #4  |   |        !g101111        !g011111        |
%R                        \  #5  #6/   |                !g001111        !g010111|
%R                                     |        !g001011        !g000111        |
%R                                     |!g001010        !g000011                |
%R                                     |        !g000010        !g000001        |
%R                                     \                !g000000                /
%R  guill:tomp({def="zfGuill#1#2#3#4#5#6", scale="3.5pt", meta="s"}):addcells():output()
%R  guill:tomp({def="zdagGuill",    scale="7pt", meta="t"}):addbullets():addarrows():output()
%R  guill:tomp({def="zdagGuill",    scale="13pt",  meta=nil}):addbullets():addarrows():output()
%R oguill:tomp({def="zdagOGuill",   scale="25pt",  meta=nil}):addcells():addarrows("w"):output()
%R oguill:tozmp({def="zdagoguill",  scale="12pt",  meta="s"}):addlrs():addarrows():output()
%R
{\pu
$$
  \def\h{\zfHouse}
  (H,\BPM(H)) = \zdagHouse
  \qquad
  (\Opens(H), ⊂_1) = \zdagOHouse
$$

$$
  \def\g{\zfGuill}
  (G,\BPM(G)) = \zdagGuill
  \qquad
  (\Opens(G), ⊂_1) = \zdagOGuill
$$
}
%
%R local w, womit, W =
%R 2/#1  #2  #3\, 2/    a     \, 7/              !w11111              \
%R  \  #4  #5  /   |  b c d   |   |       !w11011!w10111!w01111       |
%R                 |  e f g   |   |       !w10011!w01011!w00111       |
%R                 |h   i   j |   |!w10010       !w00011       !w00101|
%R                 |  k   l   |   |       !w00010       !w00001       |
%R                 \    m     /   \              !w00000              /
%R w:tomp({def="zfW#1#2#3#4#5", scale="3.5pt", meta="s"}):addcells():output()
%R w:tomp({def="zfWbig#1#2#3#4#5", scale="25pt", meta=nil}):addcells():addarrows("w"):output()
%R w:tomp({def="zdagW",  scale="13pt", meta=nil}):addbullets():addarrows() :output()
%R W:tomp({def="zdagOW", scale="25pt", meta=nil}):addcells():addarrowsexcept("w", "(2,4)0"):output()
%
$$
  \pu
  \def\w{\zfW}
  (W,\BPM(W)) = \zdagW
  \qquad
  (\Opens(W), ⊂_1) = \zdagOW
$$

We can formalize a ``way to draw $\Opens(D)$ as a ZHA'' (or ``...as a
ZDAG'') as a bijective function $f$ from a ZHA (or from a ZSet) $S$ to
$\Opens(D)$ that creates a perfect correspondence between the white
moves in $S$ and the ``$V⊂_1U$-arrows''; more precisely, an $f$ such
that this holds: if $a,b∈S$ then $(a,b)∈\WPM(S)$ iff $f(a)⊂_1f(b)$.

Note that the {\sl number of elements} in an open set corresponds to
the {\sl height} where it is drawn; if $f:S→\Opens(D)$ is a way to
draw $\Opens(D)$ as a ZHA or a ZDAG then $f$ takes points of the form
$(\_\_,y)$ to open sets with $y$ elements, and if $f:S→\Opens(D)$ is a
way to draw $\Opens(D)$ as a ZHA (not a ZDAG!) then we also have that
$f((0,0)) = \void ∈ \Opens(D)$.

\msk

The diagram for $(\Opens(H), ⊂_1)$ above is a way to draw $\Opens(H)$
as a ZHA.

The diagram for $(\Opens(G), ⊂_1)$ above is a way to draw $\Opens(G)$
as a ZHA.

The diagram for $(\Opens(W), ⊂_1)$ above is {\sl not} a way to draw
$\Opens(W)$ as a ZSet. Look at $\dagW01011$ and $\dagW10111$ in the
middle of the cube formed by all open sets of the form $\dagW abc11$.
We don't have $\dagW01011 ⊂_1 \dagW10111$, but we do have a white pawn
move (not draw in the diagram!) from $f¹(\dagW01011)$ to
$f¹(\dagW10111)$. We say that a ZSet is {\sl thin} when it doesn't
have three independent points.

\msk

Every time that a ZSet $D$ has three independent points, as in $W$, we
will have a situation like in $(\Opens(W), ⊂_1)$; for example, if
$B=\dagHex•••••••$ then the open sets of $B$ of the form
$\dagHex00abc11$ form a cube.

% \bsk
% \bsk
% \bsk
% 
% 
% The definition for $\Opens(D)$ in page \pageref{O(D)} can be generalized
% to any directed graph. If $(A,R)$ is a directed graph, then
% %
% $$\Opens(A,R) := \setofst {U⊆A} {∀(a,b){∈}R.\; (a{∈U}→b{∈U})},$$
% %
% is the {\sl set of down-sets} on $A$ (see DaveyPriestley, pp.20-21).
% There are some directed graphs, 




%  ____   ____ ____     
% |___ \ / ___/ ___|___ 
%   __) | |  | |  _/ __|
%  / __/| |__| |_| \__ \
% |_____|\____\____|___/
%                       
% «2CGs» (to ".2CGs")
\section{2-Column Graphs}
\label  {2CGs}
% Good (phap 21 "2CGs")

\def\LC {\mathsf{LC}}
\def\RC {\mathsf{RC}}
\def\TCG{\mathsf{2CG}}
\def\pile{\mathsf{pile}}
\def\l#1{#1\_}
\def\r#1{\_#1}
\def\ltor#1#2{#1\_{\to}\_#2}
\def\lotr#1#2{#1\_{\ot}\_#2}
\def\ltol#1#2{#1\_{\to}#2\_}
\def\rtor#1#2{\_#1{\to}\_#2}

Note: in this section we will manipulate objects with names like $1\_,
2\_, 3\_, \ldots,$ $\_1, \_2, \_3, \ldots$; here are two good ways to
formalize them:
%
$$\begin{array}{cc}
  \vdots & \vdots \\
  4\_=(0,4) & \_4=(1,4) \\
  3\_=(0,3) & \_3=(1,3) \\
  2\_=(0,2) & \_2=(1,2) \\
  1\_=(0,1) & \_1=(1,1) \\
  \end{array}
  \quad
  \text{or}
  \quad
  \begin{array}{cc}
  \vdots & \vdots \\
  4\_=\verb|"4_"| & \_4=\verb|"_4"| \\
  3\_=\verb|"3_"| & \_3=\verb|"_3"| \\
  2\_=\verb|"2_"| & \_2=\verb|"_2"| \\
  1\_=\verb|"1_"| & \_1=\verb|"_1"| \\
  \end{array},
$$
%
where \verb|"1_"|, \verb|"_2"|, \verb|""|, \verb|"Hello!"|, etc are
strings.

\msk

We define:
%
$$\begin{array}{ccc}
  LC(l) &:=& \{1\_, 2\_, \ldots, l\_\} \\
  RC(r) &:=& \{\_1, \_2, \ldots, \_r\}, \\
  \end{array}
$$
%
which generate a ``left column'' of height $l$ and a ``right column''
of height $r$.

A {\sl description for a 2-column graph} (a ``D2CG'') is a 4-tuple
$(l,r,R,L)$, where $l,r∈\N$, $R⊂\LC(l)×\RC(r)$, $L⊂\RC(r)×\LC(l)$; $l$
is the height of the left column, $r$ is the height of the right
column, and $R$ and $L$ are set of intercolumn arrows (going right and
left respectively).

The operation $\TCG$ (in a sans-serif font) generates a directed graph
from a D2CG:

$$\begin{array}{rcl}
  \TCG(l,r,R,L) &:=& \left(\LC(l)∪\RC(r),
                           \csm{\{\ltol{l}{(l-1)}, \;\ldots, \;\ltol21\}∪ \\
                                \{\rtor{r}{(r-1)}, \;\ldots, \;\rtor21\}∪ \\
                                R∪L
                               }
                     \right)
  \end{array}
$$

For example,
%
$$\begin{array}{rcl}
  \TCG(3,4,\csm{\ltor34, \\ \ltor23},
           \csm{\lotr22, \\ \lotr12})
     &:=& \left(\csm{\phantom{\l4,}\; \l3, \; \l2, \; \l1, \\
                              \r4, \; \r3, \; \r2, \; \r1  \\
                    },
                \csm{\phantom{\rtor43,\;}\ltol32,\; \ltol21, \\
                     \rtor43         ,\; \rtor32,\; \rtor21, \\
                       \ltor34,\;\ltor23, \\
                       \lotr22,\;\lotr12  \\
                    }
          \right)
  \end{array}
$$
%
which is:
%
%L tcg_big    = {scale="10pt", meta="p",   dv=2, dh=3, ev=0.32, eh=0.2}
%L tcg_medium = {scale= "8pt", meta="p s", dv=1, dh=2, ev=0.32, eh=0.25}
%L tcgnew = function (opts, def, str)
%L     return TCG.new(opts, def, unpack(split(str, "[ %d]+")))
%L   end
%L tcgbig = function (def, spec) return tcgnew(tcg_big,    def, spec or tcg_spec) end
%L tcgmed = function (def, spec) return tcgnew(tcg_medium, def, spec or tcg_spec) end
%L
%L tcg = TCG.new(tcg_big,    "foo", 3, 4, "34 23", "22 12"):lrs():vs():hs():output()
$$\pu
  \foo
$$
%
we will usually draw that more compactly, by omitting the intracolumn
(i.e., vertical) arrows:
%
%L tcg_spec = "3, 4; 34 23, 22 12"
%L tcgmed("foo"):lrs():hs():output()
%L tcgmed("bar"):bus():hs():output()
$$\pu
  \foo
  \quad
  \text{or}
  \quad
  \bar.
$$

A {\sl 2-column graph} (a ``2CG'') is a directed graph that is of the
form $\TCG(l,r,R,L)$. We will often say $(P,A) = \TCG(l,r,R,L)$, where
the $P$ stand for ``points'' and $A$ for ``arrows''.

A {\sl 2-column acyclical graph} (a ``2CAG'') is a 2CG that doesn't
have cycles. If $L$ has an arrow that is the opposite of an arrow in
$R$, this generates a cycle of length 2; if $R$ has an arrow
$\ltor{l}{r'}$ and $L$ has an arrow $\lotr{l'}{r}$, where $l≤l'$ and
$r≤r'$, this generates a cycle that can have a more complex shape ---
a triangle or a bowtie. For example,

%L tcg_spec = "4, 3; 32, 32"
%L tcgbig("foo"):lrs():vs():hs():output()
%L tcg_spec = "3, 4; 14, 32"
%L tcgbig("bar"):lrs():vs():hs():output()
$$\pu
  \foo
  \quad
  \text{and}
  \quad
  \bar.
$$




%  _____                               ____   ____ ____     
% |_   _|__  _ __  ___    ___  _ __   |___ \ / ___/ ___|___ 
%   | |/ _ \| '_ \/ __|  / _ \| '_ \    __) | |  | |  _/ __|
%   | | (_) | |_) \__ \ | (_) | | | |  / __/| |__| |_| \__ \
%   |_|\___/| .__/|___/  \___/|_| |_| |_____|\____\____|___/
%           |_|                                             
%
% «topologies-on-2CGs» (to ".topologies-on-2CGs")
\section{Topologies on 2CGs}
\label  {topologies-on-2CGs}
% Good (phap 22 "topologies-on-2CGs")

\catcode`↓=13 \def↓{\dnto}
\catcode`↓=13 \def↓{{\dnto}}

In this section we will see that ZHAs are topologies on 2CAGs.

\msk

\noindent
Let $(P,A) = \TCG(l,r,R,L)$ be a 2-column graph.

\noindent
What happens if we look at the open sets of $(P,A)$, i.e., at
$\Opens_A(P)$? Two things:

1) every open set $U∈\Opens_A(P)$ is of the form $\LC(a)∪\LC(b)$,

2) arrows in $R$ and $L$ forbids some `$\LC(a)∪\LC(b)$'s from being
open sets.

\noindent
In order to understand that we need to introduce some notations for
``piles''.

\msk

The function
%
$$\pile(\ang{a,b}) := \LC(a)∪\LC(b)$$
%
converts an element $\ang{a,b}∈\LR$ into a pile of elements in the
left column of height $a$ and a pile of elements in the right column
of height $b$. We will write subsets of the points of a 2CG using a
positional notation with arrows. So, for example, if $(P,A) =
\TCG(3,4,\{\ltor23\}, \{\lotr22\})$ then
%
%L tcg_spec = "3, 4; 23, 22"
%L tcgmed("foo"):lrs():hs():output()
%L tcgmed("bar"):cs("110", "1000"):hs():output()
$$\pu
  (P,A)=\foo
  \qquad
  \text{and}
  \qquad
  \pile(21) = \bar \;\; \text{(as a subset of $P$)}.
$$


Note that $\pile(21)$ is not open in $(P,\Opens_A(P))$, as it has an
arrow `$1→0$'. In fact, the presence of the arrow $\{\ltor23\}$ in $A$
means that all piles of the form
%
%L tcgmed("bar"):cs("11?", "??00"):hs():output()
$$\pu
  \bar
$$
%
are not open, the presence of the arrow $\{\lotr22\}$ means that the
piles of the form
%
%L tcgmed("bar"):cs("?00", "11??"):hs():output()
$$\pu
  \bar
$$
%
are not open sets.

The effect of these prohibitions can be expressed nicely with
implications. If
%
$$(P,A) = \TCG(l,r,\csm{\ltor cd, \\ \ltor ef}, \csm{\lotr gh, \\ \lotr ij})$$
%
then
%
$$\Opens_A(P) = \setofst {\pile(ab)}
                         {a∈\{0,\ldots,l\},
                          b∈\{0,\ldots,r\},
                          \psm {a≥c → b≥d \; ∧ \\
                                a≥e → b≥f \; ∧ \\
                                a≥g ← b≥h \; ∧ \\
                                a≥i ← b≥j \;\;\; \\
                              }
                         }
$$

Let's use a shorter notation for comparing 2CGs and their topologies:
%
%L tcg_spec = "4, 5; 32, 14 25"
%L tcgbig("foo"):lrs():hs():vs():output()
%L z = LR.fromtwocolgraph(4, 5, "32", "14 25"):zha()
%L MixedPicture.new({def="bar", scale="10pt", meta=nil}, z):addlrs():output()
$$
  \pu
  \Opens \foo \quad = \quad \bar
  % \bigthinge
$$
%
the arrows in $R$ and $L$ and the values of $l$ and $r$ are easy to
read from the 2CG at the left, and we omit the `$\pile$'s at the
right.

\msk

In a situation like the above we say that the 2CG in the
`$\Opens(\ldots)$' {\sl generates} the ZHA at the right. There is an
easy way to draw the ZHA generated by a 2CG, and a simple way to find
the 2CG that generates a given ZHA. To describe them we need two new
concepts.

If $(A,R)$ is a directed graph and $S⊂A$ then $↓S$ is the smallest
open set in $\Opens_R(A)$ that contains $S$. If $(A,R)$ is a ZDAG with
black pawns moves as its arrows, think that the `1's in $S$ are
painted with a black paint that is very wet, and that that paint flows
into the `0's below; the result of $↓S$ is what we get when all the
`0's below `1's get painted black. For example: $↓\dagGuill010000 =
\dagGuill010111$. When $(P,A)$ is a 2CG and $S⊆P$, we have to think
that the paint flows along the arrows, even if some of the intercolumn
arrows point upward. For example:
%
%L tcg_spec = "3, 4; 23, 22"
%L tcgmed("foo"):cs("100", "0100"):hs():output()
%L tcgmed("bar"):cs("110", "1110"):hs():output()
%
$$\pu
  ↓\foo = \bar
$$
%
and if $S$ consists of a single point, $S=\{s\}$, then we may write
$↓s$ instead of $↓\{s\} = ↓S$. In the 2CG above, we have (omitting the
`$\pile$'s):
%
%L tcgmed("foo"):cs("000", "0100"):hs():output()
%L tcgmed("bar"):cs("110", "1110"):hs():output()
%
$$\pu
  ↓\r2 \;=\; ↓\{\r2\} =\;
  ↓\foo = \bar = \;23,
  \quad
  \text{and}
  \quad
  \sm{          && ↓\r4=24, \\
      ↓\l3=33, && ↓\r3=23, \\
      ↓\l2=23, && ↓\r2=23, \\
      ↓\l1=10, && ↓\r1=01, \\
      }
$$

The second concept is this: the ``generators'' of a ZDAG $D$ with
white pawns moves as its arrows --- or of a ZHA $D$ --- are the points
of $D$ that have exactly one white pawn move pointing {\sl to} them
(not {\sl going out of} them).

\msk

If $(P,A)$ is a 2CAG, then $\Opens_A(P)$ is a ZHA, and `$↓$' is a
bijection from $P$ to the generators of $\Opens_A(P)$; for example:
%L tcg_spec = "4, 5; 32, 14 25"
%L tcgbig("foo"):lrs():hs():vs():output()
%L z = LR.fromtwocolgraph(4, 5, "32", "14 25"):zha()
%L MixedPicture.new({def="bar", scale="10pt", meta=nil}, z):addlrs():output()
%L MixedPicture.new({def="poo", scale="10pt", meta=nil}, z):addgens():output()
$$
  \pu
  \Opens \foo \quad = \quad \bar
  \qquad
  \qquad
  \poo
  % \bigthinge
$$
%
but if $(P,A)$ is a 2CG with cycles, then $\Opens_A(P)$ is not a ZHA
because each cycle generates a ``gap'' that disconnects the points of
$\Opens_A(P)$. We just saw an example of a 2CG with a cycle in which
$↓\l2 = 23 = ↓\r3 = ↓\r2$; look at its topology:
%
%R tcg_spec = "3, 4; 23, 22"
%R tcgbig("foo"):lrs():vs():hs():output()
%R local top =
%R 2/    34  \
%R  |  33  24|
%R  |    23  |
%R  |        |
%R  |        |
%R  |  11    |
%R  |10  01  |
%R  \  00    /
%R top:tomp({def="bar", scale="10pt"}):addcells():output()
%
$$\pu
  \Opens\foo \quad = \quad \bar
$$



%  ______   _    _            __   __     ____   ____    _    ____     
% |__  / | | |  / \   ___    / /   \ \   |___ \ / ___|  / \  / ___|___ 
%   / /| |_| | / _ \ / __|  / /_____\ \    __) | |     / _ \| |  _/ __|
%  / /_|  _  |/ ___ \\__ \  \ \_____/ /   / __/| |___ / ___ \ |_| \__ \
% /____|_| |_/_/   \_\___/   \_\   /_/   |_____|\____/_/   \_\____|___/
%                                                                      
% «converting-ZHAs-2CAGs» (to ".converting-ZHAs-2CAGs")
\section{Converting between ZHAs and 2CAGs}
\label  {converting-ZHAs-2CAGs}
% Good (phap 25 "converting-ZHAs-2CAGs")

Let's now see how to start from a 2CAG and produce its topology (a
ZHA) quickly, and how to find quickly the 2CAG that generates a given
ZHA.

\msk

{\sl From 2CAGs to ZHAs.} Let $(P,A) = \TCG(l,r,R,L)$ be a 2CAG, and
call the ZHA generated by it $H$. Then the top point of $H$ is $lr$,
its bottom point is 00. Let $C := \{00, ↓\l1, ↓\l2, \ldots, ↓\l l,
lr\}$; then $C$ has some of the points of the left wall
(sec.\ref{ZHAs}) of $H$, but usually not all. To ``complete'' $C$,
apply this operation repeatedly: if $ab∈C$ and $ab≠lr$, then test if
either $(a+1)b$ or $a(b+1)$ are in $C$; if none of them are, add
$a(b+1)$, which is northeast of $ab$. When there is nothing else to
add, then $C$ is the whole of the left wall of $H$. For the right
wall, start with $D := \{00, ↓\r1, ↓\r2, \ldots, ↓\r r, lr\}$, and for
each $ab∈C$ with $ab≠lr$, test if either $(a+1)b$ or $a(b+1)$ are in
$D$; if none of them are, add $(a+1)b$, which is northwest of $ab$.
When there is nothing else to add, then $D$ is the whole of the right
wall of $H$.

In the acyclic example of the last section this yields:
%
$$\begin{array}{rcl}
  C &=& \{00, ↓\l1, ↓\l2, ↓\l3, ↓\l4, lr\} \\
    &=& \{00, 10, 20, 32, 42, 45\} \\
    &\squigto& \{00, 10, 20, 21, 22, 32, 42, 43, 44, 45\}, \\
  D &=& \{00, ↓\r1, ↓\r2, ↓\r3, ↓\r4, ↓\r5, lr\} \\
    &=& \{00, 01, 02, 03, 14, 25, 45\} \\
    &\squigto& \{00, 01, 02, 03, 13, 14, 24, 25, 35, 45\}. \\
  \end{array}
$$
%
and the ZHA is everything between the ``left wall'' $C$ and the
``right wall'' $D$.

\msk

{\sl From ZHAs to 2CAGs.} Let $H$ be a ZHA and let $lr$ be its top
point. Form the sequence of its left wall generators (the generators
of $H$ in which the arrow pointing to them points northwest) and the
sequence of its right wall generators (the generators of $H$ in which
the arrow pointing to them points northeast). Look at where there are
``gaps'' in these sequences; each gap in the left wall generators
becomes an intercolumn arrow going right, and each gap in the right
wall generators becomes an intercolun arrow going left. In the acyclic
example of the last section, this yields:
%
$$\def\gap#1{\!\!\!\!\!\text{(gap, arrow $#1$)}}
  \def\gap#1{\!\!\!\!\!\text{(gap becomes $#1$)}}
  \def\nogap{\!\!\!\!\!\text{(no gap)}}
  %
  \begin{array}{lllllll}
           &              && \r5 = 25 & \\
           &              &&          & \gap{\lotr25} \\
  \l4 = 42 &              && \r4 = 14 & \\
           &\nogap        &&          & \gap{\lotr14} \\
  \l3 = 32 &              && \r3 = 03 & \\
           &\gap{\ltor32} &&          & \nogap        \\
  \l2 = 20 &              && \r2 = 02 & \\
           &\nogap        &&          & \nogap        \\
  \l1 = 10 &              && \r1 = 01 & \\
  \end{array}
$$
%
We know $l$ and $r$ from the top point of the ZHA, and from the gaps
we get $R$ and $L$; the 2CAG that generates this ZHA is:
%
$$(4,5,\cmat{\ltor32},\cmat{\lotr25, \\ \lotr14}).$$

% (find-planarhas        "2-column-graphs")
% (find-planarhaspage 10 "2-Column graphs")
% (find-planarhastext 10 "2-Column graphs")

\msk

{\sl Theorem.} The two operations above are inverse to one another in
the following sense. If we start with a ZHA $H$, produce its 2CAG, and
produce a ZHA $H'$ from that, we get the same ZHA: $H'=H$. In the
other direction, if we start with a 2CAG $(P,A) = \TCG(l,r,R,L)$,
produce its ZHA, $H$, and then obtain a 2CAG $(P',A') =
\TCG(l',r',R',L')$ from $H$, we get back the original 2CAG {\sl if and
  only if it didn't have any superfluous arrows}; if the original 2CAG
had superflous arrows then then new 2CAG will have $l'=l$, $r'=r$, and
$R'$ and $L'$ will be $R$ and $L$ minus these ``superfluous arrows'',
that are the ones that can be deleted without changing which 2-piles
are forbidden. For example:
%
%L tcg_spec = "4, 4; 44 43 32 22, "
%L tcgbig("fooa"):lrs():vs():hs():output()
%L tcg_spec = "4, 4; 44       22, "
%L tcgbig("foob"):lrs():vs():hs():output()
%L mpnew({def="foo", meta="10pt"}, "12RR3L21L"):addlrs():output()
%
$$\pu
  % \fooa \quad\sa\quad \foo \quad\sa\quad \foob
  \begin{array}{rcccl}
  \fooa &\sa& \foo &\sa& \foob \\
  % R =\cmat{\ltor44, \\ \ltor43, \\ \ltor32, \\ \ltor22} &&&&
  % R'=\cmat{\ltor44, \\                         \ltor22} \\
  \end{array}
$$
%
In this case we have $R =\csm{\ltor44, \\ \ltor43, \\ \ltor32,
  \\ \ltor22}$ and $R'=\csm{\ltor44, \\ \ltor22}$.





\newpage

%  ____  _              
% |  _ \(_) ___ ___ ___ 
% | |_) | |/ __/ __/ __|
% |  __/| | (_| (__\__ \
% |_|   |_|\___\___|___/
%                       
% «piccs-and-slashings» (to ".piccs-and-slashings")
\section{Piccs and slashings}
\label  {piccs-and-slashings}
% Good (phap 28 "piccs-and-slashings")

\def\eqP{\underset{P}{\sim}}
\def\eqJ{\underset{J}{\sim}}
\def\eqP{\underset{\scriptscriptstyle P}{\sim}}
\def\eqJ{\underset{\scriptscriptstyle J}{\sim}}
\def\eqP{\sim_P}
\def\eqJ{\sim_J}
\def\eqL{\sim_L}
\def\eqR{\sim_R}
\def\eqS{\sim_S}
\def\eqF{\sim_F}
\def\eqQ{\sim_Q}

A picc (``partition into contiguous classes'') of an interval
$I=\{0,\ldots,n\}$ is a partition $P$ of $I$ that obeys this
condition (``picc-ness''):
%
$$∀a,b,c∈\{0,\ldots,n\}.\; (a<b<c \;\;\&\;\; a \eqP c) → (a \eqP b \eqP c).$$
%
So $P = \{\{0\},\{1,2,3\},\{4,5\}\}$ is a picc of $\{0,\ldots,5\}$,
and $P' = \{\{0\},\{1,2,4,5\},\{3\}\}$ is a partition of
$\{0,\ldots,5\}$ that is not a picc.

A short notation for piccs is this:
%
$$0|123|45 \equiv \{\{0\},\{1,2,3\},\{4,5\}\}$$
%
we list all digits in the ``interval'' in order, and we put bars to
indicate where we change from one equivalence class to another.

\msk

Let's define a notation for ``intervals'' in $\LR$,
%
$$[ab,ef]
  :=
  [\ang{a,b},\ang{e,f}]
  :=
  \setofst {\ang{c,d}∈\LR} {a≤c≤e \;\;\&\;\; b≤d≤f},
$$
%
Note that it can be adapted to define ``intervals'' in a ZHAs $H$:
%
$$\begin{array}{rcl}
  [ab,ef]∩H & := & \setofst {\ang{c,d}∈\LR} {a≤c≤e \;\;\&\;\; b≤d≤f}∩H \\
            &  = & \setofst {\ang{c,d}∈H} {a≤c≤e \;\;\&\;\; b≤d≤f}. \\
  \end{array}
$$

A {\sl slashing} $S$ on a ZHA $H$ with top element $ab$ is a pair of
piccs, $S=(L,R)$, where $L$ is a picc on $\{0,\ldots,a\}$ and $R$ is a
picc on $\{0,\ldots,b\}$; for example, $S=(4321/0,\, 0123∖45∖6)$
is a slashing on $[00,46]$. We write the bars in $L$ as `$/$'s and the
bars in $R$ as `$∖$' as a reminder that they are to be interpreted
as northeast and northwest ``cuts'' respectively; $S=(4321/0,\,
0123∖45∖6)$ is interpreted as the diagram at the left below, and
it ``slashes'' $[00,46]$ and the ZHA at the right below as:
%
%L -- local putl, putr, cutl, cutr
%L -- mp = MixedPicture.new {scale="7pt", def="foo"}
%L -- putl = function (n) mp:put(v((n+1).."0"), n.."", n.."") end
%L -- putr = function (n) mp:put(v("0"..(n+1)), n.."", n.."") end
%L -- cutl = function (n) mp:addcuts(format("%d0w-%d0n", n+1, n+1)) end
%L -- cutr = function (n) mp:addcuts(format("0%dn-0%de", n+1, n+1)) end
%L -- putl(0); putl(1); putl(2); putl(3); putl(4)
%L -- putr(0); putr(1); putr(2); putr(3); putr(4); putr(5); putr(6)
%L -- cutl(0)
%L -- cutr(3); cutr(5)
%L -- mp:print():output()
%L
%L -- (find-LATEX "dednat6/zhas.lua" "VCuts-tests")
%L local vc = VCuts.new({scale="7pt", def="foo"}, 4, 6)
%L vc:cutl(0)
%L vc:cutr(3):cutr(5)
%L vc:output()
%L
%L mp = mpnew({def="ZQuot"},      "12345RR4321"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp = mpnew({def="ZQuotients"}, "1R2R3212RL1"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp:print()
%
%                /  \
%                 46
%             /  \     \
%              45    36
%             \     \     \
%                 35    26
%             /        \  /
%              34    25
%             \        /
%                 24
%             /  \     \
%              23    14
%          /        \  /  \
%           22    13    04
%          \        /  \  /
%              12    03
%          /     /     /
%           11    02
%          \  /     /
%              01
%          /     /
%           00
% 4321/0   \  /           0123\45\6
%
$$\pu
  \foo
  \qquad
  \ZQuot
  \qquad
  \ZQuotients
$$

A slashing $S=(L,R)$ on a ZHA $H$ with top element $ab$ induces an
equivalence relation `$\eqS$' on $H$ that works like this: $\ang{c,d}
\eqS \ang{e,f}$ iff $c \eqL e$ and $d \eqR f$. We write
%
$$\begin{array}{rcl}
  [c]_L  &:=& \setofst {e∈\{0,\ldots,a\}} {c \eqL a} \\ \relax
  [d]_R  &:=& \setofst {f∈\{0,\ldots,b\}} {d \eqL f} \\ \relax
  [cd]_S &:=& \setofst {ef∈H} {cd \eqS ef} \\
  \end{array}
$$
%
for the equivalence classes, and note that
%
% (find-planarhas        "zquotients")
% (find-planarhaspage 26 "ZQuotients")
% (find-planarhastext 26 "ZQuotients")
%
$$\begin{array}{lrcl}
  \text{if}    & [c]_L &=& \{c',\ldots,c''\} \\
  \text{and}   & [d]_L &=& \{d',\ldots,d''\} \\
  \text{then}  & [cd]_S &=& [c'd',c''d'']∩H; \\
  \end{array}
$$
%
for example, in the ZHA at the right at the example above we have:
%
$$\begin{array}{rcl}
  [1]_L &=& \{1,2,3,4\}, \\ \relax
  [2]_R &=& \{0,1,2,3\}, \\ \relax
  [12]_S &=& [10,43]∩H \; = \; \{11,12,13,22,23\}. \\
  \end{array}
$$

We say that a slashing $S$ on a ZHA $H$ partitions $H$ into {\sl
  slash-regions}; later (sec.\ref{J-ops-and-regions}) we will see that
a J-operator $J$ also partitions $H$, and we will refer to its
equivalence classes as {\sl J-regions}.

Slash-regions are intervals, but note that neither 10 or 43 belong to
the slash-region $[12]_S = [10,43]∩H$ above.

\msk

A {\sl slash-partition} is a partition on a ZHA induced by a slashing,
and a {\sl slash-equivalence} is an equivalence relation on a ZHA
induced by a slashing. Formally, a slash-partition on $H$ is a set of
subsets of $H$, and a slash-equivalence is subset of $H×H$, but it is
so easy to convert between partitions and equivalence relations that
we will often use both terms interchangeably. Our visual
representation for slash-partitions and slash-equivalences on a ZHA
$H$ will be the same: $H$ slashed by diagonal cuts.


%  ____  _           _                            _   
% / ___|| | __ _ ___| |__        _ __   __ _ _ __| |_ 
% \___ \| |/ _` / __| '_ \ _____| '_ \ / _` | '__| __|
%  ___) | | (_| \__ \ | | |_____| |_) | (_| | |  | |_ 
% |____/|_|\__,_|___/_| |_|     | .__/ \__,_|_|   \__|
%                               |_|                   
% «slash-partitions» (to ".slash-partitions")
\section{From slash-partitions back to slashings}
\label  {slash-partitions}
% Good (phap 29 "slash-partitions")

We saw how to go from a slashing $S=(L,R)$ on $H$ to an equivalence
relation $\eqS$ on $H$; let's see now how to recover $L$ and $R$ from
$\eqS$.

% Let's see a way to recover the piccs $L$ and $R$ from an equivalence
% relation $\eqS$ on a ZHA $H$.

Let $LW_H$ be the left wall of $H$, and $RW_H$ the right wall of $H$.
For example,
%
%L -- mp = mpnew({def="foo"}, "1R2R3212RL1"):addlrs():output()
%L mp = mpnew({def="foo"}, "1R2R3212RL1"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
$$\pu
  H = \;\;\foo
  \quad
  \begin{array}[t]{r}
  LW_H = \{00,01,11,12,22,23,24,34,35,45,46\} \\
  RW_H = \{00,01,02,03,04,14,24,25,26,36,46\} \\
  \end{array}
$$

To recover the picc $L$ --- which is a picc on $\{0,1,2,3,4\}$ --- we
need to find where we change from an $L$-equivalence class to another
when we go from one digit to the next; and to recover the picc $R$ ---
which is a picc on $\{0,1,2,3,4,5,6\}$ --- we need to find where we
change from an $R$-equivalence class to another when we go from one
digit to the next.

We can recover $L$ and $R$ by walking $LW_H$ (or $RW_H$) from bottom
to top in a series of white pawns moves, and checking when we change
from one $S$-equivalence class to another. Northwest moves give
information about $L$, and northeast moves give information about $R$.
Look at the example below, in which we walk on $RW_H$:
%
\def\nem#1#2{\psm{   &\!#2\\ #1&    \\}}
\def\nwm#1#2{\psm{ #2&    \\   &\!#1\\}}
\def\nem#1#2{\sm{   &&\!#2\\ &\!\nearrow&\\ #1&    \\}}
\def\nwm#1#2{\sm{ #2&\\&\!\nwarrow&\\  &&\!#1\\}}
\def\neyes#1#2#3#4{\nem{#1#2}{#3#4}: #1#2 {    \eqS} #3#4 \;⇒\; #2 {    \eqR} #4 \;⇒\; #2 #4 }
\def\neno #1#2#3#4{\nem{#1#2}{#3#4}: #1#2 {\not\eqS} #3#4 \;⇒\; #2 {\not\eqR} #4 \;⇒\; #2∖#4 }
\def\nwyes#1#2#3#4{\nwm{#1#2}{#3#4}: #1#2 {    \eqS} #3#4 \;⇒\; #1 {    \eqL} #3 \;⇒\; #3 #1 }
\def\nwno #1#2#3#4{\nwm{#1#2}{#3#4}: #1#2 {\not\eqS} #3#4 \;⇒\; #1 {\not\eqL} #3 \;⇒\; #3/#1 }
%
%L mp = mpnew({def="foo"}, "1R2R3212RL1"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp = mpnew({def="LWH"}, "1RLRLRRLRLR"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp = mpnew({def="RWH"}, "1RRRRLLRRLL"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
$$\pu
  \begin{array}{c}
    H = \;\;\foo
    \qquad
    LW_H = \;\;\LWH
    \quad
    RW_H = \!\!\!\!\!\!\!\!\RWH
    %
    \\ \\
    %
    \begin{array}{ll}
                 & \neno  25 26 \\
                 & \neyes 24 25 \\
    \nwyes 36 46 & \neno  03 04 \\
    \nwyes 26 36 & \neyes 02 03 \\
    \nwyes 14 24 & \neyes 01 02 \\
    \nwno  04 14 & \neyes 00 01 \\
    \end{array}
    %
    \\ \\
    %
    % ⇒ \quad
    (L,R) \;=\; (4321/0, 0123∖45∖6)
  \end{array}
$$




%  ____  _           _                                
% / ___|| | __ _ ___| |__        _ __ ___   __ ___  __
% \___ \| |/ _` / __| '_ \ _____| '_ ` _ \ / _` \ \/ /
%  ___) | | (_| \__ \ | | |_____| | | | | | (_| |>  < 
% |____/|_|\__,_|___/_| |_|     |_| |_| |_|\__,_/_/\_\
%                                                     
% «slash-max» (to ".slash-max")
\section{Slash-regions have maximal elements}
\label  {slash-max}
% Good (phap 29 "slash-max")

...here is how our argument will work, in a particular case:
%
$$\begin{array}{rcl}
  [1]_L &=& \{1,2,3,4\}, \\ \relax
  [2]_R &=& \{0,1,2,3\}, \\ \relax
      I &=& [10,43], \\ \relax
  [12]_S &=& I∩H \; = \; \{11,12,13,22,23\}. \\
  \end{array}
$$

$$\def\uoo#1#2{ \und{#1}{oo:#2} }
  \def\uo #1#2{(\und{#1}{oo:#2})}
  %
  \def\uoo#1#2{ \und{#1}{\sm{=#2 ∈I}} }
  \def\uo #1#2{(\uoo{#1}{#2})}
  \uoo{\uo{\uo{\uo{11∨12}{12}∨13}{13}∨22}{23}∨23}{23}
  \qquad
  \def\uoo#1#2{ \und{#1}{\sm{=#2 ∈H}} }
  \def\uo #1#2{(\uoo{#1}{#2})}
  \uoo{\uo{\uo{\uo{11∨12}{12}∨13}{13}∨22}{23}∨23}{23}
$$

$$\bigvee [12]_S
  = \bigvee \{11,12,13,22,23\}
  = 11∨12∨13∨22∨23
  ∈ I∩H
$$
$$11 ≤ \bigvee [12]_S, \;
  12 ≤ \bigvee [12]_S, \;
  \ldots, \;
  23 ≤ \bigvee [12]_S
$$

We have $[12]_S = I∩H$, and $\bigvee [12]_S$ belongs to $I∩H$ and is
greter-or-equal than all elements of $I∩H$, so $\bigvee [12]_S$ is the
maximal element of $[12]_S$.

\bsk

Here is how we can do that in the general case. Let $S=(L,R)$ be a
slashing on a ZHA $H$. Let $P$ be a point of $H$. The equivalence
class $[P]_S$ is a finite set $\{P_1, \ldots, P_n\}$, and we know that
$[P]_S=H∩I$ for some interval $I$. Look at the elements $P_1$,
$P_1∨P_2$, $(P_1∨P_2)∨P_3$, $\ldots$, $((P_1∨P_2)∨\ldots)∨P_n$ We can
see that all of them belong to both $H$ and $I$, so we conclude that
$\bigvee [P]_S = ((P_1∨P_2)∨\ldots)∨P_n$ belongs to $H∩I$, and it is
easy to see that it is greater-or-equal that all elements in $H∩I$, so
it is the maximal element of $H∩I$.

A similar argument shows that $\bigwedge [P]_S =
((P_1∧P_2)∧\ldots)∧P_n$ is the smallest element of $[P]_S$.

\msk

The same argument shows that if $C$ is any non-empty set of the form
$I∩H$, where $I$ is an interval, then $\bigvee C ∈ C$, $\bigwedge C ∈
C$, $[\bigwedge C, \bigvee C]∩H = C$.

Remember that an {\sl interval} in a ZHA $H$ is any set of the form
$[P,Q]∩H$. Let's introduce a new definition: a {\sl closed interval}
in a ZHA $H$ is a non-empty set $C⊂H$, with $⋁C∈C$, $⋀C∈C$, $[⋀C,
  ⋁C]∩H = C$; informally, a closed interval in a ZHA has a lowest and
highest element, and it ``is'' everything between them.




%   ____      _             _                    _             
%  / ___|   _| |_ ___   ___| |_ ___  _ __  _ __ (_)_ __   __ _ 
% | |  | | | | __/ __| / __| __/ _ \| '_ \| '_ \| | '_ \ / _` |
% | |__| |_| | |_\__ \ \__ \ || (_) | |_) | |_) | | | | | (_| |
%  \____\__,_|\__|___/ |___/\__\___/| .__/| .__/|_|_| |_|\__, |
%                                   |_|   |_|            |___/ 
%
% «cuts-stopping-midway» (to ".cuts-stopping-midway")
\section{Cuts stopping midway}
\label  {cuts-stopping-midway}
% Good (phap 31 "cuts-stopping-midway")

We saw in the last section that every slash-region is a closed
interval. A {\sl partition into closed intervals} of a ZHA $H$ is, as
its name says, a partition of $H$ whose equivalence classes are all
closed intervals in $H$.

Some partitions into closed intervals of a ZHA are not slashings ---
for example, take the partition $P$ with these equivalence classes:
%
%L mp = mpnew({def="foo", meta="10pt"}, "1234LL321")
%L -- mp:addlrs():addcuts("c 01|23 10w-11n 32w-33n"):output()
%L mp:addlrs():addcuts("c 01|23 20w-21n 32w-33n"):output()
$$\pu
  \foo
$$

Here is an easy way to prove formally that the partition above does
not come from a slashing $S=(L,R)$. We will adapt the idea from
sec.\ref{slash-partitions}, where we recovered $L$ and $R$ from
northwest and northeast steps.
%
\def\undtrue #1{\und{#1}{\text{true}}}
\def\undfalse#1{\und{#1}{\text{false}}}
\def\undfrown#1{\und{#1}{=(}}
\def\iff{\;\;↔\;\;}
\def\notiff{\;\not↔\;}
%
$$\begin{array}{rcl}
  \undfalse{21 \eqP 31} \;\;↔\;\; \undfrown{2 \eqL 3} \;\;↔\;\; \undtrue {22 \eqP 32} \\
  \undtrue {31 \eqP 41} \;\;↔\;\; \undfrown{3 \eqL 4} \;\;↔\;\; \undfalse{32 \eqP 42} \\
  \end{array}
$$

The problem is that the figure above has ``cuts stopping midway''...
if its cuts all crossed the ZHA all the way through, we would have
this for $L$ and northeast cuts,
%
$$\begin{array}{c}
  0\eqL1 \iff 00\eqP10 \iff 01\eqP11 \iff 02\eqP12 \iff 03\eqP13 \\
  1\eqL2 \iff 10\eqP20 \iff 11\eqP21 \iff 12\eqP22 \iff 13\eqP23 \\
  2\eqL3 \iff 20\eqP30 \iff 21\eqP31 \iff 22\eqP32 \iff 23\eqP33 \\
  3\eqL4 \iff 30\eqP40 \iff 31\eqP41 \iff 32\eqP42 \iff 33\eqP43 \\
  4\eqL5 \iff 40\eqP50 \iff 41\eqP51 \iff 42\eqP52 \iff 43\eqP53 \\
  5\eqL6 \iff 50\eqP60 \iff 51\eqP61 \iff 52\eqP62 \iff 53\eqP63 \\
  \end{array}
$$
%
and something similar for $R$ and northwest cuts.

\msk

Formally, a partition $P$ on $H$ has an ``L-cut between $c$ and $c^+$
stopping midway'' if $cd \eqP c^+d \notiff cd \eqP c^+d$ for some $d$,
and it has an ``R-cut between $d$ and $d^+$ stopping midway'' if $cd
\eqP cd^+ \notiff c^+d \eqP c^+d^+$ for some $c$; here we are writing
$x^+$ for $x+1$.

\msk

{\sl Theorem: a partition of $H$ into closed intervals is a
  slash-partition if and only if it doesn't have any cuts stopping
  midway.} Proof: use the ideas above to recover $L$ and $R$ from
$\eqP$, and then check that $S=(L,R)$ induces an equivalence relation
$\eqS$ that coincides with $\eqP$.



%  ____  _           _                           
% / ___|| | __ _ ___| |__         ___  _ __  ___ 
% \___ \| |/ _` / __| '_ \ _____ / _ \| '_ \/ __|
%  ___) | | (_| \__ \ | | |_____| (_) | |_) \__ \
% |____/|_|\__,_|___/_| |_|      \___/| .__/|___/
%                                     |_|        
% «slash-ops» (to ".slash-ops")
\section{Slash-operators}
\label  {slash-ops}
% Good (phap 32 "slash-ops")

We can define operations that take each each $P∈H$ to the maximal and
to the minimal element of its $S$-equivalent class, now that we know
that these maximal and minimal elements exist:
%
$$\begin{array}{rclll}
  P^S       &:=& \bigvee   [P]_S && \text{(maximal element),} \\
  P^{\co S} &:=& \bigwedge [P]_S && \text{(minimal element).}
  \end{array}
$$

Note that $[P]_S = [P^{\co S}, P^S]∩H$.

We will use the operation $·^S$ a lot and $·^{\co S}$ very little. The
`$\co$' in `$\co S$' means that $·^{\co S}$ is dual to $·^S$, in a
sense that will be made precise later.

\msk

A {\sl slash-operator} on a ZHA $H$ is a function $·^S:H→H$ induced by
a slashing $S=(L,R)$ on $H$. It is easy to see that $P ≤ P^S$
(``\,$·^S$ is non-decreasing'') and that $P^S = (P^S)^S$ (``\,$·^S$ is
idempotent'').

\msk

Any idempotent function $·^F:H→H$ induces an equivalence relation on
$H$: $P \eqF Q$ iff $P^F = Q^F$. We can use that to test if a given
$·^F:H→H$ is a slash-operator: $·^F$ is a slash-operator iff it obeys
all this:

1) $·^F$ is idempotent,

2) $·^F$ is non-decreasing,

3) $\eqF$ partitions $H$ into closed intervals,

4) $\eqF$ doesn't have cuts stopping midway.



%  ____  _           _                                       _         
% / ___|| | __ _ ___| |__    _ __  _ __ ___  _ __   ___ _ __| |_ _   _ 
% \___ \| |/ _` / __| '_ \  | '_ \| '__/ _ \| '_ \ / _ \ '__| __| | | |
%  ___) | | (_| \__ \ | | | | |_) | | | (_) | |_) |  __/ |  | |_| |_| |
% |____/|_|\__,_|___/_| |_| | .__/|_|  \___/| .__/ \___|_|   \__|\__, |
%                           |_|             |_|                  |___/ 
%
% «slash-ops-property» (to ".slash-ops-property")
\section{Slash-operators: a property}
\label  {slash-ops-property}
% Good (phap 33 "slash-ops-property")

Slash-operators obey a certain property that will be very important
later. Let's state that property in five equivalent ways:

1) If $cd \eqS c'd'$ and $ef \eqS e'f'$ then $cd∧ef \eqS c'd'∧e'f'$.

2) If $P \eqS P'$ and $Q \eqS Q'$ then $P∧Q \eqS P'∧Q'$.

3) If $P \eqS P'$ and $Q \eqS Q'$ then $(P∧Q)^S = (P'∧Q')^S$.

4) If $P \eqS P'$ and $Q \eqS Q'$ then
%
$$\begin{array}{rclll}
  (P∧Q)^S &=& (P^S∧Q^S)^S         && \text{(a)} \\
           &=& ((P')^S∧(Q')^S)^S  && \text{(b)} \\
           &=& (P'∧Q')^S          && \text{(c)} \\
  \end{array}
$$

5) $(P∧Q)^S = (P^S∧Q^S)^S$.

\msk

\noindent Here's a proof of $1↔2↔3↔4↔5$.

$1↔2$: we just changed notation,

$2↔3$: because $A \eqS B$ iff $A^S = B^S$,

$3→5$: make the substitution $\subst{P':=P^S \\ Q':=Q^S}$ in 3,

$5→4$: 4a is just a copy of 5, and 4c is a copy of 5 with
$\subst{P:=P' \\ Q:=Q'}$. For 4b, note that $P \eqP P'$ implies $P^S =
(P')^S$ and $Q \eqP Q'$ implies $Q^S = (Q')^S$,

$4→3$: 4 is an equality between more expressions than 3,

\msk

\noindent ...and here is a way to visualize what is going on:
%
% (find-planarhas       "J-figure")
% (find-planarhaspage 19 "How J-operators interact with the connectives: figure")
% (find-planarhastext 19 "How J-operators interact with the connectives: figure")
%
%L -- The (&*) cube
%L mp = mpnew({def="andcube", scale="12.5pt"}, "1234321"):addcuts("c 3/210 012|3"):addlrs():output()
%L mp = mpnew({def="andCube", scale="12.5pt"}, "1234321"):addcuts("c 3/210 012|3")
%L mp:put(v"30", "P"):put(v"31", "P'", "P'"):put(v"32", "P*", "P^S")
%L mp:put(v"03", "Q"):put(v"13", "Q'", "Q'"):put(v"23", "Q*", "Q^S")
%L mp:output()
%
$$\pu
  \begin{array}{c}
  \andcube
  \qquad
  \andCube
  \\ \\
  \und{( \und{ \und{P}{30} ∧ \und{Q}{03} }{00} )^S}{22} =
  \und{( \und{ \und{\und{P }{30}{}^S}{32} ∧ \und{\und{Q }{03}{}^S}{23} }{22} )^S}{22} =
  \und{( \und{ \und{\und{P'}{31}{}^S}{32} ∧ \und{\und{Q'}{13}{}^S}{23} }{22} )^S}{22} =
  \und{( \und{ \und{P'}{31} ∧ \und{Q'}{13} }{11} )^S}{22}
  \\
  \end{array}
$$
%
Note that all subexpressions belong to three $S$-regions: a region
with $P$, $P'$, $P^S=P'{}^S$, another with $Q$, $Q'$, $Q^S=Q'{}^S$,
and one with all the `$∧$'s. If we had cuts stopping midway then some
of the `$∧$'s could be in different regions.

I think that the clearest way to show (1) is by putting its proof in
tree form:
%
%L addabbrevs("(~S)", "\\eqS ", "(~L)", "\\eqL ", "(~R)", "\\eqR ")
%:
%:  cd(~S)c'd'  ef(~S)e'f'      cd(~S)c'd'  ef(~S)e'f'
%:  ----------  ----------      ----------  ----------
%:   c(~L)c'     e(~L)e'         d(~R)d'     f(~R)f'
%:  ------------------------    ------------------------
%:  \min(c,e)(~L)\min(c',e')    \min(d,f)(~L)\min(d',f')
%:  ----------------------------------------------------
%:     \min(c,e)\min(d,f)(~S)\min(c',e')\min(d',f')
%:     --------------------------------------------
%:                  cd∧ef(~S)c'd'∧e'f'
%:
%:                  ^foo
%:
$$\pu
  \ded{foo}
$$




%      _                       
%     | |       ___  _ __  ___ 
%  _  | |_____ / _ \| '_ \/ __|
% | |_| |_____| (_) | |_) \__ \
%  \___/       \___/| .__/|___/
%                   |_|        
%
% «J-ops-and-regions» (to ".J-ops-and-regions")
% J-regions and J-operators
\section{J-operators and J-regions}
\label  {J-ops-and-regions}
% Good (phap 35 "J-ops-and-regions")

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

\msk

Note that when $H$ is a ZHA then any slash-operator on $H$ is a
J-operator on it; see secs.\ref{slash-ops} and
\ref{slash-ops-property}.

\msk

A J-operator induces an equivalence relation and equivalence classes
on $Ω$, like slashings do:
%
$$\begin{array}{rcl}
  P \eqJ Q  &\text{iff}& P^*=Q^* \\[5pt] \relax
  [P]^J &:=&         \setofst{Q∈Ω}{P^*=Q^*} \\
  \end{array}
$$

The axioms $\J1$, $\J2$, $\J3$ have many consequences. The first ones
are listed in Figure \ref{J-ops-basic-derived-rules} as derived rules,
whose names mean:

$\Mop$ (monotonicity for products): a lemma used to prove $\Mo$,

$\Mo$ (monotonicity): $P≤Q$ implies $P^*≤Q^*$,

$\Sand$ (sandwiching): all truth values between $P$ and $P^*$ are equivalent,

$\ECa$: equivalence classes are closed by `$\&$',

$\ECv$: equivalence classes are closed by  `$∨$',

$\ECS$: equivalence classes are closed by sandwiching,

%:
%:                         ------------\J3   ---------
%:                         (P&Q)!=P!&Q!      P!&Q!<=Q!
%:   ----------\Mop  :=    ---------------------------
%:   (P&Q)!<=Q!            (P&Q)!<=Q!
%:
%:   ^Mop1                 ^Mop2
%:
%:                  P<=Q
%:                  =====
%:                  P=P&Q
%:                  ---------  ----------\Mop
%:   P<=Q           P!=(P&Q)!  (P&Q)!<=Q!
%:   ------\Mo  :=  ---------------------
%:   P!<=Q!                 P!<=Q!
%:
%:   ^Mo1                   ^Mo2
%:
%:                                  Q<=P!
%:                                  -------\Mo  ------\J2
%:                        P<=Q      Q!<=P!!     P!!=P!
%:                       ------Mo   ------------------
%:   P<=Q<=P!            P!<=Q!            Q!<=P!
%:   --------\Sand  :=   ------------------------
%:     P!=Q!                   P!=Q!
%:
%:     ^Sand1                  ^Sand2
%:
%:
%:                          P!=Q!
%:                          ===========   ------------\J3
%:   P!=Q!                  P!=Q!=P!&Q!   P!&Q!=(P&Q)!
%:   ------------\ECa  :=   --------------------------
%:   P!=Q!=(P&Q)!                 P!=Q!=(P&Q)!
%:
%:   ^ECa1                        ^ECa2
%:                                                            P!=Q!
%:                                                  -----\J1  -----
%:                                                  Q<=Q!     Q!=P!
%:                                        -----\J1  ---------------
%:                                        P<=P!         Q<=P!
%:                               -------  -------------------
%:                               P<=PvvQ     PvvQ<=P!
%:                               --------------------
%:                                  P<=PvvQ<=P!
%:                                  -----------\Sand
%:   P!=Q!                  P!=Q!   P!=(PvvQ)!
%:   ------------\ECv  :=   ------------------
%:   P!=Q!=(PvvQ)!            P!=Q!=(PvvQ)!
%:
%:   ^ECv1                       ^ECv2
%:
%:                                       P!=R!
%:                            -----\J1   -----
%:                   P<=Q<=R  R<=R!      R!=P!
%:                   -------------------------
%:                           P<=Q<=P!
%:                           --------\Sand
%:   P<=Q<=R  P!=R!           P!=Q!         P!=R!
%:   --------------\ECS  :=   -------------------
%:     P!=Q!=R!                 P!=Q!=R!
%:
%:     ^ECS1                    ^ECS2
%:
\begin{figure}
\pu
\fbox{$
  \begin{array}{rcl} \\
  \ded{Mop1}  &:=& \ded{Mop2}  \\ \\
  \ded{Mo1}   &:=& \ded{Mo2}   \\ \\
  \ded{Sand1} &:=& \ded{Sand2} \\ \\
  \ded{ECa1}  &:=& \ded{ECa2}  \\
  \ded{ECv1}  &:=& \ded{ECv2} \\ \\
  \ded{ECS1}  &:=& \ded{ECS2}  \\ \\
  \end{array}
  $}
  \caption{J-operators: basic derived rules}
  \label{J-ops-basic-derived-rules}
\end{figure}

\bsk

Take a J-equivalence class, $[P]^J$, and list its elements: $[P]^J =
\{P_1, \ldots, P_n\}$. Let $P_∧ := ((P_1∧P_2)∧\ldots)∧P_n$ and Let
$P_∨ := ((P_1∨P_2)∨\ldots)∨P_n$. It turns out that $[P]^J =
   [P_∧,P_∨]∩Ω$; let's prove that by doing `$⊆$' first, then `$⊇$'.

Using $\ECa$ and $\ECv$ several times we see that
%
$$\begin{array}{rrr}
  P_1∧P_2 \eqJ P                  && P_1∨P_2 \eqJ P                \\
  (P_1∧P_2)∧P_3 \eqJ P           && (P_1∨P_2)∨P_3 \eqJ P          \\
  \vdots\phantom{mmmm}        && \vdots\phantom{mmmm} \\
  ((P_1∧P_2)∧\ldots)∧P_n \eqJ P && ((P_1∨P_2)∨\ldots)∨P_n \eqJ P \\
  \end{array}
$$
%
so $P_∧ \eqJ P_∨ \eqJ P$, and by the sandwich lemma $([P_∧,P_∨]∩Ω) ⊆
[P]^J$.

For any $P_i∈[P]^J$ we have $P_∧≤P_i≤P_∨$, which means that:
%
$$\begin{array}{rcl}
  [P]^J &=& \{P_1, \ldots, P_n\} \\
        &⊆& \setofst{Q∈Ω}{P_∧≤Q≤P_∨} \\
        &=& [P_∧,P_∨]∩Ω, \\
  \end{array}
$$
%
so $[P]^J ⊆ [P_∧,P_∨]∩Ω$.

\msk

As the operation `$·^*$' is increasing and idempotent, each
equivalence class $[P]^J$ has exactly one maximal element, which is
$P^*$; but $P_∨$ is also the maximal element of $[P]^J$, so $P_∨ =
P^*$, and we can interpret the operation `$·*$' as ``take each $P$ to
the top element in its equivalence class'', which is similar to how we
defined an(other) operation `$·^*$' on slashings in the previous
section.

The operation ``take each $P$ to the bottom element in its equivalence
class'' will be useful in a few occasions; we will call it
`$·^{\co*}$' to indicate that it is dual to `$·^*$' in some sense.
Note that $P^{\co*} = P_∧$.





% (find-LATEX "2015planar-has.tex" "J-operators")
% (find-planarhaspage 13 "Part 2:" "J-operators and ZQuotients")
% (find-planarhastext 13 "Part 2:" "J-operators and ZQuotients")
% (find-LATEX "2015planar-has.tex" "J-derived-rules")
% (find-planarhaspage 15 "Derived rules")
% (find-planarhastext 15 "Derived rules")


\bsk

Look at the figure below, that shows a partition of a ZHA $A=[00,66]$
into five regions, each region being an interval; this partition does
not come from a slashing, as it has cuts that stop midway. Define an
operation `$·^*$' on $A$, that works by taking each truth-value $P$ in
it to the top element of its region; for example, $30^*=61$.
%
%L mp = mpnew({def="foo", meta="10pt"}, "1234567654321")
%L mp:addlrs():addcuts("c 10w-14n 11n-61n 42w-46n 44n-04e"):output()
$$\pu
  \foo
$$
%
It is easy to see that `$·^*$' obeys $\J1$ and $\J2$; however, it does
{\sl not} obey $\J3$ --- we will prove that in
sec.\ref{no-Y-cuts-no-L-cuts}. As we will see, {\sl the partitons of a
  ZHA into intervals that obey $\J1$, $\J2$, $\J3$ ae exactly the
  slashings;} or, in other words, {\sl every J-operator comes from a
  slashing}.



%  _   _        __   __             _       
% | \ | | ___   \ \ / /   ___ _   _| |_ ___ 
% |  \| |/ _ \   \ V /   / __| | | | __/ __|
% | |\  | (_) |   | |   | (__| |_| | |_\__ \
% |_| \_|\___/    |_|    \___|\__,_|\__|___/
%                                           
% «no-Y-cuts-no-L-cuts» (to ".no-Y-cuts-no-L-cuts")
\section{The are no Y-cuts and no $\lambda$-cuts}
\label  {no-Y-cuts-no-L-cuts}
% Good (phap 37 "no-Y-cuts-no-L-cuts")

We want to see that if a partition of a ZHA $H$ into intervals has
``Y-cuts'' or ``$λ$-cuts'' like these parts of the last diagram in the
last section,
%
%R local Y, La =
%R 2/  22  \, 2/  25  \
%R  |21  12|   |24  15|
%R  \  11  /   \  14  /
%R 
%R Y :tozmp({def="Ycut", scale="10pt"}):addcells():addcuts("00w-01n 10e-10n"):output()
%R La:tozmp({def="Lcut", scale="10pt"}):addcells():addcuts("00w-00n 00e-10n"):output()
$$\pu
  \begin{array}{rcl}
  \Ycut &\Leftarrow& \text{this is a Y-cut}  \\\\
  \Lcut &\Leftarrow& \text{this is a $λ$-cut}\\
  \end{array}
$$
%
then it operation $J$ that takes each element to the top of its
equivalence class cannot obey $\J1$, $\J2$ and $\J3$ at the same time.
We will prove that by deriving rules that say that if $11 \eqJ 12$
then $21 \eqJ 22$, and that if $15 \eqJ 25$ then $14 \eqJ 24$;
actually, our rules will say that if $11^* = 12^*$ then $(11∨21)^* =
(12∨21)^*$, and that if $15^*=25^*$ then $(15∧24)^*=(25∧24)^*$. The
rules are:
%:                                     Q!=R!
%:                                  -----------
%:                                  PvvQ!=PvvR!
%:                               -----------------
%:      Q!=R!                    (PvvQ!)!=(PvvR!)!
%:  ---------------\NoYcuts  :=  =================\ostarcube
%:  (PvvQ)!=(PvvR)!               (PvvQ)!=(PvvR)!
%:
%:  ^NoYcuts1-                     ^NoYcuts2-
%:
%:                                     P!=Q!
%:                                  -----------
%:                                  PvvR!=QvvR!
%:                               -----------------
%:      P!=Q!                    (PvvR!)!=(QvvR!)!
%:  ---------------\NoYcuts  :=  =================\ostarcube
%:  (PvvR)!=(QvvR)!               (PvvR)!=(QvvR)!
%:
%:  ^NoYcuts1                      ^NoYcuts2
%:
%:
%:                                  Q!=R!
%:                               ----------
%:      Q!=R!                    P!&Q!=P!&R!
%:  ---------------\NoLcuts  :=  ------------\J3
%:  (P&Q)!=(P&R)!                (P&Q)!=(P&R)!
%:
%:  ^NoLcuts1-                    ^NoLcuts2-
%:
%:                                  P!=Q!
%:                               ----------
%:      P!=Q!                    P!&R!=Q!&R!
%:  ---------------\NoLcuts  :=  ------------\J3
%:  (P&R)!=(Q&R)!                (P&R)!=(Q&R)!
%:
%:  ^NoLcuts1                     ^NoLcuts2
%:
$$\pu
  \begin{array}{rcl}
  \ded{NoYcuts1} &:=& \ded{NoYcuts2} \\ \\
  \ded{NoLcuts1} &:=& \ded{NoLcuts2} \\ \\
  \end{array}
$$

The top derivation mentions a rule called `$\ostarcube$', which will
be proved in the next section.




%      _                   _                             
%     | |   __ _ _ __   __| |   ___ ___  _ __  _ __  ___ 
%  _  | |  / _` | '_ \ / _` |  / __/ _ \| '_ \| '_ \/ __|
% | |_| | | (_| | | | | (_| | | (_| (_) | | | | | | \__ \
%  \___/   \__,_|_| |_|\__,_|  \___\___/|_| |_|_| |_|___/
%                                                        
% «J-ops-and-connectives» (to ".J-ops-and-connectives")
% (phap 39 "J-ops-and-connectives")
\section{How J-operators interact with connectives}
\label  {J-ops-and-connectives}

% (find-LATEX "2015planar-has.tex" "J-connectives")
% (find-planarhaspage 16 "How J-operators interact with the connectives")
% (find-planarhastext 16 "How J-operators interact with the connectives")

Let's start by proving another three derived rules:
%:
%:
%:   =====================\acz   ==================\ocz   ====================\icz
%:   (P!&Q!)!=P!&Q!=(P&Q)!       (P!vvQ!)!<=(PvvQ)!       (P->Q^*)^*<=P^*->Q^*
%:
%:   ^and*-extra-arrow           ^or*-extra-arrow         ^imp*-extra-arrow
%:
%:
%:      ------\J2   ------\J2
%:      P!!=P!      Q!!=Q!
%:   =============================\J3
%:   (P!&Q!)!=P!!&Q!!=P!&Q!=(P&Q)!
%:   -----------------------------
%:      (P!&Q!)!=P!&Q!=(P&Q)!
%:
%:      ^and*-extra-arrow-proof
%:
%:                                     -------------
%:                                     P->Q^*<=P->Q^*
%:      ------            -------      ---------------
%:      P<=PvvQ           Q<=PvvQ      (P->Q^*)&P<=Q^*
%:   ------------\Mo -----------\Mo    -------------------\Mo
%:   P!<=(PvvQ)!     Q!<=(PvvQ)!       ((P->Q^*)&P)^*<=Q!!
%:   ---------------------------       -------------------\J2
%:        P!vvQ!<=(PvvQ)!              ((P->Q^*)&P)^*<=Q^*
%:     -------------------\Mo          -------------------\J3
%:     (P!vvQ!)!<=(PvvQ)!!             (P->Q^*)^*&P^*<=Q^*
%:     -------------------\J2          -------------------
%:      (P!vvQ!)!<=(PvvQ)!             (P->Q^*)^*<=P^*->Q^*
%:
%:      ^or*-extra-arrow-proof         ^imp*-extra-arrow-proof
%:
%:
$$
\myresizebox{$\pu
  \begin{array}{rcl}
  \ded{and*-extra-arrow} &:=& \ded{and*-extra-arrow-proof} \\\\
  \ded{or*-extra-arrow}  &:=& \ded{or*-extra-arrow-proof}  \\\\
  \ded{imp*-extra-arrow} &:=& \ded{imp*-extra-arrow-proof} \\
  \end{array}
$}
$$



%D diagram cube-and*-obvious
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D ren     A7      ==>              (P^*{∧}Q^*)^*
%D ren  A5 A3 A6   ==>  (P^*{∧}Q)^* P^*{∧}Q^*  (P{∧}Q^*)^*
%D ren  A1 A4 A2   ==>   P^*{∧}Q     (P{∧}Q)^*  P{∧}Q^*
%D ren     A0      ==>                P{∧}Q
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 ->  A6 A7 ->
%D    A0 A2 ->  A1 A3 ->  A4 A6 ->  A5 A7 ->
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 ->
%D ))
%D enddiagram
%
%D diagram cube-and*-full
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D ren     A7      ==>              (P^*{∧}Q^*)^*
%D ren  A5 A3 A6   ==>  (P^*{∧}Q)^* P^*{∧}Q^*  (P{∧}Q^*)^*
%D ren  A1 A4 A2   ==>   P^*{∧}Q     (P{∧}Q)^*  P{∧}Q^*
%D ren     A0      ==>                P{∧}Q
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 =
%D ))
%D enddiagram
%
%D diagram cube-or*-obvious
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D ren     A7      ==>              (P^*{∨}Q^*)^*
%D ren  A5 A3 A6   ==>  (P^*{∨}Q)^* P^*{∨}Q^*  (P{∨}Q^*)^*
%D ren  A1 A4 A2   ==>   P^*{∨}Q     (P{∨}Q)^*  P{∨}Q^*
%D ren     A0      ==>                P{∨}Q
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 ->  A6 A7 ->
%D    A0 A2 ->  A1 A3 ->  A4 A6 ->  A5 A7 ->
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 ->
%D ))
%D enddiagram
%
%D diagram cube-or*-full
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D ren     A7      ==>              (P^*{∨}Q^*)^*
%D ren  A5 A3 A6   ==>  (P^*{∨}Q)^* P^*{∨}Q^*  (P{∨}Q^*)^*
%D ren  A1 A4 A2   ==>   P^*{∨}Q     (P{∨}Q)^*  P{∨}Q^*
%D ren     A0      ==>                P{∨}Q
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 ->
%D ))
%D enddiagram
%
%D diagram cube-imp*-obvious
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D ren     A7      ==>              (P^*{→}Q^*)^*
%D ren  A5 A3 A6   ==>  (P^*{→}Q)^* P^*{→}Q^*  (P{→}Q^*)^*
%D ren  A1 A4 A2   ==>   P^*{→}Q     (P{→}Q)^*  P{→}Q^*
%D ren     A0      ==>                P{→}Q
%D
%D (( A0 A1 <-  A2 A3 <-  A4 A5 <-  A6 A7 <-
%D    A0 A2 ->  A1 A3 ->  A4 A6 ->  A5 A7 ->
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 ->
%D ))
%D enddiagram
%
%D diagram cube-imp*-full
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D ren     A7      ==>              (P^*{→}Q^*)^*
%D ren  A5 A3 A6   ==>  (P^*{→}Q)^* P^*{→}Q^*  (P{→}Q^*)^*
%D ren  A1 A4 A2   ==>   P^*{→}Q     (P{→}Q)^*  P{→}Q^*
%D ren     A0      ==>                P{→}Q
%D
%D (( A0 A1 <-  A2 A3 =   A4 A5 <-  A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 ->  A5 A7 ->
%D    A0 A4 ->  A1 A5 ->  A2 A6 =   A3 A7 =
%D ))
%D enddiagram
%
\pu
%$$
%  \begin{array}{rcl}
%  \diag{cube-and*-obvious} && \diag{cube-and*-full} \\ \\
%  \diag{cube-or*-obvious}  && \diag{cube-or*-full}  \\ \\
%  \diag{cube-imp*-obvious} && \diag{cube-imp*-full} \\
%  \end{array}
%$$



It is easy to prove each one of the arrows below ($A \diagxyto/->/ B$
means $A≤B$):
%
$$\myresizebox{$
  \pu
  \def∧{{\&}}
  \def∨{{\lor}}
  \def→{{\to}}
  %
  % \text{(omitted to make compilation faster)}
  \diag{cube-and*-obvious}
  \quad
  \diag{cube-or*-obvious}
  \quad
  \diag{cube-imp*-obvious}
$}
$$

\bsk

The cubes above will be called the ``obvious and-cube'', the ``obvious
or-cube'', and the ``obvious implication-cube'', and they show partial
orders between expressions of the form $(P^? \odot Q^?)^?$, where the
`$\odot$' stands for one of the connectives `$∧$', `$∨$' or `$→$', and
each `?' marks a place where we can put either a `${}^*$' or nothing.

The rules $\acz$, $\ocz$ and $\icz$ that we proved in the beginning of
the section can be used to add more information to the partial orders
given by the three ``obvious'' cubes above; adding them yields the
cubes below, that will be called the ``full and-cube'', the ``full
or-cube'', and the ``full implication-cube''.

\bsk
%
\myresizebox{$
  \pu
  \def∧{{\&}}
  \def∨{{\lor}}
  \def→{{\to}}
  %
  % \text{(omitted to make compilation faster)}
  \diag{cube-and*-full}
  \quad
  \diag{cube-or*-full}
  \quad
  \diag{cube-imp*-full}
$}

\bsk

We say that $\text{expr}_1 ≤ \text{expr}_2$ is true ``by the full
and-cube'' when $\text{expr}_1 ≤ \text{expr}_2$ can be read from the
(non-strict!) partial order in the the full and-cube; for example,
$P∧Q^* ≤ (P^*∧Q)^*$ is true ``by the full and-cube'', and similary
$P^*∨Q^* ≤ (P∨Q)^*$ is true by the full or-cube and $(P→Q)^* ≤ P→Q^*$
is true by the full implication-cube.

We write
%:
%:
%:  ----------------------------\astarcube
%:  \text{expr}_1≤\text{expr}_2
%:  
%:  ^astar
%:
%:
%:  ----------------------------\ostarcube
%:  \text{expr}_1≤\text{expr}_2
%:  
%:  ^ostar
%:
%:
%:  ----------------------------\istarcube
%:  \text{expr}_1≤\text{expr}_2
%:  
%:  ^istar
%:
$$\pu
  \ded{astar}
  \qquad
  \ded{ostar}
  \qquad
  \ded{istar}
$$
%
to indicate that the expression below the bar is a consequence (a
substitution instance) of the partial order in the full and-cubes, the
full or-cube, or the full implication-cube.

\msk

The six cubes will be discussed in more detail in the section
\ref{comparing-partial-orders}.

% https://en.wikipedia.org/wiki/Partially_ordered_set#Strict_and_non-strict_partial_orders


\newpage






%      _                  _                             ____   ___      
%     | |       ___ _   _| |__   ___  ___    __ _ ___  |  _ \ / _ \ ___ 
%  _  | |_____ / __| | | | '_ \ / _ \/ __|  / _` / __| | |_) | | | / __|
% | |_| |_____| (__| |_| | |_) |  __/\__ \ | (_| \__ \ |  __/| |_| \__ \
%  \___/       \___|\__,_|_.__/ \___||___/  \__,_|___/ |_|    \___/|___/
%                                                                       
% «J-cubes-as-partial-orders» (to ".J-cubes-as-partial-orders")
\section{J-cubes as partial orders}
\label  {J-cubes-as-partial-orders}
% Good (phap 40 "J-cubes-as-partial-orders")

{

If we number the vertices of the cubes of
sec.\ref{J-ops-and-connectives} like ths,
%
$$\mat{   & 7 &   \\ 
        5 & 3 & 6 \\ 
        1 & 4 & 2 \\ 
          & 0 &   \\ 
      }
$$
%
then we can refer to their nodes as $(∧)_0, \ldots, (∧)_7$, $(∨)_0,
\ldots, (∨)_7$, $(→)_0, \ldots,$ $(→)_7$; note that
%
$$\begin{array}{rclcrcl}
  (∧)_0     &=&   P∧Q,   && (∧)_4 &=& (P∧Q)^*, \\
  (∧)_1     &=& P^*∧Q,   && (∧)_{1+4} &=& (P^*∧Q)^*, \\
  (∧)_2     &=&   P∧Q^*, && (∧)_{2+4} &=& (P∧Q^*)^*, \\
  (∧)_{1+2} &=& P^*∧Q^*, && (∧)_{1+2+4} &=& (P^*∧Q^*)^*, \\
  \end{array}
$$
%
and the same for $(∨)_k$ and $(→)_k$.

With this convention we can interpret s set of arrows in a cube as a
subset of $\{0,\ldots,7\}^2$, and use the positional notation for
subsets from sec.\ref{positional} to represent that as a grid of `0's
and `1's:
%
%D diagram cube-and*-0
%D 2Dx     100 +20 +20
%D 2D  100     A1
%D 2D  +15 A2  A3  A4
%D 2D  +15 A5  A6  A7
%D 2D  +15     A8
%D 2D
%D ren     A1      ==>            (P^*∧Q^*)^*
%D ren  A2 A3 A4   ==>  (P∧Q^*)^* P^*∧Q^*  (P^*∧Q)^*
%D ren  A5 A6 A7   ==>   P∧Q^*     (P∧Q)^*  P^*∧Q
%D ren     A8      ==>              P∧Q
%D
%D ren     A1      ==>     7
%D ren  A2 A3 A4   ==>  5  3  6
%D ren  A5 A6 A7   ==>  1  4  2
%D ren     A8      ==>     0
%D
%D (( A1 A2 <- A1 A3 <- A1 A4 <-
%D    A2 A5 <- A2 A6 <- A3 A5 <- A3 A7 <- A4 A6 <- A4 A7 <-
%D    A5 A8 <- A6 A8 <- A7 A8 <-
%D ))
%D enddiagram
%
%R local foo, foos =
%R 2/0 0 0 1 0 1 1 0 \, 2/1 1 1 1 1 1 1 1 \
%R  |0 0 1 0 1 0 0 0 |   |1 0 1 0 1 0 1 0 |
%R  |0 1 0 0 1 0 0 0 |   |1 0 0 0 1 1 0 0 |
%R  |1 0 0 0 0 0 0 0 |   |1 1 0 0 1 0 0 0 |
%R  |0 1 1 0 0 0 0 0 |   |1 1 1 1 0 0 0 0 |
%R  |1 0 0 0 0 0 0 0 |   |1 0 1 0 0 0 0 0 |
%R  |1 0 0 0 0 0 0 0 |   |1 1 0 0 0 0 0 0 |
%R  \0 0 0 0 0 0 0 0 /   \1 0 0 0 0 0 0 0 /
%R 
%R foo :tomp({def="foo",  scale="7pt", meta="s"}):addcells():output()
%R foos:tomp({def="foos", scale="7pt", meta="s"}):addcells():output()
%
\pu
$$
  \diag{cube-and*-0}
  \quad
  =
  \quad
  \cmat{(0,1),(2,3),(4,5),(6,7),\\
        (0,2),(1,3),(4,6),(5,7),\\
        (0,4),(1,5),(2,6),(3,7)\\
       }
  \quad
  =
  \quad
  \foo
$$

This gives us a way to represent explictly the transitive-reflexive
closure of a set of arrows:
%
$$\left(\diag{cube-and*-0}\right)^*
  \quad
  =
  \quad
  \foos
$$

The derived rule $\acz$ from sec.\ref{J-ops-and-connectives} proves
%
$$(P^*∧Q^*)^*=P^*∧Q^*=(P∧Q)^*,
$$
%
that corresponds to arrows $7 \two/->`<-/<150> 3 \two/->`<-/<150> 4$;
if we add these arrows to the cube above we get this,
%
%D diagram cube-and*-0b
%D 2Dx     100 +20 +20
%D 2D  100     A1
%D 2D  +15 A2  A3  A4
%D 2D  +15 A5  A6  A7
%D 2D  +15     A8
%D 2D
%D ren     A1      ==>            (P^*∧Q^*)^*
%D ren  A2 A3 A4   ==>  (P∧Q^*)^* P^*∧Q^*  (P^*∧Q)^*
%D ren  A5 A6 A7   ==>   P∧Q^*     (P∧Q)^*  P^*∧Q
%D ren     A8      ==>              P∧Q
%D
%D ren     A1      ==>     7
%D ren  A2 A3 A4   ==>  5  3  6
%D ren  A5 A6 A7   ==>  1  4  2
%D ren     A8      ==>     0
%D
%D (( A1 A2 <- A1 A3 =  A1 A4 <-
%D    A2 A5 <- A2 A6 <- A3 A5 <- A3 A7 <- A4 A6 <- A4 A7 <-
%D    A5 A8 <- A6 A8 <- A7 A8 <-
%D    A3 A6 =
%D ))
%D enddiagram
%
%D diagram cube-and*-0c
%D 2Dx     100 +20 +20
%D 2D  100     A1
%D 2D  +15 A2  A3  A4
%D 2D  +15 A5  A6  A7
%D 2D  +15     A8
%D 2D
%D ren     A1      ==>            (P^*∧Q^*)^*
%D ren  A2 A3 A4   ==>  (P∧Q^*)^* P^*∧Q^*  (P^*∧Q)^*
%D ren  A5 A6 A7   ==>   P∧Q^*     (P∧Q)^*  P^*∧Q
%D ren     A8      ==>              P∧Q
%D
%D ren     A1      ==>     7
%D ren  A2 A3 A4   ==>  5  3  6
%D ren  A5 A6 A7   ==>  1  4  2
%D ren     A8      ==>     0
%D
%D (( A1 A2 =  A1 A3 =  A1 A4 =
%D    A2 A5 <- A2 A6 =  A3 A5 <- A3 A7 <- A4 A6 =  A4 A7 <-
%D    A5 A8 <- A6 A8 <- A7 A8 <-
%D ))
%D enddiagram
%
%R local fooand =
%R 2/1 1 1 1 1 1 1 1 \
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 1 1 1 1 |
%R  |1 0 1 0 0 0 0 0 |
%R  |1 1 0 0 0 0 0 0 |
%R  \1 0 0 0 0 0 0 0 /
%R 
%R fooand:tomp({def="fooand", scale="7pt", meta="s"}):addcells():output()
\pu
$$\diag{cube-and*-0b} \quad ;
$$

We have
%
$$\diag{cube-and*-0b}
  \quad \neq \quad
  \diag{cube-and*-0c}
$$
%
but:
%
$$\left(\diag{cube-and*-0b}\right)^*
  \quad = \quad
  \left(\diag{cube-and*-0c}\right)^*
  \quad = \quad
  \fooand
$$

Let's give a name to this (non-strict) partial order:
``$\astarcuben$'', the ``numerical version'' of the full and-cube. Now
we can see more clearly the extent of the rule $\astarcube$ defined in
the end of sec.\ref{J-ops-and-connectives}: we have
%:
%:
%:   -------------\astarcube
%:   (∧)_i≤(∧)_j
%:
%:   ^acuberule
%:
$$\pu
  \ded{acuberule}
$$
%
whenever $(i,j)∈\astarcuben$.

We have something similar for the or-cube and the implication-cube:
%
%D diagram cube-or*-0c
%D 2Dx     100 +20 +20
%D 2D  100     A1
%D 2D  +15 A2  A3  A4
%D 2D  +15 A5  A6  A7
%D 2D  +15     A8
%D 2D
%D ren     A1      ==>            (P^*∧Q^*)^*
%D ren  A2 A3 A4   ==>  (P∧Q^*)^* P^*∧Q^*  (P^*∧Q)^*
%D ren  A5 A6 A7   ==>   P∧Q^*     (P∧Q)^*  P^*∧Q
%D ren     A8      ==>              P∧Q
%D
%D ren     A1      ==>     7
%D ren  A2 A3 A4   ==>  5  3  6
%D ren  A5 A6 A7   ==>  1  4  2
%D ren     A8      ==>     0
%D
%D (( A1 A2 =  A1 A3 <- A1 A4 =
%D    A2 A5 <- A2 A6 =  A3 A5 <- A3 A7 <- A4 A6 =  A4 A7 <-
%D    A5 A8 <- A6 A8 <- A7 A8 <-
%D ))
%D enddiagram
%
%R local fooor =
%R 2/1 1 1 1 1 1 1 1 \
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 0 0 0 0 |
%R  |1 0 1 0 0 0 0 0 |
%R  |1 1 0 0 0 0 0 0 |
%R  \1 0 0 0 0 0 0 0 /
%R 
%R fooor:tomp({def="fooor", scale="7pt", meta="s"}):addcells():output()
\pu
$$\ostarcuben
  \quad = \quad
  \left(\diag{cube-or*-0c}\right)^*
  \quad = \quad
  \fooor
$$



%D diagram cube-imp*-0c
%D 2Dx     100 +20 +20
%D 2D  100     A7
%D 2D  +15 A5  A3  A6
%D 2D  +15 A1  A4  A2
%D 2D  +15     A0
%D 2D
%D ren     A7      ==>            (P^*→Q^*)^*
%D ren  A5 A3 A6   ==>  (P→Q^*)^* P^*→Q^*  (P^*→Q)^*
%D ren  A1 A4 A2   ==>   P→Q^*     (P→Q)^*  P^*→Q
%D ren     A0      ==>              P→Q
%D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 ->  A6 A7 ->
%D    A0 A2 <-  A1 A3 =   A4 A6 <-  A5 A7 =
%D    A0 A4 ->  A1 A5 =   A2 A6 ->  A3 A7 =
%D ))
%D enddiagram
%
%R local fooimp =
%R 2/1 1 1 1 1 1 1 1 \
%R  |0 0 1 0 0 0 1 0 |
%R  |1 1 1 1 1 1 1 1 |
%R  |0 0 1 0 1 0 1 0 |
%R  |1 1 1 1 1 1 1 1 |
%R  |0 0 1 0 0 0 0 0 |
%R  |1 1 1 1 1 1 1 1 |
%R  \1 0 1 0 0 0 0 0 /
%R 
%R fooimp:tomp({def="fooimp", scale="7pt", meta="s"}):addcells():output()
\pu
$$\istarcuben
  \quad = \quad
  \left(\diag{cube-imp*-0c}\right)^*
  \quad = \quad
  \fooimp
$$

Note that the arrows $2→0$ and $6→4$ in the version for the
implication-cube above are not mistakes --- they correspond to
$P^*{→}Q ≤ P{→}Q$ and $(P^*{→}Q)^* ≤ (P{→}Q)^*$.

}


% __     __    _             _   _                       __    ____   ___      
% \ \   / /_ _| |_   _  __ _| |_(_) ___  _ __  ___       \ \  |  _ \ / _ \ ___ 
%  \ \ / / _` | | | | |/ _` | __| |/ _ \| '_ \/ __|  _____\ \ | |_) | | | / __|
%   \ V / (_| | | |_| | (_| | |_| | (_) | | | \__ \ |_____/ / |  __/| |_| \__ \
%    \_/ \__,_|_|\__,_|\__,_|\__|_|\___/|_| |_|___/      /_/  |_|    \___/|___/
%                                                                              
% «valuations-induce-POs» (to ".valuations-induce-POs")
\section{Valuations induce partial orders}
\label  {valuations-induce-partial-orders}
% Good (phap 42 "valuations-induce-POs")

Let $H$ be a ZHA, $J$ be a J-operator on $H$, and $v$ be a
``valuation'' that assigns to the variables $P$ and $Q$ values in $H$;
$v$ is a function from $\{P,Q\}$ to $H$, where $P$ and $Q$ are seen as
names. Once we have $(H,J,v)$ we have a natural way to extend $v$ to
make it assign values in $H$ for $P^*$, $Q^*$, and for the expressions
in the nodes of the and-cube, the or-cube and the implication-cube.

We will represent a triple $(H,J,v)$ graphically by something like
this,
%
%L mp = mpnew({def="andCube", scale="11pt"}, "12321"):addcuts("c 21/0 0|12")
%L mp:put(v"10", "P"):put(v"20", "P*", "P^*")
%L mp:put(v"01", "Q"):put(v"02", "Q*", "Q^*")
%L mp:output()
%
\pu
$$\andCube
$$
%
that shows the ZHA $H$, the slashing on $H$ corresponding to $J$, and
{\sl at least} $v(P)$ and $v(Q)$; sometimes the diagram will show also
$v(P^*)$ and $v(Q^*)$, for convenience. With this information is it
easy to calculate $v(\text{expr})$ for all `expr's of the form $(P^?
\odot Q^?)^?$, i.e., all the expressions in the nodes of the and-cube,
the or-cube and the implication-cube.

Let's restrict our attention to `$∨$' at this moment. We have:
%
\def\V#1{v(#1)}
\def\VV#1{v((∨)_#1)}
$$\andCube
  \qquad
  \begin{array}{rclcrclcl}
                 &&&&     \V{P∨Q}     &=& 11 &=& \VV0 \\
                 &&&&   \V{P^*∨Q}     &=& 21 &=& \VV1 \\
  \V{P}   &=& 10   &&     \V{P∨Q^*}   &=& 12 &=& \VV2 \\
  \V{Q}   &=& 01   &&   \V{P^*∨Q^*}   &=& 22 &=& \VV3 \\
  \V{P^*} &=& 20   &&   \V{(P∨Q)^*}   &=& 22 &=& \VV4 \\
  \V{Q^*} &=& 02   && \V{(P^*∨Q)^*}   &=& 22 &=& \VV5 \\
                 &&&&   \V{(P∨Q^*)^*} &=& 22 &=& \VV6 \\
                 &&&& \V{(P^*∨Q^*)^*} &=& 22 &=& \VV7 \\
  \end{array}
$$

This induces a partial order $\ostarcubev(v) ⊆ \{0,\ldots,7\}^2$ in
the following way: $i ≤_v j$ iff $\VV{i} ≤_H \VV{j}$. One easy way to
calculate this `$≤_v$' is to replace each number from 0 to 7 in the
cube by $\VV{i}$, and then draw arrows on that to represent the
partial order in $H$, and then bring these arrows ``back'':
%
%D diagram cube-or*-0v
%D 2Dx     100 +20 +20
%D 2D  100     A7
%D 2D  +15 A5  A3  A6
%D 2D  +15 A1  A4  A2
%D 2D  +15     A0
%D 2D
%D ren     A7      ==>            (P^*∨Q^*)^*
%D ren  A5 A3 A6   ==>  (P∨Q^*)^* P^*∨Q^*  (P^*∨Q)^*
%D ren  A1 A4 A2   ==>   P∨Q^*     (P∨Q)^*  P^*∨Q
%D ren     A0      ==>              P∨Q
%D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D ren     A7      ==>     22
%D ren  A5 A3 A6   ==>  22 22 22
%D ren  A1 A4 A2   ==>  21 22 12
%D ren     A0      ==>     11
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 =
%D ))
%D enddiagram
%
%D diagram cube-or*-0vn
%D 2Dx     100 +20 +20
%D 2D  100     A7
%D 2D  +15 A5  A3  A6
%D 2D  +15 A1  A4  A2
%D 2D  +15     A0
%D 2D
%D ren     A7      ==>            (P^*∨Q^*)^*
%D ren  A5 A3 A6   ==>  (P∨Q^*)^* P^*∨Q^*  (P^*∨Q)^*
%D ren  A1 A4 A2   ==>   P∨Q^*     (P∨Q)^*  P^*∨Q
%D ren     A0      ==>              P∨Q
%D
%D ren     A7      ==>     22
%D ren  A5 A3 A6   ==>  22 22 22
%D ren  A1 A4 A2   ==>  21 22 12
%D ren     A0      ==>     11
%D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 =
%D ))
%D enddiagram
%
%R local fooor =
%R 2/1 1 1 1 1 1 1 1 \
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 0 0 0 0 |
%R  |1 0 1 0 0 0 0 0 |
%R  |1 1 0 0 0 0 0 0 |
%R  \1 0 0 0 0 0 0 0 /
%R 
%R fooor:tomp({def="fooor", scale="7pt", meta="s"}):addcells():output()
\pu
$$\mat{   & 7 &   \\ 
        5 & 3 & 6 \\ 
        1 & 4 & 2 \\ 
          & 0 &   \\ 
      }
  \quad\squigto\quad
  \mat{    & 22 &    \\ 
        22 & 22 & 22 \\ 
        21 & 22 & 12 \\ 
           & 11 &    \\ 
      }
  \;\;\squigto\;
  \left(\diag{cube-or*-0v}\right)^*
      \squigto\;
  \left(\diag{cube-or*-0vn}\right)^*
$$

We can do this more compactly, as:
%
%L mp = mpnew({def="orCube", scale="11pt"}, "12321"):addcuts("c 21/0 0|12")
%L mp:put(v"10", "P"):put(v"20", "P*", "P^*")
%L mp:put(v"01", "Q"):put(v"02", "Q*", "Q^*")
%L mp:output()
%
%D diagram cube-or*-a
%D 2Dx     100 +20 +20
%D 2D  100     A7
%D 2D  +15 A5  A3  A6
%D 2D  +15 A1  A4  A2
%D 2D  +15     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 =
%D ))
%D enddiagram
%
%D diagram cube-or*-b
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>              (P^*{∨}Q^*)^*
%D ren  A5 A3 A6   ==>  (P{∨}Q^*)^* P^*{∨}Q^*  (P^*{∨}Q)^*
%D ren  A1 A4 A2   ==>   P{∨}Q^*     (P{∨}Q)^*  P^*{∨}Q
%D ren     A0      ==>                P{∨}Q
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 =
%D ))
%D enddiagram
%
$$\pu
  \begin{array}{rcl}
  \ostarcubev\left(\orCube\right) &=& \left(\diag{cube-or*-a}\right)^* \\ \\
                                  &=& \left(\diag{cube-or*-b}\right)^* \\
  \end{array}
$$
%
which shows that {\sl in this valuation} we have, for example, $\VV3 =
\VV7$, i.e., $P^*{∨}Q^* = (P^*{∨}Q^*)^*$. The important information
that a valuation gives, though, is in its `$\not≤$'s. For example,
here we have
%
$$\begin{array}{rclcrcl}
  \VV1      &<& \VV5 &&  P{∨}Q^*    &<&    (P{∨}Q^*)^* \\
  \VV5      &>& \VV1 && (P{∨}Q^*)^* &>&     P{∨}Q^*    \\
  \VV5 &\not≤& \VV1 && (P{∨}Q^*)^* &\not≤& P{∨}Q^*    \\
  \end{array}
$$
%
If it were possible to prove --- as in sec.\ref{J-ops-and-connectives}
--- that $(P{∨}Q^*)^* ≤ P{∨}Q^*$, then that would be true in all
valuations; by showing a valuation where $(P{∨}Q^*)^* \not≤ P{∨}Q^*$
we show that $(P{∨}Q^*)^* ≤ P{∨}Q^*$ cannot be a theorem, and that all
attempts to find a tree-like proof for $(P{∨}Q^*)^* ≤ P{∨}Q^*$ are
doomed to fail.

\msk

Note that
%
%L mp = mpnew({def="orCubeTen", scale="11pt"}, "12321L"):addcuts("c 321/0 0|12")
%L mp:put(v"10", "P"):put(v"20", "P*", "P^*")
%L mp:put(v"01", "Q"):put(v"02", "Q*", "Q^*")
%L mp:output()
%
%D diagram cube-or*-c
%D 2Dx     100 +30 +30
%D 2D  100     A7
%D 2D  +20 A5  A3  A6
%D 2D  +20 A1  A4  A2
%D 2D  +20     A0
%D 2D
%D ren     A7      ==>              (P^*{∨}Q^*)^*
%D ren  A5 A3 A6   ==>  (P{∨}Q^*)^* P^*{∨}Q^*  (P^*{∨}Q)^*
%D ren  A1 A4 A2   ==>   P{∨}Q^*     (P{∨}Q)^*  P^*{∨}Q
%D ren     A0      ==>                P{∨}Q
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 ->
%D ))
%D enddiagram
%
$$\pu
  \begin{array}{rcl}
  \ostarcubev\left(\orCubeTen\right) &=& \left(\diag{cube-or*-c}\right)^* \\
  \end{array}
$$
%
This new valuation tells us something that the previous one didn't:
that $P^*{∨}Q^* < (P^*{∨}Q^*)^*$ in some valuation, and so
$(P^*{∨}Q^*)^* ≤ P^*{∨}Q^*$ cannot be a theorem.


%   ____                                 _               ____   ___      
%  / ___|___  _ __ ___  _ __   __ _ _ __(_)_ __   __ _  |  _ \ / _ \ ___ 
% | |   / _ \| '_ ` _ \| '_ \ / _` | '__| | '_ \ / _` | | |_) | | | / __|
% | |__| (_) | | | | | | |_) | (_| | |  | | | | | (_| | |  __/| |_| \__ \
%  \____\___/|_| |_| |_| .__/ \__,_|_|  |_|_| |_|\__, | |_|    \___/|___/
%                      |_|                       |___/                   
%
% «comparing-partial-orders» (to ".comparing-partial-orders")
\section{Comparing partial orders}
\label  {comparing-partial-orders}
% Rewrite (phap 44 "comparing-partial-orders")

If we represent the partial orders of the examples of the last section
as subsets of $\{0,\ldots,7\}^2$ we get:
%
%D diagram cube-or*-obv
%D 2Dx     100 +20 +20
%D 2D  100     A7
%D 2D  +15 A5  A3  A6
%D 2D  +15 A1  A4  A2
%D 2D  +15     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 ->  A6 A7 ->
%D    A0 A2 ->  A1 A3 ->  A4 A6 ->  A5 A7 ->
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 ->
%D ))
%D enddiagram
%
%D diagram cube-or*-a
%D 2Dx     100 +20 +20
%D 2D  100     A7
%D 2D  +15 A5  A3  A6
%D 2D  +15 A1  A4  A2
%D 2D  +15     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 =
%D ))
%D enddiagram
%
%D diagram cube-or*-c
%D 2Dx     100 +20 +20
%D 2D  100     A7
%D 2D  +15 A5  A3  A6
%D 2D  +15 A1  A4  A2
%D 2D  +15     A0
%D 2D
%D ren     A7      ==>     7
%D ren  A5 A3 A6   ==>  5  3  6
%D ren  A1 A4 A2   ==>  1  4  2
%D ren     A0      ==>     0
%D
%D (( A0 A1 ->  A2 A3 ->  A4 A5 =   A6 A7 =
%D    A0 A2 ->  A1 A3 ->  A4 A6 =   A5 A7 =
%D    A0 A4 ->  A1 A5 ->  A2 A6 ->  A3 A7 ->
%D ))
%D enddiagram
%
%L mp = mpnew({def="orCube", scale="11pt"}, "12321"):addcuts("c 21/0 0|12")
%L mp:put(v"10", "P"):put(v"20", "P*", "P^*")
%L mp:put(v"01", "Q"):put(v"02", "Q*", "Q^*")
%L mp:output()
%
%L mp = mpnew({def="orCubeTen", scale="11pt"}, "12321L"):addcuts("c 321/0 0|12")
%L mp:put(v"10", "P"):put(v"20", "P*", "P^*")
%L mp:put(v"01", "Q"):put(v"02", "Q*", "Q^*")
%L mp:output()
%
%R local fooobvious, foofull, foonine =
%R 2/1 1 1 1 1 1 1 1 \, 2/1 1 1 1 1 1 1 1 \, 2/1 1 1 1 1 1 1 1 \
%R  |1 0 1 0 1 0 1 0 |   |1 1 1 1 1 1 1 1 |   |1 1 1 1 1 1 1 1 |
%R  |1 1 0 0 1 1 0 0 |   |1 1 1 1 1 1 1 1 |   |1 1 1 1 1 1 1 1 |
%R  |1 0 0 0 1 0 0 0 |   |1 1 1 1 1 1 1 1 |   |1 1 1 1 1 1 1 1 |
%R  |1 1 1 1 0 0 0 0 |   |1 1 1 1 0 0 0 0 |   |1 1 1 1 1 1 1 1 |
%R  |1 0 1 0 0 0 0 0 |   |1 0 1 0 0 0 0 0 |   |1 0 1 0 0 0 0 0 |
%R  |1 1 0 0 0 0 0 0 |   |1 1 0 0 0 0 0 0 |   |1 1 0 0 0 0 0 0 |
%R  \1 0 0 0 0 0 0 0 /   \1 0 0 0 0 0 0 0 /   \1 0 0 0 0 0 0 0 /
%R
%R local footen = foofull 
%R fooobvious:tomp({def="fooobvious", scale="7pt", meta="s"}):addcells():output()
%R foofull   :tomp({def="foofull",    scale="7pt", meta="s"}):addcells():output()
%R foonine   :tomp({def="foonine",    scale="7pt", meta="s"}):addcells():output()
%R footen    :tomp({def="footen",    scale="7pt", meta="s"}):addcells():output()
%
\pu
$$
  \begin{array}{rclcl}
  \ostarcubev\left(\orCube   \right) &=& \left(\diag{cube-or*-a}\right)^* &=& \foonine \\ \\
  \ostarcubev\left(\orCubeTen\right) &=& \left(\diag{cube-or*-c}\right)^* &=& \footen  \\
  \end{array}
$$

\def\ptab#1{\left(\begin{tabular}{c}#1\end{tabular}\right)}

If we represent the transitive-reflexive closures of the obvious
or-cube and the full or-cube of sec.\ref{J-cubes-as-partial-orders} as
subsets of $\{0,\ldots,7\}^2$, we get:
%
$$
  \begin{array}{rclcl}
  \ptab{obvious \\ or-cube \\}^* &=& \left(\diag{cube-or*-obv}\right)^* &=& \fooobvious \\ \\
  \ptab{full    \\ or-cube \\}^* &=& \left(\diag{cube-or*-c}  \right)^* &=& \foofull  \\
  \end{array}
$$

If we compare these four partial orders we get:
%
%$$\ptab{obvious \\ or-cube \\}^*
%  \subsetneq\;
%  \ptab{full    \\ or-cube \\}^*
%  =\;
%  \ostarcubev\left(\orCubeTen\right)^*
%  \subsetneq\;
%  \ostarcubev\left(\orCube   \right)^*
%$$
%
$$\begin{array}{llllllll}
  \ptab{obvious \\ or-cube \\}^*
    & \!\! \subsetneq \!\!
      & \ptab{full \\ or-cube \\}^* \\
    & \!\! = \!\!
      & \ostarcubev\left(\orCubeTen\right) % ^*
        & \!\!\! \subsetneq \!\!\!\!
          & \ostarcubev\left(\orCube   \right) % ^*
  \end{array}
$$

Note that each `1' in the grid of the obvious or-cube tells us
something that we know how to prove; the same for the full or-cube,
and the full or-cube has more `1's in its grid, so it has ``more
information'' --- about the existence of tree-like theorems --- than
the obvious or-cube. For example, the obvious or-cube tells us that we
know how prove $(P{∨}Q)^* ≤ (P^*{∨}Q^*)^*$, and the full or-cube tells
us that we know how to prove $(P{∨}Q)^* = (P^*{∨}Q^*)^*$.

\msk

Each '0' in the grid of a valuation-cube tells us about something that
cannot be be proved as a theorem, because that valuation is a
``countermodel'' for it. The first valuation in the beginning of this
section is on a ZHA with 9 elements, and the second one is on a ZHA
with 10 elements; let's refer to them as $(H_9,J_9,v_9)$ and $(H_{10},
J_{10}, v_{10})$, or just as $v_9$ and $v_{10}$. Note that the grid
for $v_{10}$ has more `0's; and $\ostarcubev(v_{10}) \subsetneq
\ostarcubev(v_9)$; for example, we have $(7,3)∈\ostarcubev(v_9)$ but
%
$$\begin{array}{llllll}
  (7,3)\not∈\ostarcubev(v_{10}) &⇒& v_{10}(\VV7) \not≤_{H_{10}} v_{10}(\VV3) \\
                                 &⇒& v_{10}((P^*{∨}Q^*)^*) \not≤_{H_{10}} v_{10}(P^*{∨}Q^*) \\
                                 &⇒& v_{10} \text{ is a countermodel for }
                                    (P^*{∨}Q^*)^* ≤ P^*{∨}Q^* \\
                                 &⇒& v_{10} \text{ shows that } (P^*{∨}Q^*)^* ≤ P^*{∨}Q^* \\
                                  && \text{cannot be a theorem},
  \end{array}
$$
%
so $v_{10}$ has ``more information'' --- now about the {\sl
  non-existence} of tree-like theorems --- than $v_9$.

\msk

The full or-cube is ``better'' than the obvious or-cube, and the
$v_{10}$-cube is ``better'' than the $v_9$-cube. Moreover, the full
or-cube and the $v_{10}$-cube coincide, and this means that the status
of every statement of the form $\VV i ≤ \VV j$ can be determined in
the following way: if $\VV i ≤ \VV j$ is true in this partial order
%
$$\diag{cube-or*-c}
$$
%
then $\VV i ≤ \VV j$ is a consequence of the obvious or-cube plus
$\ocz$ (sec.\ref{J-ops-and-connectives}); if $\VV i ≤ \VV j$ is not
true in the partial order, then it cannot be proved as a theorem, and
the valuation $v_{10}$ is a countermodel for it.

We can do even better, and extract all information from well-chosen
valuations.

\msk

{\sl Theorem.} Take any statement of the form $\VV i ≤ \VV j$. If it
is true in the valuation below,
%
$$v_{(∨)} \quad = \quad v_{10} \quad = \quad \orCubeTen$$
%
then it is a theorem and can be proved using the obvious or-cube and
$\ocz$; if the statement is false in the valuation $v_{(∨)}$, then it
cannot be a theorem and $v_{(∨)}$ is a countermodel that shows that.

\msk


%L mp = mpnew({def="andCube", scale="11pt"}, "12321"):addcuts("c 2/10 01|2")
%L mp:put(v"20", "P"):put(v"21", "P*", "P^*")
%L mp:put(v"02", "Q"):put(v"12", "Q*", "Q^*")
%L mp:output()
%
%L mp = mpnew({def="impCube", scale="11pt"}, "12R1L"):addcuts("c 2/10 01|2")
%L mp:put(v"10", "P")  -- :put(v"20", "P*", "P^*")
%L mp:put(v"01", "Q")  -- :put(v"02", "Q*", "Q^*")
%L mp:output()
%
\pu

We also have:

{\sl Theorem.} Take any statement of the form $(P^?{∧}Q^?)^? ≤
(P^?{∧}Q^?)^?$. If it is true in the valuation below,
%
$$v_{(∧)} \quad = \quad \andCube$$
%
then it is a theorem and can be proved using the obvious and-cube and
$\acz$; if the statement is false in the valuation $v_{(∧)}$, then it
cannot be a theorem and $v_{(∧)}$ is a countermodel that shows that.

{\sl Theorem.} Take any statement of the form $(P^?{→}Q^?)^? ≤
(P^?{→}Q^?)^?$. If it is true in the valuation below,
%
$$v_{(→)} \quad = \quad \impCube$$
%
then it is a theorem and can be proved using the obvious
implication-cube and $\icz$; if the statement is false in the
valuation $v_{(→)}$, then it cannot be a theorem and $v_{(→)}$ is a
countermodel that shows that.


%  _     _           _            _                           
% | |   (_)_ __   __| | ___ _ __ | |__   __ _ _   _ _ __ ___  
% | |   | | '_ \ / _` |/ _ \ '_ \| '_ \ / _` | | | | '_ ` _ \ 
% | |___| | | | | (_| |  __/ | | | |_) | (_| | |_| | | | | | |
% |_____|_|_| |_|\__,_|\___|_| |_|_.__/ \__,_|\__,_|_| |_| |_|
%                                                             
% «lindenbaum-fragments» (to ".lindenbaum-fragments")
\section{Fragments of Lindenbaum Algebras}
\label  {lindenbaum-fragments}
% Bad (phap 47 "lindenbaum-fragments")


%  ____       _             _                       
% |  _ \ ___ | |_   _      | |       ___  _ __  ___ 
% | |_) / _ \| | | | |  _  | |_____ / _ \| '_ \/ __|
% |  __/ (_) | | |_| | | |_| |_____| (_) | |_) \__ \
% |_|   \___/|_|\__, |  \___/       \___/| .__/|___/
%               |___/                    |_|        
%
% «polynomial-J-ops» (to ".polynomial-J-ops")
\section{Polynomial J-operators}
\label  {polynomial-J-ops}
% Bad (phap 47 "polynomial-J-ops")
% (phop 22)
% (pho "J-examples")
% (find-books "__cats/__cats.el" "fourman")
% (find-slnm0753page (+ 14 331)   "polynomial")

\def\Jnotnot{{(¬¬)}}
\def\JiiR   {{({→→}R)}}
\def\JoQ    {{(∨Q)}}
\def\JiR    {{({→}R)}}
\def\JfoQR  {{(∨Q∧{→}R)}}
\def\JmiQ   {({→→}Q∧{→}Q)}

{

It is not hard to check that for any Heyting Algebra $H$ and any
$Q,R∈H$ the operations $\Jnotnot$, $\ldots$, $\JfoQR$ below are
J-operators:
%
%$$\begin{array}{rclcrcl}
%      (¬¬) &:=& λP{:}H.¬¬P                  &&     (¬¬)(P) &=& ¬¬P \\
%    \JiiR  &:=& λP{:}H.((P{→}R){→}R)       &&   \JiiR(P) &=& (P{→}R){→}R \\
%      \JoQ &:=& λP{:}H.(P{∨}Q)              &&    \JoQ(P) &=& P∨Q \\
%      \JiR &:=& λP{:}H.(P{→}R)              &&    \JiR(P) &=& P{→}R\\
%    \JfoQR &:=& λP{:}H.((P{∨}Q) ∧ (P{→}R)) &&  \JfoQR(P) &=& (P{∨}Q)∧(P{→}R) \\
%  \end{array}
%$$
%
$$\begin{array}{rclcrcl}
      (¬¬)(P) &=& ¬¬P \\
     \JiiR(P) &=& (P{→}R){→}R \\
      \JoQ(P) &=& P∨Q \\
      \JiR(P) &=& P{→}R\\
    \JfoQR(P) &=& (P{∨}Q)∧(P{→}R) \\
  \end{array}
$$

Checking that they are J-operators means checking that each of them
obeys $\J1$, $\J2$, $\J3$. Let's define formally what are $\J1$, $\J2$
and $\J3$ ``for a given $F:H→H$'':
%
$$\begin{array}{rcc}
      \J1_F &:=&           (P ≤ F(P))     \\
      \J2_F &:=&        (F(P) = F(F(P))    \\
      \J3_F &:=&    (F(P∧P') = F(P)∧F(P')) \\
  \end{array}
$$
%
and:
%
$$\J123_F \quad := \quad \J1_F ∧ \J2_F ∧ \J3_F.$$

Checking that $\Jnotnot$ obeys $\J1$, $\J2$, $\J3$ means proving
$\J123_\Jnotnot$ using only the rules from intuitionist logic from
sec.\ref{logic-in-HAs}; we will leave the proof of this, of and
$\J123_\JiiR$, $\J123_\JoQ$, and so on, to the reader.

\msk

The J-operator $\JfoQR$ is a particular case of building more complex
J-operators from simpler ones. If $J,K: H→H$, we define:
%
$$(J∧K) := λP{:}H.(J(P){∧}K(P))$$
%
it not hard to prove $\J123_{(J∧K)}$ from $\J123_J$ and $\J123_K$
using only the rules from intuitionistic logic.

\msk

The J-operators above are the first examples of J-operators in Fourman
and Scott's ``Sheaves and Logic'' (\cite{Fourman}); they appear in
pages 329--331, but with these names (our notation for them is at the
right):

(i) {\sl The closed quotient,}
$$J_a p = a ∨ p \qquad J_Q = \JoQ.$$

(ii) {\sl The open quotient,}
$$J^a p = a→p   \qquad J^R = \JiR.$$

(iii) {\sl The Boolean quotient}.
$$B_a p = (p→a)→a  \qquad B_R = \JiiR.$$

(iv) {\sl The forcing quotient}.
$$(J_a∧J^b)p = (a∨p)∧(b→p) \qquad (J_Q∧J^R) = \JfoQR.$$

(vi) {\sl A mixed quotient.}
$$(B_a∧J^a)p = (p→a)→p   \qquad (B_Q∧J^Q) = \JmiQ.$$

\msk

The last one is tricky. From the definition of $B_a$ and $J^a$ what we
have is
%
$$(B_a∧J^a)p = ((p→a)→a)∧(a→p),$$
%
but it is possible to prove
%
$$((p→a)→a)∧(a→p) \;\;↔\;\; ((p→a)→p)$$
%
intuitionistically.

The operators above are ``polynomials on $P,Q,R,→,∧,∨,⊥$'' in the
terminology of Fourman/Scott: ``If we take a polynomial in $→,∧,∨,⊥$,
say, $f(p,a,b,\ldots)$, it is a decidable question whether for all
$a,b,\ldots$ it defines a J-operator'' (p.331).

\msk

When I started studying sheaves I spent several years without any
visual intuition about the J-operators above. I was saved by ZHAs and
brute force --- and the brute force method also helps in testing if a
polynomial (in the sense above) is a J-operator in a particular case.
For example, take the operators $λP{:}H.(P∧22)$ and $({∨}22)$ on
$H=[00,44]$:
%
% (phop 23)
% (pho "J-ops-diagrams")
% (pho "J-ops-diagrams" "jout")
% (find-dn6 "zhas.lua" "shortoperators-tests")
% (find-dn6file "zhas.lua" "mpnewJ =")
%
%L shortoperators()
%L mpnewF = function (opts, spec, J)
%L     return mpnew(opts, spec, J):setz():zhaJ()
%L   end
%L
%L mpnewF({def="fooa"}, "123454321", function (P) return And(v"22", P) end):output()
%L mpnewF({def="fooo"}, "123454321", Cloq(v"22")):output()
%L mpnewJ({def="fooO"}, "123454321", Cloq(v"22")):zhaPs("22"):output()
%
$$\pu
  \begin{array}{rcccl}
  λP{:}H.(P∧22) &=& \fooa \\ \\
        ({∨}22) &=& \fooo &=& \fooO \\
  \end{array}
$$

The first one, $λP{:}H.(P∧22)$, is not a J-operator; one easy way to
see that is to look at the region in which the result is 22 --- its
top element is 44, and this violates the conditions on slash-operators
in sec.\ref{slash-ops}. The second operator, $({∨}22)$, is a slash
operator and a J-operator; at the right we introduce a convenient
notation for visualizing the action of a polynomial slash-operator, in
which we draw only the contours of the equivalence classes and the
constants that appear in the polynomial.

Using this new notation, we have:
%
%L mpnewJ({def="fooboo", scale="7pt", meta="s"}, "123R2L1",   Booq(v"00")):zhaPs("00"):output()
%L mpnewJ({def="foobii", scale="7pt", meta="s"}, "123R2L1",   Booq(v"11")):zhaPs("11"):output()
%L
%L mpnewJ({def="fooboo", scale="7pt", meta="s"}, "123454321",   Booq(v"00")):zhaPs("00"):output()
%L mpnewJ({def="foobii", scale="7pt", meta="s"}, "123454321",   Booq(v"22")):zhaPs("22"):output()
%L mpnewJ({def="foobor", scale="7pt", meta="s"}, "1234567654321", Cloq(v"42")):zhaPs("42"):output()
%L mpnewJ({def="foobim", scale="7pt", meta="s"}, "1234567654321", Opnq(v"24")):zhaPs("24"):output()
%L mpnewJ({def="foofor", scale="7pt", meta="s"}, "1234567654321", Forq(v"42", v"24")):zhaPs("42 24"):output()
%L mpnewJ({def="foomix", scale="7pt", meta="s"}, "12345654321",   Mixq(v"22")):zhaPs("22"):output()
%
\pu
$$
  \begin{array}{c}
        (¬¬) \;\;=\;\;
        ({→→}00) \;\;=\;\; \fooboo \qquad \qquad
        ({→→}22) \;\;=\;\; \foobii \\
        \\
        ({∨}42) \;\;=\;\; \foobor \qquad
        ({→}24) \;\;=\;\; \foobim \\[-20pt]
        \\
        ({∨}42∧{→}24) \;\;=\;\; \foofor \\
        \qquad \qquad
        \qquad \qquad
        \qquad \qquad
        ({→→}22∧{→}22) \;\;=\;\; \foomix \\
  \end{array}
$$

Note that the slashing for $({∨}42∧{→}24)$ has all the cuts for
$({∨}42)$ plus all the cuts for $({→}24)$, and $({∨}42∧{→}24)$
``forces $42≤24$'' in the following sense: if $P^* = ({∨}42∧{→}24)(P)$
then $42^*≤24^*$.

}




%        _                      _            _               
%  _ __ (_) ___ ___ ___    __ _| | __ _  ___| |__  _ __ __ _ 
% | '_ \| |/ __/ __/ __|  / _` | |/ _` |/ _ \ '_ \| '__/ _` |
% | |_) | | (_| (__\__ \ | (_| | | (_| |  __/ |_) | | | (_| |
% | .__/|_|\___\___|___/  \__,_|_|\__, |\___|_.__/|_|  \__,_|
% |_|                             |___/                      
%
% «algebra-of-piccs» (to ".algebra-of-piccs")
\section{An algebra of piccs}
\label  {algebra-of-piccs}

We saw in the last section a case in which $(J∧K)$ has all the cuts
from $J$ plus all the cuts from $K$; this suggests that we {\sl may}
have an operation dual to that, that behaves as this: $(J∨K)$ has
exactly the cuts that are both in $J$ and in $K$:
%
$$\begin{array}{rcl}
  \Cuts(J∧K) &=& \Cuts(J)∪\Cuts(K) \\
  \Cuts(J∨K) &=& \Cuts(J)∩\Cuts(K) \\
  \end{array}
$$

And it $J_1, \ldots, J_n$ are all the slash-operators on a given ZHA,
then
%
$$\begin{array}{rclcl}
  \Cuts(J_1∧\ldots∧J_n) &=& \Cuts(J_1)∪\ldots∪\Cuts(J_k) &=& \text{(all cuts)} \\
  \Cuts(J_1∨\ldots∨J_n) &=& \Cuts(J_1)∩\ldots∩\Cuts(J_k) &=& \text{(no cuts)} \\
  \end{array}
$$
%
yield the minimal element and the maximal element, respectively, of an
algebra of slash-operators; note that the slash-operator with ``all
cuts'' is the identity map $λP{:H}.P$, and the slash-operator with
``no cuts'' is the one that takes all elements to $⊤$: $λP{:H}.⊤$.
This yields a lattice of slash-operators, in which the partial order
is $J≤K$ iff $\Cuts(J) ⊇ \Cuts(K)$. This is somewhat counterintuitive
if we think in terms of cuts --- the order seems to be reversed ---
but it makes a lot of sense if we think in terms of piccs
(sec.\ref{piccs-and-slashings}) instead.

\msk

Each picc $P$ on $\{0,\ldots,n\}$ has an associated function $·^P$
that takes each element to the top element of its equivalence class.
If we define $P≤P'$ to mean $∀a∈\{0,\ldots,n\}.\,a^P≤a^{P'}$, then we
have this:
%
% (pho     "algebra-of-piccs")
% (phop 25 "algebra-of-piccs")
%
%L partitiongraph = function (opts, spec, ylabel)
%L     local mp = MixedPicture.new(opts)
%L     for y=0,5 do mp:put(v(-1, y), y.."") end
%L     for x=0,5 do mp:put(v(x, -1), x.."") end
%L     for a=0,5 do local aP = spec:sub(a+1, a+1)+0; mp:put(v(a, aP), "*") end
%L     mp.lp:addlineorvector(v(0, 0), v(6, 0), "vector")
%L     mp.lp:addlineorvector(v(0, 0), v(0, 6.5), "vector")
%L     mp:put(v(7, 0), "a")
%L     mp:put(v(0, 7), "aP", ylabel)
%L     return mp
%L   end
%L pg = function (def, spec, ylabel)
%L     return partitiongraph({def=def, scale="5pt", meta="s"}, spec, ylabel)
%L   end
%L
%L pg("grapha", "012345", "a^P"     ):output()
%L pg("graphb", "113355", "a^{P'}"  ):output()
%L pg("graphc", "115555", "a^{P''}" ):output()
%L pg("graphd", "555555", "a^{P'''}"):output()
%L
%
%  a^P                  a^P                  a^P                  a^P
%    ^                    ^                    ^                    ^
%  5 |         *        5 |       * *        5 |   * * * *        5 * * * * * *
%  4 |       *          4 |                  4 |                  4 |
%  3 |     *        <=  3 |   * *        <=  3 |              <=  3 |
%  2 |   *              2 |                  2 |                  2 |
%  1 | *                1 * *                1 * *                1 |
%  0 *----------> a     0 +----------> a     0 +----------> a     0 +----------> a
%    0 1 2 3 4 5          0 1 2 3 4 5          0 1 2 3 4 5          0 1 2 3 4 5
%
%     0|1|2|3|4|5   <=      01|23|45     <=       01|2345            012345
%
$$\pu
  \begin{array}{ccccccc}
  \grapha     &≤& \graphb  &≤& \graphc &≤& \graphd \\ \\
  0|1|2|3|4|5 &≤& 01|23|45 &≤& 01|2345 &≤& 012345  \\
  P           &≤& P'       &≤& P''     &≤& P'''    \\
  \end{array}
$$

This yields a partial order on piccs, whose bottom element is the
identity function $0|1|2|\ldots|n$, and the top element is $012\ldots
n$, that takes all elements to $n$.

The piccs on $\{0,\ldots,n\}$ form a Heyting Algebra, where
$⊤=01\ldots n$, $⊥=0|1|\ldots|n$, and `$∧$' and `$∨$' are the
operations that we have discussed above; it is possible to define a
`$→$' there, but this `$→$' is not going to be useful for us and we
are mentioning it just as a curiosity. We have, for example:
%
%D diagram algebra-of-piccs
%D 2Dx     100    +20   +20     +30 +20 +20
%D 2D  100       01234              T
%D 2D              ^                ^
%D 2D              |                |
%D 2D  +20      01|234             PvQ
%D 2D           ^    ^            ^   ^
%D 2D          /      \          /     \
%D 2D  +20 0|1|234  01|2|34     P       Q
%D 2D          ^      ^          ^     ^
%D 2D           \    /            \   /
%D 2D  +20     0|1|2|34            P&Q
%D 2D              ^                ^
%D 2D              |                |
%D 2D  +20     0|1|2|3|4           bot
%D 2D
%D (( T .tex= ⊤  PvQ .tex= P∨Q  P&Q .tex= P∧Q  bot .tex= ⊥
%D    01234 01|234 <-                             T PvQ <-
%D    01|234 0|1|234 <- 01|234 01|2|34 <-         PvQ P <- PvQ Q <-
%D    0|1|234 0|1|2|34 <- 01|2|34 0|1|2|34 <-     P P&Q <- Q P&Q <-
%D    0|1|2|34 0|1|2|3|4 <-                       P&Q bot <-
%D
%D ))
%D enddiagram
%D
$$\pu \diag{algebra-of-piccs}$$



%      _                               _            _               
%     | |       ___  _ __  ___    __ _| | __ _  ___| |__  _ __ __ _ 
%  _  | |_____ / _ \| '_ \/ __|  / _` | |/ _` |/ _ \ '_ \| '__/ _` |
% | |_| |_____| (_) | |_) \__ \ | (_| | | (_| |  __/ |_) | | | (_| |
%  \___/       \___/| .__/|___/  \__,_|_|\__, |\___|_.__/|_|  \__,_|
%                   |_|                  |___/                      
%
% «algebra-of-J-ops» (to ".algebra-of-J-ops")
\section{An algebra of J-operators}
\label  {algebra-of-J-ops}
% Bad (phap 50 "algebra-of-J-ops")


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

Fourman and Scott define the operations $∧$ and $∨$ on J-operators in
pages 325 and 329 (\cite{Fourman}), and in page 331 they list ten
properties of the algebra of J-operators:
%
$$
\def\li#1 #2 #3 #4    #5 #6 #7 #8 {\text{#1}&#2&#3&#4& &\text{#5}&#6&#7&#8& \\}
\def\li#1 #2 #3 #4                {\text{#1}&#2&#3&#4& }
\begin{array}{rlclcrlclc}
\li    (i) J_a∨J_b = J_{a∨b}  && (∨21)∨(∨12)=(∨22) \\
\li   (ii) J^a∨J^b = J^{a∧b}  && ({→}32)∨({→}23)=({→}22)  \\
\li  (iii) J_a∧J_b = J_{a∧b}  && (∨21)∧(∨12)=(∨11) \\
\li   (iv) J^a∧J^b = J^{a∨b}  && ({→}32)∧({→}23)=({→}33) \\
\li    (v) J_a∧J^a = ⊥        && (∨22)∧({→}22)=(⊥)  \\
\li   (vi) J_a∨J^a = ⊤        && (∨22)∨({→}22)=(⊤) \\
\li  (vii) J_a∨K   = K∘J_a      \\
\li (viii) J^a∨K   = J^a∘K    \\
\li   (ix) J_a∨B_a = B_a        \\
\li    (x) J^a∨B_b = B_{a→b}  \\
\end{array}
$$

% (pho     "J-ops-algebra-2")
% (phop 28 "J-ops-algebra-2")

The first six are easy to visualize; we won't treat the four last
ones. In the right column of the table above we've put a particular
case of (i), $\ldots$, (vi) in our notation, and the figures below put
all together.

In Fourman and Scott's notation,

%D diagram J-alg-1
%D 2Dx     100 +20 +20 +10 +10 +20 +20
%D 2D  100             T
%D 2D  +30     A               E
%D 2D  +20 B       C       F       G
%D 2D  +20     D               H
%D 2D  +30            bot
%D 2D
%D ren      T     ==>           J_⊤=⊤=J^⊥
%D ren    A   E   ==>     J_{22}          J^{22}
%D ren   B C F G  ==> J_{21} J_{12}   J^{32} J^{23}
%D ren    D   H   ==>     J_{11}          J^{11}
%D ren     bot    ==>           J_⊥=⊥=J^⊤
%D
%D (( A T -> E T ->
%D    B A -> C A -> F E -> G E ->
%D    D B -> D C -> H F -> H G ->
%D    bot D -> bot H ->
%D ))
%D enddiagram
%D
$$\pu
  \diag{J-alg-1}
$$
%
in our notation,
%
%D diagram J-alg-2
%D 2Dx     100 +20 +20 +10 +10 +20 +20
%D 2D  100             T
%D 2D  +30     A               E
%D 2D  +20 B       C       F       G
%D 2D  +20     D               H
%D 2D  +30            bot
%D 2D
%D 2Dx     100 +20 +20 +15 +15 +20 +20
%D 2D  100             T
%D 2D  +35     A               E
%D 2D  +20 B       C       F       G
%D 2D  +20     D               H
%D 2D  +35            bot
%D 2D
%D ren      T     ==>      (⊤∨)=(λP.⊤)=(⊥{→})
%D ren    A   E   ==>     (22∨)          (22{→})
%D ren   B C F G  ==> (21∨) (12∨)   (32{→}) (23{→})
%D ren    D   H   ==>     (11∨)          (33{→})
%D ren     bot    ==>      (⊥∨)=(λP.P)=(⊤{→})
%D
%D (( A T -> E T ->
%D    B A -> C A -> F E -> G E ->
%D    D B -> D C -> H F -> H G ->
%D    bot D -> bot H ->
%D ))
%D enddiagram
%D
$$\pu
  \diag{J-alg-2}
$$
%
and drawing the polynomial J-operators as in
sec.\ref{polynomial-J-ops}:
%
%L deforp = function (P, draw, name)
%L     PP(P, name)
%L     mpnewJ({def=name, scale="4.5pt", meta="t"}, "123454321", Cloq(v(P))):zhaPs(draw):print():output()
%L   end
%L defimp = function (P, draw, name)
%L     PP(P, name)
%L     mpnewJ({def=name, scale="4.5pt", meta="t"}, "123454321", Opnq(v(P))):zhaPs(draw):print():output()
%L   end
%L deforp("21", "21", "ora")
%L deforp("22", "22", "orb")
%L deforp("11", "11", "orc")
%L deforp("12", "12", "ord")
%L deforp("00", "",   "orB")
%L defimp("32", "32", "ima")
%L defimp("22", "22", "imb")
%L defimp("33", "33", "imc")
%L defimp("34", "34", "imd")
%L defimp("00", "",   "imB")
%
%R local algebra =
%R 4/            !imB            \
%R  |                            |
%R  |    !orb            !imb    |
%R  |!ora    !ord    !ima    !imd|
%R  |    !orc            !imc    |
%R  |                            |
%R  \            !orB            /
%R 
%R algebra:tomp({def="foo", scale="30pt"}):addcells():output()
$$\pu
  % \bhbox{$
  \begin{array}{c}
  \\
  \foo \\
  \\
  \end{array}
  % $}
$$






% $$
% \def\li#1 #2 #3 #4    #5 #6 #7 #8 {\text{#1}&#2&#3&#4& &\text{#5}&#6&#7&#8& \\}
% \begin{array}{rlclcrlclc}
% \li   (i) J_a∨J_b = J_{a∨b}    (ii)   J^a∨J^b = J^{a∧b}
% \li (iii) J_a∧J_b = J_{a∧b}    (iv)   J^a∧J^b = J^{a∨b}
% \li   (v) J_a∧J^a = ⊥          (vi)   J_a∨J^a = ⊤
% \li (vii) J_a∨K   = K∘J_a      (viii) J^a∨K   = J^a∘K
% \li  (ix) J_a∨B_a = B_a        (x)    J^a∨B_b = B_{a→b}
% \end{array}
% $$
% 
% $$\begin{array}{rclcrcl}
%       (¬¬) &:=& λP:H.¬¬P                   &&     (¬¬)(P) &=& ¬¬P \\
%     (→→R) &:=& λP:H.((P{→}R){→}R)       &&   (→→R)(P) &=& (P{→}R){→}R \\
%       (∨Q) &:=& λP:H.(P{∨}Q)              &&    (∨Q)(P) &=& P∨Q \\
%       (→R) &:=& λP:H.(P{→}R)              &&     (→R)(P) &=& P{→}R\\
%   (∨Q∧→R) &:=& λP:H.((P{∨}Q) ∧ (P{→}R)) && (∨Q∧→R)(P) &=& (P{∨}Q)∧(P{→}R) \\
%   \end{array}
% $$




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

% «slashings-are-poly» (to ".slashings-are-poly")
\section{All slash-operators are polynomial}
\label  {slashings-are-poly}
% (phap 51 "slashings-are-poly")

% (find-xpdfpage "~/LATEX/2015planar-has.pdf" 30)
% (find-LATEX "2015planar-has.tex" "zquotients-poly")

{

%L local ba, bb, bc = Booq(v"04"), Booq(v"23"), Booq(v"45")
%L local babc = Jand(ba, Jand(bb, bc))
%L mpnewJ({def="slaT", scale="7pt", meta="s"}, "1R2R3212RL1", babc       ):addlrs()         :output():print()
%L mpnewJ({def="slaA", scale="7pt", meta="s"}, "1R2R3212RL1", Booq(v"04")):addlrs()         :output():print()
%L mpnewJ({def="slaB", scale="7pt", meta="s"}, "1R2R3212RL1", Booq(v"23")):addlrs()         :output():print()
%L mpnewJ({def="slaC", scale="7pt", meta="s"}, "1R2R3212RL1", Booq(v"45")):addlrs()         :output():print()
%L mpnewJ({def="fooa", scale="7pt", meta="s"}, "1R2R3212RL1", Booq(v"04")):zhaPs("04")      :output():print()
%L mpnewJ({def="foob", scale="7pt", meta="s"}, "1R2R3212RL1", Booq(v"23")):zhaPs("23")      :output():print()
%L mpnewJ({def="fooc", scale="7pt", meta="s"}, "1R2R3212RL1", Booq(v"45")):zhaPs("45")      :output():print()
%L mpnewJ({def="food", scale="7pt", meta="s"}, "1R2R3212RL1", babc       ):zhaPs("04 23 45"):output():print()
%L mpnew ({def="fooe", scale="7pt", meta="s"}, "1R2R3212RL1"      ):addlrs():output()
%L mpnewJ({def="foof", scale="7pt", meta="s"}, "1R2R3212RL1", babc):zhaJ()  :output()
\pu

Here is an easy way to see that all slashings --- i.e., J-operators on
ZHAs --- are polynomial. Every slashing $J$ has only a finite number of
cuts; call them $J_1, \ldots, J_n$. For example:
%
$$J=\slaT \qquad J_1=\slaA \quad J_2=\slaB \quad J_3=\slaC$$

Each cut $J_i$ divides the ZHA into an upper region and a lower
region, and $J_i(00)$ yields the top element of the lower region.
Also, $({→→}J_i(00))$ is a polynomial way of expressing that cut:
%
$$\def\foo#1#2{
    \begin{array}{rr}
      J_#1= \\
      % ({→→}J_#1(00))= \\
      (→→#2)= \\
     \end{array}}
  \foo1{04} \fooa \quad
  \foo2{23} \foob \quad
  \foo3{45} \fooc
$$

The conjunction of these `$({→→}J_i(00))$'s yields the original
slashing:
%
% $$
%   \begin{array}{c}
%   \fooa ∧ \foob ∧ \fooc = \food
%   \end{array}
% $$
%
$$(→→04)∧(→→23)∧(→→45) = \food = J$$

}



\newpage

%   ___                  _   _                                    _        
%  / _ \ _   _  ___  ___| |_(_) ___  _ __    _ __ ___   __ _ _ __| | _____ 
% | | | | | | |/ _ \/ __| __| |/ _ \| '_ \  | '_ ` _ \ / _` | '__| |/ / __|
% | |_| | |_| |  __/\__ \ |_| | (_) | | | | | | | | | | (_| | |  |   <\__ \
%  \__\_\\__,_|\___||___/\__|_|\___/|_| |_| |_| |_| |_|\__,_|_|  |_|\_\___/
%                                                                          
% «question-marks» (to ".question-marks")
% (phap 53 "question-marks")
\section{Open sets of a certain form}
\label  {question-marks}

\def\OPENS{\operatorname{\mathsf{Opens}}}
\def\OPENSPABD{\OPENS(\Opens_A(P),B,D)}
\def\OPENSPABD{\OPENS((P,A),B,D)}
\def\relevant {\operatorname{\mathsf{relev}}}
\def\qmarks   {\operatorname{\mathsf{qmarks}}}
\def\forget   {\operatorname{\mathsf{forget}}}
\def\propagate{\operatorname{\mathsf{prpgt}}}
\def\propagate{\operatorname{\mathsf{prp}}}
\def\biggest{\mathsf{biggest}}
\def\ess{\mathsf{ess}}

A 2-column graph with question marks (a ``2CGQ'') is a triple $((P,A),
B, D)$, where $(P,A)$ is a 2CG and $B⊆D⊆P$; let $G=((P,A), B, D)$. We
represent $G$ graphically like $(P,A)$, but with `0's, `?'s and '1's
on the points of $P$, and the expression ``$C$ is of the form $G$''
means $B⊆C⊆D$. For example:
%
%L tcg_spec = "2, 3; 22, "
%L tcgbig("tcgL"):strs("0 1", "1 0 0"):vs():hs():output()
%L tcgbig("tcgR"):strs("0 ?", "1 ? 0"):vs():hs():output()
$$\pu
  \tcgL \;\; \text{is of the form} \;\; \tcgR
$$

Informally, a `0' in the graphical representation of a 2CGQ $Q$ means
``all `$C$'s of the form $G$ have a `0' here'', a `1' means ``all
`$C$'s of the form $G$ have a `1' here'', and a `?' means ``some
`$C$'s of the form $G$ have `0's there and some have `1's''. More
formally, a 2CGQ $G$ corresponds to a partition of $P$ into $P_0$,
$P_1$ and $P_?$ --- the sets of `0's, `1's and `?'s of the graphical
representation of $G$ --- and we have $P_1=B$, $P_?=D∖B$, $P_0=P∖D$,
$D=P_1∪P_?$.

Our main use for 2CGQs will be for giving us a nice notation for ``the
set of open sets of $(P,A)$ betwen $B$ and $D$'':
%
$$\OPENSPABD \;\; = \;\; \setofst{U⊆P}{B⊆U⊆D \text{ and } U∈\Opens_A(P)}$$

Note that adding intercolumn arrows reduce sets of
opens sets,
%
%L tcg_spec = "6, 6;   , "
%L tcgmed("tcgA"):strs(split("? 1 ? ? 0 ?"), split("? 1 ? ? 0 ?")):hs():output()
%L tcg_spec = "6, 6; 43, "
%L tcgmed("tcgB"):strs(split("? 1 ? ? 0 ?"), split("? 1 ? ? 0 ?")):hs():output()
%L tcg_spec = "6, 6; 43, 54"
%L tcgmed("tcgC"):strs(split("? 1 ? ? 0 ?"), split("? 1 ? ? 0 ?")):hs():output()
%
$$\pu
  \OPENS\tcgA  \;⊇\;
  \OPENS\tcgB  \;⊇\;
  \OPENS\tcgC
$$
%
because each arrow is a ``restriction'' (sec.\ref{topologies-on-2CGs})
on what is considered an open set. We can propagate `1's forward along
arrows like `$1→?$' and `0's backward along arrows like `$?→0$'
without changing the result of `$\OPENS(\ldots)$':
%
%L tcg_spec = "6, 6; 43, "
%L tcg_spec = "6, 6;   , "
%L tcgmed("tcgA"):strs(split("? 1 ? ? 0 ?"), split("? 1 ? ? 0 ?")):hs():output()
%L tcgmed("tcgB"):strs(split("1 1 ? ? 0 0"), split("1 1 ? ? 0 0")):hs():output()
%
%L tcg_spec  = "4, 6; 11 22 34 45, 25"
%L tcgmed("tcgL" ):strs("1 ? ? ?", "? ? ? 0 ? 0"):hs():output()
%L tcgmed("tcgR" ):strs("1 ? 0 0", "1 ? ? 0 0 0"):hs():output()
%
$$
  \pu
  \OPENS\tcgA = \OPENS\tcgB
  \qquad
  \OPENS\tcgL = \OPENS\tcgR
$$




%  ____                                    _   _             
% |  _ \ _ __ ___  _ __   __ _  __ _  __ _| |_(_) ___  _ __  
% | |_) | '__/ _ \| '_ \ / _` |/ _` |/ _` | __| |/ _ \| '_ \ 
% |  __/| | | (_) | |_) | (_| | (_| | (_| | |_| | (_) | | | |
% |_|   |_|  \___/| .__/ \__,_|\__, |\__,_|\__|_|\___/|_| |_|
%                 |_|          |___/                         
%
% «propagation» (to ".propagation")
% (phap 53 "propagation")
\section{Propagation}
\label{propagation}

Fix a 2CG $(P,A)$. There are two good, natural ways to get rid of all
arrows `$1→0$' in a subset $C⊆P$: one, called `$\propagate_{1,(P,A)}$'
or `$\propagate_{1}$', ``propagates the `1's forward'', and the other
one, called `$\propagate_{0}$' or `$\propagate_{1,(P,A)}$',
``propagates the `0's backward''. An example:
%
%L tcg_spec = "2, 3; 22, "
%L tcgmed("tcgC"):strs("0 1", "1 0 0"):hs():output()
%L tcgmed("tcgD"):strs("1 1", "1 1 0"):hs():output()
%L tcgmed("tcgB"):strs("0 0", "1 0 0"):hs():output()
%
$$\pu
  \propagate_0\tcgC = \tcgB
  \qquad
  \propagate_1\tcgC = \tcgD
$$

It easy to see that $\propagate_1(C)$ returns the smallest open set
containing $C$, and $\propagate_0(C)$ returns the largest open set
contained in $C$,

The {\sl interior} of a set $S$ in a topology $\calU$ on $P$ is the
biggest open set in $\calU$ contained in $S$, and, dually, the {\sl
  cointerior} of a set $S$ is the smallest open set in $\calU$
containing $S$. In finite topologies cointeriors always exist.

\msk

{\sl Theorem 1.} For any 2CG $(P,A)$ and $S⊆P$ we have
%
$$\Int(S) = \propagate_0(S) ⊆ S ⊆ \propagate_1(S) = \coInt(S).$$

\msk

We can define propagations for 2CGQs in a way that changes only the
`?'s. If $G=((P,A),B,D)$ is a 2CGQ, then $\propagate_1(G)$ propagates
forward only the `1's in arrows like `$1→?$', and $\propagate_0(G)$
propagates backward only the `0's in arrows like `$?→0$'. 

The operations `$\propagate_1$' and `$\propagate_0$' on 2CGQs need not
commute:
%
%L tcg_spec = "2, 2; 12, "
%L tcgmed("tcgN"):strs("? 1", "0 ?"):hs():output()
%L tcgmed("tcgZ"):strs("0 1", "0 0"):hs():output()
%L tcgmed("tcgO"):strs("1 1", "0 1"):hs():output()
$$\pu
  % \propagate_1\left(\propagate_0 \tcgN\right)
  % = \tcgZ ≠ \tcgO =
  % \propagate_0\left(\propagate_1 \tcgN\right)
  \begin{array}{rcl}
  \propagate_1\left(\propagate_0 \tcgN\right) &=& \tcgZ \\ \\
  \propagate_0\left(\propagate_1 \tcgN\right) &=& \tcgO \\
  \end{array}
$$
%
but they can only fail to commute when $\OPENS(G)=∅$. When they
commute we will write their composite as `$\propagate$'.

\msk

{\sl Theorem 2.} Let $G=((P,A),B,D)$ be a 2CGQ with $\OPENS(G)≠∅$ and
let $G' = \propagate(G) = \OPENS((P,A), B', D')$, $P'_1=B'$,
$P'_?=D'∖B'$, $P'_1=P∖D'$. Then:

% Suppose that $\OPENS(G)≠∅$ and let $G' =
% \propagate(G) = \OPENS((P,A), \linebreak[0] B', D')$. Then:

a) In $G'$ everything below a `1' is also `1',

b) In $G'$ everything above a `0' is also `0',

c) $B' = P'_1$ is an open set,

d) $D' = P'_1∪P'_? = P∖P'_0$ is an open set,

e) $B' = \propagate_1(B) = \coInt(B)$,

f) $D' = \propagate_0(D) = \Int(D)$,

g) $B' = \pile(ab)$ for some $ab$,

h) $D' = \pile(ef)$ for some $ef$,

i) $B' ∈ \OPENS(G) = \OPENS(G')$,

j) $D' ∈ \OPENS(G) = \OPENS(G')$.

\msk

An example:
%
%L tcg_spec  = "4, 6; 11 22 34 45, 25"
%L tcgmed("tcgG"  ):strs("1 ? ? ?", "? ? ? 0 ? 0"):hs():output()
%L tcgmed("tcgGG" ):strs("1 ? ? ?", "? ? ? 0 0 0"):hs():output()
%L tcgmed("tcgGGG"):strs("1 ? 0 0", "1 ? ? 0 0 0"):hs():output()
%
%L tcg_spec  = "4, 6; , "
%L tcgmed("tcgGG" ):strs("1 ? ? ?", "? ? ? 0 0 0"):hs():output()
%
%L mp = mpnew({def="foo", meta="s", scale="7pt"}, "1R2R3212RL1"):addlrs():output()
%
$$\pu
  \begin{array}{c}
  G = \tcgG
  \qquad
  G' = \propagate(G) = \tcgGGG = ((P,A), \pile(11), \pile(23))
  \\
  % \OPENS(G) = \OPENS(G')
  % \quad
  % \two/<-`->/<300>^{\pile}_{\pile^{-1}}
  % \quad
  % [11,23]∩\;\;\foo \\
  \end{array}
$$

\msk

The next theorem translates this to ZHAs, and shows that when
$\OPENS(G)≠∅$ then it returns an interval in a ZHA (in the sense of
sec.\ref{piccs-and-slashings}),

\msk

{\sl Theorem 3.} Let $G=((P,A),B,D)$ be a 2CGQ with $\OPENS(G)≠∅$ and
let $G' = \propagate(G) = \OPENS((P,A), B', D')$, $ab=\pile^{-1}(B')$,
$ef=\pile^{-1}(D')$, $I = \pile^{-1}(\OPENS(G)) =
\pile^{-1}(\OPENS(G'))$, and let $H$ be the ZHA generated by $(P,A)$,
i.e., $H=\pile^{-1}(\Opens_A(P))$. Then:

a) $ab$ is the minimal point of $I$,

b) $ef$ is the maximal point of $I$,

c) $I⊆H$,

d) $I=[ab,ef]∩H$,

e) if $A$ has no intercolumn arrows then $I=[ab,ef]$.

\msk

With Theorem 3 we can extend the last example to:
%
%L tcg_spec  = "4, 6; 11 22 34 45, 25"
%L tcgmed("tcgG"  ):strs("1 ? ? ?", "? ? ? 0 ? 0"):hs():output()
%L tcgmed("tcgGG" ):strs("1 ? ? ?", "? ? ? 0 0 0"):hs():output()
%L tcgmed("tcgGGG"):strs("1 ? 0 0", "1 ? ? 0 0 0"):hs():output()
%
%L tcg_spec  = "4, 6; , "
%L tcgmed("tcgGG" ):strs("1 ? ? ?", "? ? ? 0 0 0"):hs():output()
%
%L mp = mpnew({def="foo", meta="s", scale="7pt"}, "1R2R3212RL1"):addlrs():output()
%
$$\pu
  \begin{array}{c}
  G = \tcgG
  \qquad
  G' = \propagate(G) = \tcgGGG = ((P,A), \pile(11), \pile(23))
  \\
  \OPENS(G) = \OPENS(G') = I
  \quad
  \two/<-`->/<300>^{\pile}_{\pile^{-1}}
  \quad
  [11,23]∩\;\;\foo \\
  \end{array}
$$

In the next sections we will see that in some important cases the
results of $\OPENS(\ldots)$ coincide with J-equivalence classes.




%  ____      _                       _                 _       _       
% |  _ \ ___| | _____   ____ _ _ __ | |_   _ __   ___ (_)_ __ | |_ ___ 
% | |_) / _ \ |/ _ \ \ / / _` | '_ \| __| | '_ \ / _ \| | '_ \| __/ __|
% |  _ <  __/ |  __/\ V / (_| | | | | |_  | |_) | (_) | | | | | |_\__ \
% |_| \_\___|_|\___| \_/ \__,_|_| |_|\__| | .__/ \___/|_|_| |_|\__|___/
%                                         |_|                          
%
% «relevant-points» (to ".relevant-points")
% (phap 55 "relevant-points")
% \section{The set of relevant points of a J-operator}
\section{The set of relevant points of a slashing}

We saw in sec.\ref{piccs-and-slashings} that a slashing on a ZHA $H$
can be represented a pair $(L,R)$ of piccs, that we drew in a V-shaped
diagram; let's write $S$ for the set of numbers above the cuts in the
V-shaped diagram, converting them to the notation for elements of the
left and the right columns of 2-column graphs:
%
%L -- (find-LATEX "dednat6/zhas.lua" "VCuts-tests")
%L local vc = VCuts.new({scale="7pt", def="vcuts"}, 4, 6)
%L vc:cutl(0)
%L vc:cutr(3):cutr(5)
%L vc:output()
%L
%L mp = mpnew({def="ZQuot"},      "12345RR4321"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp = mpnew({def="ZQuotients"}, "1R2R3212RL1"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%L mp:print()
%
$$\pu
  J = \ZQuotients
  \qquad
  (L,R) = \vcuts
  \qquad
  S = \{1\_, \; \_4, \_6\}
$$

We also saw (sec.\ref{J-ops-and-regions}) that on ZHAs there is a
bijection between slashings and J-operators. Let $\relevant(J)$ be the
operation that obtains the set $S$ for a J-operator $J$: $\relevant(J)
= \{1\_, \; \_4, \_6\}$ for the $J$ above. We will call $S⊆P$ the {\sl
  set of relevant points} of the J-operator $J$, and $Q = \qmarks(J)
=P∖S$ will be the {\sl set of (points that will be replaced by)
  question marks} by $J$. Note that we can also go from a set $Q⊆P$ to
a slashing and a J-operator, but we will not need a notation for that.

We can define the operation that receives a $C⊆P$ and ``forgets the
information on the points of $Q$'' on $C$, returning a 2CGQ, as:
%
$$\forget_{(P,A),Q}(C) \;\; = \;\; ((P,A), C∖Q, C∪Q)$$
%
for example:
%
%L tcg_spec  = "4, 6; 11 22 34 45, 25"
%L tcgmed("tcgG"  ):strs("1 ? ? ?", "? ? ? 0 ? 0"):hs():output()
%L tcgmed("tcgGG" ):strs("1 ? ? ?", "? ? ? 0 0 0"):hs():output()
%L tcgmed("tcgGGG"):strs("1 ? 0 0", "1 ? ? 0 0 0"):hs():output()
%
%L tcg_spec  = "4, 6; , "
%L tcgmed("tcgGG" ):strs("1 ? ? ?", "? ? ? 0 0 0"):hs():output()
%
$$\pu
  \forget_{(P,A),Q}(\pile(12)) = \tcgG
$$

Note that
%
%L tcg_spec  = "4, 6; , "
%L tcg_spec  = "4, 6; 11 22 34 45, 25"
%L tcgmed("tcgGP" ):strs("1 ? 0 0", "1 ? ? 0 0 0"):hs():output()
%
$$\pu
  \begin{array}{rcl}
  \propagate(\forget_{(P,A),Q}(\pile(12))) &=& \tcgGP \\
                                           &=& ((P,A), \pile(11), \pile(23))
  \end{array}
$$
%
and that:
%
$$\begin{array}{rcl}
  \pile^{-1}(\OPENS(\propagate(\forget_{(P,A),Q}(\pile(12))))) &=& [11,23]∩H \\
                                                               &=& [\co J(12), J(12)]∩H \\
                                                               &=& [12]^J \\
  \end{array}
$$
%
this holds in general, as we will see soon.

% and when we apply $\OPENS$ (and $\pile^{-1}$) to that we get exactly
% $[11,23]∩H$, which is the J-equivalence class of 12 --- this happens
% always, but the easiest way to understand why is to start with {\sl
% rectangular} ZHAs.


%  ____           _                          _            
% |  _ \ ___  ___| |_ __ _ _ __   __ _ _   _| | __ _ _ __ 
% | |_) / _ \/ __| __/ _` | '_ \ / _` | | | | |/ _` | '__|
% |  _ <  __/ (__| || (_| | | | | (_| | |_| | | (_| | |   
% |_| \_\___|\___|\__\__,_|_| |_|\__, |\__,_|_|\__,_|_|   
%                                |___/                    
%
% «rectangular-versions» (to ".rectangular-versions")
% (phap 56 "rectangular-versions")
\section{Rectangular versions}
\label{rectangular-versions}

The ``rectangular version'' of a 2CG, a ZHA and a J-operator are
defined as this. Let $(P,A)$ be a 2CG and $H$ its associated ZHA, and
$J:H→H$ a J-operator on $H$; then $A'$ is $A$ minus its intercolumn
arrows, $H'$ is the (rectangular) ZHA associated to $(P,A')$, and
$J':H'→H'$ is J-operator on $H'$ that has the same cuts as $J$. The
primes on $A'$, $H'$ and $J'$ will always mean from here on that we
are on the rectangular versions. Let $Q=\qmarks(J)=\qmarks(J')$.

The rectangular versions for the $(P,A)$ and the $J$ that we are using
in our examples are:
%
%L tcg_spec  = "4, 6; , "
%L tcgbig("tcgRect" ):lrs():vs():hs():output()
%L mp = mpnew({def="ZRect"}, "12345RR4321"):addlrs():addcuts("c 4321/0 0123|45|6"):output()
%
$$\pu
  (P,A') = \tcgRect
  \qquad
  J' = \ZRect
  \;\;.
$$

Take any $C⊆P$, The result of $\forget_{(P,A'),Q}(C)$ is always of
this form,
%
%L tcg_spec  = "4, 6; , "
%L tcgmed("tcgGF" ):strs("a ? ? ?", "? ? ? b ? c"):hs():output()
$$\pu
  % \propagate(\forget_{(P,A'),Q}(C)) = \tcgGF
  \forget_{(P,A'),Q}(C) = \tcgGF
$$
%
for some $a,b,c∈\{0,1\}$; moreover, if $C$ is open then
$\forget_{(P,A'),Q}(C)$ doesn't have `1's above `0's. Take any $C⊆P$
open in $(P,A)$; $C$ will be of the form $\pile(cd)$ for some $cd∈H'$.
Let $G=\forget_{(P,A'),Q}(C)$. The action of $\propagate$ on `$G$'s of
this form is particularly simple: each column of $G$ is made of blocks
of consecutive `?'s separated by `0's or `1's, and $\propagate$ acts
homogeneously on each block, leaving `?'s in at most one block in each
column. For example, if $a=b=1$ and $c=0$ then
%
%L tcg_spec  = "4, 6; , "
%L tcgmed("tcgGF" ):strs("1 ? ? ?", "1 1 1 1 ? 0"):hs():output()
$$\pu
  \propagate(\forget_{(P,A'),Q}(C)) = \tcgGF
$$

It is easy to see that:

\msk

{\sl Theorem 1.} If $C=\pile(cd)$ then
$\pile^{-1}(\OPENS(\propagate(\forget_{(P,A'),Q}(C))))$ is a
$J'$-equivalence class.

\msk

{\sl Theorem 2.} If $C=\pile(cd)$ then
$\pile^{-1}(\OPENS(\propagate(\forget_{(P,A'),Q}(C))))$ is $[\co
  J'(cd), J'(cd)]$.

\msk

{\sl Theorem 3.} Suppose that $cd∈H$ (instead of $cd∈H'$) and let:
%
$$\begin{array}{rcl}
  C   &=& \pile(cd) \\
  G   &=& \forget_{(P,A'),Q}(C) \\
  G'  &=& \propagate(\forget_{(P,A'),Q}(C)) \\
  G'' &=& \propagate(\forget_{(P,A ),Q}(C)) \\
  I'  &=& \pile^{-1}(\OPENS(G')) \\
  I'' &=& \pile^{-1}(\OPENS(G'')) \\
  \end{array}
$$
%
then $G'$ is a ``rectangular'' (and ``propagated'') 2CGQ, and $I'=[\co
  J'(cd), J'(cd)]$ is a ``rectangular interval''; $G''$ is $G'$ plus
the intercolumn arrows, and with the propagations having been done
through the intercolumn arrows too. It is not hard to see that:

a) $\OPENS(G) = \OPENS(G') ⊇ \OPENS(G'')$

b) $I'' = I'∩H$

c) $cd∈I''$

d) $I'' = [\co J(cd), J(cd)]∩H$

e) $\pile(\co J(cd)), \pile(J(cd)) ∈ I''$

f) $G'' = ((P,A), \pile(\co J(cd)), \pile(J(cd)))$

g) $G'' = ((P,A), \coInt(C∖Q), \Int(C∪Q))$, so:

h) $\pile(\co J(cd)) = \coInt(C∖Q) = \propagate_1(C∖Q)$ and

i) $\pile(J(cd)) = \Int(C∪Q) = \propagate_0(C∪Q)$,

j) $\co J(cd)) = \pile^{-1}(\coInt(C∖Q)) = \pile^{-1}(\propagate_1(C∖Q))$ and

k) $J(cd) = \pile^{-1}(\Int(C∪Q)) = \pile^{-1}(\propagate_0(C∪Q))$.

\msk

A way to visualize what Theorem 3 means is to define $B, B', B'', D,
D' D''$ like this:
%
$$\begin{array}{rcl}
  (B,D) &=& (C∖Q, C∪Q) \\
  G'  &=& ((P,A'),B',D') \\
  G'' &=& ((P,A),B'',D'') \\
  \end{array}
$$
%
%L mp = mpnew({def="ZRect", meta="s", scale="7pt"}, "12345RR4321"):addcuts("c 4321/0 0123|45|6")
%L mp:put(v"12", "C"):put(v"10", "B'") :put(v"43", "D'") :output()
%L mp = mpnew({def="ZOrig", meta="s", scale="7pt"}, "1R2R3212RL1"):addcuts("c 4321/0 0123|45|6")
%L mp:put(v"12", "C"):put(v"11", "B''"):put(v"23", "D''") :output()
%L mp = mpnew({def="ZHAJR", meta="s", scale="7pt"}, "12345RR4321"):addcuts("c 4321/0 0123|45|6")
%L mp:addlrs():output()
%L mp = mpnew({def="ZHAJ",  meta="s", scale="7pt"}, "1R2R3212RL1"):addcuts("c 4321/0 0123|45|6")
%L mp:addlrs():output()
%
then, in the example we are using, omitting some `$\pile$'s and
`$\pile^{-1}$'s, we have:
%
$$\pu
  J=\ZHAJ
  \quad
  J'=\ZHAJR
  \quad
  \ZRect
  \quad
  \ZOrig
$$
%
Theorem 3 shows several ways to calculate $B', C', B'', C''$.





%            _          ____   ____ ____     
%  ___ _   _| |__      |___ \ / ___/ ___|___ 
% / __| | | | '_ \ _____ __) | |  | |  _/ __|
% \__ \ |_| | |_) |_____/ __/| |__| |_| \__ \
% |___/\__,_|_.__/     |_____|\____\____|___/
%                                            
% «sub-2CGs» (to ".sub-2CGs")
\section{Sub-2-column graphs}
\label{sub-2CGs}
% (phap 58 "sub-2CGs")

Another way to understand the properties of the operation
$\forget_{(P,A),Q}$ is to think that it relates two topologies,
$\Opens_A(P)$ and $\Opens_{A|_S}(S)$ (mnemonic: $S$ is a ``smaller
set'', and $S = \relevant(J) = P∖Q$). We will sometimes denote
$\Opens_A(P)$ and $\Opens_{A|_S}(S)$ as just $\Opens(P)$ and
$\Opens(S)$; $\Opens(S)$ is a restriction of $\Opens(P)$ to $S$ in the
following sense: the open sets of $\Opens(S)$ are exactly the sets of
the form $U∩S$, where $U∈\Opens_A(P)$.

The topology $\Opens(S) = \Opens_{A|_S}(S)$ comes from a
``sub-2-column graph'' $(S,A|_S)$ of $(P,A)$, where the set of arrows
$A|_S$ can be obtained from $A$ and $S$ by
%
$$A|_S \;\;:=\;\; (A^*∩(S×S))^\ess,$$
%
which means: take the transitive-reflexive closure $A^*$ of $A$, which
yields a partial order on $P$, and restrict that order to $S$ by
taking $A^*∩(S×S)$; then (note: this last step is optional!) drop the
redundant arrows in $A^*∩(S×S)$ and keep only the ``essential'' ones,
which are the ones that can't be deleted without changing the order.

For clarity, we will draw the arrows in $(S,A|_S)$ as in the original
2CG $(P,A)$, even though some arrows may look as coming from or going
to nonexistent points; a really honest drawing of $(S,A|_S)$ in the
example below would be the one at the right, that has only one
intercolumn arrow, $1\_←\_6$, and only one vertical arrow, $\_6→\_4$.
%
%L tcg_spec  = "4, 6; 11 22 34 45, 25"
%L tcgbig("tcgP")                                  :lrs():hs():vs():output()
%L tcgbig("tcgS"):strs("1\\_ · · ·", "· · · \\_4 · \\_6"):hs():vs():output()
%L tcg_spec  = "4, 6;            , 16"
%L local tcg =
%L tcgbig("tcgr"):strs("1\\_ {} {} {}", "{} {} {} \\_4 {} \\_6")
%L   tcg:arrow(tcg:R(6), tcg:L(1), 0.07)
%L   tcg:arrow(tcg:R(6), tcg:R(4), 0.17)
%L   tcg:output()
%
$$
  \pu
  (P,A) = \tcgP
  \qquad
  (S,A|_S) = \tcgS = \tcgr
$$

A {\sl sub-2-column graph} is a graph $(S,A|_S)$ generated by a 2CG
$(P,A)$ and an $S⊆P$ by the procedure above: $A|_S =
(A^*∩(S×S))^\ess$.

\msk

{\sl Theorem 1.} Fix a ZHA $H$ and a J-operator $J$ on it, and from
that produce $(P,A)$, $\calU=\Opens_A(P)$, $S$, and $Q$. We clearly
have bijections between:

$\begin{tabular}{l}
    1) the set of fixed points of $J$, $\setofst{ef∈H}{J(ef)=ef}$, \\
    2) the set of fixed points of $\co J$, $\setofst{ab∈H}{\co J(ab)=ab}$, \\
    3) the image of $J$, $J(H) = \setofst{J(cd)}{cd∈H}$, \\
    4) the image of $\co J$, $\co J(H) = \setofst{\co J(cd)}{cd∈H}$, \\
    5) the set of J-equivalence classes of $H$, $H/J = \setofst{[cd]^J}{cd∈H}$, \\
    6) the elements $ef∈H$ such that $\pile(ef) = \Int(\pile(ef)∪Q)$, \\
    7) the elements $ab∈H$ such that $\pile(ab) = \coInt(\pile(ab)∖Q)$, \\
    8) the sets $U⊆\Opens(P)$ such that $U = \Int(U∪Q)$, \\
    9) the sets $W⊆\Opens(P)$ such that $W = \coInt(W∖Q)$, \\
   10) the sets $U⊆P$ such that $U = \Int(U∪Q)$, \\
   11) the sets $W⊆P$ such that $W = \coInt(W∖Q)$, \\
   12) the opens sets in $\Opens(S)$.
 \end{tabular}
$

\msk

The partial order on $\Opens(S)$ is given by inclusion; some of the
corresponding partial orders on the other sets of Theorem 1 are not so
obvious.

\msk

{\sl Theorem 2}. Let $ab,cd∈H$, $A=\pile(ab)$, $B=\pile(cd)$,
$A'=A∩S$, $B'=B∩S$. The following are all equivalent:

1) $A'⊆B'$,

2) $A∖Q⊆B∖Q$,

2') $A∪Q⊆B∪Q$,

3) $\coInt(A∖Q)⊆\coInt(B∖Q)$,

3') $\Int(A∪Q)⊆\Int(B∪Q)$,

4) $\propagate_1(A∖Q)⊆\propagate_1(B∖Q)$

4') $\propagate_0(A∪Q)⊆\propagate_0(B∪Q)$

5) $\co J(ab) ≤ \co J(cd)$,

5') $J(ab)≤J(cd)$,

6) $\inf([ab]^J) ≤ \inf([cd]^J)$,

6') $\sup([ab]^J) ≤ \sup([cd]^J)$.

\msk

Items 6 and 6' give us a way to endow $H/J$ with a partial order.
Remember that $\sup([ab]^J) = J(ab)$ and $\inf([ab]^J) = \co J(ab)$;
we say that $[ab]^J ≤ [cd]^J$ when $J(ab) ≤ J(cd)$, or, equivalently,
$\co J(ab) ≤ \co J(cd)$.

\msk

{\sl Theorem 3.} For any $ab,cd,ef∈H$ we have:

1) $[cd]^J ≤ [ef]^J$ iff $cd ≤ J(ef)$,

2) $[ab]^J ≤ [cd]^J$ iff $\co J(ab) ≤ cd$.

\msk

We can put that in a diagram,
%
%D diagram foo
%D 2Dx     100         +30
%D 2D  100 [ef]^J |--> J(ef)
%D 2D        ^          ^
%D 2D        |   <-->   |
%D 2D        |          |
%D 2D  +25 [cd]^J <--| cd
%D 2D        ^          ^
%D 2D        |   <-->   |
%D 2D        |          |
%D 2D  +25 [ab]^J |--> coJ(ab)
%D 2D
%D ren coJ(ab) ==> {\co}J(ab)
%D (( [ef]^J J(ef) |-> .plabel= a \sup
%D    [cd]^J cd    <-|
%D    [ab]^J coJ(ab) |-> .plabel= b \inf
%D ))
%D (( [ef]^J J(ef) [cd]^J cd
%D    @ 0 @ 2 <-  @ 1 @ 3 <-  @ 0 @ 3 harrownodes nil 20 nil <->
%D ))
%D (( [cd]^J cd [ab]^J coJ(ab)
%D    @ 0 @ 2 <-  @ 1 @ 3 <-  @ 0 @ 3 harrownodes nil 20 nil <->
%D ))
%D enddiagram
%D
$$\pu
  \diag{foo}
$$
%
that can be read as a categorical statement: the functor $[·]^J: H →
H/J$ has a left adjoint $\inf:H/J→H$ and a right adjoint $\sup:H/J→H$,
where $\inf$ returns the smallest element of a J-equivalence class,
and $\sup$ returns the biggest.

% Every subset $S⊆P$ induces an inclusion $f:S→P$ and a restriction map
% $f^*:\Opens(P) → \Opens(S)$ that acts as $f^*(C) = C∩Q$. We can use
% brute force --- as in sec.\ref{HAs} --- to find operations $f_*, f_!:
% \Opens(S) → \Opens(P)$ that obey, for each $V∈\Opens(S)$,
% %
% $$???$$
% %








%      _                                               _  _     
%     | |       ___  _ __  ___    __ _ ___    __ _  __| |(_)___ 
%  _  | |_____ / _ \| '_ \/ __|  / _` / __|  / _` |/ _` || / __|
% | |_| |_____| (_) | |_) \__ \ | (_| \__ \ | (_| | (_| || \__ \
%  \___/       \___/| .__/|___/  \__,_|___/  \__,_|\__,_|/ |___/
%                   |_|                                |__/     
%
% «J-ops-as-adjunctions» (to ".J-ops-as-adjunctions")
\section{J-operators as adjunctions}
\label  {J-ops-as-adjunctions}
% (phap 60 "J-ops-as-adjunctions")

The last diagram of the last section can be translated to topological
language:

%L delabbrev("!!")
%L delabbrev("!")
%
%D diagram foo
%D 2Dx      100       +40     +30    +45
%D 2D  100                    U --> J(U)
%D 2D                         ^      ^
%D 2D                         | <--> |
%D 2D                         |      |
%D 2D  +25 O(S) :::: O(P)    V^* <-- V
%D 2D                         ^      ^
%D 2D                         | <--> |
%D 2D                         |      |
%D 2D  +25                    W --> coJ(W)
%D 2D
%D 2D  +20  S0 -----> P0      S ---> P
%D 2D
%D ren J(U) V^* coJ(W) ==> \Int(U∪Q) V∩S \coInt(U∖Q)
%D ren O(S) O(P) ==> \Opens(S) \Opens(P)
%D ren S0 P0 ==> S P
%D
%D (( O(S) O(P) -> sl^^ .plabel= a f_*
%D    O(S) O(P) <-      .plabel= m f^*
%D    O(S) O(P) -> sl__ .plabel= b f^!
%D    S0 P0     ->      .plabel= a f
%D ))
%D
%D (( U J(U)   |-> .plabel= a f_*
%D    V^* V    <-| .plabel= m f^*
%D    W coJ(W) |-> .plabel= m f^!
%D    S  P      -> .plabel= a f
%D ))
%D (( U J(U) V^* V
%D    @ 0 @ 2 <-  @ 1 @ 3 <-  @ 0 @ 3 harrownodes nil 20 nil <->
%D ))
%D (( V^* V W coJ(W)
%D    @ 0 @ 2 <-  @ 1 @ 3 <-  @ 0 @ 3 harrownodes nil 20 nil <->
%D ))
%D enddiagram
%D
$$\pu
  \diag{foo}
$$

The notation used in the diagram above is essentially the one from
figures 6 and 7 in \cite{OchsIDARCT}; the ``external view'' is at the
left,``internal view'' is at the right, the adjunction is $f^! ⊣ f^* ⊣
f_*$, and the diagram shows that $f_*(U) = \Int(U∪Q)$, $f^*(V)=V∩S$
and $f^!(W)=\coInt(U∖Q)$ (where $\Int$ and $\coInt$ use the topology
$\Opens(P)$).

The order in which things are constructed in the diagram above is
different from last section, though. Now we start with a finite set
$P$, a topology $\Opens(P)$, and a subset $S⊆P$, and we define
$\Opens(S)$ by restriction:
%
$$\Opens(S) \;\;=\;\; \setofst{V∩S}{V∈\Opens(P)}$$
%
we define $Q$ as $P∖S$, we let $f:S→P$ be the inclusion and $f^*(V)$
be $V∩S$; then {\sl it turns out} (theorem!) that the $f^!$ and $f_*$
as defined above are the left and the right adjoints of $f^*$ --- and
$J$ and $\co J$ are built from $f^!$, $f^*$ and $f_*$: the definitions
%
$$\begin{array}{rcl}
      J(V) &=& f_*(f^*(V)) \\
  \co J(V) &=& f^!(f^*(V)) \\
  \end{array}
$$
%
yield a J-operator $J:\Opens(P)→\Opens(P)$ and its `$\co$' version,
that returns the smallest element in each equivalence class; and if
$\Opens(P) = \Opens_A(P)$ for some 2CG $(P,A)$, then we can define $J$
and $\co J$ in this other way,
%
$$\begin{array}{rcl}
      J(cd) &=& \pile^{-1}(f_*(f^*(\pile(cd)))) \\
  \co J(cd) &=& \pile^{-1}(f^!(f^*(\pile(cd)))) \\
  \end{array}
$$
%
that yields a J-operator (and its `$\co$' version) on the ZHA $H$
generated by the 2CG $(P,A)$.

\msk

This ``topological version'' of the adjunction is a nice concrete
starting point for understanding toposes and geometric morphisms
between them --- or, actually, for introducing geometric morphisms to
``children'' who prefer to start with finite examples in which
everything can be calculated explicitly. The toposes involved are
$\Set^{\Opens(S)^\op}$ and $\Set^{\Opens(P)^\op}$, and the adjunction
$f^! ⊣ f^* ⊣ f_*$ presented above acts only on the subobjects of the
terminal of each topos --- it needs to be extended to an (essential)
geometric morphism between these toposes. This, and several concepts
from section A4 of \cite{Elephant1}, will be treated in a sequel of
this paper, in a joint work with Peter Arndt.






%  ____  _ _     _ _                             _           
% | __ )(_) |__ | (_) ___   __ _ _ __ __ _ _ __ | |__  _   _ 
% |  _ \| | '_ \| | |/ _ \ / _` | '__/ _` | '_ \| '_ \| | | |
% | |_) | | |_) | | | (_) | (_| | | | (_| | |_) | | | | |_| |
% |____/|_|_.__/|_|_|\___/ \__, |_|  \__,_| .__/|_| |_|\__, |
%                          |___/          |_|          |___/ 
%
% «bibliography» (to ".bibliography")
% (pha     "bibliography")
% (phap 63 "bibliography")
%
% (find-LATEX "catsem.bib" "bib-Ochs")
% (find-LATEX "catsem.bib" "bib-Fourman")
% (find-LATEX "catsem.bib" "bib-Ochs" "OchsIDARCT")
% (find-LATEX "catsem.bib" "bib-DaveyPriestley")
% (find-LATEX "catsem.bib" "bib-Johnstone")
% (find-idarct0file "2010diags-body.tex" "defun b")
\cite{Elephant1}
\cite{DaveyPriestley}
\cite{OchsIDARCT}
\cite{Fourman}
\cite{BellLST}

\bibliography{catsem}
%\bibliographystyle{plain}
\bibliographystyle{alpha}


%   ___                  _   _                                    _        
%  / _ \ _   _  ___  ___| |_(_) ___  _ __    _ __ ___   __ _ _ __| | _____ 
% | | | | | | |/ _ \/ __| __| |/ _ \| '_ \  | '_ ` _ \ / _` | '__| |/ / __|
% | |_| | |_| |  __/\__ \ |_| | (_) | | | | | | | | | | (_| | |  |   <\__ \
%  \__\_\\__,_|\___||___/\__|_|\___/|_| |_| |_| |_| |_|\__,_|_|  |_|\_\___/
%                                                                      
% «question-marks» (to ".question-marks")
%\section{Question marks}
%\label  {question-marks}
% Bad (phap 53 "question-marks")


%   ____ _     _ _     _                
%  / ___| |__ (_) | __| |_ __ ___ _ __  
% | |   | '_ \| | |/ _` | '__/ _ \ '_ \ 
% | |___| | | | | | (_| | | |  __/ | | |
%  \____|_| |_|_|_|\__,_|_|  \___|_| |_|
%                                       
% «children» (to ".children")
%\section{Appendix: on ``children''}
%\label{children}
% Bad (phap 57 "children")

%   ____                               _                    _             
%  / ___|___  _ __ ___  _ __  _ __ ___| |__   ___ _ __  ___(_) ___  _ __  
% | |   / _ \| '_ ` _ \| '_ \| '__/ _ \ '_ \ / _ \ '_ \/ __| |/ _ \| '_ \ 
% | |__| (_) | | | | | | |_) | | |  __/ | | |  __/ | | \__ \ | (_) | | | |
%  \____\___/|_| |_| |_| .__/|_|  \___|_| |_|\___|_| |_|___/_|\___/|_| |_|
%                      |_|                                                
%
% «comprehension» (to ".comprehension")
%\section{Appendix: notations for set comprehension}
% Bad (phap 58 "comprehension")



% (phap 39)
% (phap 46)





\end{document}

% Local Variables:
% coding: utf-8-unix
% ee-anchor-format: "«%s»"
% End:








