Modified first part, constructing the category

This commit is contained in:
Samy Avrillon 2024-07-17 20:30:33 +02:00
parent 545dbd7553
commit b27dcbd2ca
Signed by: Mysaa
GPG Key ID: 0220AC4A3D6A328B
7 changed files with 649 additions and 592 deletions

View File

@ -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
}

View File

@ -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}

View File

@ -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}

View File

@ -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}

View File

@ -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}}}}

View File

@ -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}}}}

View File

@ -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} ;}
}}}}