Work on categorical prelims, added quiver.sty

This commit is contained in:
Leon Vatthauer 2024-03-24 13:50:49 +01:00
parent 75a42e4886
commit f537b830a7
Signed by: leonv
SSH key fingerprint: SHA256:G4+ddwoZmhLPRB1agvXzZMXIzkVJ36dUYZXf5NxT+u8
10 changed files with 283 additions and 57 deletions

4
tex/.chktexrc Normal file
View file

@ -0,0 +1,4 @@
CmdLine = {
-n18
-n46
}

View file

@ -27,3 +27,8 @@ Epimorphisms
Isomorphisms
cancellative
Coproducts
poset
iff
posets
coproduct
monoid

View file

@ -5,3 +5,6 @@
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QFriedrich-Alexander-Universität Erlangen-Nürnberg\\E$"}
{"rule":"COMMA_PARENTHESIS_WHITESPACE","sentence":"^\\QThis is a summary of the course “Algebra des Programmierens” taught by Prof. Dr. Stefan Milius in the winter term 2023/2024 at the FAU .\\E$"}
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\Q\\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q satisfies the following two rules law:natident Identity law:natfusion Fusion Lists.\\E$"}
{"rule":"COMMA_PARENTHESIS_WHITESPACE","sentence":"^\\Q[cases] mycase Case .\\E$"}
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QIt seems that these proofs should somehow be constructable from each other\\E$"}
{"rule":"ENGLISH_WORD_REPEAT_RULE","sentence":"^\\QEvery categorical notion can thus be dualized by viewing it in the dual category, some examples include: Notion Dual Notion Initial Object Terminal Object Monomorphism Epimorphism Isomorphism Isomorphism\\E$"}

View file

@ -23,5 +23,10 @@
"latexmk-main"
]
}
]
],
"ltex.latex.commands": {
"\\customlabel{}": "ignore",
"\\setminted[]{}": "ignore",
"\\setmintedinline[]{}": "ignore"
}
}

Binary file not shown.

View file

@ -1,9 +1,8 @@
\documentclass[a4paper,11pt,titlepage]{scrartcl}
\documentclass[a4paper,11pt,titlepage,numbers=noenddot]{scrbook}
%%%% Document Setup
\usepackage[top=2cm,lmargin=1in,rmargin=1in,bottom=3cm,hmarginratio=1:1]{geometry}
\usepackage{scrlayer-fancyhdr}
\usepackage{extramarks}
\usepackage{scrlayer-scrpage}
\usepackage[ngerman, english]{babel}
\babeltags{german=ngerman}
\usepackage{anyfontsize}
@ -13,14 +12,12 @@
\usepackage{booktabs}
\usepackage[scale=.85]{noto-mono} % TODO find better unicode mono font
\usepackage[final]{hyperref}
\pagestyle{fancy}
\lhead{\DocTitle}
\chead{\UniCourse}
\rhead{\firstxmark}
\lfoot{\lastxmark}
\cfoot{\thepage}
\renewcommand\headrulewidth{0.4pt}
\renewcommand\footrulewidth{0.4pt}
\usepackage{scrhack}
\automark{chapter}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\renewcommand{\subsectionmark}[1]{\markright{\thesubsection\ #1}}
\pagestyle{scrheadings}
%%%%
%%%% Metadata
@ -51,7 +48,13 @@
\setmintedinline[haskell]{
style=bw
}
%%%%
%%%% Spacing
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt}
\setlength{\marginparsep}{0cm}
\AtBeginEnvironment{minted}{\setlength{\parskip}{0pt}}
%%%%
%%%% Math packages
@ -59,7 +62,8 @@
\usepackage{thmtools}
\usepackage{tikz}
\usetikzlibrary{cd, babel, quotes}
\declaretheorem[name=Definition,style=definition,numberwithin=section]{definition}
\usepackage{quiver}
\declaretheorem[name=Definition,style=definition,numberwithin=chapter]{definition}
\declaretheorem[name=Example,style=definition,sibling=definition]{example}
\declaretheorem[style=definition,numbered=no]{exercise}
\declaretheorem[name=Remark,style=definition,sibling=definition]{remark}
@ -76,7 +80,7 @@
\makeatletter
\hypersetup{
pdfauthor={\@author},
pdftitle={\@title},
pdftitle={\UniCourse},
% kill those ugly red rectangles around links
hidelinks,
}
@ -127,20 +131,23 @@
%%% Notation
%% Category C
\newcommand{\C}{\ensuremath{\mathscr{C}}}
%% Objects of category
\newcommand{\obj}[1]{\ensuremath{\vert #1 \vert}}
%% Dual category
\newcommand{\dual}[1]{\ensuremath{#1^{op}}}
%%%
%%%%
\begin{document}
%% Titlepage
\maketitle
\thispagestyle{empty}
\null\newpage
\setcounter{page}{1}
%%
%% TOC
\tableofcontents
\pagebreak
%%
%% Contents

40
tex/quiver.sty Normal file
View file

@ -0,0 +1,40 @@
% *** quiver ***
% A package for drawing commutative diagrams exported from https://q.uiver.app.
%
% This package is currently a wrapper around the `tikz-cd` package, importing necessary TikZ
% libraries, and defining a new TikZ style for curves of a fixed height.
%
% Version: 1.4.2
% Authors:
% - varkor (https://github.com/varkor)
% - AndréC (https://tex.stackexchange.com/users/138900/andr%C3%A9c)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{quiver}[2021/01/11 quiver]
% `tikz-cd` is necessary to draw commutative diagrams.
\RequirePackage{tikz-cd}
% `amssymb` is necessary for `\lrcorner` and `\ulcorner`.
% \RequirePackage{amssymb}
% `calc` is necessary to draw curved arrows.
\usetikzlibrary{calc}
% `pathmorphing` is necessary to draw squiggly arrows.
\usetikzlibrary{decorations.pathmorphing}
% A TikZ style for curved arrows of a fixed height, due to AndréC.
\tikzset{curve/.style={settings={#1},to path={(\tikztostart)
.. controls ($(\tikztostart)!\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
and ($(\tikztostart)!1-\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
.. (\tikztotarget)\tikztonodes}},
settings/.code={\tikzset{quiver/.cd,#1}
\def\pv##1{\pgfkeysvalueof{/tikz/quiver/##1}}},
quiver/.cd,pos/.initial=0.35,height/.initial=0}
% TikZ arrowhead/tail styles.
\tikzset{tail reversed/.code={\pgfsetarrowsstart{tikzcd to}}}
\tikzset{2tail/.code={\pgfsetarrowsstart{Implies[reversed]}}}
\tikzset{2tail reversed/.code={\pgfsetarrowsstart{Implies}}}
% TikZ arrow styles.
\tikzset{no body/.style={/tikz/dash pattern=on 0 off 1mm}}
\endinput

View file

@ -1,11 +1,10 @@
% chktex-file 46
\section{Introduction}
\chapter{Introduction}
This is a summary of the course ``Algebra des Programmierens'' taught by Prof.\ Dr.\ Stefan Milius in the winter term 2023/2024 at the FAU~\footnote{Friedrich-Alexander-Universität Erlangen-Nürnberg}.
The course is based on~\cite{poll1999algebra} with~\cite{adamek1990abstract} as a reference for category theory.
Goal of the course is to develop a mathematical theory for semantics of data types and their accompanying proof principles. The chosen environment is the field of category theory.
\subsection{Functions}
\section{Functions}
A function $f : X \rightarrow Y$ is a mapping from the set $X$ (the domain of $f$) to the set $Y$ (the codomain of $f$).
More concretely $f$ is a relation $f \subseteq X \times Y$ which is
\begin{itemize}
@ -32,7 +31,7 @@ Often, one is also interested in the symmetrical properties, a function is calle
\end{enumerate}
\end{example}
\subsection{Data Types}
\section{Data Types}
Programs work with data that should ideally be organized in a useful manner.
A useful representation for data in functional programming is by means of \emph{algebraic data types}.
@ -54,7 +53,7 @@ These data types are declared by means of constructors, yielding concrete descri
Such data types (parametric or non-parametric) usually come with a principle for defining functions called recursion and in richer type systems (e.g.\ in a dependently typed setting) with a principle for proving facts about recursive functions called induction.
Equivalently, every function defined by recursion can be defined via a \emph{fold}-function which satisfies an identity and fusion law, which replace the induction principle. Let us now consider two examples of data types and illustrate this.
\subsubsection{Natural Numbers}
\subsection{Natural Numbers}
The type of natural numbers comes with a fold function $foldn : C \rightarrow (Nat \rightarrow C) \rightarrow Nat \rightarrow C$ for every $C$, defined by
\begin{alignat*}{2}
& foldn\;c\;h\;zero & & = c \\
@ -182,7 +181,7 @@ The type of natural numbers comes with a fold function $foldn : C \rightarrow (N
\end{tikzcd}\]
trivially commutes.
\end{example}
\subsubsection{Lists}
\subsection{Lists}
We will now look at the $List$ type and examine it for similar properties. Let us start with the fold function $foldr : C \rightarrow (A \rightarrow C \rightarrow C) \rightarrow List\;A \rightarrow C$, which is defined by
\begin{alignat*}{2}
& foldr\;c\;h\;nil & & = c \\

View file

@ -1,10 +1,9 @@
% chktex-file 46
\section{Category Theory}
\chapter{Category Theory}
Categories consist of objects and morphisms between those objects, that can be composed in a coherent way.
This yields a framework for abstracting many mathematical concepts for reasoning on a very abstract level.
This yields a framework for abstraction of many mathematical concepts that enables us to reason on a very abstract level.
\begin{definition} A category \C consists of
\begin{definition}[Category] A category \C consists of
\begin{itemize}
\item a class of objects denoted $\obj{\C}$,
\item for every pair of objects $A,B \in \obj{\C}$ a set of morphisms $\C(A,B)$ called the hom-set,
@ -28,13 +27,13 @@ This yields a framework for abstracting many mathematical concepts for reasoning
\end{tabular}
\end{center}
\end{example}
\subsection{Special Objects}
\section{Special Objects}
Special objects play an important role in category theory.
In this chapter we will characterize (finite) products and coproducts, as well as special morphisms such as isomorphisms, monomorphisms and epimorphisms.
\subsubsection{Initial and Terminal Objects}
\section{Initial and Terminal Objects}
\begin{definition} The following is the categorical abstraction of ``empty set'' and ``singleton set'' respectively.
\begin{definition}[Initial and Terminal Objects] The following is the categorical abstraction of ``empty set'' and ``singleton set'' respectively.
\begin{enumerate}
\item An object $0 \in \obj{\C}$ is called initial if for every $B \in \obj{C}$ there is a unique morphism $¡ : 0 \rightarrow B$.
\item An object $1 \in \obj{\C}$ is called terminal if for every $A \in \obj{C}$ there is a unique morphism $! : A \rightarrow 1$.
@ -53,10 +52,10 @@ In this chapter we will characterize (finite) products and coproducts, as well a
\end{example}
\subsubsection{Special Morphisms}
\section{Special Morphisms}
Now let us characterize special morphisms.
\begin{definition}
\begin{definition}[Special Morphisms]
Let $f : A \rightarrow B$ be a morphism. $f$ is called
\begin{itemize}
\item an \emph{isomorphism} (\emph{iso}), if there exists an inverse $f^{-1} : B \rightarrow A$ such that $f \circ g = id_B$ and $g \circ f = id_A$;
@ -76,37 +75,201 @@ Now let us characterize special morphisms.
\end{center}
\end{example}
\begin{proposition}
% TODO
iso is mono and epi
\begin{proposition} Every isomorphism is a monomorphism and an epimorphism.
\end{proposition}
\begin{proof}
Let $f$ be an isomorphism.
\begin{itemize}
\item $f \circ g = f \circ h$ implies $g = f^{-1} \circ f \circ g = f^{-1} \circ f \circ h = h$, thus $f$ is a monomorphism.
\item $g \circ f = h \circ f$ implies $g = g \circ f \circ f^{-1} = h \circ f \circ f^{-1} = h$, thus $f$ is an epimorphism.
\end{itemize}
\end{proof}
\begin{proposition}\label{prop:monosplitting} If $f \circ m$ is a monomorphism then $m$ is also a monomorphism.
\end{proposition}
\begin{proof}
Let $m \circ g = m \circ h$. To show that $g = h$ it suffices to show that $f \circ m \circ g = f \circ m \circ h$, which indeed follows by assumption.
\end{proof}
\begin{proposition}\label{prop:episplitting} If $e \circ f$ is an epimorphism then $e$ is also an epimorphism.
\end{proposition}
\begin{proof}
Let $g \circ e = h \circ e$. To show that $g = h$ it suffices to show that $g \circ e \circ f = h \circ e \circ f$, which again follows by assumption.
\end{proof}
Categorical structures like initial objects are usually not uniquely identified, there might be multiple initial objects in a category. However, all initial objects in a category are isomorphic, we call this ``unique up to isomorphism''.
\begin{proposition}\label{prop:init_up_to} Initial objects are unique up to isomorphism.
\end{proposition}
\begin{proof}
Let $0, 0' \in \obj{\C}$ be two initial objects of $\C$ with the unique morphisms $¡_A : 0 \rightarrow A$ and ${¡'}_A : 0' \rightarrow A$.
The isomorphism is:
% https://q.uiver.app/#q=WzAsMixbMCwwLCIwIl0sWzIsMCwiMCciXSxbMSwwLCJ7wqEnfV8wIiwyLHsiY3VydmUiOi0yfV0sWzAsMSwiwqFfezAnfSIsMCx7ImN1cnZlIjotMn1dXQ==
\[
\begin{tikzcd}
0 && {0'}
\arrow["{{¡'}_0}"', curve={height=-12pt}, from=1-3, to=1-1]
\arrow["{¡_{0'}}", curve={height=-12pt}, from=1-1, to=1-3]
\end{tikzcd}
\]
Note that by uniqueness $¡_{0'} \circ {¡'}_0 = {¡'}_{0'} = id_{0'}$ and ${¡'}_0 \circ ¡_{0'} = ¡_0 = id_0$.
\end{proof}
\begin{proposition}\label{prop:term_up_to} Terminal objects are unique up to isomorphism.
\end{proposition}
\begin{proof}
Let $1, 1' \in \obj{\C}$ be two terminal objects of $\C$ with the unique morphisms $!_A : A \rightarrow 1$ and ${!'}_A : A \rightarrow 1'$.
The isomorphism is:
% https://q.uiver.app/#q=WzAsMixbMCwwLCIxIl0sWzIsMCwiMSciXSxbMCwxLCJ7ISd9XzEiLDAseyJjdXJ2ZSI6LTJ9XSxbMSwwLCIhX3sxJ30iLDAseyJjdXJ2ZSI6LTJ9XV0=
\[
\begin{tikzcd}
1 && {1'}
\arrow["{{!'}_1}", curve={height=-12pt}, from=1-1, to=1-3]
\arrow["{!_{1'}}", curve={height=-12pt}, from=1-3, to=1-1]
\end{tikzcd}
\]
Note that by uniqueness ${!'}_1 \circ !_{1'} = {!'}_{1'} = id_{1'}$ and $!_{1'} \circ {!'}_1 = !_1 = id_1$.
\end{proof}
\section{Duality}
Notice how similar the proofs of \autoref{prop:monosplitting} and \autoref{prop:episplitting} as well as \autoref{prop:init_up_to} and \autoref{prop:term_up_to} are to each other.
It seems that we should somehow be able to construct one proof from the other, such that the work required would be halved.
This is actually the case, we can for example say that \autoref{prop:episplitting} follows from \autoref{prop:monosplitting} by \emph{duality}.
\begin{definition}[Dual Category]
Every category $\C$ has a \emph{dual category} $\dual{\C}$ defined by
\begin{itemize}
\item $\obj{\dual{\C}} = \obj{\C}$
\item $\dual{\C}(A,B) = \C(B,A)$
\end{itemize}
\end{definition}
\begin{example} Examples are:
\begin{enumerate}
\item In a poset the order relation gets reversed.
\item \emph{\dual{Rel}} is isomorphic to \emph{Rel}, since subsets of $A \times B$ are in bijection with subsets of $B \times A$
\item $\dual{(\dual{\C})} = \C$
\end{enumerate}
\end{example}
Every categorical notion can thus be dualized by viewing it in the dual category, some examples include:
\begin{center}
\begin{tabular}{l l}
Notion & Dual Notion \\\midrule
Initial Object & Terminal Object \\
Monomorphism & Epimorphism \\
Isomorphism & Isomorphism
\end{tabular}
\end{center}
This yields a proof principle ``by duality'', where every theorem yields another theorem by duality.
\section{Products and Coproducts}
The categorical abstraction of Cartesian products is:
\begin{definition}[Product]
The \emph{product} of two objects $A, B \in \obj{\C}$ is an object that we call $A \times B$ together with morphisms $\pi_1 : A \times B \rightarrow A$ and $\pi_2 : A \times B \rightarrow B$ (the projections), where the following property holds:
% https://q.uiver.app/#q=WzAsNCxbMiwyLCJBIFxcdGltZXMgQiJdLFs0LDIsIkIiXSxbMCwyLCJBIl0sWzIsMCwiQyJdLFswLDIsIlxccGlfMSJdLFswLDEsIlxccGlfMiIsMl0sWzMsMiwiZiIsMl0sWzMsMSwiZyJdLFszLDAsIlxcZXhpc3RzIVxcbGFuZ2xlIGYsIGcgXFxyYW5nbGUiLDAseyJzdHlsZSI6eyJib2R5Ijp7Im5hbWUiOiJkYXNoZWQifX19XV0=
\[
\begin{tikzcd}
&& C \\
\\
A && {A \times B} && B
\arrow["{\pi_1}", from=3-3, to=3-1]
\arrow["{\pi_2}"', from=3-3, to=3-5]
\arrow["f"', from=1-3, to=3-1]
\arrow["g", from=1-3, to=3-5]
\arrow["{\exists!\langle f, g \rangle}", dashed, from=1-3, to=3-3]
\end{tikzcd}
\]
\end{definition}
\begin{example} Some examples include:
\begin{enumerate}
\item \emph{Set}: The product of two sets $A$ and $B$ is the Cartesian product $A \times B = \{ (a,b)\;\vert\;a \in A, b \in B\}$.
\item \emph{Gra}: The product of two graphs has as vertices the Cartesian product of the vertices of both graphs and an edge $(v_1, u_1) \rightarrow (v_2, u_2)$ iff there exists edges $v_1 \rightarrow v_2$ and $u_1 \rightarrow u_2$.
\item \emph{Pos}: Given two posets $(A, \leq), (B, \leq)$, the product is the Cartesian product of $A$ and $B$ where $(a,b) \leq (a', b') \iff a \leq a' \land b \leq b'$.
\item Let $(X, \leq)$ be a poset, the product of $a, b \in X$ is the greatest lower bound of $a$ and $b$.
\end{enumerate}
\end{example}
Dual to products are:
\begin{definition}[Coproduct]
The \emph{coproduct} of two objects $A, B \in \obj{\C}$ is an object that we call $A + B$ together with morphisms $i_1 : A \rightarrow A + B$ and $i_2 : B \rightarrow A + B$ (the injections), where the following property holds:
% https://q.uiver.app/#q=WzAsNCxbMiwwLCJBK0IiXSxbMCwwLCJBIl0sWzQsMCwiQiJdLFsyLDIsIkMiXSxbMSwwLCJpXzEiXSxbMiwwLCJpXzIiLDJdLFsxLDMsImYiLDJdLFsyLDMsImciXSxbMCwzLCJcXGV4aXN0cyFbZixnXSIsMCx7InN0eWxlIjp7ImJvZHkiOnsibmFtZSI6ImRhc2hlZCJ9fX1dXQ==
\[
\begin{tikzcd}
A && {A+B} && B \\
\\
&& C
\arrow["{i_1}", from=1-1, to=1-3]
\arrow["{i_2}"', from=1-5, to=1-3]
\arrow["f"', from=1-1, to=3-3]
\arrow["g", from=1-5, to=3-3]
\arrow["{\exists![f,g]}", dashed, from=1-3, to=3-3]
\end{tikzcd}
\]
\end{definition}
\begin{example} Examples include:
\begin{enumerate}
\item \emph{Set}: The coproduct of two sets $A$ and $B$ is the disjoint union $A + B = \{ (a,0)\;\vert\;a \in A \} \cup \{ (b, 1) \vert b \in B \}$.
\item \emph{Pos}: The coproduct of ordered sets $(A, \leq)$ and $(B, \leq)$ is the disjoint union $A+B$ where $z \leq z'$ iff $z, z' \in A$ and $z \leq z'$ or $z, z' \in B$ and $z \leq z'$.
\item \emph{Gra}: Analogous to \emph{Pos}.
\item Let $(X, \leq)$ be a poset, the coproduct of $a,b \in X$ is the least upper bound of $a$ and $b$.
\item \emph{Rel}: Analogous to \emph{Set} the coproduct is the disjoint union. Since $\emph{Rel} \cong \dual{\emph{Rel}}$ we know that the product is also the disjoint union.
\end{enumerate}
\end{example}
\begin{proposition}
% TODO
$f \circ m$ mono then $m$ mono.
Products are unique up to isomorphism.
\end{proposition}
\begin{proof}
The usual proof is somewhat analogous to the proof of \autoref{prop:term_up_to}. Instead, we will prove it like this:
Consider the category $\emph{span}_{\C}(A,B)$ where objects are triples $A \overset{f}{\leftarrow} C \overset{g}{\rightarrow} B$ and morphisms $(C, f, g) \rightarrow (C', f', g')$ are morphisms $k : C \rightarrow C'$ in $\C$ such that
% https://q.uiver.app/#q=WzAsNCxbMiwwLCJDIl0sWzAsMiwiQSJdLFs0LDIsIkIiXSxbMiw0LCJDJyJdLFswLDEsImYiLDJdLFswLDIsImciXSxbMywxLCJmJyJdLFszLDIsImcnIiwyXSxbMCwzLCJrIl1d
\[
\begin{tikzcd}
&& C \\
\\
A &&&& B \\
\\
&& {C'}
\arrow["f"', from=1-3, to=3-1]
\arrow["g", from=1-3, to=3-5]
\arrow["{f'}", from=5-3, to=3-1]
\arrow["{g'}"', from=5-3, to=3-5]
\arrow["k", from=1-3, to=5-3]
\end{tikzcd}
\]
commutes. Products of $A$ and $B$ are the final objects in $\emph{span}_{\C}(A,B)$ and are thus unique up to isomorphism.
\end{proof}
By duality, we get:
\begin{proposition}
% TODO
$e \circ f$ epi then $e$ epi.
Coproducts are unique up to isomorphism.
\end{proposition}
% TODO explain up to iso
We can now characterize products (and later dually coproducts) as a commutative monoid:
\begin{proposition}
% TODO
Initial object up to iso
$1$ is a unit of $\times$, i.e.\ $A \cong A \times 1$ for any $A \in \obj{\C}$.
\end{proposition}
% TODO proof
\begin{proposition}
$\times$ is associative, i.e.\ $A \times (B \times C) \cong (A \times B) \times C$ for any $A,B,C \in \obj{\C}$.
\end{proposition}
% TODO proof
\begin{proposition}
$\times$ is commutative, i.e.\ $A \times B \cong B \times A$ for any $A, B \in \obj{\C}$.
\end{proposition}
% TODO proof
Duality instantly yields to commutative monoid structure of coproducts:
\begin{proposition}
$0$ is the unit of $+$, i.e.\ $A \cong A + 0$ for any $A \in \obj{\C}$.
\end{proposition}
\begin{proposition}
% TODO
Terminal object up to iso
$+$ is associative, i.e.\ $A + (B + C) \cong (A + B) + C$ for any $A,B,C \in \obj{\C}$.
\end{proposition}
\begin{proposition}
$+$ is commutative, i.e.\ $A + B \cong B + A$ for any $A, B \in \obj{\C}$.
\end{proposition}
\subsubsection{Products and Coproducts}
% TODO
\subsection{Duality}
\subsection{Functors}
\subsection{Natural Transformations}
\subsection{Functor Algebras}
\subsection{Functor Coalgebras}
\subsection{(co)Limits} % chktex 36
\section{Functors}
\section{Natural Transformations}
\section{Functor Algebras}
\section{Functor Coalgebras}
\section{(co)Limits} % chktex 36

View file

@ -1,4 +1,4 @@
\section{Constructions}
\subsection{CPO}
\subsection{Initial Algebra Construction}
\subsection{Terminal Coalgebra Construction}
\chapter{Constructions}
\section{CPO}
\section{Initial Algebra Construction}
\section{Terminal Coalgebra Construction}