Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
% To compile this with texmaker you need to tell texmaker to run % lualatex, biber, and then lualatex again. To do this, select: % % Options -> Configure TeXmaker -> Quick build -> User % % and put this in the text box below the option "User": % % lualatex -interaction=nonstopmode %.tex|biber %|lualatex -interaction=nonstopmode %.tex % % Then <F1> ("Quick build") should do the right thing. % Use <F7> ("View Pdf") to view the resulting PDF. % (find-angg "LATEX/2017planar-has-1.tex") % (find-angg "LATEX/2017planar-has-defs.tex") % (defun c () (interactive) (find-LATEXsh "lualatex -record 2017planar-has-1.tex" :end)) % (defun d () (interactive) (find-pdf-page "~/LATEX/2017planar-has-1.pdf")) % (defun d () (interactive) (find-pdftools-page "~/LATEX/2017planar-has-1.pdf")) % (defun b () (interactive) (find-sh "biber 2017planar-has-1")) % (defun e () (interactive) (find-LATEX "2017planar-has-1.tex")) % (defun u () (interactive) (find-latex-upload-links "2017planar-has-1")) % (find-pdf-page "~/LATEX/2017planar-has-1.pdf") % (find-pdftools-page "~/LATEX/2017planar-has-1.pdf") % (find-sh0 "cp -v ~/LATEX/2017planar-has-1.pdf /tmp/") % (find-sh0 "cp -v ~/LATEX/2017planar-has-1.pdf /tmp/pen/") % file:///home/edrx/LATEX/2017planar-has-1.pdf % file:///tmp/2017planar-has-1.pdf % file:///tmp/pen/2017planar-has-1.pdf % http://angg.twu.net/LATEX/2017planar-has-1.pdf % % (find-es "tex" "biber") % (find-LATEX "2017planar-has-1.mk") % (find-sh "make -f 2017planar-has-1.mk veryclean") % (find-sh "make -f 2017planar-has-1.mk") % % (find-anggfile "LATEX/" "2017planar-has-1.tex") % (find-twusfile "LATEX/" "2017planar-has-1") % (find-twupfile "LATEX/" "2017planar-has-1") % (find-twusfile "LATEX/" "2017planar-has-1-v1") % (find-twupfile "LATEX/" "2017planar-has-1-v1") % (find-TH "math-b" "zhas-for-children-2") % http://angg.twu.net/math-b.html#zhas-for-children-2 % % «.title» (to "title") % «.abstract» (to "abstract") % «.introduction» (to "introduction") % «.internal-external» (to "internal-external") % % «.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") % «.calculating-and» (to "calculating-and") % «.calculating-or» (to "calculating-or") % «.calculating-imp» (to "calculating-imp") % «.implication-new» (to "implication-new") % «.logic-in-HAs» (to "logic-in-HAs") % «.derived-rules» (to "derived-rules") % «.natural-deduction» (to "natural-deduction") % «.topologies» (to "topologies") % «.topologies-on-ZSets» (to "topologies-on-ZSets") % «.topologies-as-partial-orders» (to "topologies-as-partial-orders") % «.2CGs» (to "2CGs") % «.topologies-on-2CGs» (to "topologies-on-2CGs") % «.topologies-as-HAs» (to "topologies-as-HAs") % «.converting-ZHAs-2CAGs» (to "converting-ZHAs-2CAGs") % «.ZHAL-is-between» (to "ZHAL-is-between") % % «.bibliography» (to "bibliography") % % «.clean-up-names» (to "clean-up-names") % «.write-ph1-body» (to "write-ph1-body") % %\documentclass[pdftex]{sajl} \documentclass[lualatex]{sajl} \volume{X} \issue{X} \year{20XX} \setcounter{page}{1} \usepackage[backend=biber, style=alphabetic]{biblatex} % (find-es "tex" "biber") \addbibresource{catsem-u.bib} % (find-LATEX "catsem-u.bib") \usepackage{latexsym,amssymb,amsfonts,amsmath} \usepackage{graphicx} \usepackage{array} % (find-es "tex" "array") %\usepackage{hyperref} % (find-es "tex" "hyperref") %\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{edrx17} % (find-angg "LATEX/edrx17.sty") \input edrxaccents.tex % (find-angg "LATEX/edrxaccents.tex") \input edrxchars.tex % (find-LATEX "edrxchars.tex") \input edrx17defs.tex % (find-LATEX "edrx17defs.tex") \input 2017planar-has-defs.tex % (find-LATEX "2017planar-has-defs.tex") %\input edrxheadfoot.tex % (find-dn4ex "edrxheadfoot.tex") %\input edrxgac2.tex % (find-LATEX "edrxgac2.tex") % (find-es "tex" "newtheorem") \newtheorem{definition}{Definition}[section] \newtheorem{theorem}[definition]{Theorem} \newtheorem{lemma}[definition]{Lemma} \newtheorem{proposition}[definition]{Proposition} \newtheorem{remark}[definition]{Remark} \newtheorem{remarks}[definition]{Remarks} \newtheorem{example}[definition]{Example} \newtheorem{examples}[definition]{Examples} \newtheorem{corollary}[definition]{Corollary} \newtheorem{myfigure}[definition]{Figure} % Edrx \newcommand{\negr}[1]{\boldsymbol{#1}} \newenvironment{proof}{\noindent\bf Proof. \rm}{\hfill $\negr{\blacksquare}$ \\} \begin{document} \catcode`\^^J=10 \directlua{dofile "dednat6load.lua"} % (find-LATEX "dednat6load.lua") \directlua{dofile "edrxtikz.lua"} % (find-LATEX "edrxtikz.lua") \directlua{dofile "edrxpict.lua"} % (find-LATEX "edrxpict.lua") \catcode`→=13 \def→{\rightarrow} % FROM HERE \def\Opens{\mathcal{O}} \def\resizediag#1#2#3{\resizebox{#1}{#2}{$\diag{#3}$}} \def\squigbijy{-2.8} % (find-LATEX "2017planar-has-defs.tex" "squigbijtest") % _____ _ _ _ % |_ _(_) |_| | ___ % | | | | __| |/ _ \ % | | | | |_| | __/ % |_| |_|\__|_|\___| % % (find-LATEX "idarct/idarct-preprint.tex") % «title» (to ".title") % (ph1p 1 "title") % (ph1a "title") \setlength{\extrarowheight}{1pt} \title{Planar HAs for Children}{Planar Heyting Algebras for Children} \author{E. Ochs}{Eduardo Ochs} \maketitle % _ _ _ _ % / \ | |__ ___| |_ _ __ __ _ ___| |_ % / _ \ | '_ \/ __| __| '__/ _` |/ __| __| % / ___ \| |_) \__ \ |_| | | (_| | (__| |_ % /_/ \_\_.__/|___/\__|_| \__,_|\___|\__| % % «abstract» (to ".abstract") % (ph1p 1 "abstract") % (ph1a "abstract") \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$. We also show the connection between ZHAs and the familiar semantics for IPL where the truth-values are open sets: the points of a ZHA $H$ correspond to the open sets of a finite topological space $(P,\Opens_A(P))$, where the topology $\Opens_A(P)$ is the order topology on a 2-column graph $(P,A)$. The logic of ZHAs is between classical and intuitionistic but different from both; there are some sentences that are intuitionistically false but that can't have countermodels in ZHAs --- their countermodels would need three ``columns'' or more. In a wider context these ZHAs are interesting because toposes of the form $\Set^{(P,A)}$ are one of the basic tools for doing ``Topos Theory for Children'', in the following sense. We can {\sl define} ``children'' as people who think mathematically in a certain way --- as {\sl people who prefer to start from particular cases and finite examples that can be drawn explicitly, and only then generalize} --- and we can define a method for working on a particular case (less abstract, ``for children'') and on a general case (``for adults'') in parallel, using parallel diagrams with similar shapes; we have some ways of transfering knowledge from the general case to the particular case, {\sl and back}. This method is sketched in the introduction. Except for the introduction this paper is self-contained, and its title ``Planar Heyting Algebras for Children'' also has a second sense, different from the above: it can be read by students who have just taken a basic course on Discrete Mathematics --- who are ``children'' in the sense that they don't have much mathematical maturity --- and it prepares these students to read standard books on Logic that they would otherwise find a bit too abstract. This paper is the first in a series of three. Categories and toposes only appear explicitly in the third one, that is about visualizing geometric morphisms, and at this moment the method of parallel diagrams has only been fully formalized for categorical diagrams. Behind the choices of finite examples and particular cases in this paper there is an {\sl attempt} to adapt that method to areas outside Category Theory, but the precise details of how this is done are left for a future work. % Except for the introduction this paper is self-contained and can be % read by students who have had a basic course on Discrete Mathematics % This method of parallel diagram works much more naturally in % Category Theory than in other areas of Mathematics, though --- and % this is the first in a series of three papers, and categories and % toposes only appear {\sl explicitly} in the third one % --- and in the introduction we sketch some techniques for working % on a particular case (``for children'') and on a general case (``for % adults'') in parallel, using parallel diagrams with similar shapes. % This paper is the first in a series of three, and categories, % toposes, and the technique of parallel diagrams only appear, and are % only used {\sl explicitly}, in the third paper. Except for the % introduction and the last section this paper is self-contained, and % its title ``Planar Heyting Algebras for Children'' also has a second % sense, different from the above: it can be read by students who have % just finished a course on Discrete Mathematics --- they are % ``children'' in the sense that they don't have much mathematical % maturity --- and it prepares them to read standard books on Logic % that they would otherwise find a bit too abstract. % When a mathematical text says ``for children'' this means either % that it is written for people without lots of mathematical {\sl % knowledge} or that it doesn't require mathematical {\sl maturity}; % we follow the second, stronger, meaning of the term. ``Children'' % for us means people who are not able to understand structures that % are too abstract straight away, they need particular cases first --- % and they also have trouble with infinite objects, and with theorems % about things that they can't calculate: {\sl calculating} is much % more basic for them than {\sl proving}. Writing ``for children'' % makes us enforce a style where everything is constructive and finite % and all the main examples are objects that are easy to draw % explicitly. % When a mathematical paper is written ``for children'' this means % either that it is written for people without lots of mathematical {\sl % knowledge} or that it doesn't require mathematical {\sl maturity}; % we follow the second, stronger, meaning of the term. ``Children'' for % us means people who are not able to understand structures that are too % abstract straight away, they need particular cases first --- and they % also have trouble with infinite objects, and with theorems about % things that they can't calculate: {\sl calculating} is much more basic % for them than {\sl proving}. Writing ``for children'' makes us enforce % a style where everything is constructive and finite and all the main % examples are objects that are easy to draw explicitly. % Closure operators on Heyting Algebras are very important on Topos % Theory: they generate geometric morphisms and sheaves. This paper % introduces several tools that can be used to explain some parts of % Topos Theory to ``children'', but here we stop just before % categories and toposes --- when we move to categories and % (pre)sheaves we have to replace most of the `0's and `1's in our % diagrams by sets. \end{abstract} \keywords{Heyting Algebras, Intuitionistic Logic, diagrammatic reasoning.} \bsk \bsk % (find-kopkadaly4page (+ 12 58) "3.4 Table of contents") %\tableofcontents % ___ _ _ _ _ % |_ _|_ __ | |_ _ __ ___ __| |_ _ ___| |_(_) ___ _ __ % | || '_ \| __| '__/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ % | || | | | |_| | | (_) | (_| | |_| | (__| |_| | (_) | | | | % |___|_| |_|\__|_| \___/ \__,_|\__,_|\___|\__|_|\___/|_| |_| % % «introduction» (to ".introduction") % (ph1p 2 "introduction") % (ph1a "introduction") This paper is the first in a series of three. Let's refer to them as PH1 (this one), PH2 and PH3, and to the whole series as PH123. A nearly complete working draft of PH2 is available at \cite{OchsPH2}, and the extended abstract \cite{OchsACT2019} shows the core results that will be in PH3. The objective of the series can be explained in two ways. In the first one --- shallow, and purely mathematical, \begin{itemize} \item PH1 shows how to interpret IPL in Planar Heyting Algebras (``ZHAs'', sec.\ref{ZHAs}) and shows that ZHAs are order topologies on two-column graphs (``2CGs'', sec.\ref{2CGs}); this is used to show how one can develop visual intuition about IPL. The trickiest part is the implication; the method that allows one to calculate $P→Q$ by sight in ZHAs has four subcases, and is discussed in sections \ref{prop-calc-ZHA}, \ref{HAs}, and \ref{implication-new}. It would probably be obvious to anyone who has worked enough with lattices, but I believe that it deserves to be more widely known. \item The paper PH2 extends the correspondence $(P,A) \;\squigbijbody\; H$ between 2CGs and ZHAs of PH1 to a correspondence $((P,A),Q) \;\squigbijbody\; (H,J)$ between 2CGs ``with question marks'' and ZHAs with a J-operator --- that, more visually, are ZHAs ``with slashings''. \item PH3 transports this to Topos Theory: if we regard a 2CG $(P,A)$ as a category, then $\Set^{(P,A)}$ is a topos whose objects are easy to draw, and the logic of $\Set^{(P,A)}$ is exactly the ZHA associated to $(P,A)$; also, a set of question marks $Q⊆P$ induces an operation on $\Set^{(P,A)}$ that erases the information on $Q$ and reconstructs it in a natural way, and this erasing-plus-reconstruction yields a sheafification functor --- that is exactly the one associated to the local operator $j$ associated to the J-operator $J$. This gives us a way to visualize (certain) toposes, sheaves, geometric morphisms, and two factorizations of geometric morphisms. \end{itemize} The second way to explain the goals of PH123 is by taking {\sl Diagrammatic Reasoning} as the main theme. Let me start with an anecdote (90\% true). Many, many years ago, when I tried to learn Topos Theory for the first time, mainly from \cite{Johnstone} and \cite{Goldblatt}, everything felt far too abstract: most of the diagrams were omitted, and the motivating examples were mentioned very briefly, if at all. The intended audience for those books surely knew how to supply by themselves the missing diagrams, examples, calculations, and details --- but I didn't. My slogan became: ``I need a version for children of this!''. At first this expression, ``for children'', was informal, and I used it as a half-joke. Very gradually it started to acquire a precise sense: clearly, CT done in a purely algebraic way is ``for adults'', and diagrams, particular cases, and finite examples are ``for children''. Writing ``for adults'' only and keeping the mentions to the ``for children'' part very brief is considered good style because ``adults'' have the technical machinery for producing more or less automatically the ``for children'' part when they need it, and people who are not yet ``adults'' can become ``adults'' by struggling with the texts ``for adults'' long enough and learning by themselves how to handle the new level of abstraction. A clear frontier between ``for adults'' and ``for children'' appears when we realize that we can draw a diagram for the general case (``for adults'') of a categorical concept and the diagram for a particular case of it (``for children'') side by side. The two diagrams will have roughly the same shape, and we can transport knowledge between them in both ways: from the general to the particular, {\sl and back}. Look at Figure \ref{fig:internal-external}; let's name its subdiagrams as $A$, $B$, and $C$, like this: $\sm{A \; B \\ C}$. Each one of $A$, $B$, $C$ has an {\sl internal view} above and an {\sl external view} below. % (oxap 4 "fig:internal-1") % (oxa "fig:internal-1") % «internal-external» (to ".internal-external") % (ph1p 4 "internal-external") % (ph1a "internal-external") \def\ooo (#1,#2){\begin{picture}(0,0)\put(0,0){\oval(#1,#2)}\end{picture}} \def\oooo(#1,#2){{\setlength{\unitlength}{1ex}\ooo(#1,#2)}} % %D diagram second-blob-function %D 2Dx 100 +20 +20 %D 2D 100 a-1 |--> b-1 %D 2D +08 a0 |--> b0 %D 2D +08 a1 |--> b1 %D 2D +08 a2 |--> b2 %D 2D +08 a3 |--> b3 %D 2D +08 a4 |--> b4 %D 2D +14 a5 |--> b5 %D 2D +25 \N ---> \R %D 2D %D ren a-1 a0 a1 a2 a3 a4 a5 ==> -1 0 1 2 3 4 n %D ren b-1 b0 b1 b2 b3 b4 b5 ==> -1 0 1 \sqrt{2} \sqrt{3} 2 \sqrt{n} %D (( a0 a5 midpoint .TeX= \oooo(7,23) y+= -2 place %D b-1 b5 midpoint .TeX= \oooo(7,25) y+= -2 place %D b-1 place %D a0 b0 |-> %D a1 b1 |-> %D a2 b2 |-> %D a3 b3 |-> %D a4 b4 |-> %D a5 b5 |-> %D \N \R -> .plabel= a \sqrt{\phantom{a}} %D a-1 relplace -7 -7 \phantom{foo} %D b5 relplace 7 7 \phantom{bar} %D )) %D enddiagram %D %D diagram generic-adjunction %D 2Dx 100 +30 +35 +25 %D 2D 100 LA <-| A %D 2D | | %D 2D v v %D 2D +30 G LB <-| B I %D 2D | | | | %D 2D v v v v %D 2D +30 H C |--> RC J %D 2D | | %D 2D v v %D 2D +30 D |--> RD %D 2D %D 2D +20 E <==> F %D 2D %D ren LA A ==> LA' A' %D ren LB B ==> LA A %D ren C RC ==> B RB %D ren D RD ==> B' RB' %D ren E F ==> \catB \catA %D ren G H ==> LRB B %D ren I J ==> A RLA %D %D (( LA A <-| .plabel= a L_0 %D LB B <-| .plabel= a L_0 %D C RC |-> .plabel= b R_0 %D D RD |-> .plabel= b R_0 %D %D LA B harrownodes nil 20 nil <-| sl^ .plabel= a L_1 %D LB RC harrownodes nil 20 nil <-| sl^ .plabel= a ♭ %D LB RC harrownodes nil 20 nil |-> sl_ .plabel= b ♯ %D C RD harrownodes nil 20 nil |-> sl^ .plabel= b R_1 %D %D LA LB -> .plabel= l Lα %D A B -> .plabel= r α %D LB C -> .plabel= l \sm{g^♭\\f} %D B RC -> .plabel= r \sm{g\\f^♯} %D C D -> .plabel= l β %D RC RD -> .plabel= r Rβ %D E F <- sl^ .plabel= a L %D E F -> sl_ .plabel= b R %D G H -> .plabel= l εB %D I J -> .plabel= r ηA %D )) %D enddiagram %D %D diagram (xB)-|(B->) %D 2Dx 100 +45 +35 +40 %D 2D 100 LA <-| A %D 2D | | %D 2D v v %D 2D +30 G LB <-| B I %D 2D | | | | %D 2D v v v v %D 2D +30 H C |--> RC J %D 2D | | %D 2D v v %D 2D +30 D |--> RD %D 2D %D 2D +20 E <==> F %D 2D %D ren LA A ==> A{×}C A %D ren LB B ==> B{×}C B %D ren C RC ==> D (C{→}D) %D ren D RD ==> E (C{→}E) %D ren E F ==> \Set \Set %D ren G H ==> (C{→}D){×C} D %D ren I J ==> B (C→B{×}C) %D ren I J ==> B (C{→}(B{×}C)) %D %D (( LA A <-| # .plabel= a ({×}B)_0 %D LB B <-| # .plabel= a ({×}B)_0 %D C RC |-> # .plabel= b (B{→})_0 %D D RD |-> # .plabel= b (B{→})_0 %D %D LA B harrownodes nil 20 nil <-| sl^ # .plabel= a L_1 %D LB RC harrownodes nil 20 nil <-| sl^ .plabel= a ♭ %D LB RC harrownodes nil 20 nil |-> sl_ .plabel= b ♯ %D C RD harrownodes nil 20 nil |-> sl^ # .plabel= b R_1 %D %D LA LB -> .plabel= l λp.(f(πp),π'p) %D A B -> .plabel= r f %D LB C -> .plabel= l \sm{λp.g(πp)(π'p)\\\phantom{mmmmmm}h} %D B RC -> .plabel= r \sm{g\phantom{mmmmm}\\λb.λc.h(b,c)} %D C D -> .plabel= l k %D RC RD -> .plabel= r λf.λc.k(fc) %D E F <- sl^ .plabel= a ({×}C) %D E F -> sl_ .plabel= b (C{→}) %D G H -> .plabel= l λp.(πp)(π'p) %D I J -> .plabel= r λb.λc.(b,c) %D )) %D enddiagram %D \begin{figure}[!htbp] \pu \centering $\begin{array}{c} \resizediag{!}{!}{second-blob-function} \qquad \resizediag{!}{!}{generic-adjunction} \\ \\ \resizediag{!}{!}{(xB)-|(B->)} \end{array} $ \caption{Three cases of internal views and external views.} \label{fig:internal-external} \end{figure} Diagram $A$ shows, below, the external view of the function $\N \ton{\sqrt{\phantom{a}}} \R$, and above that its internal view --- in which one of the arrows, $n \mapsto \sqrt{n}$, shows the action of $\sqrt{\phantom{a}}$ on a generic element, and the other `$\mto$' arrows, like $3 \mapsto \sqrt{3}$ and $4 \mapsto 2$, show substitution instances of $n \mapsto \sqrt{n}$, maybe after some term reductions. Diagram $B$ shows the external view of a (generic) adjunction $L⊣R$, and above it its internal view. The nodes and arrows above $\catB$ are objects and morphisms in $\catB$, and similarly for the nodes and arrows above $\catA$. The `$\mto$' arrows of the internal view are now of three kinds: actions of functors on objects, actions of functors on morphisms, and ``transpositions'' coming from the natural isomorphism $\Hom(L-,-) ↔ \Hom(-,R-)$. Diagram $C$ is essentially the same as $B$, but for a particular adjunction: $({×}B)⊣(B{→})$. Note how the diagrams $B$ and $C$ have exactly the same shape --- but our diagrams for internal views are much bigger than the corresponding external views. For a case in which the interplay between external and internal views is examined in full detail, see \cite{OchsNotesOnYoneda}; it shows how each node and arrow in the diagrams can be can interpreted as a term in a type system, and this {\sl may} be a basis for analyzing precisely which kinds of knowledge, and which kinds of intuitions --- as in \cite{Kromer}, especially sec.1.3.2, and in \cite{Corfield} --- we are transporting from the less abstract diagrams to the more abstract ones, and vice-versa. Note that having a clearly-defined method for lifting information --- in the sense of \cite{OchsIDARCT} --- from a case ``for children'' to a case ``for adults'' would allow people to publish much more material ``for children'' than they do now, without this being regarded as bad style. For a non-trivial example of lifting information from a particular case to a general case, see \cite{OchsACT2019}. \msk This paper can be seen as part of bigger projects in at least the two ways described above, but it was also written to be as readable and as self-contained as possible. In 2016 and 2017 I had the opportunity to test some of the ideas here on ``real children'', in the sense of ``people with little mathematical {\sl knowledge} and little mathetical {\sl maturity}''. I gave a seminar course about Logic and $λ$-calculus that had no prerequisites, and that was mostly based on exercises that the students would try to solve together by discussing on the whiteboard; it was mostly attended by Computer Science students who had just finished a course on Discrete Mathematics, but there were also some Psychology and Art students --- that unfortunately left after the first weeks of each semester. All these students, including the CompSci ones, had in common that definitions only made sense to them after they had played with a few concrete examples; at some parts of the course I would ask them to read some sections of this paper, then work on some extra exercises that I had prepared, and then read excerpts of books like \cite{VanDalen} or \cite{Awodey}. Most sections of this paper had been tested ``on real children'' in this way, and were rewritten several times after their feedback and reactions. I owe them many thanks --- I'm glad that they had fun in the process -- and I hope that I'll be able in the future to transform what I learned with them into precise techniques for writing ``for children''. % (find-LATEX "catsem-u.bib" "bib-VanDalen") % So: how much Topos Theory can one learn by using toposes of the form % $\Set^\PAS$ as the archetypal examples of toposes, and where is this % person's intuition going to fail when he or she passes to arbitrary % toposes? This first paper does not discuss toposes, or even % categories, but it has a small example of intuition failing: a % person with very good visual thinking may be led to believe % (wrongly) that the sentence $S$ of sec.\ref{ZHAL-is-between} is an % intuitionistic theorem because it is true in all ZHAs. \bsk % The upper right part and the lower part --- ``generic case'' and % ``particular case'' --- have the same {\sl shape}, so its easy to % transfer knowledge from the generic case to the particular case, % {\sl and back}; and as these diagrams can be formalized in Type % Systems and proof assistants (see \cite{OchsNotesOnYoneda}) we can % be precise about which kinds of knowledge we are transfering back % and forth, and map this onto the kinds of {\sl mathematical % intuitions} discussed in, say, \cite{Corfield} and \cite{Kromer}. % Once we develop and formalize a set of precise techniques for % ``lifting'' (in the sense of \cite{OchsIDARCT}) ideas from % particular cases to general cases we become allowed to use % particular cases in our papers, and analyse them at length without % this being considered bad mathematical style. % % Once we develop and formalize a set of precise techniques for % ``lifting'' (in the sense of \cite{OchsIDARCT}) ideas from % particular cases to general cases we become allowed to use % particular cases in our papers, and analyse them at length without % this being considered bad mathematical style. % % These techniques for transfering knowledge between ``general'' and % ``particular'' --- that were somewhat inspired by Non-Standard % Analysis, with its transfer theorems between a universe with % infinitesimals and one without --- are easy to formalize for % Category Theory, that only appears in PH3. PH1 and PH2 use % particular cases a lot, in a style that is an attempt --- still % informal --- to adapt these techniques to mathematics outside CT. % \printbibliography % \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The ``for children'' of the title uses the term ``children'' in a % unusual way. When we explain a theorem to children --- in the strict % sense of the term --- we focus on concrete examples, and we avoid % generalizations, abstract structures and infinite objects; when we % present something to ``children'', now in the wider sense of the term % that means ``people without mathematical maturity'', or even ``people % without expertise in a certain area'', we usually do something % similar: we start from a few motivating examples, and only then we % generalize. This is in stark contrast with how things are done for % example in most books on Category Theory, where concepts are usually % presented first in the most general way possible, and then the % motivating cases are mentioned very briefly --- let's call that style % ``mathematics for adults''. Here we try to do things in particular % cases first, but in a way that our proofs can be ``lifted'' to general % proofs with ease, with only trivial changes. % % Except for the last section, this paper has been written to be % self-contained and readable by students with just a basic knowledge of % discrete mathematics and $λ$-notation. % % \msk % % Two sequels to this paper are in preparation: one that shows how to % visualize ``closure operators'' on ZHAs, and another one that uses % that to show how to visualize several theorems about geometric % morphism on toposes (from section A4 of \cite{Elephant1}). It may be % possible, in the future, to find meta-theorems about how to do % ``mathematics for adults'' via ``mathematics for children'', or to % find criteria that say which examples ``for children'' are good enough % for lifting; but at this moment we are simply beginning to build a % corpus of examples and techniques --- an approach was inspired by % sections 22 and 23 of \cite{OchsIDARCT}. % % Take a set $S=\{S_1, \ldots, S_n\}$ of freshmen students. Tell them % ``Let $B$ be the set of all birds'', and ask them to take a piece of % paper each and write down elements of $B$; let's call their lists % $L_1, \ldots, L_n$. After some time we ask them to read their lists % aloud, as we write the elements on the blackboard in an attempt to % create a list $L=L_1∪\ldots∪L_n$. What usually happens\footnote{At % least with me; I've done this experiment several times} is that % disagreements will start to appear: $S_1$ has put Tweety but $S_2$ % complains that Tweety can't on the list because it's a {\sl fictional} % bird; they can't agree if $S_3$'s pet parrot is the same bird as % $S_4$'s parrot or not; ``hen'' may be the same of ``chick'', only % older; they may not be sure if penguin, ostrich and archeopteryx are % valid elements; and does that set $B$ change when a bird dies, or % becomes extinct, of when a new species of feathered dinosuar is % discovered? % % The use of ``real-world sets'' like $B$ often makes Maths confusing. % Similar things also happen in other areas: for example, the standard % way of teaching Object-Oriented Programming starts by saying that % ``objects'' are things like shapes, windows, cars, and pizzas, and % this idea baffles and paralyzes people who can't imagine ways to % represent these objects in a computer... % % \begin{itemize} % \item Category theory should be more accessible % % Most texts about CT are for specialists in research universities... % {\sl Category theory should be more accessible.}. % % To whom?... % % \begin{itemize} % \item Non-specialists (in research universities) % \item Grad students (in research universities) % \item Undergrads (in research universities) % \item Non-specialists (in conferences - where we have to be quick) % \item Undergrads (e.g., in CompSci - in teaching colleges) - (``Children'') % \end{itemize} % % \item What do we mean by "accessible"? % % \begin{itemize} % \item Done on very firm grounds: mathematical objects made from % numbers, sets and tuples; FINITE, SMALL mathematical objects % whenever possible. Avoid references to non-mathematical things like % windows, cars and pizzas (like the object-orientation people do); % avoid reference to Physics; avoid Quantum Mecanics at all costs; % time is difficult to draw, prefer {\sl static} rather than {\sl % changing} % % \item People have very short attention spans nowadays % % \item Self-contained, but not {\sl isolated} or {\sl isolating}; our % material should make the literature more accessible % % \item We learn better by doing. Our material should have lots of space % for exercises. % % \item Most people with whom I interact are not from Maths/CS/etc % % \item {\sl Proving} general cases is relatively hard. {\sl Checking} % and {\sl calculating} is much easier. People can believe that % something can be generalized after seeing a convincing particular % case. (Sometimes leave them to look for the right generalization by % themselves) % \end{itemize} % \end{itemize} % % % % 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. % \section*{New introduction} % % \def\PAS{{{(P,A^*)}}} % % This paper is the first in a series of three, and one way to explain % the goal of the whole series is this. Toposes of the form % $\Set^\PAS$, where $\PAS$ is the preorder category associated to a % 2-column graph $(P,A)$, are interesting to students of Topos Theory % because their objects are easy to draw explicitly, and because by % working on them one can develop a lot of visual intuition about what % certain categorical constructions ``mean''; in particular, the % ``logic'' of a $\Set^\PAS$, i.e., its $\Sub(1)$, is a Planar Heyting % Algebra, and some ways to visualize sheaves on a $\Set^\PAS$ are % presented in the second paper in this series. % A better way to explain the goal of this series of papers needs the % term ``children''. Many years ago, when I started learning Category % Theory and Topos Theory from \cite{CWM} and \cite{Johnstone}, I felt % that I was taking far more time than reasonable to supply the diagrams % that were ``omitted'' from the text, and treatd as they were trivial % exercises (see \cite{Kromer}, p.(?)); I kept saying to my colleagues % ``I need a version `for children' of this!'' --- but at that time this % was a half-joke and it didn't have a precise meaning. Years later it % became clear that once we have a precise meaning for ``children'' --- % as people with certain style of thinking; compare with ``people who % think algebraically'' and ``people who think geometrically'' --- this % yields {\sl guidelines} on how to {\sl complement} a standard % categorical text, and produce auxiliary material that makes the % original presaentation --- abstract, ``for adults'' --- more % accessible. % It turned out that the following {\sl definition} of ``children'' is % especially fruitful. ``Children'': % % 1) have trouble with very abstract definitions, % % 2) prefer to start from particular cases (and only then generalize), % % 3) handle diagrams better than algebraic notations, % % 4) like finite objects that can be drawn explicitly, and that are % built just from numbers by forming lists and sets, % % 5) develop intuition about mathematical objects mostly by ``playing'' % with them, and by learning how to do calculations quickly; {\sl % calculating} for them is much more basic than {\sl proving % theorems}, % % 6) tend to remember categorical definitions and proofs % ``positionally'' by diagrams that are always drawn in a certain way. % % Item 6 has an important consequence. Once we establish that, for % example, our geometric morphisms will be drawn like this, % % % $$(diagram)$$ % % % then all our particular cases of geometric morphisms became diagrams % with the same shape of that one --- [slides] and [PH3] have a % medium-sized example --- and we can {\sl transfer knowledge} from one % side to the other and vice-versa; it is easy to transfer a % construction done on the diagram for the general case (``for adults'') % to the particular case (``for children''), and sometimes it is also % possible to start % ____ _ _ _ _ % | _ \ ___ ___(_) |_(_) ___ _ __ __ _| | % | |_) / _ \/ __| | __| |/ _ \| '_ \ / _` | | % | __/ (_) \__ \ | |_| | (_) | | | | (_| | | % |_| \___/|___/_|\__|_|\___/|_| |_|\__,_|_| % % «positional» (to ".positional") \section{Positional notations} \label {positional} % (ph1p 5 "positional") % (ph1a "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) & \\ } = \;\picturedotsadef{k0a}(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\; = \;\picturedotsdef {k0}(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 =) % $$ % $$\begin{array}{r} \;\picturedotsadef{k1}(0,0)(4,4){ 3,4 2,3 4,3 3,2 3,1 }\; \sa \;\picturedotsdef {k2}(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\; \sa \;\picturedotsadef{k3}(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\; \quad =\!( \\ \\ \;\picturedotsadef{k4}(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\; \sa \;\picturedotsdef {k5}(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\; \sa \;\picturedotsadef{k6}(0,0)(2,3){ 1,3 0,2 2,2 1,1 1,0 }\; \quad =) \\ \end{array} $$ 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") % (ph1p 6 "ZDAGs") % (ph1a "ZDAGs") \section{ZDAGs} \label {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="24pt", meta=nil}):addbullets():addarrows(nil):output() %R K:tomp({def="Kn", scale="24pt", meta=nil}):addxys ():addarrows(nil):output() %R -- mp:output() % \pu $$%\pu \Kb \;\;\;\;\text{will stand for:}\;\; \KB = \Kn = $$ $$ \qquad \qquad \qquad \qquad \pmat{ % \cmat{ & (1,3), & \\ % (0,2), & & (2,2), \\ % & (1,1), & \\ % & (0,0) & \\ % }, \csm{ (1,3), \\ (0,2), \phantom{(1,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="10pt", meta=nil}):addcells(T):output() %R W:tozmp({def="Wmne", scale="10pt", 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} % (ph1p 7 "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="mplra", scale="14pt", meta="s"}) %R mpxy = zhav:tomp({def="mpxya", scale="14pt", meta="s"}) %R mplr = zhav:tomp({def="mplra", scale="21pt", meta=nil}) %R mpxy = zhav:tomp({def="mpxya", scale="21pt", meta=nil}) %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 \mplra \quad = \quad \mpxya $$ 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 mplr = zhav:tomp({def="mplr", scale="19pt", meta=nil}) %R mpxy = zhav:tomp({def="mpxy", scale="20pt", meta=nil}) %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") % (ph1p 8 "ZHAs") % (ph1a "ZHAs") \section{ZHAs} \label {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="23pt", 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 (in section \ref{prop-calc-ZHA}) that ZHAs (with white pawn moves) are Heyting Algebras. % _____ _ _ % |_ _|_ _____ ___ ___ _ ____ _____ _ __ | |_(_) ___ _ __ ___ % | | \ \ /\ / / _ \ / __/ _ \| '_ \ \ / / _ \ '_ \| __| |/ _ \| '_ \/ __| % | | \ V V / (_) | | (_| (_) | | | \ V / __/ | | | |_| | (_) | | | \__ \ % |_| \_/\_/ \___/ \___\___/|_| |_|\_/ \___|_| |_|\__|_|\___/|_| |_|___/ % % «two-conventions» (to ".two-conventions") % (ph1p 9 "two-conventions") % (ph1a "two-conventions") \section{Conventions on diagrams without axes} \label {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\picturedotsadef{b1}(-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\picturedotsdef {b2}(-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\picturedotsadef{b3} (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({zdef="bottledots", scale="6pt", meta="s"}, "12321L") %L local mpx = mpnew({zdef="bottlex", scale="6pt", meta="s"}, "12321L") %L local mpl = mpnew({zdef="bottlel", scale="6pt", meta="s"}, "12321L") %L local mpr = mpnew({zdef="bottler", scale="6pt", 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() %L %L -- local mpB = mpnew({def="fooB", scale="5pt", meta="s"}, "12321L") %L local mp = mpnew({zdef="bottlelr", scale="7pt", meta="s"}, "12321L") %L mpB:addbullets():output() %L mp :addlrs() :output() \pu $$ \begin{array}{lll} B = \zha{bottledots} \quad \text{(a ZHA)} & \phantom{m} & λ(x,y){:}B.x = \zha{bottlex} \\ \\ λ\ang{l,r}{:}B.l = \zha{bottlel} & & λ\ang{l,r}{:}B.r = \zha{bottler} \\ \end{array} $$ \bsk We will often denote ZHAs by the identity function on them: % $$ \pu λ\ang{l,r}{:}B.\ang{l,r} \;=\; λlr{:}B.lr \;=\; \zha{bottlelr} \qquad \quad B \;=\; \zha{bottlelr} $$ % 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") % (ph1p 10 "prop-calc") % (ph1a "prop-calc") \section{Propositional calculus} \label {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), \linebreak[0] (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 (``PC-expressions''), 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)$ is 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") % (ph1p 11 "prop-calc-ZHA") % (ph1a "prop-calc-ZHA") \section{Propositional calculus in a ZHA} \label {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="12pt", meta=nil}):addcells(T):addcontour():output() %R %R local zdemorgan = %R 1/ T \ %R | o | %R | . . | %R |q . p| %R | P Q | %R \ a / %R local T = {F="⊥", T="⊤", p="P'", q="Q'", a="∧", o="∨"} %R zdemorgan:tozmp({def="zdemorgan", scale="12pt", meta=nil}):addcells(T):addcontour():output() %R %R zdemorgan:tozmp({def="ohouse", scale="12pt", meta=nil}):addlrs():output() % %UB (¬ ¬ P) → P %UB -- -- %UB 10 10 %UB --- %UB 02 %UB ----- %UB 20 %UB ----------- %UB 12 %L %L defub "notnotP" % %UB ¬(P ∧ Q) → (¬ P ∨ ¬ Q) %UB -- -- -- -- %UB 10 01 10 01 %UB ----- --- --- %UB 00 02 20 %UB ------- --------- %UB 32 22 %UB ---------------------- %UB 22 %L %L defub "demorgan" % $$\pu \begin{array}{ccccl} \ohouse && \znotnotP && \mat{\ub{notnotP}} \\ \\ && \zdemorgan && \mat{\ub{demorgan}} \\ \end{array} $$ 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") % (ph1p 12 "HAs") % (ph1a "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 % There is a very visual way to calculate these $Q ∧_H R$, $P ∨_H Q$ % and $Q →_H R$ on a ZHA. The positional notation on ZHAs is very helpful for visualizing what the conditions 6',7',8',6,7,8 ``mean''. More precisely: once we fix a ZHA $Ω$ and truth-values $P,Q,R∈Ω$ we have a way to draw and to visualize the ``behavior'' of each subexpression of the conditions 6, 7, 8 using the positional notations of sec.\ref{positional}, and we can use that to obtain the only possible values for $Q ∧_H R$, $P ∨_H Q$ and $Q →_H R$. We will examine three particular cases: with $Ω$ being 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="12pt", meta=nil}):addcells(T):addcontour():output() %R QoRai:tozmp({def="QoRai", scale="12pt", meta=nil}):addcells(T):addcontour():output() %R PnnP :tozmp({def="PnnP" , scale="12pt", meta=nil}):addcells(T):addcontour():output() %R %R PoQai:tozmp({def="lozfive", scale="12pt", meta=nil}):addlrs():addcontour():output() $$ \pu \lozfive \qquad \QoRai \qquad \PoQai $$ 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' some subexpressions yield truth values in $Ω$ and other subexpressions yield standard truth values. For example, in 6, with $P=20$, we have: % %UB ( P ≤_H ( Q ∧_H R )) ↔ (( P ≤_H Q ) ∧ ( P ≤_H R )) %UB -- -- -- -- -- -- -- %UB 20 31 12 20 31 20 12 %UB --------- --------- --------- %UB 11 1 0 %UB -------------------- ---------------------------- %UB 0 0 %UB --------------------------------------------------------- %UB 1 %L %L defub "P<=(QaR) <-> (P<=Q a P<=R)" $$\pu \ub{P<=(QaR) <-> (P<=Q a P<=R)}$$ \bsk % «calculating-and» (to ".calculating-and") % (ph1p 13 "calculating-and") % (ph1a "calculating-and") % Case (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: % %UB ( P ≤_H Y) ↔ (( P ≤_H Q) ∧ ( P ≤_H R)) %UB --- --- --- %UB (7) (1) (2) %UB ---------- ---------- ---------- %UB (6) (3) (4) %UB --------------------------- %UB (5) %L %L defub "P<=Y <-> (P<=Q a P<=R)" % %L local spec = "123454321" %L local mpuQ = mpnew({zdef="uQ", scale="5pt", meta="s"}, spec) %L local mpuR = mpnew({zdef="uR", scale="5pt", meta="s"}, spec) %L local mpuQaR = mpnew({zdef="uQaR", scale="5pt", meta="s"}, spec) %L mpuQ :zhalrf0("P -> P:below(v'31') and 1 or 0"):output() %L mpuR :zhalrf0("P -> P:below(v'12') and 1 or 0"):output() %L mpuQaR:zhalrf0("P -> P:below(v'11') and 1 or 0"):output() %L %UB ( P ≤_H Y) ↔ (( P ≤_H Q) ∧ ( P ≤_H R)) %UB -- -- -- %UB 11 31 12 %UB ---------- ---------- ---------- %UB \zha{uQaR} \zha{uQ} \zha{uR} %UB --------------------------- %UB \zha{uQaR} %L %L defub "P<=Y <-> (P<=Q a P<=R) : zhas" %L $$\pu \begin{array}{cc} \ub{P<=Y <-> (P<=Q a P<=R)} \\ \\ \ub{P<=Y <-> (P<=Q a P<=R) : zhas} \end{array} $$ \msk % «calculating-or» (to ".calculating-or") % (ph1p 14 "calculating-or") % (ph1a "calculating-or") % Case (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: % %UB ( X ≤_H R) ↔ (( P ≤_H R) ∧ ( Q ≤_H R)) %UB --- --- --- %UB (7) (1) (2) %UB ---------- ---------- ---------- %UB (6) (3) (4) %UB --------------------------- %UB (5) %L %L defub "X<=R <-> (P<=R a Q<=R)" $$\pu \ub{X<=R <-> (P<=R a Q<=R)}$$ % %L local spec = "123454321" %L local mpoP = mpnew({zdef="oP", scale="5pt", meta="s"}, spec) %L local mpoQ = mpnew({zdef="oQ", scale="5pt", meta="s"}, spec) %L local mpoPvQ = mpnew({zdef="oPvQ", scale="5pt", meta="s"}, spec) %L mpoP :zhalrf0("P -> P:above(v'31') and 1 or 0"):output() %L mpoQ :zhalrf0("P -> P:above(v'12') and 1 or 0"):output() %L mpoPvQ:zhalrf0("P -> P:above(v'32') and 1 or 0"):output() %L %UB ( X ≤_H R) ↔ (( P ≤_H R) ∧ ( Q ≤_H R)) %UB -- -- -- %UB 32 31 12 %UB ---------- ---------- ---------- %UB \zha{oPvQ} \zha{oP} \zha{oQ} %UB --------------------------- %UB \zha{oPvQ} %L %L defub "X<=R <-> (P<=R a Q<=R) : zhas" $$\pu \ub{X<=R <-> (P<=R a Q<=R) : zhas}$$ \msk % «calculating-imp» (to ".calculating-imp") % (ph1p 14 "calculating-imp") % (ph1a "calculating-imp") % Case (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 we have to do something 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: % %UB ( P ≤_H Y) ↔ (( P ∧_H Q) ≤_H R)) %UB --- --- --- %UB (6) (1) (2) %UB ---------- ---------- %UB (5) (3) %UB ------------------- %UB (4) %L %L defub "P<=Y <-> (PaQ <= R)" $$\pu \ub{P<=Y <-> (PaQ <= R)}$$ % %L local spec = "123454321" %L local mpaQ = mpnew({zdef="aQ", scale="6pt", meta="s"}, spec) %L local mpaQuR = mpnew({zdef="aQuR", scale="5pt", meta="s"}, spec) %L mpaQ :zhalrf ("P -> P:And (v'31') "):output() %L -- mpaQuR:zhalrf0("P -> P:below(v'12') and 1 or 0"):output() -- TYPO, fixed in 2019sep10 %L mpaQuR:zhalrf0("P -> P:below(v'14') and 1 or 0"):output() %L %UB ( P ≤_H Y) ↔ (( P ∧_H Q) ≤_H R)) %UB --- --- --- %UB 14 31 12 %UB ---------- ---------- %UB \zha{aQuR} \zha{aQ} %UB ------------------- %UB \zha{aQuR} %L %L defub "P<=Y <-> (PaQ <= R) : zhas" $$\pu \ub{P<=Y <-> (PaQ <= R) : zhas}$$ % __ % \ \ _ __ _____ __ % _____\ \ | '_ \ / _ \ \ /\ / / % |_____/ / | | | | __/\ V V / % /_( ) |_| |_|\___| \_/\_/ % |/ % % «implication-new» (to ".implication-new") % (ph1p 15 "implication-new") % (ph1a "implication-new") \section{The two implications are equivalent} \label{implication-new} { \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)$$ % TYPO, fixed in 2019sep10 $$ (P≤(Q→R))↔(P∧Q≤R)$$ % for all $P$. In this section we will see a proof that these two operations --- called `$\toC$' and `$\toHA$' from here on --- always give the same results. \begin{theorem} We have $(Q \toC R) = (Q \toHA R)$, for any ZHA $H$ and $Q,R∈H$. \end{theorem} The proof will take the rest of this section, and our approach will be to check that for any ZHA $H$ and $Q,R∈H$ this holds, for all $P∈H$: % %$$(P≤(Q \toC R))↔(P≤Q∧R).$$ % TYPO, fixed in 2019sep10 $$ (P≤(Q \toC R))↔(P∧Q≤R).$$ \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}$, called $\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="8pt", 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 $$ % Note that $R$ belongs to the lower region --- i.e., $R \o{b}'R$. \msk Now 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({zdef="fat-zha-for-ne-nw", scale="11pt"}, "123RL232L1"):addlrs():output() $$\pu \text{in} \qquad \zha{fat-zha-for-ne-nw} \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. } % _ _ _ _ _ _ % | | ___ __ _(_) ___ (_)_ __ | | | | / \ ___ % | | / _ \ / _` | |/ __| | | '_ \ | |_| | / _ \ / __| % | |__| (_) | (_| | | (__ | | | | | | _ |/ ___ \\__ \ % |_____\___/ \__, |_|\___| |_|_| |_| |_| |_/_/ \_\___/ % |___/ % % «logic-in-HAs» (to ".logic-in-HAs") % (ph1p 18 "logic-in-HAs") % (ph1a "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: % $$ \fbox{$ \begin{array}{ll% rrcccc% cc} 1) && ∀P. & (P≤P) & & & & && (\id) \\ && ∀P,Q,R. & (P≤R) &←& (P≤Q) &∧& (Q≤R) && (\comp) \\[5pt] 2) && ∀P. & (P≤⊤) & & & & && (⊤_1) \\ 3) && ∀Q. & (⊥≤Q) & & & & && (⊥_1) \\[10pt] 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) \\[5pt] 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) \\[5pt] 8) && ∀P,Q,R. & (P≤Q{→}R) &→& \multicolumn{3}{l}{(P∧Q≤R)} && (→_1) \\ && ∀P,Q,R. & (P≤Q{→}R) &←& \multicolumn{3}{l}{(P∧Q≤R)} && (→_2) \\ \end{array} $} $$ % We omitted the conditions 4 and 5, that defined `$↔$' and `$¬$' in terms of the other operators. The last column of the table 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. % {\sl Note: this section, and its two subsections, are just very quick % introductions to the most basic ideas of Sequent Calculus and % Natural Deduction ...} \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 the replacements $\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{→}⊥){→}⊥) %: %: ^imp2-su %: $$\pu \def\su{\bsm{Q:=P{→}⊥ \\ R:=⊥}} % \begin{array}{rcl} \left(\cded{imp2}\right) \su &\squigto& {\def\su{} \cded{imp2-su}} \\\\ (→_2)\su &\squigto& \cded{imp2-su} \\ \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 tree --- let's call it $({∧}{∧})$, %: %: ---------\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 %: %: ^(andand) %: $$\pu \ded{(andand)} $$ % ``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)).$$ We can perform substitutions on trees, and the notation will be the same as for tree rules: for example, $({∧}{∧}) \subst{S:=P∧Q}$. % ____ _ _ _ % | _ \ ___ _ __(_)_ _____ __| | _ __ _ _| | ___ ___ % | | | |/ _ \ '__| \ \ / / _ \/ _` | | '__| | | | |/ _ \/ __| % | |_| | __/ | | |\ V / __/ (_| | | | | |_| | | __/\__ \ % |____/ \___|_| |_| \_/ \___|\__,_| |_| \__,_|_|\___||___/ % % «derived-rules» (to ".derived-rules") % (ph1p 20 "derived-rules") % (ph1a "derived-rules") \subsection{Derived rules} \def\Hs{\{H_1, \ldots, H_n\}} Let be $𝐬{HAT}$ the set of ``Heyting Algebra rules in tree form'' from the last section: % $$𝐬{HAT} = \{(\id), \ldots, (→_2)\}.$$ Let's see a way to treat $𝐬{HAT}$ as a deductive system. If $𝐬S$ is a set of tree rules, we will write: \begin{itemize} \item $𝐬{Trees}(𝐬S)$ for the set of all trees whose bars are all substituion instances of rules in $𝐬S$, \item $𝐬{Trees}(𝐬S, \Hs)$ for the set of all trees in $𝐬{Trees}(𝐬S)$ whose hypotheses are contained in the set $\{H_1, \ldots, H_n\}$, and \item $𝐬{Trees}(𝐬S, \Hs, C)$ for the set of trees in $𝐬{Trees}(𝐬S, \Hs)$ having $C$ as their conclusion. \end{itemize} When the set $𝐬S$ is clear from the context, we write %: %: H_1 \ldots H_n %: ================ %: C %: %: ^H1...Hn-to-C %: $$\pu \ded{H1...Hn-to-C} $$ % to mean: {\sl we know} a tree in $𝐬{Trees}(𝐬S, \Hs, C)$, and this is an abbreviation for it. I like to think of the double bar as the bellows of a closed accordion: when the accordion is closed we can still see the keyboards at both sides, but not the drawings painted on the folded part of the pleated cloth. The notation that defines a {\sl derived rule} is ``\textsl{newrule $:=$ expansion}'', where \textsl{expansion} is a tree in $𝐬{Trees}(𝐬S, \Hs, C)$ and \textsl{newrule} is a bar with hypotheses $H_1, \ldots, H_n$ and conclusion $C$, written with a single bar with a (new) rule name, instead of with a double bar. For example, this is a version of Modus Ponens for Heyting Algebras: %: %: ---------\id %: P≤Q{→}R P≤Q Q{→}R≤Q{→}R %: ------------∧_3 ----------→_1 %: P≤Q P≤Q{→}R P≤(Q{→}R){∧}Q (Q{→}R){∧}Q≤R %: ------------\MP := --------------------------\comp %: P≤R P≤R %: %: ^MPL ^MPR %: \pu $$\ded{MPL} \quad := \quad \ded{MPR}$$ After the definition of a derived rule --- say, ``$D_1 := E_1$'' --- the set of allowed tree rules that is implicit from the context is increased, with $D_1$ being added to it; when we define another derived rule, $D_2 := E_2$, its expansion $E_2$ can have bars that are substitution instances of $D_1$. After adding more derived rules, $D_3 := E_3$, $\ldots$, $D_n := E_n$, we can use all the new rules $D_1, \ldots, D_n$ in our trees --- and we have a way to remove all the derived rules from our trees! Take a tree $T∈𝐬{Trees}(𝐬S∪\{D_1, \ldots, D_n\})$; replace each substitution instance of $D_n$ in it by its expansion, then replace every substitution instance of $D_{n-1}$ in the new tree by its expansion, and so on; after replacing all substitution instances of $D_1$ we get a tree in $𝐬{Trees}(𝐬S)$, with the same hypotheses and the same conclusion as the original $T$. We want to add these other derived rules: %: %: -------\id %: Q∧R≤Q∧R %: ------∧E_1 := -------∧_1 %: Q∧R≤Q Q∧R≤Q %: %: ^and4a ^and4b %: %: %: ---------\id %: Q∧R≤Q∧R %: ------∧E_2 := ---------∧_2 %: Q∧R≤R Q∧R≤R %: %: ^and5a ^and5b %: %: ---------\id %: P∨Q≤P∨Q %: ------∨I_1 := ---------∨_1 %: P≤P∨Q P≤P∨Q %: %: ^or4a ^or4b %: %: ---------\id %: P∨Q≤P∨Q %: ------∨I_2 := ---------∨_2 %: Q≤P∨Q Q≤P∨Q %: %: ^or5a ^or5b %: %: %: P∧R≤S Q∧R≤S %: -----→_2 -----→_2 %: P≤R→S Q≤R→S %: ---------------∨_3 %: P∧R≤S Q∧R≤S P∨Q≤R→S %: ------------∨E := ---------→_1 %: (P∨Q)∧R≤R (P∨Q)∧R≤R %: %: ^orE1 ^orE2 %: \pu $$\begin{array}{rcl} \ded{and4a} &:=& \ded{and4b} \\\\ \ded{and5a} &:=& \ded{and5b} \\\\ \ded{or4a} &:=& \ded{or4b} \\\\ \ded{or5a} &:=& \ded{or5b} \\\\ \ded{orE1} &:=& \ded{orE2} \\\\ \end{array} $$ % _ _ _ _ _ _ % | \ | | __ _| |_ _ _ _ __ __ _| | __| | ___ __| | % | \| |/ _` | __| | | | '__/ _` | | / _` |/ _ \/ _` | % | |\ | (_| | |_| |_| | | | (_| | | | (_| | __/ (_| | % |_| \_|\__,_|\__|\__,_|_| \__,_|_| \__,_|\___|\__,_| % % «natural-deduction» (to ".natural-deduction") % (ph1p 22 "natural-deduction") % (ph1a "natural-deduction") \subsection{Natural deduction} The system $𝐬{HAT}$ with all the derived rules of the last section added to it will be called $𝐬{HAND}$: % $$𝐬{HAND} = \{(\id), \ldots, (→_2), (\MP), \ldots, (∨E))\}$$ Trees in Natural Deduction for IPL can be translated into $𝐬{HAND}$ by a method that we will sketch below. Note that this section is not self-contained --- it should be regarded as an introduction to \cite{NegriVonPlato}. Note that {\sl all our trees can be intepreted as proofs about Heyting Algebras.} % (find-books "__logic/__logic.el" "negri-vonplato") \msk This is an example of a tree in Natural Deduction: % % (ntyp 46 "ND-3") % (nty "ND-3") % %: [P]^1 P{→}Q [P]^1 P{→}R %: ------------(→E) ------------(→E) %: Q R %: -------------------(∧I) %: Q{∧}R %: -----------(→I);1 %: P{→}(Q{∧}R) %: %: ^ND-1 %: \pu $$\ded{ND-1}$$ % The ``;1'' in its last bar means: below this point the hypotheses marked with `$[\,·\,]^1$' are ``discharged'' from the list of hypotheses. Each subtree of a ND tree with undischarged hypotheses $H_1, \ldots, H_n$ and conclusion $C$ will be interpreted as {\sl some} tree in $𝐬{HAND}$ with no hypotheses and conclusion $H_1∧\ldots∧H_n≤C$ --- there are usually several possible choices. So: %: %: P P{→}Q %: -------- ==> -----------\MP %: Q P∧(P{→}Q)≤Q %: %: ^a1 ^a2 %: %: P P{→}R %: -------- ==> -----------\MP %: R P∧(P{→}R)≤R %: %: ^b1 ^b2 %: %: Q R %: ----- ==> -----------\id %: Q{∧}R Q{∧}R≤Q{∧}R %: %: ^c1 ^c2 %: %: P P{→}Q P P{→}R %: -------- -------- %: Q R %: ---------------- ==> ========================= %: Q{∧}R ((P{→}R)∧(P{→}Q))∧P≤Q{∧}R %: %: ^d1 ^d2 %: %: [P]^1 P{→}Q [P]^1 P{→}R %: ------------ ------------ %: Q R %: ------------------- ========================= %: Q{∧}R ((P{→}R)∧(P{→}Q))∧P≤Q{∧}R %: -----------(→I);1 ==> -------------------------→_2 %: P{→}(Q{∧}R) (P{→}R)∧(P{→}Q)≤P{→}Q{∧}R %: %: ^e1 ^e2 %: \pu $$\def\becomes{\Longrightarrow} \begin{array}{rcl} \ded{a1} &\becomes& \ded{a2} \\ \\ \ded{b1} &\becomes& \ded{b2} \\ \\ \ded{c1} &\becomes& \ded{c2} \\ \\ \ded{d1} &\becomes& \ded{d2} \\ \\ \ded{e1} &\becomes& \ded{e2} \\ \end{array} $$ The ND rules that are difficult to understand and difficult to translate are the ones that involve discharges: `$(→I)$', that appears above, and `$(∨E)$': %: %: [P]^1 R [Q]^1 R %: ::::::::T_1 ::::::::T_2 =====T_1 =====T_2 %: P∨Q S S P∧R≤S Q∧R≤S %: ----------------------(∨E) ---------------∨E %: S (P∨Q)∧R≤S %: %: ^oE1 ^oE2 %: \pu $$\def\becomes{\Longrightarrow} \begin{array}{rcl} \ded{oE1} &\becomes& \ded{oE2} \\ \end{array} $$ % Note that the derived rule $∨E$ is used to combine the translations of the subtrees $T_1$ and $T_2$ into a translation of the whole ND tree. My suggestion for the readers that are seeing this for the first time is: start by translating the ND tree below % % (find-books "__logic/__logic.el" "negri-vonplato") % (find-books "__logic/__logic.el" "van_dalen") % (find-xpdfpage "~/LATEX/2017distributivity.pdf") % (find-LATEXfile "2017distributivity.tex" "fails in some way") %: %: (P∨Q)∧R (P∨Q)∧R %: -------(∧E_2) -------(∧E_2) %: [P]^1 R [Q]^1 R %: ----------(∧I) -----------(∧I) %: (P∨Q)∧R P∧R Q∧R %: -------(∧E_1) ------------(∨I_1) -----------(∨I_2) %: P∨Q (P∧R)∨(Q∧R) (P∧R)∨(Q∧R) %: ----------------------------------------------(∨E);1 %: (P∧R)∨(Q∧R) %: %: ^distr-weird-1 %: $$\pu \ded{distr-weird-1} $$ % to a tree in $𝐬{HAND}$, and then to a tree in $𝐬{HAT}$; then read the relevant parts of \cite{NegriVonPlato} to see how they would do that translation. % _____ _ _ % |_ _|__ _ __ ___ | | ___ __ _(_) ___ ___ % | |/ _ \| '_ \ / _ \| |/ _ \ / _` | |/ _ \/ __| % | | (_) | |_) | (_) | | (_) | (_| | | __/\__ \ % |_|\___/| .__/ \___/|_|\___/ \__, |_|\___||___/ % |_| |___/ % % «topologies» (to ".topologies") % (ph1p 24 "topologies") % (ph1a "topologies") \section{Topologies} \label {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 kite = ".1.|2.3|.4.|.5." %L house = ".1.|2.3|4.5" %L mp = MixedPicture.new({def="dagX", meta="s", scale="5pt"}, z):zfunction(X):output() %L mp = MixedPicture.new({def="dagKite", meta="s", scale="6pt"}, z):zfunction(kite):output() %L mp = MixedPicture.new({def="dagHouse", meta="s", scale="6pt"}, z):zfunction(house):output() %L mp = MixedPicture.new({def="dagKite", meta="t", scale="5pt"}, z):zfunction(kite):output() %L mp = MixedPicture.new({def="dagHouse", meta="s", scale="6pt"}, z):zfunction(house):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") % (ph1p 25 "topologies-on-ZSets") % (ph1a "topologies-on-ZSets") \section{The default topology on a ZSet} \label {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") % (ph1p 26 "topologies-as-partial-orders") % (ph1a "topologies-as-partial-orders") \section{Topologies as partial orders} \label {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 is 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") % New diagram: % % Notes on the names: % We deal with the ZDAGs "H" ("House"), "G" ("Guill") and "W". % % \zfHouse01010 draws a characteristic function of a subset of the ZSet H % \zha{House} draws the "house" ZDAG with arrows (black pawn's moves) % \zha{OHouse} draws ZDAG (H,O(H)) - a Heyting Algebra - with white pawn's moves % % Note that \zha{House} is not a ZHA - it is only a ZDAG, but we use % the library for ZHAs to draw it - and \zha{OW} is a non-planar % Heyting Algebra containing a cube! % %R local house, ohouse = 2/ #1 \, 7/ !h11111 \ %R |#2 #3| | !h01111 | %R \#4 #5/ | !h01011 !h00111 | %R |!h01010 !h00011 !h00101| %R | !h00010 !h00001 | %R \ !h00000 / %R %R house:tomp({def="zfHouse#1#2#3#4#5", scale="5pt", meta="s"}):addcells():output() %R house:tomp({zdef="House" , scale="20pt", meta=nil}):addbullets():addarrows():output() %R ohouse:tomp({zdef="OHouse", scale="28pt", meta=nil}):addcells():addarrows("w"):output() %R %R local guill, oguill = 2/ #1 #2\, 8/ !g111111 \ %R |#3 #4 | | !g101111 !g011111 | %R \ #5 #6/ | !g001111 !g010111| %R | !g001011 !g000111 | %R |!g001010 !g000011 | %R | !g000010 !g000001 | %R \ !g000000 / %R %R guill:tomp({def="zfGuill#1#2#3#4#5#6", scale="3.5pt", meta="s"}):addcells():output() %R guill:tomp({zdef="Guill", scale="20pt", meta=nil}):addbullets():addarrows():output() %R oguill:tomp({zdef="OGuill", scale="28pt", meta=nil}):addcells():addarrows("w"):output() %R %R local w, womit, W = %R 2/#1 #2 #3\, 2/ a \, 7/ !w11111 \ %R \ #4 #5 / | b c d | | !w11011!w10111!w01111 | %R | e f g | | !w10011!w01011!w00111 | %R |h i j | |!w10010 !w00011 !w00101| %R | k l | | !w00010 !w00001 | %R \ m / \ !w00000 / %R w:tomp({def="zfW#1#2#3#4#5", scale="3.5pt", meta="s"}):addcells():output() %R w:tomp({zdef="W", scale="20pt", meta=nil}):addbullets():addarrows() :output() %R W:tomp({zdef="OW", scale="28pt", meta=nil}):addcells():addarrowsexcept("w", "(2,4)0"):output() % $$\pu \begin{array}{ccl} (H,\BPM(H)) = \zha{House} & \qquad & (\Opens(H), ⊂_1) = \def\h{\zfHouse}\zha{OHouse} \\ \\ (G,\BPM(G)) = \zha{Guill} & \qquad & (\Opens(G), ⊂_1) = \def\g{\zfGuill}\zha{OGuill} \\ \\ (W,\BPM(W)) = \zha{W} & \qquad & (\Opens(W), ⊂_1) = \def\w{\zfW}\zha{OW} \\ \end{array} $$ % Old diagram: % % % %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="20pt", meta=nil}):addbullets():addarrows():output() % %R ohouse:tomp({def="zdagOHouse", scale="28pt", 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="20pt", meta=nil}):addbullets():addarrows():output() % %R oguill:tomp({def="zdagOGuill", scale="28pt", meta=nil}):addcells():addarrows("w"):output() % %R oguill:tozmp({def="zdagoguill", scale="12pt", meta="s"}):addlrs():addarrows():output() % % % %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="20pt", meta=nil}):addbullets():addarrows() :output() % %R W:tomp({def="zdagOW", scale="28pt", meta=nil}):addcells():addarrowsexcept("w", "(2,4)0"):output() % % % $$\pu % \begin{array}{ccl} % (H,\BPM(H)) = \zdagHouse % & \qquad % & (\Opens(H), ⊂_1) = \def\h{\zfHouse}\zdagOHouse \\ % \\ % (G,\BPM(G)) = \zdagGuill % & \qquad % & (\Opens(G), ⊂_1) = \def\g{\zfGuill}\zdagOGuill \\ % \\ % (W,\BPM(W)) = \zdagW % & \qquad % & (\Opens(W), ⊂_1) = \def\w{\zfW}\zdagOW \\ % \end{array} % $$ 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") % (ph1p 28 "2CGs") % (ph1a "2CGs") \section{2-Column Graphs} \label {2CGs} \def\l#1{#1\_} \def\r#1{\_#1} Note: in this section we will manipulate objects with names like $1\_, 2\_, 3\_, \ldots,$ $\_1, \linebreak[0] \_2, \linebreak[0] \_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="14pt", meta="p", dv=2, dh=2.75, ev=0.32, eh=0.275} %L tcg_Big = {scale="14pt", meta="p", dv=2, dh=3.5, ev=0.32, eh=0.200} %L tcg_medium = {scale= "9pt", meta="p s", dv=1, dh=2.2, ev=0.32, eh=0.275} %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 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, "tcgbiga", 3, 4, "34 23", "22 12"):lrs():vs():hs():output() $$\pu \tcgbiga $$ % 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("tcgmedlrs"):lrs():hs():output() %L tcgmed("tcgmedbus"):bus():hs():output() $$\pu \tcgmedlrs \quad \text{or} \quad \tcgmedbus. $$ 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("tcgbigwithbig") :lrs():vs():hs():output() %L tcg_spec = "3, 4; 14, 32" %L tcgbig("tcgbigwithbowtie"):lrs():vs():hs():output() $$\pu \tcgbigwithbig \quad \text{and} \quad \tcgbigwithbowtie. $$ % _____ ____ ____ ____ % |_ _|__ _ __ ___ ___ _ __ |___ \ / ___/ ___|___ % | |/ _ \| '_ \/ __| / _ \| '_ \ __) | | | | _/ __| % | | (_) | |_) \__ \ | (_) | | | | / __/| |__| |_| \__ \ % |_|\___/| .__/|___/ \___/|_| |_| |_____|\____\____|___/ % |_| % % «topologies-on-2CGs» (to ".topologies-on-2CGs") % (ph1p 29 "topologies-on-2CGs") % (ph1a "topologies-on-2CGs") \section{Topologies on 2CGs} \label {topologies-on-2CGs} %\catcode`↓=13 \def↓{\dnto} %\catcode`↓=13 \def↓{{\dnto}} \def\dnto{\downarrow} \def\dnto{{\downarrow}} 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)∪\RC(b)$, 2) arrows in $R$ and $L$ forbids some `$\LC(a)∪\RC(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)∪\RC(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("tcgmedConvLR") :lrs() :hs():output() %L tcgmed("tcgmedConvBool"):cs("110", "1000"):hs():output() $$\pu (P,A)=\tcgmedConvLR \qquad \text{and} \qquad \pile(21) = \tcgmedConvBool \;\; \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("tcgmedConvQA"):cs("11?", "??00"):hs():output() $$\pu \tcgmedConvQA $$ % are not open, the presence of the arrow $\{\lotr22\}$ means that the piles of the form % %L tcgmed("tcgmedConvQB"):cs("?00", "11??"):hs():output() $$\pu \tcgmedConvQB $$ % 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("tcgbigConvShorter"):lrs():hs():vs():output() %L z = LR.fromtwocolgraph(4, 5, "32", "14 25"):zha() %L MixedPicture.new({def="zhaConvShorter", scale="12pt", meta=nil}, z):addlrs():output() $$ \pu \Opens \tcgbigConvShorter \quad = \quad \zhaConvShorter % \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("tcgpaintA"):cs("100", "0100"):hs():output() %L tcgmed("tcgpaintB"):cs("110", "1110"):hs():output() % $$\pu ↓\tcgpaintA = \tcgpaintB $$ % 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("tcgpaintC"):cs("000", "0100"):hs():output() %L tcgmed("tcgpaintD"):cs("110", "1110"):hs():output() % $$\pu ↓\r2 \;=\; ↓\{\r2\} =\; ↓\tcgpaintC = \tcgpaintD = \;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("tcgGens"):lrs():hs():vs():output() %L z = LR.fromtwocolgraph(4, 5, "32", "14 25"):zha() %L MixedPicture.new({def="zhaGens", scale="12pt", meta=nil}, z):addlrs():output() %L MixedPicture.new({def="zhaGensGens", scale="12pt", meta=nil}, z):addgens():output() $$ \pu \Opens \tcgGens \quad = \quad \zhaGens \qquad \qquad \zhaGensGens % \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("tcgLoop"):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="zhaLoop", scale="12pt"}):addcells():output() % $$\pu \Opens\tcgLoop \quad = \quad \zhaLoop $$ % _____ _ _ _ % |_ _|__ _ __ ___ __ _ ___ | | | | / \ ___ % | |/ _ \| '_ \/ __| / _` / __| | |_| | / _ \ / __| % | | (_) | |_) \__ \ | (_| \__ \ | _ |/ ___ \\__ \ % |_|\___/| .__/|___/ \__,_|___/ |_| |_/_/ \_\___/ % |_| % % «topologies-as-HAs» (to ".topologies-as-HAs") % (ph1p 32 "topologies-as-HAs") % (ph1a "topologies-as-HAs") \section{Topologies as Heyting Algebras} \label {topologies-as-HAs} \def\toM{\ton{\text{M}}} The {\sl open-set semantics} for Intuitionistic Propositional Logic is based on this idea: choose any topological space $(X,\Opens(X))$; the opens sets of $\Opens(X)$ will play the role of truth-values, and we define the components of a Heyting Algebra (sec.\ref{HAs}) as this: % $$\begin{array}{rclcl} Ω &:=& \Opens(X) \\ P ≤ Q &:=& P⊆Q \\ ⊤ &:=& \setofst{x∈X}{⊤} &=& X \\ ⊥ &:=& \setofst{x∈X}{⊥} &=& ∅ \\ P ∧ Q &:=& \setofst{x∈X}{x∈P∧x∈Q} &=& P∩Q \\ P ∨ Q &:=& \setofst{x∈X}{x∈P∨x∈Q} &=& P∪Q \\[5pt] P \toM Q &:=& \setofst{x∈X}{x∈P→x∈Q} \\ &=& \setofst{x∈X}{x\not∈P∨x∈Q} &=& (X∖P)∪Q \\ \end{array} $$ % However, this `$\toM$' {\sl may} return a non-open result even when given open inputs, % $$\dagHouse 01010 \toM \dagHouse 00011 \;=\; \dagHouse 10111$$ % so our definition is broken; we can fix it by taking the interior: % % (see sec.\ref{propagation}): % $$\begin{array}{rclcl} P \to Q &:=& \Int(P \toM Q) % \\ % &=& \Int(\setofst{x∈X}{x∈P→x∈Q}) \\ &=& \Int((X∖P)∪Q) \\ \end{array} $$ \begin{theorem} For any topological space $(X,\Opens(X))$ the structure $(Ω,≤,⊤,⊥,∧,∨,→)$ defined as above is a Heyting Algebra. In particular, this holds for any $P,Q,R∈Ω$: $P≤(Q→R)$ iff $(P∧Q)≤R$. \label{topologies-as-HAs-thm} \end{theorem} \begin{proof} Standard; see for example \cite{Awodey} (section 6.3). \end{proof} Note that Theorem \ref{topologies-as-HAs-thm} gives us another way to calculate the connectives in 2CGs. In sec.\ref{prop-calc-ZHA} we saw how to calculate $¬¬P→P$ in a certain ZHA when $P=10$; compare it with the ``topological'' way, in which the truth-values are subsets of $\dagHouse{•}{•}{•}{•}{•}$: % % Old diagrams: % % $$\und{\und{¬\und{¬ \und{P}{10}}{02}}{20} → \und{P}{10}}{12} % \qquad % \qquad % \und{\und{¬\und{¬ \und{P}{\dagHouse 00010}}{\dagHouse 00101}}{\dagHouse 01010} % → \und{P}{\dagHouse 00010}}{\dagHouse 00111} % $$ % % New diagrams: % %UB (¬ ¬ P) → P %UB -- -- %UB 10 10 %UB --- %UB 02 %UB ----- %UB 20 %UB ----------- %UB 12 %L %L defub "ntntP -> P" % %UB (¬ ¬ P ) → P %UB ------- ------- %UB \h00010 \h00010 %UB -------- %UB \h00101 %UB --------- %UB \h01010 %UB ---------------------- %UB \h00111 %L %L defub "ntntP -> P : houses" %L $$\pu \ub{ntntP -> P} \qquad \qquad \def\h{\dagHouse} \ub{ntntP -> P : houses} $$ % ______ _ _ __ __ ____ ____ _ ____ % |__ / | | | / \ ___ / / \ \ |___ \ / ___| / \ / ___|___ % / /| |_| | / _ \ / __| / /_____\ \ __) | | / _ \| | _/ __| % / /_| _ |/ ___ \\__ \ \ \_____/ / / __/| |___ / ___ \ |_| \__ \ % /____|_| |_/_/ \_\___/ \_\ /_/ |_____|\____/_/ \_\____|___/ % % «converting-ZHAs-2CAGs» (to ".converting-ZHAs-2CAGs") % (ph1p 33 "converting-ZHAs-2CAGs") % (ph1a "converting-ZHAs-2CAGs") \section{Converting between ZHAs and 2CAGs} \label {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$, and its bottom point is 00. Let $C := \{00, ↓\l1, ↓\l2, \ldots, ↓\l l, lr\}$, i.e., the left generators (see the end of sec.\ref{topologies-on-2CGs}) plus $⊥$ and $⊤$; 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 \begin{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("tcgRedundant"):lrs():vs():hs():output() %L tcg_spec = "4, 4; 44 22, " %L tcgbig("tcgRedundantClean"):lrs():vs():hs():output() %L mpnew({def="zhaRedundant", scale="12pt"}, "12RR3L21L"):addlrs():output() % $$\pu \begin{array}{rcccl} \tcgRedundant &\sa& \zhaRedundant &\sa& \tcgRedundantClean \\ % 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}$. \end{theorem} % % \begin{proof} % Proof of your theorem. % \end{proof} % % {\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: % % ___ ____ _ __ ______ _ _ _ __ ____ ____ _ % |_ _| _ \| | / / |__ / | | | / \ | | / / / ___| _ \| | % | || |_) | | / / / /| |_| | / _ \ | | / / | | | |_) | | % | || __/| |___ \ \ / /_| _ |/ ___ \| |___ \ \ | |___| __/| |___ % |___|_| |_____| \_\ /____|_| |_/_/ \_\_____| \_\ \____|_| |_____| % % «ZHAL-is-between» (to ".ZHAL-is-between") % (ph1p 34 "ZHAL-is-between") % (ph1a "ZHAL-is-between") \section{ZHA Logic is between IPL and CPL} \label{ZHAL-is-between} % (find-books "__logic/__logic.el" "chagrov") % (find-chagrovzmlpage (+ 15 112) "BW_n") In standard terminology, this is: ZHA Logic is a superintuitionistic logic (\cite{ChagrovZakharyaschev}, p.109) of ``bounded width 2'', i.e., where the axiom $𝐛{BW}_2$ of \cite{ChagrovZakharyaschev}, p.112, holds. But let's see this in elementary terms. \def\IPL {\mathsf{IPL}} \def\ZHAL{\mathsf{ZHAL}} \def\CPL {\mathsf{CPL}} \def\Taut{\mathsf{Taut}} \def\Vars{\mathsf{Vars}} \def\bfV {\mathbf{V}} % (find-dn6 "zhas.lua" "MixedPicture-zset-tests") %L local Pyr = ".1.|234" %L mp = MixedPicture.new({def="dagPyr", meta="s", scale="5pt"}, z):zfunction(Pyr):output() \pu Let $S$ be this sentence: % $$\begin{array}{rcl} S_P &:=& P→(Q∨R) \\ S_Q &:=& Q→(R∨P) \\ S_R &:=& R→(P∨Q) \\ S &:=& S_P ∨ S_Q ∨ S_R \\ \end{array} $$ $S$ can't be an intuitionistic theorem because in this Heyting Algebra, with these values for $P$, $Q$, $R$, % %R local w, womit, W = %R 2/ #1 \, 2/ T \, 6/ !w1111 \ %R \#2#3#4/ | a | | !w0111 | %R |b c d | |!w0110!w0101!w0011| %R |e f g | |!w0100!w0010!w0001| %R \ h / \ !w0000 / %R w:tomp({def="zfPyr#1#2#3#4", scale="5pt", meta="s"}):addcells():output() %R w:tomp({def="zfPyrmed#1#2#3#4", scale="24pt", meta=nil}):addcells():addarrows():output() %R w:tomp({def="zfPyrbig#1#2#3#4", scale="25pt", meta=nil}):addcells():addarrows("w"):output() %R w:tomp({def="zdagPyr", scale="13pt", meta=nil}):addbullets():addarrows():output() %R W:tomp({def="zdagOPyr", scale="28pt", meta=nil}):addcells():addarrowsexcept("w", "(1,2)0"):output() % $$ \pu \def\w{\zfPyr} (W,A) = \zfPyrmed1234 %\zdagPyr \qquad (\Opens_A(W), ⊂_1) = \zdagOPyr \qquad \begin{array}{rcl} P &=& \dagPyr0100 \\ Q &=& \dagPyr0010 \\ R &=& \dagPyr0001 \\ \end{array} $$ % we have $S=\dagPyr0111≠⊤=\dagPyr1111$. One way to define a {\sl valuation} for a sentence $S$ with variables $\Vars(S)$ --- in our example we have $\Vars(S)=\{P,Q,R\}$) --- is as a pair made of a Heyting Algebra $H$ and a function $v:\Vars(S)→H$. A looser definition is that a valuation for $S$ is a pair made of 1) something that generates a Heyting Algebra in a known, canonical way, and 2) a function from $\Vars(S)$ to the elements of that HA. So: \msk A {\sl classical valuation} for $S$ is a valuation of the form $(\{0,1\},v)$. A {\sl ZHA-valuation} for $S$ is a valuation of the form $(H,v)$, where $H$ is a ZHA. A {\sl finite DAG-valuation} for $S$ is a valuation of the form $((W,A),v)$, where $W$ is a finite set and $A⊆W×W$ is a set of arrows on $W$; the Heyting Algebra on $(W,\Opens_A(W))$ is built as in sec.\ref{topologies-as-HAs}. A {\sl 2CG-valuation} for $S$ is a finite DAG-valuation for $S$ of the form $((P,A),v)$, where $(P,A)$ is a 2-column graph; each 2CG-valuation is naturally equivalent to a ZHA-valuation, and vice-versa. \msk A {\sl classical countermodel} for $S$ is classical valuation for $S$ in which the value of $S$ is not $⊤$; a {\sl ZHA-countermodel} for $S$ is a ZHA-valuation for $S$ in which the value of $S$ is not $⊤$; an {\sl intuitionistic countermodel} for $S$ is a finite DAG-valuation for $S$ in which the value of $S$ is not $⊤$. \msk A sentence $S$ is a {\sl classical tautology} (notation: $S∈\Taut(\CPL)$) if $S$ has no classical countermodels; a sentence $S$ is a {\sl ZHA-tautology} (notation: $S∈\Taut(\ZHAL)$); and a sentence $S$ is an {\sl intuitionistic tautology} (notation: $S∈\Taut(\IPL)$) of $S$ has no finite-DAG countermodels. \msk It is a standard result that the intuitionistic {\sl theorems} are exactly the finite-DAG {\sl tautologies}; this can be seen using Gödel translation (see \cite{Goedel1933f} and \cite{Goedel1933fintro}) to translate $S$ to S4, and then using modal tableaux for S4 (\cite{Fitting72}) to look for a countermodel; in standard terminology, $W$ is a set of ``worlds'', $A$ is an ``accessibility relation'' or a notion of which worlds are ``ahead'' of which other ones, and $(W,A^*)$ is a Kripke frame for S4. The sentence $S=S_P ∨ S_Q ∨ S_R$ of the beginning of the section is a good example for introducting tableau methods for modal logics to ``children'', as the tableau that it generates doesn't have branches. We can present the method directly and in elementary terms, as we will do now. \msk Fix a set $W$ and a relation $A⊆W×W$. We will say that $β$ is ``ahead'' of $α$ when $(α,β)∈A^*$, i.e., when there is a path $α→\ldots→β$ using only arrows in $A$. Let $P$ and $Q$ be open sets in $\Opens_A(W)$. The only way to have $P∨Q$ false in a world $α$ (notation: $(P∨Q)_α=0$) is to have $P_α=0$ and $Q_α=0$. The only way to have $P→Q$ false in a world $α$, i.e., $(P→Q)_α=0$ is to have $P_β=1$ and $Q_β=0$ in {\sl some} world $β$, with $β$ ahead of $α$. Let $((W,A),v)$ be a finite DAG-countermodel for $S=S_P ∨ S_Q ∨ S_R$. Then $v(P), \linebreak[0] v(Q), \linebreak[0] v(R)∈\Opens_A(W)$; we will omit the `$v$'s. If $((W,A),v)$ is a countermodel this means that $S≠⊤$, and there is some world $α$ in $W$ in which $S_α=0$. Fix this $α$. $S_α=0$ means $(S_P ∨ S_Q ∨ S_R)_α=0$, which means that $(S_P)_α=0$, $(S_Q)_α=0$, and $(S_R)_α=0$. $(S_P)_α=0$ means $(P→(Q∨R))_α=0$, which means that there is a world $β$ ahead of $α$ in which $P_β=1$ and $(Q∨R)_β=0$, and $(Q∨R)_β=0$ means $Q_β=0$ and $R_β=0$; similarly, $(S_Q)_α=0$ means that there is a world $γ$ ahead of $α$ in which $Q_γ=1$, $R_γ=0$, $P_γ=0$, and $(S_R)_α=0$ means that there is a world $δ$ ahead of $α$ in which $R_δ=1$, $P_δ=0$, $Q_δ=0$. In diagrams: % %D diagram smallpyr %D 2Dx 100 +20 +20 %D 2D 100 α %D 2D %D 2D +20 β γ δ %D 2D %D (( α β -> %D α γ -> %D α δ -> %D )) %D enddiagram %D %D diagram bigpyr %D 2Dx 100 +50 +50 %D 2D 100 \mata %D 2D %D 2D +50 \matb \matc \matd %D 2D %D (( \mata \matb -> %D \mata \matc -> %D \mata \matd -> %D )) %D enddiagram %D $$\def\mata{\begin{array}{c} S_α=0 \\ (S_P)_α = (P→(Q∨R))_α = 0 \\ (S_Q)_α = (Q→(R∨P))_α = 0 \\ (S_R)_α = (R→(P∨Q))_α = 0 \\ \end{array} } \def\matb{\begin{array}{c} P_β=1 \\ (Q∨R)_β=0 \\ Q_β=0 \\ R_β=0 \\ \end{array} } \def\matc{\begin{array}{c} Q_γ=1 \\ (R∨P)_γ=0 \\ R_γ=0 \\ P_γ=0 \\ \end{array} } \def\matd{\begin{array}{c} R_δ=1 \\ (P∨Q)_δ=0 \\ P_δ=0 \\ Q_δ=0 \\ \end{array} } \pu \diag{smallpyr} \qquad \diag{bigpyr} $$ Note that $β$ and $γ$ are ``independent'' in the sense that in $A^*$ we can't have an arrow $β→γ$ and neither an arrow $γ→β$; we can't have $β→γ$ because $P_β=1$ but $P_γ=0$, and we can't have $γ→β$ because $Q_γ=1$ but $Q_β=0$. We can use a similar argument to show that $γ$ and $δ$ are independent, and to show also that $δ$ and $β$ are independent. {\sl We can't have three independent points in a 2-column graph,} so we have finite DAG-countermodels for $S$ but no 2CG-countermodels for $S$, and so no ZHA-countermodels for $S$. This means that $S$ is not an intuitionistic tautology, but it is a ZHA-tautology. It is easy to see that $\Taut(\IPL)⊂\Taut(\ZHAL)⊂\Taut(\CPL)$, and we saw that $S \not∈ \Taut(\IPL)$, $S∈\Taut(\ZHAL)$, $(¬¬P→P) \not∈ \Taut(\ZHAL)$, $(¬¬P→P) ∈ \Taut(\IPL)$, which means that: % $$\Taut(\IPL) \subsetneq \Taut(\ZHAL) \subsetneq \Taut(\CPL)$$ % and so ``ZHA Logic'', {\sl which we have not defined via a deduction system,} only by the notions of ``ZHA countermodels'' and ``ZHA tautologies'', is strictly between Intuitionistic Logic and Classical Logic, and is different from both. % It may be possible to axiomatize our ``ZHA Logic'' as a ``logic of % width 2'' using the ideas from \cite{ModalHandbook}, pp.449--450, % but I have not attempted to do that yet. % (find-books "__modal/__modal.el" "fitting") % (ph1a "topologies") % (ph1p 22 "topologies") % We saw in sec.\ref{prop-calc} a figure that shows that $P∨Q→P∧Q$ is % not a tautology in Classical Logic, and in sec.\ref{prop-calc-ZHA} we % saw a figure that shows that $¬(P∧Q)→(¬P∨¬Q)$ is not a tautology in a % certain ZHA; it reappered in sec.\ref{topologies-as-HAs}, translated % to a topological setting. We saw very little about deductive systems % --- only a bit in sec.\ref{logic-in-HAs}. % % There is an easy argument that shows that ``ZHA Logic'' lies between % Classical Propositional Logical and Intuitionistic Propositional % Logic, and is distinct from both. We will work on the sets of % tautologies. Let: % % % % % We will try to find a countermodel for $S$, and in the process we will % discover that $\Taut(\IPL) \subsetneq \Taut(\ZHAL) \subsetneq % \Taut(\CPL)$. % % If $E$ is a PC-expression (sec.\ref{prop-calc}) on a set $\bfV$ of % variables --- say, $\bfV = \{P,Q,R\}$ --- then a {\sl valuation} for % $E$ if a triple $(W,A,v)$, where $W$ is a finite set of ``worlds'', % $A⊆W×W$ is an ``accessibility relation'' on $W$, and % $v:\bfV→\Opens_A(W)$ is a function that assigns an open set to each % variable in $\bfV$. Our examples will only need cases where $W$ is a % ZSet and $A = \BPM(W)$, and this lets us use a very compact notation % for a triple $(W,A,v)$ in which only $v$ is shown and $W$ and $A$ are % left implicit. % «bibliography» (to ".bibliography") % (ph1p 36 "bibliography") % (ph1a "bibliography") % (find-anggfile "LATEX/" "2017planar-has-1.tex") % (find-LATEXfile "sajl/template-sajl.tex" "\\begin{thebibliography}{10}") % (ph1a "bibliography") % (ph1p 36 "bibliography") % (pha "bibliography") % (phap 63 "bibliography") % (find-kopkadaly4page (+ 12 310) "With \\nocite{*}, every entry") % (find-kopkadaly4text (+ 12 310) "With \\nocite{*}, every entry") % (find-kopkadaly4page (+ 12 310) "\\bibliographystyle{style}") % (find-kopkadaly4text (+ 12 310) "\\bibliographystyle{style}") % (find-kopkadaly4page (+ 12 316) "14.2.3 Cross-referencing") % (find-kopkadaly4text (+ 12 316) "14.2.3 Cross-referencing") % % (find-kopkadaly4page (+ 12 309) "\\bibliography{database1,") % % (find-kopkadaly4text (+ 12 309) "\\bibliography{database1,") % \bibliography{catsem} % %\bibliographystyle{plain} % % % (find-kopkadaly4page (+ 12 310) "\\bibliographystyle{style}") % % (find-kopkadaly4text (+ 12 310) "\\bibliographystyle{style}") % \bibliographystyle{alpha} \printbibliography \authorname{Eduardo Ochs} \address{Departmento de Ciências da Natureza\\ Universidade Federal Fluminense (UFF)\\ Rua Recife, Lotes 1-7, Jardim Bela Vista, Rio das Ostras, RJ, CEP 28895-532, Brazil} \email{eduardoochs@gmail.com} % TO HERE %L write_dnt_file() \pu \end{document} % «clean-up-names» (to ".clean-up-names") % Clean up repeated names in the .dnt: % (find-LATEX "2017planar-has-1-body.tex") % (find-LATEX "2017planar-has-1.dnt") % (find-LATEXfile "2017planar-has-1.tex" 384) % (find-LATEXfile "2017planar-has-1.dnt" "\\begin{picture}") % (find-LATEXfile "2017planar-has-1.dnt" "mpxy") % (find-LATEXsh "cat 2017planar-has-1.dnt | egrep '^.def' | sort") % (find-LATEXsh "cat 2017planar-has-1.dnt | egrep '^.def' | sort | grep cell") % (find-LATEXsh "cat 2017planar-has-1.dnt | egrep '^.def' | sort | grep -v cell") % (find-LATEXsh "cat 2017planar-has-1.dnt | egrep '^.def' | sort | grep -v cell | grep -i house") % (find-LATEXsh "cat 2017planar-has-1.dnt | egrep '^.def' | sort | grep -v cell | grep -i kite") % «write-ph1-body» (to ".write-ph1-body") % (find-LATEX "2019ilha-grande-poster-a4.tex" "write-poster-body") % (find-LATEX "2017planar-has-1-body.tex") * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) fname1 = "2017planar-has-1.tex" -- input fname2 = "2017planar-has-1-body.tex" -- output bigstr = ee_readfile(fname1) smallerstr = bigstr:match("%% FROM HERE.-%% TO HERE\n") head = "\\directlua{tf_push(\""..fname2.."\")}\n" tail = "\\directlua{tf_pop()}\n" = head = tail newbody = head..smallerstr..tail ee_writefile(fname2, newbody) -- (find-LATEX "2017planar-has-1-body.tex") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # laf 2017planar-has* laf --sort=time 2017planar-has-1* # (find-man "ls") % Local Variables: % coding: utf-8-unix % ee-tla: "ph1" % End: