Modified first part, constructing the category
This commit is contained in:
parent
545dbd7553
commit
b27dcbd2ca
@ -1,21 +1,12 @@
|
||||
@InProceedings{Fiore2008,
|
||||
|
||||
author={Fiore, Marcelo},
|
||||
|
||||
booktitle={2008 23rd Annual IEEE Symposium on Logic in Computer Science},
|
||||
|
||||
title={Second-Order and Dependently-Sorted Abstract Syntax},
|
||||
|
||||
year={2008},
|
||||
|
||||
volume={},
|
||||
|
||||
number={},
|
||||
|
||||
pages={57-68},
|
||||
|
||||
keywords={Algebra;Computer science;Mathematical model;Logic functions;Laboratories;MONOS devices;Sorting;abstract syntax;second-order syntax;dependently-sorted syntax;alpha-equivalence;variable binding;substitution;metavariable;meta-substitution;categorical algebra},
|
||||
|
||||
doi={10.1109/LICS.2008.38}
|
||||
}
|
||||
|
||||
@ -24,7 +15,7 @@
|
||||
editor={"Baier, Christel and Dal Lago, Ugo"},
|
||||
title={"Quotient Inductive-Inductive Types"},
|
||||
booktitle={"Foundations of Software Science and Computation Structures"},
|
||||
year={"2018"},
|
||||
year = 2018,
|
||||
publisher={"Springer International Publishing"},
|
||||
address={"Cham"},
|
||||
pages={"293--310"},
|
||||
@ -40,7 +31,7 @@
|
||||
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
|
||||
ISBN = {978-3-95977-285-3},
|
||||
ISSN = {1868-8969},
|
||||
year = {2023},
|
||||
year = 2023,
|
||||
volume = {269},
|
||||
editor = {Kesner, Delia and P\'{e}drot, Pierre-Marie},
|
||||
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
|
||||
@ -55,10 +46,33 @@
|
||||
journal = {Annals of Pure and Applied Logic},
|
||||
volume = {32},
|
||||
pages = {209-243},
|
||||
year = {1986},
|
||||
year = 1986,
|
||||
issn = {0168-0072},
|
||||
doi = {https://doi.org/10.1016/0168-0072(86)90053-9},
|
||||
url = {https://www.sciencedirect.com/science/article/pii/0168007286900539},
|
||||
author = {John Cartmell}
|
||||
}
|
||||
|
||||
@phdthesis{SestiniPhD,
|
||||
author = {Filippo Sestini},
|
||||
title = {Bootstrapping Extensionality},
|
||||
school = {University of Nottingham},
|
||||
year = 2023,
|
||||
month = mar
|
||||
}
|
||||
|
||||
@misc{AmbrusSzumiXie2sort,
|
||||
author = {Ambrus Kaposi},
|
||||
title = {Message to the Agda mailing list},
|
||||
howpublished = {\url{https://lists.chalmers.se/pipermail/agda/2019/011176.html}},
|
||||
year = 2019
|
||||
}
|
||||
|
||||
@misc{nlab:reflective_subcategory,
|
||||
author = {{nLab authors}},
|
||||
title = {reflective subcategory},
|
||||
howpublished = {\url{https://ncatlab.org/nlab/show/reflective+subcategory}},
|
||||
note = {\href{https://ncatlab.org/nlab/revision/reflective+subcategory/116}{Revision 116}},
|
||||
month = jul,
|
||||
year = 2024
|
||||
}
|
||||
@ -3,6 +3,10 @@
|
||||
|
||||
\input{./header.tex}
|
||||
|
||||
% po4a: environment remark
|
||||
% po4a: environment tikzpicture
|
||||
% po4a: environment property
|
||||
|
||||
\title{Categorical semantics of the reduction of GATs to two-sorted GATs.
|
||||
\\[1ex] \large Notes on my 4.5-month internship at the Laboratoire d'Informatique de l'École Polytechnique (Palaiseau, France)}
|
||||
\hypersetup{pdftitle={Categorical semantics of the reduction of GATs to two-sorted GATs}}
|
||||
@ -43,8 +47,8 @@
|
||||
A model of this category is a triple
|
||||
\begin{itemize}
|
||||
\item A set $X_\Con : \Set$
|
||||
\item A function $X_\Ty : X_\Con \to \Set$
|
||||
\item A function $X_\Tm : \displaystyle\coprod_{\Gamma : X_\Con} X_\Ty(\Gamma) \to \Set$
|
||||
\item A family of sets $\left(X_\Ty\left(\Gamma\right)\right)_{\Gamma \in _\Con}$
|
||||
\item A family of sets $\left(X_\Tm\left(\Delta,A\right)\right)_{\Delta\in X_\Con,\: A \in X_\Ty\left(\Delta\right)}$
|
||||
\end{itemize}
|
||||
|
||||
\paragraph{Constructor specification}
|
||||
@ -72,13 +76,15 @@
|
||||
|
||||
\paragraph{Two-sortification}
|
||||
|
||||
There is a process that allows us to transform a GAT into a GAT with only two sorts. This process is applied for example by Philippo Sestini \inlinetodo{manque une citation}, who asserts that one can build back an initial model
|
||||
There is a process that allows us to transform a GAT into a GAT with only two sorts. This process is used by Philippo Sestini in his thesis \cite{SestiniPhD} refering the work of Zongpu Szumi Xie \cite{AmbrusSzumiXie2sort}:
|
||||
|
||||
this transformation preserves the existence of the initial model.
|
||||
\begin{quote}
|
||||
Many instances of multi-sorted IITs [IITs are another type of GATs] can be reduced to equivalent two-sorted IITs, via a systematic reduction method originally observed by Zongpu (Szumi) Xie. We are not aware of a formal proof of this construction for arbitrary IITs, but we conjecture that it does apply to all instances of induction-induction and consequently that it shows two-sorted IITs are enough to represent any specifiable IIT.
|
||||
\end{quote}
|
||||
|
||||
The goal of this document is to prove semantically that this transformation creates an adjunction, and more precisely a reflective adjunction between the categories of models (and therefore preserving the existence of an initial model).
|
||||
The goal of this document is to prove semantically that this transformation makes sense. More specifically, we prove that this transformation is a left adjunct functor of a coreflection. This is enough to prove what Sestini conjectured, i.e. that the initial object in the 2-sort category creates back the initial object of the primary category \cite[5. General]{nlab:reflective_subcategory}.
|
||||
|
||||
We will now present this transformation. The sort specification of the GAT is always the same, and contains two sort declarations (as planned):
|
||||
We will now present this transformation. The sort specification of the transformed GAT is always the same, and contains two sort declarations (as planned):
|
||||
|
||||
\vspace{1em}
|
||||
\begin{tabular}{p{0.37\textwidth}|p{0.5\textwidth}}
|
||||
@ -87,7 +93,7 @@
|
||||
\end{tabular}
|
||||
\vspace{1em}
|
||||
|
||||
Category of models of this two-sort specification are intuitively the category of families of set $\FamSet$, composed of pairs $\left(X_0:\Set,X_1: X_0 \to \Set\right)$ (or $\coprod_{X : \Set}\Set$ in type theory).
|
||||
Category of models of this two-sort specification are intuitively the category of families of set $\FamSet$, composed of pairs $\left(X_0:\Set,X_1: X_0 \to \Set\right)$.
|
||||
|
||||
Then, we replace all occurrences of $\Set$ to $\mathcal{O}$, and we apply underline to every parameter. For example, the Type Theory GAT presented above becomes that which follows:
|
||||
|
||||
@ -98,64 +104,16 @@
|
||||
$\Tm : (\Gamma : \underline{\Con}) \to (A : \underline{\Ty\;\Delta}) \to \mathcal{O}$ &
|
||||
For each object $\Gamma$ corresponding to the sort object $\Con$,
|
||||
and for every object $A$ corresponding to the sort object $\Ty\;\Gamma$, another sort object called \enquote{$\Tm\;\Gamma\;A$}\\
|
||||
$\operatorname{unit} : (\Gamma : \Con) \to \Ty\;\Gamma$ &
|
||||
$\operatorname{unit} : (\Gamma : \underline{\Con}) \to \underline{\Ty\;\Gamma}$ &
|
||||
For each object $\Gamma$ corresponding to the sort object $\Con$, an object called \enquote{$\operatorname{unit} \Gamma$} corresponding to the sort object $\Ty\;\Gamma$\\
|
||||
$\operatorname{eq}: (\Gamma : \Con) \to (A : \Ty\;\Gamma) \to$ \newline
|
||||
$\qquad\Tm\;\Gamma A \to \Tm\;\Gamma A \to \Ty\;\Gamma$ &
|
||||
$\operatorname{eq}: (\Gamma : \underline{\Con}) \to (A : \underline{\Ty\;\Gamma}) \to$ \newline
|
||||
$\qquad\underline{\Tm\;\Gamma A} \to \underline{\Tm\;\Gamma A} \to \underline{\Ty\;\Gamma}$ &
|
||||
$\dots$
|
||||
\end{tabular}
|
||||
|
||||
\paragraph{Fiore's categories}
|
||||
Fiore \cite{Fiore2008} describes \emph{sort specifications} as countable simple direct categories (i.e. countable categories where all the arrows follow an unique direction and hom-sets are finite). The models of a GAT then are the presheaves over that category $S$: $\left[S,\Set\right]$.
|
||||
|
||||
One can understand the correspondance between those categories and sort specifications as follows:
|
||||
\begin{itemize}
|
||||
\item An object of the category is a sort of the specification.
|
||||
\item An arrow $x$ from an object $s$ to an object $s'$ is a parameter of the sort declaration of $s$ of the for $(x : s' \dots)$.
|
||||
\item The parameter $y$ of a parameter $x$ of a sort specification (i.e. the sort declaration parameter has the form $(x: s' \dots \left[y=z\right] \dots)$) is given by $z = x \circ y$.
|
||||
\end{itemize}
|
||||
|
||||
\begin{remark}
|
||||
We ignore in this definition identity arrows, and we will do so in the rest of this document. Identities are the only arrows that are not «directed» in the direct category.
|
||||
|
||||
Interpreting the identity arrow would mean having a parameter of type $s$ to construct the sort $s$. which loops in a self-dependency.
|
||||
|
||||
You can assume in the rest of the document that the formalizations \enquote{all arrows} or \enquote{the arrows} pointing to/from exclude identity arrows.
|
||||
\end{remark}
|
||||
|
||||
\todo{Éventuellement changer tous les paramètres par la forme complète, exemple
|
||||
\[
|
||||
\operatorname{eq}: (\Gamma : \Con) \to (A : \Ty \left[\Gamma=\Gamma\right]) \to \Tm \left[\Gamma=\Gamma\right] \left[A=A\right] \to \Tm \left[\Gamma=\Gamma\right] \left[A=A\right] \to \Ty \left[\Gamma=\Gamma\right]
|
||||
\]
|
||||
C'est bien plus verbeux et en pratique pas utilisé, mais permet de mieux voir la «composition» dans la catégorie de Fiore.}
|
||||
\todo{Est-ce qu'on fait une notation \enquote{arrow*} pour dire «flèche qui n'est pas l'identité» pour plus de rigueur ?}
|
||||
|
||||
For example the category version of the specification of sorts of Type Theory given above is defined as:
|
||||
|
||||
\begin{itemize}
|
||||
\item There is three objects called $\Con$,$\Ty$, and $\Tm$.
|
||||
\item The arrows are defined as
|
||||
\begin{itemize}
|
||||
\item There is no arrow going out of $\Con$
|
||||
\item There is one arrow going out of $\Ty$: $\Gamma$ pointing to $\Con$.
|
||||
\item There is two arrows going out of $\Tm$: $\Delta$ pointing to $\Con$ and $\Gamma$ pointing to $\Ty$.
|
||||
\end{itemize}
|
||||
\item The $\Gamma$ parameter of $\Ty$ in the parameter $A$ of $\Tm$ is $\Delta$. Therefore, we have $\Delta = A \circ \Gamma$.
|
||||
\end{itemize}
|
||||
|
||||
The category is pictured below:
|
||||
|
||||
\begin{center}
|
||||
% YADE DIAGRAM B1.json
|
||||
% GENERATED LATEX
|
||||
\input{graphs/B1.tex}
|
||||
% END OF GENERATED LATEX
|
||||
\end{center}
|
||||
|
||||
\paragraph{Fiore's category of the 2-sorts specification}
|
||||
|
||||
If compute the small category associated to the two-sort specification described above, we obtain the simple category with two objects and one arrow between them. We call this category $\TT$ and write the objects as follows:
|
||||
\paragraph{$\FamSet$ as functors}
|
||||
|
||||
In the rest of the document, we will denote the simple category containing two elements and one non-identity arrow between them as $\TT$. The objects and arrow of this category are pictured below.
|
||||
|
||||
\begin{center}
|
||||
% YADE DIAGRAM G0.json
|
||||
@ -164,11 +122,21 @@
|
||||
% END OF GENERATED LATEX
|
||||
\end{center}
|
||||
|
||||
The category of presheaves over this category is equivalent to the category $\FamSet$.
|
||||
The functors over this categories are equivalent to families of sets, using the following mapping :
|
||||
|
||||
\[
|
||||
\begin{array}{l|l}
|
||||
X_\UU = X_0 & X_0 = X_\UU \\
|
||||
X_\El = \displaystyle\coprod_{A\in X_0}X_1(A) & X_1 = A \mapsto X_p^{-1}(\{A\})\\
|
||||
X_p = (A,B) \mapsto A &
|
||||
\end{array}
|
||||
\]
|
||||
|
||||
Therefore the categories of sorts of the transformed GATs will be built atop of the category $\TSet$ rather than atop of the category $\FamSet$ as it makes the formal proofs more elegant.
|
||||
|
||||
\paragraph{Goal}
|
||||
|
||||
The goal of this document is to make a relation between the category of models of the GAT $\left[S,\Set\right]$ and the category of models of the two-sortified GAT $\BB$. This relation will be an adjunction $F \vdash G$ that we will prove to be a coreflection.
|
||||
The goal of this document is to make a relation between the category of models of the GAT $\CC$ and the category of models of the two-sortified GAT $\BB$. This relation will be an adjunction $F \vdash G$ that we will prove to be a coreflection.
|
||||
|
||||
The category $\BB$ is built with an adjunction $R \vdash L$ to the category of models of the simple two-sort specification of sorts $\TSet$.
|
||||
|
||||
@ -181,16 +149,10 @@
|
||||
|
||||
\subsection{Constructing the categories}
|
||||
|
||||
We will construct both categories $S$ and $\BB$ recursively, adding new sorts one by one.
|
||||
The categories $S_i$ are described as in Fiore's paper \cite{Fiore2008}, and the categories $\BB_i$ are constructed atop of the category $\TSet$ with a method inspired by the category of models described by Altenkirch et al. \cite{Altenkirch2018}.
|
||||
We will construct both categories $\CC$ and $\BB$ recursively, adding new sorts one by one.
|
||||
The categories $\CC_i$ are described as in Fiore's paper \cite{Fiore2008}, and the categories $\BB_i$ are constructed atop of the category $\TSet$ with a method inspired by the category of models described by Altenkirch et al. \cite{Altenkirch2018}.
|
||||
|
||||
The first step of our recursion is the trivial adjunction $\lambda . \star \vdash \lambda . 1$ between the categories $\TSet = \BB_0$ and $\left[S_0,\Set\right] = \left[\emptyset,\Set\right] = 1$.
|
||||
|
||||
Then we construct the category $S_i$ as a full supercategory of $S_{i-1}$ (and so we have a ff injection functor $I_i : S_{i-1} \to S_i$).
|
||||
|
||||
We construct at the same time the category $\BB_i$ along with an adjunction $R_{i-1}^i \vdash L_{i-1}^i$ with $\BB_{i-1}$.
|
||||
|
||||
The construction is summarized in the following diagram:
|
||||
The overall construction of the categories and of the adjunctions $F_i \vdash G_i$ is given below.
|
||||
|
||||
\begin{center}
|
||||
% YADE DIAGRAM G1.json
|
||||
@ -199,38 +161,50 @@
|
||||
% END OF GENERATED LATEX
|
||||
\end{center}
|
||||
|
||||
The first step of our recursion is the trivial adjunction $\lambda . \star \vdash \lambda . 1$ between the categories $\BB_0 = \TSet$ and $\CC_0 = 1$.
|
||||
|
||||
\subsubsection{Fiore's category}
|
||||
\subsubsection{Constructing $\CC_i$}
|
||||
|
||||
In order to construct the $i$-th sort, we use a finite functor $\Gamma_i : S_{i-1} \to \Set$ describing entirely the sort declaration.
|
||||
This functor is to be understood as $\Gamma_i(a)$ is the set of parameters of type $a$ for our new sort. In the above example, we would have $\Gamma_\Ty(\Con) = \{"\Gamma"\} = 1$ and $\Gamma_\Tm(\Con) = \{\Delta\}$,$\Gamma_\Tm(\Ty) = \{"A"\}$,$\Gamma_\Tm(\Gamma) = \left["A" \mapsto "\Delta"\right]$.
|
||||
We construct the category $\CC_i$ as the following pair:
|
||||
\[
|
||||
\CC_i = (X : \CC_{i-1}) \times \Set^{\Hom(O_i,X)} \qquad\text{(this is a dependent coproduct)}
|
||||
\]
|
||||
where $O_i$ is a specific object of the category $\CC_{i-1}$, such that $\Hom(O_i,X)$ is the set of parameters for the construction of the new sort.
|
||||
|
||||
Then, to construct $S_i$, we add one object $i$ to $S_{i-1}$, along with morphisms $x : i \to a$ for every $x \in \Gamma_i(a)$ for every $a$ in $S_{i-1}$. We also add equalities
|
||||
$s \circ x = x'$ for every $s : b \to a$ and $x \in \Gamma_i(a)$ and $x' \in \Gamma_i(b)$ where $\Gamma_i(s)(x') = x$.
|
||||
For example, for our type theory example, we first have
|
||||
\[
|
||||
O_1 = \star \in \operatorname{Obj}(\CC_0) = \operatorname{Obj}(1)
|
||||
\]
|
||||
so $\Hom(O_1,X) = 1$, which corresponds to the fact that $\Con$ takes no parameter.
|
||||
|
||||
Therefore $\CC_1 = 1 \times \Set^1 = \Set$
|
||||
|
||||
Then, we take the singleton object $O_2 = 1$ (this means, that types need \emph{one} context to be built), and so, for a set $X_\Con$, $\Hom(O_2,X_\Con) \cong X_\Con$, which corresponds to the fact that $\Ty$ take one $\Con$ as a parameter.
|
||||
|
||||
Therefore $\CC_2 = (X:\Set) \times \Set^X \cong \FamSet$.
|
||||
|
||||
Finally, we take the object $O_3 = (1, \lambda \star . 1)$ (this means that terms need \emph{one} context, and \emph{one} type of that context). With this object, for a pair $(X_\Con,X_\Ty)$ in $\CC_2$, we have $\Hom(O_3,(X_\Con,X_\Ty)) \cong \left(\Gamma: X_\Con, A: X_\Ty(\Gamma)\right)$.
|
||||
|
||||
The final category $\CC_3$ is composed of triples $(X_\Con: \Set, X_\Ty : X_\Con \to \Set, X_\Tm : (\Delta: X_\Con) \to X_\Ty(\Delta) \to \Set)$
|
||||
|
||||
\begin{remark}
|
||||
We have that $\Hom_{S_i}(a,b) = \Gamma_b(a)$ or $(a/S_i)* \equiv \Gamma_a$.\inlinetodo{C'est sûr la deuxième partie ?}
|
||||
|
||||
This equality allows us to construct the $\Gamma_i$ functors from the final $S$ category.
|
||||
There is a way of getting the object $O_i$ from the syntax, which is given in \autoref{sec:CtoSSetFiore}.
|
||||
\end{remark}
|
||||
|
||||
\subsubsection{2sort category}
|
||||
\subsubsection{Constructing $\BB_i$}
|
||||
|
||||
To start our series of categories, we use the category of models of the two-sort specification of sorts $\BB_0 := \TSet$.
|
||||
|
||||
Then, we recursively add constructors, constructing categories $\BB_1$,$\BB_2$, etc.
|
||||
|
||||
For the $i$-th constructor, we define the objects of $\BB_i$ as pairs of
|
||||
\paragraph{The category} We construct the category $\BB_i$ as follows.
|
||||
|
||||
An object of $\BB_i$ is
|
||||
\begin{itemize}
|
||||
\item an object $X$ of $\BB_{i-1}$
|
||||
\item a \enquote{sort constructor} $\Cstr_i$ as a function $\Hom_{\BB_{i-1}} (G_{i-1}\Gamma_i,X) \to (R_0^{i-1}X)_\UU$
|
||||
\item a \enquote{sort constructor} $\Cstr_i$ as a function $\Hom_{\BB_{i-1}} (G_{i-1}O_i,X) \to (R_0^{i-1}X)_\UU$
|
||||
\newline
|
||||
where $\Gamma_i$ is the functor $S_{i-1} \to \Set$ that describe the sort constructor being processed, and $G_{i-1}$ is the left part of the adjunction $\left[S_{i-1}, \Set\right] \to \BB_{i-1}$ that we are defining recursively at the same time.
|
||||
where $O_i$ is the object of $\CC_{i-1}$ that describe the sort constructor being processed, and $G_{i-1}$ is the left part of the adjunction $\CC_{i-1} \to \BB_{i-1}$ that we are defining recursively at the same time.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
Morphisms $(X,\Cstr_i) \to (X',\Cstr'_i)$ in $\BB_i$ are morphisms $f : X \to X'$ in $\BB_{i-1}$ such that the following diagram commutes.
|
||||
A morphism $(X,\Cstr_i) \to (X',\Cstr'_i)$ of $\BB_i$ is a morphism $f : X \to X'$ in $\BB_{i-1}$ such that the following diagram commutes.
|
||||
|
||||
\begin{center}
|
||||
% YADE DIAGRAM D1.json
|
||||
@ -240,41 +214,28 @@
|
||||
\end{center}
|
||||
|
||||
Identities and compositions are that of the category $\BB_{i-1}$, and categorical equalities are trivially derived from the diagram above.
|
||||
seeing
|
||||
|
||||
\paragraph{The adjunction}
|
||||
We also define a functor $R_{i-1}^i : \BB_i \to \BB_{i-1}$ that sends objects and morphisms to their first component. This functor is a \emph{right adjunct} of another functor we call $L_{i-1}^i$.
|
||||
|
||||
As we can compose the adjunctions $R_0^1$,$R_1^2$,...,$R_{i-1}^i$, we will create the two following syntactic sugars for the composed adjunctions.
|
||||
\[
|
||||
R_i^j = R_{i}^{i+1} \circ R_{i+1}^j = R_{i}^{j-1} \circ R_{j-1}^{j} = R_{i}^{i+1} \circ ... \circ R_{j-1}^{j}
|
||||
\]
|
||||
\[
|
||||
\[\begin{array}{c}
|
||||
R_i^j = R_{i}^{i+1} \circ R_{i+1}^j = R_{i}^{j-1} \circ R_{j-1}^{j} = R_{i}^{i+1} \circ ... \circ R_{j-1}^{j}\\
|
||||
L_i^j = L_{j-1}^{j} \circ L_{i}^{j-1} = L_{i+1}^{j} \circ L_{i}^{i+1} = L_{j-1}^{j} \circ ... \circ L_{i}^{i+1}
|
||||
\]
|
||||
\end{array}\]
|
||||
|
||||
We will also denote $\eta_i^j : \mathbf{1} \to R_i^j L_i^j$ and $\varepsilon_i^j : L_i^j R_i^j \to \mathbf{1}$ to be the unit and counit of the adjunction $R_i^j \vdash L_i^j$.
|
||||
|
||||
|
||||
|
||||
We know that this category has a coproduct, that we will denote $\oplus_i$ or just $\oplus$ when there is no ambiguity. We will also denote as $\inj_1^i : X \to X \oplus Y$ (resp. $\inj_2^i : Y \to X \oplus Y$) the first (resp. second) injector of the coproduct of $\BB_i$. For every morphisms $f : X \to Z$ and $g : Y \to Z$, we will denote with $\{f;g\}$ the unique morphism from $X \oplus Y$ to $Z$ such that $\{f;g\} \circ \inj^i_1 = f$ and $\{f;g\} \circ \inj^i_2 = g$.
|
||||
\paragraph{The coproduct}
|
||||
For an object $X$ in $\BB_i$ and $Y$ in $\BB_0$, there is a coproduct $X \oplus_i L_0^i Y$ in the category $\BB_{i-1}$. We will denote as $\inj_1^i : X \to X \oplus L_0^iY$ (resp. $\inj_2^i : L_0^iY \to X \oplus L_0^iY$) the first (resp. second) injector of the coproduct of $\BB_i$. For every morphism $f : X \to Z$ and $g : L_0^iY \to Z$, we will denote with $\{f;g\}$ the unique morphism from $X \oplus L_0^iY$ to $Z$ such that $\{f;g\} \circ \inj^i_1 = f$ and $\{f;g\} \circ \inj^i_2 = g$.
|
||||
|
||||
\begin{remark}
|
||||
This adjunction and the existence of a coproduct comes from seeing $\BB_i$ being a category of algebras in $\BB_{i-1}$ over the morphism $inj_1 : G_{i-1}\Gamma_i \to G_{i-1}\Gamma_i \oplus L_0^{i-1} y\UU$.
|
||||
This adjunction and the existence of a coproduct comes from seeing $\BB_i$ being a category of algebras in $\BB_{i-1}$ over the morphism $inj_1 : G_{i-1}O_i \to G_{i-1}O_i \oplus L_0^{i-1} y\UU$.
|
||||
\end{remark}
|
||||
|
||||
\subsubsection{Summary}
|
||||
|
||||
Here is a graph summarizing the categories and functors.
|
||||
We have constructed two chains of categories $\BB_0$,$\BB_1$,... and $S_0$,$S_1$,...
|
||||
|
||||
The categories $\BB_{i-1}$ and $\BB_{i}$ are in an adjunction written $R_{i-1}^i \vdash L_{i-1}^i$.
|
||||
|
||||
We will give in the next part the construction of the adjunction $F_i \vdash G_i$ at the step $i$. The functor $G_{i-1}$ is used in the definition of $\BB_i$, so the two recurrences have to be done at the same time.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Constructing the adjunction}
|
||||
We will now construct the adjunction $F_i \vdash G_i$ at the step $i$.
|
||||
|
||||
\subsubsection{Hypotheses}
|
||||
|
||||
@ -508,6 +469,57 @@ seeing
|
||||
|
||||
\subsection{Proof of H3}
|
||||
|
||||
|
||||
\section{Misc}
|
||||
|
||||
\subsection{Fiore's Category - Fibration of the category of sorts}
|
||||
|
||||
Fiore \cite{Fiore2008} describes \emph{sort specifications} as countable simple direct categories (i.e. countable categories where all the arrows follow an unique direction and hom-sets are finite). The models of a GAT then are the presheaves over that category $S$: $\left[S,\Set\right]$.
|
||||
|
||||
One can understand the correspondance between those categories and sort specifications as follows:
|
||||
\begin{itemize}
|
||||
\item An object of the category is a sort of the specification.
|
||||
\item An arrow $x$ from an object $s$ to an object $s'$ is a parameter of the sort declaration of $s$ of the for $(x : s' \dots)$.
|
||||
\item The parameter $y$ of a parameter $x$ of a sort specification (i.e. the sort declaration parameter has the form $(x: s' \dots \left[y=z\right] \dots)$) is given by $z = x \circ y$.
|
||||
\end{itemize}
|
||||
|
||||
\begin{remark}
|
||||
We ignore in this definition identity arrows, and we will do so in the rest of this document. Identities are the only arrows that are not «directed» in the direct category.
|
||||
|
||||
Interpreting the identity arrow would mean having a parameter of type $s$ to construct the sort $s$. which loops in a self-dependency.
|
||||
|
||||
You can assume in the rest of the document that the formalizations \enquote{all arrows} or \enquote{the arrows} pointing to/from exclude identity arrows.
|
||||
\end{remark}
|
||||
|
||||
\todo{Éventuellement changer tous les paramètres par la forme complète, exemple
|
||||
\[
|
||||
\operatorname{eq}: (\Gamma : \Con) \to (A : \Ty \left[\Gamma=\Gamma\right]) \to \Tm \left[\Gamma=\Gamma\right] \left[A=A\right] \to \Tm \left[\Gamma=\Gamma\right] \left[A=A\right] \to \Ty \left[\Gamma=\Gamma\right]
|
||||
\]
|
||||
C'est bien plus verbeux et en pratique pas utilisé, mais permet de mieux voir la «composition» dans la catégorie de Fiore.}
|
||||
\todo{Est-ce qu'on fait une notation \enquote{arrow*} pour dire «flèche qui n'est pas l'identité» pour plus de rigueur ?}
|
||||
|
||||
For example the category version of the specification of sorts of Type Theory given above is defined as:
|
||||
|
||||
\begin{itemize}
|
||||
\item There is three objects called $\Con$,$\Ty$, and $\Tm$.
|
||||
\item The arrows are defined as
|
||||
\begin{itemize}
|
||||
\item There is no arrow going out of $\Con$
|
||||
\item There is one arrow going out of $\Ty$: $\Gamma$ pointing to $\Con$.
|
||||
\item There is two arrows going out of $\Tm$: $\Delta$ pointing to $\Con$ and $\Gamma$ pointing to $\Ty$.
|
||||
\end{itemize}
|
||||
\item The $\Gamma$ parameter of $\Ty$ in the parameter $A$ of $\Tm$ is $\Delta$. Therefore, we have $\Delta = A \circ \Gamma$.
|
||||
\end{itemize}
|
||||
|
||||
The category is pictured below:
|
||||
|
||||
\begin{center}
|
||||
% YADE DIAGRAM B1.json
|
||||
% GENERATED LATEX
|
||||
\input{graphs/B1.tex}
|
||||
% END OF GENERATED LATEX
|
||||
\end{center}
|
||||
|
||||
\subsection{Infinite construction of $\BB_i$}
|
||||
\[
|
||||
\BB_i := \left(X : \TSet, \Cstr : (a : S_{i-1}) \to \Hom_{\BB_{a-1}}(G_{a-1}\Gamma_a,R_{a-1}^i(\this)) \to X(\UU)\right)
|
||||
@ -569,6 +581,8 @@ seeing
|
||||
|
||||
\subsection{Overview}
|
||||
|
||||
\subsubsection{$\CC$ as presheaf category}
|
||||
\label{sec:CtoSSetFiore}
|
||||
We use the specification of sorts definition of Fiore \cite{Fiore2008}.
|
||||
|
||||
A specification of sorts is given by a sequence of functors $\Gamma_i : S_{i-1} \to \Set$. We construct the category $S_{i+1}$ by adding a single object $\alpha_{i+1}$ to the category $S_{i}$, along with morphisms $f : \alpha_j \to \alpha_{i+1}$ for $f \in \Gamma_{i+1}(\alpha_j)$ and $j \leq i$. The morphisms follow the composition condition, describing that every pair of morphisms $f : \alpha_j \to \alpha_{i+1}$ and $g : \alpha_k \to \alpha_{i+1}$ (i.e. $f\in\Gamma_{i+1}(\alpha_k)$ and $g\in\Gamma_{i+1}(\alpha_j)$) and for every morphism of $S_{i}$ $h : \alpha_j \to \alpha_k$, we have $\Gamma_{i+1}(h)(f) \circ f = g$.
|
||||
@ -583,6 +597,20 @@ seeing
|
||||
|
||||
So we can construct the base category, which is that of families of sets.
|
||||
|
||||
|
||||
In order to construct the $i$-th sort, we use a finite functor $\Gamma_i : S_{i-1} \to \Set$ describing entirely the sort declaration.
|
||||
|
||||
This functor is to be understood as $\Gamma_i(a)$ is the set of parameters of type $a$ for our new sort. In the above example, we would have $\Gamma_\Ty(\Con) = \{"\Gamma"\} = 1$ and $\Gamma_\Tm(\Con) = \{\Delta\}$,$\Gamma_\Tm(\Ty) = \{"A"\}$,$\Gamma_\Tm(\Gamma) = \left["A" \mapsto "\Delta"\right]$.
|
||||
|
||||
Then, to construct $S_i$, we add one object $i$ to $S_{i-1}$, along with morphisms $x : i \to a$ for every $x \in \Gamma_i(a)$ for every $a$ in $S_{i-1}$. We also add equalities
|
||||
$s \circ x = x'$ for every $s : b \to a$ and $x \in \Gamma_i(a)$ and $x' \in \Gamma_i(b)$ where $\Gamma_i(s)(x') = x$.
|
||||
|
||||
\begin{remark}
|
||||
We have that $\Hom_{S_i}(a,b) = \Gamma_b(a)$ or $(a/S_i)* \equiv \Gamma_a$.\inlinetodo{C'est sûr la deuxième partie ?}
|
||||
|
||||
This equality allows us to construct the $\Gamma_i$ functors from the final $S$ category.
|
||||
\end{remark}
|
||||
|
||||
\section{Summary}
|
||||
|
||||
\lipsum[2-3]
|
||||
@ -704,3 +732,7 @@ seeing
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
{"graph":{"latexPreamble":"\\newcommand{\\coqproof}[1]{\\checkmark}\n\\newcommand\\ensuremath[1]{#1}\n\\newcommand\\BB{{\\ensuremath{\\mathcal{B}}}}\n\\newcommand\\TT{{\\ensuremath{\\mathcal{T}}}}\n\\newcommand\\UU{{\\ensuremath{\\mathcal{U}}}}\n\\newcommand\\El{{\\ensuremath{\\operatorname{\\mathcal{E}l}}}}\n\\newcommand\\ii{{\\ensuremath{\\mathbf{i}}}}\n\\newcommand\\Cstr{{\\ensuremath{\\operatorname{\\mathcal{C}str}}}}\n\\newcommand\\Set{{\\ensuremath{\\operatorname{\\mathcal{S}et}}}}\n\\newcommand\\Hom{{\\ensuremath{\\operatorname{\\mathcal{H}om}}}}\n\\newcommand\\this{{\\ensuremath{\\operatorname{\\texttt{this}}}}}\n\\newcommand\\Hbar{{\\ensuremath{\\overline{H}}}}\n\\newcommand\\dash{{\\;\\textrm{---}\\;}}","tabs":[{"active":true,"edges":[{"from":0,"id":4,"label":{"isPullshout":false,"label":"\\Cstr^X","style":{"alignment":"left","bend":0,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":1},{"from":1,"id":5,"label":{"isPullshout":false,"label":"R_0^i X_\\UU","style":{"alignment":"left","bend":0,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":2},{"from":0,"id":6,"label":{"isPullshout":false,"label":"f \\circ \\dash","style":{"alignment":"right","bend":0,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":3},{"from":3,"id":7,"label":{"isPullshout":false,"label":"\\Cstr^{X'}","style":{"alignment":"right","bend":0,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":2}],"nodes":[{"id":0,"label":{"isMath":true,"label":"\\Hom(G_{a-1},R_{a-1}^i(X))","pos":[180,60],"zindex":0}},{"id":1,"label":{"isMath":true,"label":"(R_0^iX)_\\UU","pos":[450,60],"zindex":0}},{"id":2,"label":{"isMath":true,"label":"(R_0^i X')_\\UU","pos":[450,143],"zindex":0}},{"id":3,"label":{"isMath":true,"label":"\\Hom(G_{a-1},R_{a-1}^i( X'))","pos":[180,143],"zindex":-10000}}],"sizeGrid":120,"title":"1"}]},"version":11}
|
||||
{"graph":{"latexPreamble":"\\newcommand{\\coqproof}[1]{\\checkmark}\n\\newcommand\\ensuremath[1]{#1}\n\\newcommand\\BB{{\\ensuremath{\\mathcal{B}}}}\n\\newcommand\\TT{{\\ensuremath{\\mathcal{T}}}}\n\\newcommand\\UU{{\\ensuremath{\\mathcal{U}}}}\n\\newcommand\\El{{\\ensuremath{\\operatorname{\\mathcal{E}l}}}}\n\\newcommand\\ii{{\\ensuremath{\\mathbf{i}}}}\n\\newcommand\\Cstr{{\\ensuremath{\\operatorname{\\mathcal{C}str}}}}\n\\newcommand\\Set{{\\ensuremath{\\operatorname{\\mathcal{S}et}}}}\n\\newcommand\\Hom{{\\ensuremath{\\operatorname{\\mathcal{H}om}}}}\n\\newcommand\\this{{\\ensuremath{\\operatorname{\\texttt{this}}}}}\n\\newcommand\\Hbar{{\\ensuremath{\\overline{H}}}}\n\\newcommand\\dash{{\\;\\textrm{---}\\;}}","tabs":[{"active":true,"edges":[{"from":0,"id":4,"label":{"kind":"normal","label":"\\Cstr^X","style":{"alignment":"left","bend":0,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":1},{"from":1,"id":5,"label":{"kind":"normal","label":"R_0^{i-1} X_\\UU","style":{"alignment":"left","bend":0,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":2},{"from":0,"id":6,"label":{"kind":"normal","label":"f \\circ \\dash","style":{"alignment":"right","bend":0,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":3},{"from":3,"id":7,"label":{"kind":"normal","label":"\\Cstr^{X'}","style":{"alignment":"right","bend":0,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":2}],"nodes":[{"id":0,"label":{"isMath":true,"label":"\\Hom_{\\BB_{i-1}}(G_{i-1}O_i,X)","pos":[180,60],"zindex":0}},{"id":1,"label":{"isMath":true,"label":"(R_0^{i-1} X)_\\UU","pos":[450,60],"zindex":0}},{"id":2,"label":{"isMath":true,"label":"(R_0^{i-1} X')_\\UU","pos":[450,143],"zindex":0}},{"id":3,"label":{"isMath":true,"label":"\\Hom_{\\BB_{i-1}}(G_{i-1}O_i,X')","pos":[180,143],"zindex":-10000}}],"sizeGrid":120,"title":"1"}]},"version":12}
|
||||
@ -1 +1 @@
|
||||
{"graph":{"latexPreamble":"\\newcommand\\ensuremath[1]{#1}\n\\newcommand\\BB{{\\ensuremath{\\mathcal{B}}}}\n\\newcommand\\TT{{\\ensuremath{\\mathcal{T}}}}\n\\newcommand\\UU{{\\ensuremath{\\mathcal{U}}}}\n\\newcommand\\El{{\\ensuremath{\\operatorname{\\mathcal{E}l}}}}\n\\newcommand\\ii{{\\ensuremath{\\mathbf{i}}}}\n\\newcommand\\Cstr{{\\ensuremath{\\operatorname{\\mathcal{C}str}}}}\n\\newcommand\\Set{{\\ensuremath{\\operatorname{\\mathcal{S}et}}}}\n\\newcommand\\Hom{{\\ensuremath{\\operatorname{\\mathcal{H}om}}}}\n\\newcommand\\this{{\\ensuremath{\\operatorname{\\texttt{this}}}}}\n\\newcommand\\Hbar{{\\ensuremath{\\overline{H}}}}\n\\newcommand\\dash{{\\;\\textrm{---}\\;}}\n\n\\newcommand\\inj{\\operatorname{inj}}\n\\newcommand\\id{\\operatorname{id}}","tabs":[{"active":true,"edges":[{"from":0,"id":5,"label":{"isPullshout":false,"label":"F","style":{"alignment":"right","bend":0.20000000000000004,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":1},{"from":1,"id":6,"label":{"isPullshout":false,"label":"G","style":{"alignment":"right","bend":0.20000000000000004,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":0},{"from":2,"id":7,"label":{"isPullshout":false,"label":"L","style":{"alignment":"right","bend":0.2,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":0},{"from":0,"id":8,"label":{"isPullshout":false,"label":"R","style":{"alignment":"right","bend":0.2,"color":"black","dashed":false,"double":false,"head":"default","position":0.5,"tail":"none"},"zindex":0},"to":2}],"nodes":[{"id":0,"label":{"isMath":true,"label":"\\BB","pos":[300,100],"zindex":0}},{"id":1,"label":{"isMath":true,"label":"\\left[S,\\Set\\right]","pos":[500,100],"zindex":0}},{"id":2,"label":{"isMath":true,"label":"\\TSet","pos":[300,300],"zindex":0}},{"id":3,"label":{"isMath":true,"label":"\\vdash","pos":[301,203.8125],"zindex":0}},{"id":4,"label":{"isMath":true,"label":"\\bot","pos":[395,100.8125],"zindex":0}}],"sizeGrid":200,"title":"1"}]},"version":11}
|
||||
{"graph":{"latexPreamble":"\\newcommand\\ensuremath[1]{#1}\n\\newcommand\\BB{{\\ensuremath{\\mathcal{B}}}}\n\\newcommand\\TT{{\\ensuremath{\\mathcal{T}}}}\n\\newcommand\\UU{{\\ensuremath{\\mathcal{U}}}}\n\\newcommand\\El{{\\ensuremath{\\operatorname{\\mathcal{E}l}}}}\n\\newcommand\\ii{{\\ensuremath{\\mathbf{i}}}}\n\\newcommand\\Cstr{{\\ensuremath{\\operatorname{\\mathcal{C}str}}}}\n\\newcommand\\Set{{\\ensuremath{\\operatorname{\\mathcal{S}et}}}}\n\\newcommand\\Hom{{\\ensuremath{\\operatorname{\\mathcal{H}om}}}}\n\\newcommand\\this{{\\ensuremath{\\operatorname{\\texttt{this}}}}}\n\\newcommand\\Hbar{{\\ensuremath{\\overline{H}}}}\n\\newcommand\\dash{{\\;\\textrm{---}\\;}}\n\n\\newcommand\\inj{\\operatorname{inj}}\n\\newcommand\\id{\\operatorname{id}}","tabs":[{"active":true,"edges":[{"from":0,"id":3,"label":{"kind":"normal","label":"F","style":{"alignment":"right","bend":0.20000000000000004,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":1},{"from":1,"id":4,"label":{"kind":"normal","label":"G","style":{"alignment":"right","bend":0.20000000000000004,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":0},{"from":2,"id":5,"label":{"kind":"normal","label":"L","style":{"alignment":"right","bend":0.2,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":0},{"from":0,"id":6,"label":{"kind":"normal","label":"R","style":{"alignment":"right","bend":0.2,"color":"black","dashed":false,"head":"default","kind":"normal","position":0.5,"tail":"none"},"zindex":0},"to":2},{"from":3,"id":7,"label":{"kind":"adjunction","label":"\\vdash","style":{"alignment":"over","bend":0,"color":"black","dashed":false,"head":"none","kind":"none","position":0.5,"tail":"none"},"zindex":0},"to":4},{"from":6,"id":8,"label":{"kind":"adjunction","label":"\\vdash","style":{"alignment":"over","bend":0,"color":"black","dashed":false,"head":"none","kind":"none","position":0.5,"tail":"none"},"zindex":0},"to":5}],"nodes":[{"id":0,"label":{"isMath":true,"label":"\\BB","pos":[300,100],"zindex":0}},{"id":1,"label":{"isMath":true,"label":"\\CC","pos":[500,100],"zindex":0}},{"id":2,"label":{"isMath":true,"label":"\\TSet","pos":[300,300],"zindex":0}}],"sizeGrid":200,"title":"1"}]},"version":12}
|
||||
@ -102,6 +102,7 @@
|
||||
\newcommand\BB{{\ensuremath{\mathcal{B}}}}
|
||||
\newcommand\TT{{\ensuremath{\mathcal{T}}}}
|
||||
\newcommand\UU{{\ensuremath{\mathcal{U}}}}
|
||||
\newcommand\CC{{\ensuremath{\mathcal{C}}}}
|
||||
\newcommand\El{{\ensuremath{\operatorname{\mathcal{E}l}}}}
|
||||
\newcommand\ii{{\ensuremath{\mathbf{i}}}}
|
||||
\newcommand\Con{{\ensuremath{\operatorname{Con}}}}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
\newcommand\BB{{\ensuremath{\mathcal{B}}}}
|
||||
\newcommand\TT{{\ensuremath{\mathcal{T}}}}
|
||||
\newcommand\UU{{\ensuremath{\mathcal{U}}}}
|
||||
\newcommand\CC{{\ensuremath{\mathcal{C}}}}
|
||||
\newcommand\El{{\ensuremath{\operatorname{\mathcal{E}l}}}}
|
||||
\newcommand\ii{{\ensuremath{\mathbf{i}}}}
|
||||
\newcommand\Cstr{{\ensuremath{\operatorname{\mathcal{C}str}}}}
|
||||
|
||||
@ -47,8 +47,8 @@
|
||||
let \p1 = ($(\tikztostart) - (\tikztotarget)$) in
|
||||
(\tikztostart)
|
||||
.. controls
|
||||
($(\tikztostart)!\pv{pos}!(\tikztotarget)!{veclen(\x1,\y1)*\pv{ratio}*1pt}!270:(\tikztotarget)$)
|
||||
and ($(\tikztostart)!1-\pv{pos}!(\tikztotarget)!{veclen(\x1,\y1)*\pv{ratio}*1pt}!270:(\tikztotarget)$)
|
||||
($(\tikztostart)!\pv{pos}!(\tikztotarget)!{veclen(\x1,\y1)*\pv{ratio}*0.65pt}!270:(\tikztotarget)$)
|
||||
and ($(\tikztostart)!1-\pv{pos}!(\tikztotarget)!{veclen(\x1,\y1)*\pv{ratio}*0.65pt}!270:(\tikztotarget)$)
|
||||
.. (\tikztotarget)\tikztonodes}},
|
||||
settings/.code={\tikzset{yade/.cd,#1}
|
||||
\def\pv##1{\pgfkeysvalueof{/tikz/yade/##1}}},
|
||||
@ -379,6 +379,15 @@ markings,
|
||||
mark=at position #2 with {\node[inner sep=0.1pt,fill=white] {$\scriptstyle #1$} ;}
|
||||
}}}}
|
||||
|
||||
\tikzset{
|
||||
labelonatsloped/.style 2 args={postaction={
|
||||
decorate,
|
||||
decoration={
|
||||
markings,
|
||||
mark=at position #2 with {\node[inner sep=0.1pt,fill=white,transform shape] {#1} ;}
|
||||
}}}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user