http://llwiki.ens-lyon.fr/mediawiki/api.php?action=feedcontributions&user=Lionel+Vaux&feedformat=atomLLWiki - User contributions [en]2024-03-29T09:23:33ZUser contributionsMediaWiki 1.19.20+dfsg-0+deb7u3http://llwiki.ens-lyon.fr/mediawiki/index.php/A_formal_account_of_netsA formal account of nets2013-06-25T14:43:20Z<p>Lionel Vaux: /* The short story */</p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring out most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== Preliminaries ==<br />
<br />
=== The short story ===<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* the top/down or passive/active orientation of cells is related with the distinction between premisses and conclusions of rules, (and in that sense, a cut is not a logical rule, but the focus of interaction between two rules);<br />
* cuts are thus wires rather than cells/links: this fits with the intuition of GoI, but not with the most common presentations of proof nets;<br />
* because the notion of subnet is not trivial in multiport interaction nets, and to avoid the use of geometric conditions (boxes must not overlap but can be nested), we introduce boxes as particular cells;<br />
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.<br />
<br />
== Nets ==<br />
<br />
=== Wires ===<br />
<br />
A ''wiring'' is the data of a finite set <math>P</math> of ports<br />
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):<br />
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.<br />
Hence a wiring is equivalently given by<br />
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,<br />
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then<br />
the orbits.<br />
Another equivalent presentation is to consider <math>{W}</math> as<br />
a (simple, loopless, undirected) graph, with vertices in P,<br />
all of degree 1.<br />
<br />
We say two wirings are disjoint when their sets of ports are.<br />
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is<br />
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,<br />
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\cong I'</math>.<br />
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained<br />
by identifying the ports pairwise mapped by <math>f</math>, and then<br />
``straightening`` the paths thus obtained to recover wires:<br />
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math><br />
for the number of loops thus appeared.<br />
<br />
We describe these operations a bit more formally.<br />
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.<br />
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in<br />
<math>P\cup P'</math>, and such that<br />
there is an edge between <math>p</math> and <math>q</math> iff<br />
<math>q={W}(p)</math> or<br />
<math>q={W'}(p)</math> or<br />
<math>q=f(p)</math> or<br />
<math>p=f(q)</math>:<br />
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.<br />
Vertices in <math>P_0\cup P'_0</math><br />
are of degree 1, and the others are of degree 2.<br />
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:<br />
<br />
* straight paths, with both ends in <math>P_0\cup P_0'</math>;<br />
* cycles, with vertices all in <math>I\cup I'</math>.<br />
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that<br />
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.<br />
And <math>\Inner{W}{W'}_{f}</math> is the number of<br />
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely<br />
the number of support sets of cycles (i.e. we forget about the starting<br />
vertice of cycles).<br />
<br />
{{Lemma|<br />
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,<br />
and two connections <math>(I,I',f):P\pinj P'</math> and<br />
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.<br />
Then<br />
<br />
<math> (W\bowtie_f W')\bowtie_g W''=<br />
W\bowtie_f(W'\bowtie_g W'')</math><br />
<br />
and<br />
<br />
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=<br />
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math><br />
}}<br />
<br />
{{Proof|<br />
The first equation holds because open maximal paths in<br />
<math>W\dblcolon_f{W'\bowtie_g}{{W}''}</math> correspond with those in<br />
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in<br />
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in<br />
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.<br />
The second equation holds because both sides are two possible writings for<br />
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math><br />
}}<br />
<br />
=== Nets ===<br />
<br />
A ''signature'' is the data of a set<br />
<math>\Sigma</math> of symbols, together with arity functions<br />
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of<br />
''active'' ports, or conclusions)<br />
and <math>\pi:\Sigma\to\mathbf N</math> (number of<br />
''passive'' ports, or hypotheses).<br />
In the remaining, we assume<br />
such a signature is given.<br />
<br />
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of<br />
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists<br />
of pairwise distinct ports:<br />
<math>\alpha(c)\in P^{\alpha(\sigma)}</math><br />
is the list of ''active'' ports<br />
and <math>\pi(c)\in P^{\pi(\sigma)}</math><br />
is the list of ''passive'' ports.<br />
<br />
A ''net'' is the data of a wiring <math>(P,W)</math>, of a set <math>C</math> of disjoint cells on<br />
<math>P</math>, and of a number <math>L\in\mathbf N</math> (the number of ''loops''). It follows<br />
from the definitions that each port <math>p\in P</math> appears in exactly one wire and in<br />
at most one cell: we say <math>p</math> is ''free'' if it is not part of a cell, and<br />
<math>p</math> is ''internal'' otherwise. Moreover, we say <math>p</math> is ''dangling'' if<br />
<math>p</math> is free and <math>W(p)</math> is internal. We write <math>\textrm{fp}(R)</math> for the set of<br />
free ports of a net <math>R</math>.<br />
<br />
Generally, the “names” of internal ports of a net are not relevant, but free<br />
ports matter most often: internal ports are the analogue of bound variables in<br />
<math>\lambda</math>-terms.<br />
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math><br />
is the data of a bijection of ports <math>\phi:P\cong P'</math> and a bijection<br />
of cells <math>\psi:C\cong C'</math> such that:<br />
<br />
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;<br />
* for all <math>c\in C</math>:<br />
** <math>\sigma_{\psi(c)}=\sigma_c</math>,<br />
** for all <math>i\in\{0,\dotsc,\alpha(\sigma_c)-1\}</math>, <math>\alpha(\psi(c))_i=\phi(\alpha(c)_i)</math>,<br />
** for all <math>j\in\{0,\dotsc,\pi(\sigma_c)-1\}</math>, <math>\pi(\psi(c))_j=\phi(\pi(c)_j)</math>;<br />
* <math>L=L'</math>.<br />
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.<br />
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math><br />
implies <math>p=\phi(p)</math>.<br />
<br />
=== Subnets ===<br />
<br />
We say two nets are disjoint when their sets of ports are.<br />
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a<br />
connection between <math>W</math> and <math>W'</math>, such that<br />
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.<br />
We then write <math>R\bowtie_f{R'}</math> for the net<br />
with wiring <math>W\bowtie_f{W'}</math>, cells<br />
<math>C\cup C'</math> and loops <math>\Inner{R}{R'}_f=L+L'+\Inner{W}{W'}_f</math>.<br />
We say this connection is ''orthogonal'' if <math>\Inner{W}{W'}_f=0</math>, and it is<br />
''modular'' if the ports in <math>I\cup I'</math> are all dangling: a modular connection is<br />
always orthogonal.<br />
<br />
We say <math>R_0</math> is a ''subnet'' of <math>R</math>, if there exists a net <math>R'</math> and a connection<br />
<math>(I,I',f)</math> between <math>R_0</math> and <math>R'</math> such that <math>R=R_0\bowtie_f{R'}</math>.<br />
<br />
{{Lemma|<br />
Let <math>R_0</math>, <math>R_1</math> and <math>R'</math> be nets such that <math>R_0</math> and <math>R_1</math><br />
are disjoint from <math>R</math>,<br />
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math><br />
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that<br />
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.<br />
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to<br />
<math>R_1\bowtie_{f\circ\phi^{-1}}{R'}</math>.<br />
}}<br />
<br />
=== Rewriting ===<br />
<br />
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets<br />
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule<br />
is a pair <math>(R_0,R_1)</math> such that there exist:<br />
<br />
* nets <math>R'_0</math> and <math>R'_1</math> isomorphic to <math>r_0</math> and <math>r_1</math> respectively, namely <math>R'_i=\phi_i(r_i)</math>, so that moreover <math>\phi_0(p)=\phi_1(p)</math> for all <math>p\in\textrm{fp}(r_0)</math> (in particular, <math>\textrm{fp}(R'_0)=\textrm{fp}(R'_1)</math>);<br />
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;<br />
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;<br />
such that each <math>R_i</math> is nominally isomorphic to<br />
<math>R'_i\bowtie_f{R''}</math>.<br />
<br />
=== Typing ===<br />
<br />
A typing system on signature <math>\Sigma</math> is the data of a<br />
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,<br />
together with a typing discipline for each symbol, ''i.e.'' a relation<br />
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.<br />
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma<br />
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.<br />
<br />
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math><br />
such that:<br />
<br />
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;<br />
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;<br />
where, in the last formula, we implicitly generalized<br />
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,<br />
in the obvious, componentwise fashion.<br />
The ''interface'' of the typed net <math>(R,\tau)</math> is then<br />
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.<br />
<br />
The idea, is that a wire <math>\{p,q\}</math> bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in<br />
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule<br />
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)<br />
to active outputs (conclusions).<br />
<br />
Observe that if <math>(R,\tau)</math> is a typed net, and<br />
<math>\phi:R\cong R'</math> is an isomorphism,<br />
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:<br />
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.<br />
<br />
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets<br />
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and<br />
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.<br />
Then this induces a typing of <math>R\bowtie_f{R'}</math><br />
preserving the interface on the remaining free ports.<br />
<br />
=== Boxes ===<br />
<br />
A signature with boxes is the data of a signature <math>\Sigma</math>, together<br />
with a ''box arity'' <math>\beta(\sigma)</math> for all symbol<br />
<math>\sigma\in\Sigma</math>.<br />
<br />
Then a net on signature with boxes <math>(\Sigma,\beta)</math> is the same as a net<br />
<math>R</math> on <math>\Sigma</math> plus, for each cell <math>c</math> of <math>R</math>, the data <math>\beta(c)</math> of a<br />
<math>\beta(\sigma_c)</math>-tuple of nets (with boxes) with free ports the<br />
internal ports of <math>c</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Proof-netsProof-nets2013-06-25T14:41:46Z<p>Lionel Vaux: fix wording</p>
<hr />
<div>We provide [[a formal account of nets]], but it is probably not the best way to learn about proof-nets if you have never seen them before.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/SemanticsSemantics2012-09-06T13:54:41Z<p>Lionel Vaux: </p>
<hr />
<div>Linear Logic has numerous semantics some of which are described in details in the next sections. We give here an overview of the common properties that one may find in most of these models. We will denote by <math>A\longrightarrow B</math> the fact that there is a canonical morphism from <math>A</math> to <math>B</math> and by <math>A\cong B</math> the fact that there is a canonical isomorphism between <math>A</math> and <math>B</math>. By "canonical" we mean that these (iso)morphisms are natural transformations.<br />
<br />
== Linear negation ==<br />
<br />
<math><br />
\begin{array}{rclcrcl}<br />
A\biorth &=& A\\<br />
(A\tens B)\orth &\cong& A\orth\parr B\orth &\quad& \one\orth &\cong& \bot\\<br />
(A\parr B)\orth &\cong& A\orth\tens B\orth &\quad& \bot\orth &\cong& \one\\<br />
(A\with B)\orth &\cong& A\orth\plus B\orth &\quad& \top\orth &\cong& \zero\\<br />
(A\plus B)\orth &\cong& A\orth\with B\orth &\quad& \zero\orth &\cong& \top\\<br />
(\oc A)\orth &\cong& \wn A\orth\\<br />
(\wn A)\orth &\cong& \oc A\orth\\[1ex]<br />
A\limp B &\cong& A\orth\parr B\\<br />
A\limp B &\cong& B\orth\limp A\orth\\<br />
\end{array}<br />
</math><br />
<br />
== Neutrals ==<br />
<br />
<math><br />
\begin{array}{rcl}<br />
A\tens\one &\cong& \one\tens A\cong A\\<br />
A\parr\bot &\cong& \bot\parr A\cong A\\<br />
A\with\top &\cong& \top\with A\cong A\\<br />
A\plus\zero &\cong&\zero\plus A\cong A\\<br />
\end{array}<br />
</math><br />
<br />
== Commutativity ==<br />
<br />
<math><br />
\begin{array}{rcl}<br />
A\tens B &\cong& B\tens A\\<br />
A\parr B &\cong& B\parr A\\<br />
A\with B &\cong& B\with A\\<br />
A\plus B &\cong& B\plus A\\<br />
\end{array}<br />
</math><br />
<br />
== Associativity ==<br />
<br />
<math><br />
\begin{array}{rcl}<br />
(A\tens B)\tens C &\cong& A\tens(B\tens C)\\<br />
(A\parr B)\parr C &\cong& A\parr(B\parr C)\\<br />
(A\with B)\with C &\cong& A\with(B\with C)\\<br />
(A\plus B)\plus C &\cong& A\plus(B\plus C)\\<br />
\end{array}<br />
</math><br />
<br />
== Multiplicative semi-distributivity ==<br />
<br />
<math><br />
\begin{array}{rcl}<br />
A\tens(B\parr C) &\longrightarrow& (A\tens B)\parr C\\<br />
\end{array}<br />
</math><br />
<br />
== Multiplicative-additive distributivity ==<br />
<br />
<math><br />
\begin{array}{rclcrcl}<br />
A\tens(B\plus C) &\cong& (A\tens B)\plus(A\tens C) &\quad&<br />
A\tens\zero &\cong& \zero\\<br />
A\parr(B\with C) &\cong& (A\parr B)\with(A\parr C) &\quad&<br />
A\parr\top &\cong& \top\\<br />
\end{array}<br />
</math><br />
<br />
== Additive structure ==<br />
<br />
<math><br />
\begin{array}{rcl}<br />
A\with B \longrightarrow A &\quad& A\with B \longrightarrow B\\<br />
(C\limp A)\with(C\limp B) &\longrightarrow& C\limp(A\with B)\\<br />
A &\longrightarrow& A\with A\\<br />
A \longrightarrow A\plus B &\quad& B \longrightarrow A\plus B\\<br />
(A\limp C)\with(B\limp C) &\longrightarrow& (A\plus B)\limp C\\<br />
A\plus A &\longrightarrow& A\\<br />
\end{array}<br />
</math><br />
<br />
== Exponential structure ==<br />
<br />
<math><br />
\begin{array}{rclcrcl}<br />
\oc A &\longrightarrow& A &\quad& A&\longrightarrow&\wn A\\<br />
\oc A &\longrightarrow& 1 &\quad& \bot &\longrightarrow& \wn A\\<br />
\oc A &\longrightarrow& \oc A\tens\oc A &\quad& <br />
\wn A\parr\wn A &\longrightarrow& \wn A\\<br />
\oc A &\longrightarrow& \oc\oc A &\quad& \wn\wn A &\longrightarrow& \wn A\\<br />
\end{array}<br />
</math><br />
<br />
== Monoidality of exponential ==<br />
<br />
<math><br />
\begin{array}{rclcrcl}<br />
\oc A\tens\oc B &\longrightarrow& \oc(A\tens B) &\quad&<br />
\one &\longrightarrow& \oc\one\\<br />
\end{array}<br />
</math><br />
<br />
== The exponential isomorphism ==<br />
<br />
<math><br />
\begin{array}{rclcrcl}<br />
\oc(A\with B) &\cong& \oc A\tens\oc B &\quad& \oc\top &\cong& \one\\<br />
\wn(A\plus B) &\cong& \wn A\parr\wn B &\quad& \wn\zero &\cong& \bot\\<br />
\end{array}<br />
</math></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/NotationsNotations2012-09-06T11:56:39Z<p>Lionel Vaux: </p>
<hr />
<div>== Logical systems ==<br />
<br />
For a given logical system such as <math>MLL</math> (for multiplicative linear logic), we consider the following variations:<br />
{|<br />
|-<br />
! Notation<br />
! Meaning<br />
! Connectives<br />
|-<br />
| <math>MLL</math><br />
| propositional without units<br />
| <math>X,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_u</math><br />
| propositional with units only<br />
| <math>\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_0</math><br />
| propositional with units and variables<br />
| <math>X,\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_1</math><br />
| first-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_{01}</math><br />
| first-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_2</math><br />
| second-order propositional without units<br />
| <math>X,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{02}</math><br />
| second-order propositional with units<br />
| <math>X,\one,\bot,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{12}</math><br />
| first-order and second-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{012}</math><br />
| first-order and second-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
|}<br />
<br />
== Formulas and proof trees ==<br />
<br />
=== Formulas ===<br />
<br />
* First order quantification: <math>\forall x A</math> with substitution <math>A[t/x]</math><br />
* Second order quantification: <math>\forall X A</math> with substitution <math>A[B/X]</math><br />
* Quantification of arbitrary order (mainly first or second): <math>\forall\xi A</math> with substitution <math>A[\tau/\xi]</math><br />
<br />
=== Rule names ===<br />
<br />
Name of the connective, followed by some additional information if required, followed by "L" for a left rule or "R" for a right rule. This is for a two-sided system, "R" is implicit for one-sided systems.<br />
For example: <math>\wedge_1 \text{add} L</math>.<br />
<br />
== Semantics ==<br />
<br />
=== [[Coherent spaces]] ===<br />
* Web of the space <math>X</math>: <math>\web X</math><br />
* Coherence relation of the space <math>X</math>: large <math>\coh_X</math> and strict <math>\scoh_X</math><br />
<br />
=== [[Finiteness spaces]] ===<br />
* Web of the finiteness space <math>\mathcal A</math>: <math>\web{\mathcal A}</math> <br />
* Finiteness structure of the space <math>\mathcal A</math>: <math>\mathfrak F(\mathcal A)</math> (we use <tt>\mathfrak</tt>, which is consistent with the fact that <math>\finpowerset{\web{\mathcal A}}\subseteq \mathfrak F(\mathcal A) \subseteq\powerset{\web{\mathcal A}}</math>).<br />
<br />
<br />
== [[A formal account of nets|Nets]] ==<br />
<br />
* The free ports of a net <math>R</math>: <math>\mathrm{fp}(R)</math>.<br />
* The result of the connection of two nets <math>R</math> and <math>R'</math>, given the partial bijection <math>f:\mathrm{fp}(R)\pinj \mathrm{fp}(R')</math>: <math>R\bowtie_f R'</math>.<br />
* The number of loops in the resulting net: <math>\Inner{R}{R'}_f</math> (includes the loops already present in <math>R</math> and <math>R'</math>).<br />
<br />
== Miscellaneous ==<br />
<br />
* [[Isomorphism]]: <math>A\cong B</math><br />
* injection: <math>A\hookrightarrow B</math><br />
* partial injection: <math>A\pinj B</math></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/NotationsNotations2012-09-06T11:36:49Z<p>Lionel Vaux: /* Miscellaneous */</p>
<hr />
<div>== Logical systems ==<br />
<br />
For a given logical system such as <math>MLL</math> (for multiplicative linear logic), we consider the following variations:<br />
{|<br />
|-<br />
! Notation<br />
! Meaning<br />
! Connectives<br />
|-<br />
| <math>MLL</math><br />
| propositional without units<br />
| <math>X,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_u</math><br />
| propositional with units only<br />
| <math>\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_0</math><br />
| propositional with units and variables<br />
| <math>X,\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_1</math><br />
| first-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_{01}</math><br />
| first-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_2</math><br />
| second-order propositional without units<br />
| <math>X,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{02}</math><br />
| second-order propositional with units<br />
| <math>X,\one,\bot,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{12}</math><br />
| first-order and second-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{012}</math><br />
| first-order and second-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
|}<br />
<br />
== Formulas and proof trees ==<br />
<br />
=== Formulas ===<br />
<br />
* First order quantification: <math>\forall x A</math> with substitution <math>A[t/x]</math><br />
* Second order quantification: <math>\forall X A</math> with substitution <math>A[B/X]</math><br />
* Quantification of arbitrary order (mainly first or second): <math>\forall\xi A</math> with substitution <math>A[\tau/\xi]</math><br />
<br />
=== Rule names ===<br />
<br />
Name of the connective, followed by some additional information if required, followed by "L" for a left rule or "R" for a right rule. This is for a two-sided system, "R" is implicit for one-sided systems.<br />
For example: <math>\wedge_1 \text{add} L</math>.<br />
<br />
== Semantics ==<br />
<br />
=== [[Coherent spaces]] ===<br />
* Web of the space <math>X</math>: <math>\web X</math><br />
* Coherence relation of the space <math>X</math>: large <math>\coh_X</math> and strict <math>\scoh_X</math><br />
<br />
=== [[Finiteness spaces]] ===<br />
* Web of the finiteness space <math>\mathcal A</math>: <math>\web{\mathcal A}</math> <br />
* Finiteness structure of the space <math>\mathcal A</math>: <math>\mathfrak F(\mathcal A)</math> (we use <tt>\mathfrak</tt>, which is consistent with the fact that <math>\finpowerset{\web{\mathcal A}}\subseteq \mathfrak F(\mathcal A) \subseteq\powerset{\web{\mathcal A}}</math>).<br />
<br />
== Miscellaneous ==<br />
<br />
* [[Isomorphism]]: <math>A\cong B</math><br />
* injection: <math>A\hookrightarrow B</math><br />
* partial injection: <math>A\pinj B</math></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/A_formal_account_of_netsA formal account of nets2012-09-06T09:49:02Z<p>Lionel Vaux: a draft definition of boxes</p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring out most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== Preliminaries ==<br />
<br />
=== The short story ===<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* the top/down or passive/active orientation of cells is related with the distinction between premisses and conclusions of rules, (and in that sense, a cut is not a logical rule, but the focus of interaction between two rules);<br />
* cuts are thus wires rather than cells/links: this fits with the intuition of GoI, but not with the most common presentations of proof nets;<br />
* because the notion of subnet is not trivial in multiport interaction nets, and to avoid the use of geometric conditions (boxes must not overlap but can be nested), we introduce boxes as particular cells);<br />
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.<br />
== Nets ==<br />
<br />
=== Wires ===<br />
<br />
A ''wiring'' is the data of a finite set <math>P</math> of ports<br />
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):<br />
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.<br />
Hence a wiring is equivalently given by<br />
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,<br />
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then<br />
the orbits.<br />
Another equivalent presentation is to consider <math>{W}</math> as<br />
a (simple, loopless, undirected) graph, with vertices in P,<br />
all of degree 1.<br />
<br />
We say two wirings are disjoint when their sets of ports are.<br />
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is<br />
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,<br />
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\cong I'</math>.<br />
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained<br />
by identifying the ports pairwise mapped by <math>f</math>, and then<br />
``straightening`` the paths thus obtained to recover wires:<br />
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math><br />
for the number of loops thus appeared.<br />
<br />
We describe these operations a bit more formally.<br />
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.<br />
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in<br />
<math>P\cup P'</math>, and such that<br />
there is an edge between <math>p</math> and <math>q</math> iff<br />
<math>q={W}(p)</math> or<br />
<math>q={W'}(p)</math> or<br />
<math>q=f(p)</math> or<br />
<math>p=f(q)</math>:<br />
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.<br />
Vertices in <math>P_0\cup P'_0</math><br />
are of degree 1, and the others are of degree 2.<br />
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:<br />
<br />
* straight paths, with both ends in <math>P_0\cup P_0'</math>;<br />
* cycles, with vertices all in <math>I\cup I'</math>.<br />
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that<br />
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.<br />
And <math>\Inner{W}{W'}_{f}</math> is the number of<br />
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely<br />
the number of support sets of cycles (i.e. we forget about the starting<br />
vertice of cycles).<br />
<br />
{{Lemma|<br />
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,<br />
and two connections <math>(I,I',f):P\pinj P'</math> and<br />
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.<br />
Then<br />
<br />
<math> (W\bowtie_f W')\bowtie_g W''=<br />
W\bowtie_f(W'\bowtie_g W'')</math><br />
<br />
and<br />
<br />
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=<br />
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math><br />
}}<br />
<br />
{{Proof|<br />
The first equation holds because open maximal paths in<br />
<math>W\dblcolon_f{W'\bowtie_g}{{W}''}</math> correspond with those in<br />
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in<br />
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in<br />
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.<br />
The second equation holds because both sides are two possible writings for<br />
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math><br />
}}<br />
<br />
=== Nets ===<br />
<br />
A ''signature'' is the data of a set<br />
<math>\Sigma</math> of symbols, together with arity functions<br />
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of<br />
''active'' ports, or conclusions)<br />
and <math>\pi:\Sigma\to\mathbf N</math> (number of<br />
''passive'' ports, or hypotheses).<br />
In the remaining, we assume<br />
such a signature is given.<br />
<br />
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of<br />
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists<br />
of pairwise distinct ports:<br />
<math>\alpha(c)\in P^{\alpha(\sigma)}</math><br />
is the list of ''active'' ports<br />
and <math>\pi(c)\in P^{\pi(\sigma)}</math><br />
is the list of ''passive'' ports.<br />
<br />
A ''net'' is the data of a wiring <math>(P,W)</math>, of a set <math>C</math> of disjoint cells on<br />
<math>P</math>, and of a number <math>L\in\mathbf N</math> (the number of ''loops''). It follows<br />
from the definitions that each port <math>p\in P</math> appears in exactly one wire and in<br />
at most one cell: we say <math>p</math> is ''free'' if it is not part of a cell, and<br />
<math>p</math> is ''internal'' otherwise. Moreover, we say <math>p</math> is ''dangling'' if<br />
<math>p</math> is free and <math>W(p)</math> is internal. We write <math>\textrm{fp}(R)</math> for the set of<br />
free ports of a net <math>R</math>.<br />
<br />
Generally, the “names” of internal ports of a net are not relevant, but free<br />
ports matter most often: internal ports are the analogue of bound variables in<br />
<math>\lambda</math>-terms.<br />
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math><br />
is the data of a bijection of ports <math>\phi:P\cong P'</math> and a bijection<br />
of cells <math>\psi:C\cong C'</math> such that:<br />
<br />
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;<br />
* for all <math>c\in C</math>:<br />
** <math>\sigma_{\psi(c)}=\sigma_c</math>,<br />
** for all <math>i\in\{0,\dotsc,\alpha(\sigma_c)-1\}</math>, <math>\alpha(\psi(c))_i=\phi(\alpha(c)_i)</math>,<br />
** for all <math>j\in\{0,\dotsc,\pi(\sigma_c)-1\}</math>, <math>\pi(\psi(c))_j=\phi(\pi(c)_j)</math>;<br />
* <math>L=L'</math>.<br />
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.<br />
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math><br />
implies <math>p=\phi(p)</math>.<br />
<br />
=== Subnets ===<br />
<br />
We say two nets are disjoint when their sets of ports are.<br />
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a<br />
connection between <math>W</math> and <math>W'</math>, such that<br />
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.<br />
We then write <math>R\bowtie_f{R'}</math> for the net<br />
with wiring <math>W\bowtie_f{W'}</math>, cells<br />
<math>C\cup C'</math> and loops <math>\Inner{R}{R'}_f=L+L'+\Inner{W}{W'}_f</math>.<br />
We say this connection is ''orthogonal'' if <math>\Inner{W}{W'}_f=0</math>, and it is<br />
''modular'' if the ports in <math>I\cup I'</math> are all dangling: a modular connection is<br />
always orthogonal.<br />
<br />
We say <math>R_0</math> is a ''subnet'' of <math>R</math>, if there exists a net <math>R'</math> and a connection<br />
<math>(I,I',f)</math> between <math>R_0</math> and <math>R'</math> such that <math>R=R_0\bowtie_f{R'}</math>.<br />
<br />
{{Lemma|<br />
Let <math>R_0</math>, <math>R_1</math> and <math>R'</math> be nets such that <math>R_0</math> and <math>R_1</math><br />
are disjoint from <math>R</math>,<br />
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math><br />
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that<br />
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.<br />
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to<br />
<math>R_1\bowtie_{f\circ\phi^{-1}}{R'}</math>.<br />
}}<br />
<br />
=== Rewriting ===<br />
<br />
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets<br />
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule<br />
is a pair <math>(R_0,R_1)</math> such that there exist:<br />
<br />
* nets <math>R'_0</math> and <math>R'_1</math> isomorphic to <math>r_0</math> and <math>r_1</math> respectively, namely <math>R'_i=\phi_i(r_i)</math>, so that moreover <math>\phi_0(p)=\phi_1(p)</math> for all <math>p\in\textrm{fp}(r_0)</math> (in particular, <math>\textrm{fp}(R'_0)=\textrm{fp}(R'_1)</math>);<br />
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;<br />
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;<br />
such that each <math>R_i</math> is nominally isomorphic to<br />
<math>R'_i\bowtie_f{R''}</math>.<br />
<br />
=== Typing ===<br />
<br />
A typing system on signature <math>\Sigma</math> is the data of a<br />
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,<br />
together with a typing discipline for each symbol, ''i.e.'' a relation<br />
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.<br />
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma<br />
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.<br />
<br />
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math><br />
such that:<br />
<br />
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;<br />
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;<br />
where, in the last formula, we implicitly generalized<br />
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,<br />
in the obvious, componentwise fashion.<br />
The ''interface'' of the typed net <math>(R,\tau)</math> is then<br />
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.<br />
<br />
The idea, is that a wire <math>\{p,q\}</math> bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in<br />
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule<br />
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)<br />
to active outputs (conclusions).<br />
<br />
Observe that if <math>(R,\tau)</math> is a typed net, and<br />
<math>\phi:R\cong R'</math> is an isomorphism,<br />
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:<br />
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.<br />
<br />
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets<br />
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and<br />
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.<br />
Then this induces a typing of <math>R\bowtie_f{R'}</math><br />
preserving the interface on the remaining free ports.<br />
<br />
=== Boxes ===<br />
<br />
A signature with boxes is the data of a signature <math>\Sigma</math>, together<br />
with a ''box arity'' <math>\beta(\sigma)</math> for all symbol<br />
<math>\sigma\in\Sigma</math>.<br />
<br />
Then a net on signature with boxes <math>(\Sigma,\beta)</math> is the same as a net<br />
<math>R</math> on <math>\Sigma</math> plus, for each cell <math>c</math> of <math>R</math>, the data <math>\beta(c)</math> of a<br />
<math>\beta(\sigma_c)</math>-tuple of nets (with boxes) with free ports the<br />
internal ports of <math>c</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/A_formal_account_of_netsA formal account of nets2012-09-06T08:50:43Z<p>Lionel Vaux: fixed missing items (bug in mouliwiki)</p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring out most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== Preliminaries ==<br />
<br />
=== The short story ===<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* the top/down or passive/active orientation of cells is related with the distinction between premisses and conclusions of rules, (and in that sense, a cut is not a logical rule, but the focus of interaction between two rules);<br />
* cuts are thus wires rather than cells/links: this fits with the intuition of GoI, but not with the most common presentations of proof nets;<br />
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.<br />
== Nets ==<br />
<br />
=== Wires ===<br />
<br />
A ''wiring'' is the data of a finite set <math>P</math> of ports<br />
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):<br />
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.<br />
Hence a wiring is equivalently given by<br />
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,<br />
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then<br />
the orbits.<br />
Another equivalent presentation is to consider <math>{W}</math> as<br />
a (simple, loopless, undirected) graph, with vertices in P,<br />
all of degree 1.<br />
<br />
We say two wirings are disjoint when their sets of ports are.<br />
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is<br />
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,<br />
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\cong I'</math>.<br />
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained<br />
by identifying the ports pairwise mapped by <math>f</math>, and then<br />
``straightening`` the paths thus obtained to recover wires:<br />
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math><br />
for the number of loops thus appeared.<br />
<br />
We describe these operations a bit more formally.<br />
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.<br />
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in<br />
<math>P\cup P'</math>, and such that<br />
there is an edge between <math>p</math> and <math>q</math> iff<br />
<math>q={W}(p)</math> or<br />
<math>q={W'}(p)</math> or<br />
<math>q=f(p)</math> or<br />
<math>p=f(q)</math>:<br />
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.<br />
Vertices in <math>P_0\cup P'_0</math><br />
are of degree 1, and the others are of degree 2.<br />
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:<br />
<br />
* straight paths, with both ends in <math>P_0\cup P_0'</math>;<br />
* cycles, with vertices all in <math>I\cup I'</math>.<br />
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that<br />
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.<br />
And <math>\Inner{W}{W'}_{f}</math> is the number of<br />
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely<br />
the number of support sets of cycles (i.e. we forget about the starting<br />
vertice of cycles).<br />
<br />
{{Lemma|<br />
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,<br />
and two connections <math>(I,I',f):P\pinj P'</math> and<br />
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.<br />
Then<br />
<br />
<math> (W\bowtie_f W')\bowtie_g W''=<br />
W\bowtie_f(W'\bowtie_g W'')</math><br />
<br />
and<br />
<br />
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=<br />
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math><br />
}}<br />
<br />
{{Proof|<br />
The first equation holds because open maximal paths in<br />
<math>W\dblcolon_f{W'\bowtie_g}{{W}''}</math> correspond with those in<br />
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in<br />
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in<br />
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.<br />
The second equation holds because both sides are two possible writings for<br />
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math><br />
}}<br />
<br />
=== Nets ===<br />
<br />
A ''signature'' is the data of a set<br />
<math>\Sigma</math> of symbols, together with arity functions<br />
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of<br />
''active'' ports, or conclusions)<br />
and <math>\pi:\Sigma\to\mathbf N</math> (number of<br />
''passive'' ports, or hypotheses).<br />
In the remaining, we assume<br />
such a signature is given.<br />
<br />
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of<br />
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists<br />
of pairwise distinct ports:<br />
<math>\alpha(c)\in P^{\alpha(\sigma)}</math><br />
is the list of ''active'' ports<br />
and <math>\pi(c)\in P^{\pi(\sigma)}</math><br />
is the list of ''passive'' ports.<br />
<br />
A ''net'' is the data of a wiring <math>(P,W)</math>, of a set <math>C</math> of disjoint cells on<br />
<math>P</math>, and of a number <math>L\in\mathbf N</math> (the number of ''loops''). It follows<br />
from the definitions that each port <math>p\in P</math> appears in exactly one wire and in<br />
at most one cell: we say <math>p</math> is ''free'' if it is not part of a cell, and<br />
<math>p</math> is ''internal'' otherwise. Moreover, we say <math>p</math> is ''dangling'' if<br />
<math>p</math> is free and <math>W(p)</math> is internal. We write <math>\textrm{fp}(R)</math> for the set of<br />
free ports of a net <math>R</math>.<br />
<br />
Generally, the “names” of internal ports of a net are not relevant, but free<br />
ports matter most often: internal ports are the analogue of bound variables in<br />
<math>\lambda</math>-terms.<br />
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math><br />
is the data of a bijection of ports <math>\phi:P\cong P'</math> and a bijection<br />
of cells <math>\psi:C\cong C'</math> such that:<br />
<br />
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;<br />
* for all <math>c\in C</math>:<br />
** <math>\sigma_{\psi(c)}=\sigma_c</math>,<br />
** for all <math>i\in\{0,\dotsc,\alpha(\sigma_c)-1\}</math>, <math>\alpha(\psi(c))_i=\phi(\alpha(c)_i)</math>,<br />
** for all <math>j\in\{0,\dotsc,\pi(\sigma_c)-1\}</math>, <math>\pi(\psi(c))_j=\phi(\pi(c)_j)</math>;<br />
* <math>L=L'</math>.<br />
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.<br />
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math><br />
implies <math>p=\phi(p)</math>.<br />
<br />
=== Subnets ===<br />
<br />
We say two nets are disjoint when their sets of ports are.<br />
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a<br />
connection between <math>W</math> and <math>W'</math>, such that<br />
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.<br />
We then write <math>R\bowtie_f{R'}</math> for the net<br />
with wiring <math>W\bowtie_f{W'}</math>, cells<br />
<math>C\cup C'</math> and loops <math>\Inner{R}{R'}_f=L+L'+\Inner{W}{W'}_f</math>.<br />
We say this connection is ''orthogonal'' if <math>\Inner{W}{W'}_f=0</math>, and it is<br />
''modular'' if the ports in <math>I\cup I'</math> are all dangling: a modular connection is<br />
always orthogonal.<br />
<br />
We say <math>R_0</math> is a ''subnet'' of <math>R</math>, if there exists a net <math>R'</math> and a connection<br />
<math>(I,I',f)</math> between <math>R_0</math> and <math>R'</math> such that <math>R=R_0\bowtie_f{R'}</math>.<br />
<br />
{{Lemma|<br />
Let <math>R_0</math>, <math>R_1</math> and <math>R'</math> be nets such that <math>R_0</math> and <math>R_1</math><br />
are disjoint from <math>R</math>,<br />
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math><br />
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that<br />
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.<br />
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to<br />
<math>R_1\bowtie_{f\circ\phi^{-1}}{R'}</math>.<br />
}}<br />
<br />
=== Rewriting ===<br />
<br />
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets<br />
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule<br />
is a pair <math>(R_0,R_1)</math> such that there exist:<br />
<br />
* nets <math>R'_0</math> and <math>R'_1</math> isomorphic to <math>r_0</math> and <math>r_1</math> respectively, namely <math>R'_i=\phi_i(r_i)</math>, so that moreover <math>\phi_0(p)=\phi_1(p)</math> for all <math>p\in\textrm{fp}(r_0)</math> (in particular, <math>\textrm{fp}(R'_0)=\textrm{fp}(R'_1)</math>);<br />
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;<br />
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;<br />
such that each <math>R_i</math> is nominally isomorphic to<br />
<math>R'_i\bowtie_f{R''}</math>.<br />
<br />
=== Typing ===<br />
<br />
A typing system on signature <math>\Sigma</math> is the data of a<br />
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,<br />
together with a typing discipline for each symbol, ''i.e.'' a relation<br />
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.<br />
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma<br />
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.<br />
<br />
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math><br />
such that:<br />
<br />
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;<br />
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;<br />
where, in the last formula, we implicitly generalized<br />
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,<br />
in the obvious, componentwise fashion.<br />
The ''interface'' of the typed net <math>(R,\tau)</math> is then<br />
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.<br />
<br />
The idea, is that a wire <math>\{p,q\}</math> bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in<br />
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule<br />
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)<br />
to active outputs (conclusions).<br />
<br />
Observe that if <math>(R,\tau)</math> is a typed net, and<br />
<math>\phi:R\cong R'</math> is an isomorphism,<br />
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:<br />
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.<br />
<br />
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets<br />
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and<br />
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.<br />
Then this induces a typing of <math>R\bowtie_f{R'}</math><br />
preserving the interface on the remaining free ports.<br />
<br />
=== Boxes ===<br />
<br />
TODO</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/A_formal_account_of_netsA formal account of nets2012-09-06T08:50:09Z<p>Lionel Vaux: various fixes and complements on connections</p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring out most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== Preliminaries ==<br />
<br />
=== The short story ===<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* the top/down or passive/active orientation of cells is related with the distinction between premisses and conclusions of rules, (and in that sense, a cut is not a logical rule, but the focus of interaction between two rules);<br />
* cuts are thus wires rather than cells/links: this fits with the intuition of GoI, but not with the most common presentations of proof nets;<br />
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.<br />
== Nets ==<br />
<br />
=== Wires ===<br />
<br />
A ''wiring'' is the data of a finite set <math>P</math> of ports<br />
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):<br />
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.<br />
Hence a wiring is equivalently given by<br />
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,<br />
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then<br />
the orbits.<br />
Another equivalent presentation is to consider <math>{W}</math> as<br />
a (simple, loopless, undirected) graph, with vertices in P,<br />
all of degree 1.<br />
<br />
We say two wirings are disjoint when their sets of ports are.<br />
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is<br />
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,<br />
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\cong I'</math>.<br />
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained<br />
by identifying the ports pairwise mapped by <math>f</math>, and then<br />
``straightening`` the paths thus obtained to recover wires:<br />
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math><br />
for the number of loops thus appeared.<br />
<br />
We describe these operations a bit more formally.<br />
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.<br />
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in<br />
<math>P\cup P'</math>, and such that<br />
there is an edge between <math>p</math> and <math>q</math> iff<br />
<math>q={W}(p)</math> or<br />
<math>q={W'}(p)</math> or<br />
<math>q=f(p)</math> or<br />
<math>p=f(q)</math>:<br />
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.<br />
Vertices in <math>P_0\cup P'_0</math><br />
are of degree 1, and the others are of degree 2.<br />
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:<br />
<br />
* straight paths, with both ends in <math>P_0\cup P_0'</math>;<br />
* cycles, with vertices all in <math>I\cup I'</math>.<br />
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that<br />
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.<br />
And <math>\Inner{W}{W'}_{f}</math> is the number of<br />
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely<br />
the number of support sets of cycles (i.e. we forget about the starting<br />
vertice of cycles).<br />
<br />
{{Lemma|<br />
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,<br />
and two connections <math>(I,I',f):P\pinj P'</math> and<br />
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.<br />
Then<br />
<br />
<math> (W\bowtie_f W')\bowtie_g W''=<br />
W\bowtie_f(W'\bowtie_g W'')</math><br />
<br />
and<br />
<br />
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=<br />
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math><br />
}}<br />
<br />
{{Proof|<br />
The first equation holds because open maximal paths in<br />
<math>W\dblcolon_f{W'\bowtie_g}{{W}''}</math> correspond with those in<br />
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in<br />
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in<br />
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.<br />
The second equation holds because both sides are two possible writings for<br />
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math><br />
}}<br />
<br />
=== Nets ===<br />
<br />
A ''signature'' is the data of a set<br />
<math>\Sigma</math> of symbols, together with arity functions<br />
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of<br />
''active'' ports, or conclusions)<br />
and <math>\pi:\Sigma\to\mathbf N</math> (number of<br />
''passive'' ports, or hypotheses).<br />
In the remaining, we assume<br />
such a signature is given.<br />
<br />
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of<br />
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists<br />
of pairwise distinct ports:<br />
<math>\alpha(c)\in P^{\alpha(\sigma)}</math><br />
is the list of ''active'' ports<br />
and <math>\pi(c)\in P^{\pi(\sigma)}</math><br />
is the list of ''passive'' ports.<br />
<br />
A ''net'' is the data of a wiring <math>(P,W)</math>, of a set <math>C</math> of disjoint cells on<br />
<math>P</math>, and of a number <math>L\in\mathbf N</math> (the number of ''loops''). It follows<br />
from the definitions that each port <math>p\in P</math> appears in exactly one wire and in<br />
at most one cell: we say <math>p</math> is ''free'' if it is not part of a cell, and<br />
<math>p</math> is ''internal'' otherwise. Moreover, we say <math>p</math> is ''dangling'' if<br />
<math>p</math> is free and <math>W(p)</math> is internal. We write <math>\textrm{fp}(R)</math> for the set of<br />
free ports of a net <math>R</math>.<br />
<br />
Generally, the “names” of internal ports of a net are not relevant, but free<br />
ports matter most often: internal ports are the analogue of bound variables in<br />
<math>\lambda</math>-terms.<br />
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math><br />
is the data of a bijection of ports <math>\phi:P\cong P'</math> and a bijection<br />
of cells <math>\psi:C\cong C'</math> such that:<br />
<br />
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;<br />
* for all <math>c\in C</math>:<br />
* <math>L=L'</math>.<br />
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.<br />
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math><br />
implies <math>p=\phi(p)</math>.<br />
<br />
=== Subnets ===<br />
<br />
We say two nets are disjoint when their sets of ports are.<br />
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a<br />
connection between <math>W</math> and <math>W'</math>, such that<br />
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.<br />
We then write <math>R\bowtie_f{R'}</math> for the net<br />
with wiring <math>W\bowtie_f{W'}</math>, cells<br />
<math>C\cup C'</math> and loops <math>\Inner{R}{R'}_f=L+L'+\Inner{W}{W'}_f</math>.<br />
We say this connection is ''orthogonal'' if <math>\Inner{W}{W'}_f=0</math>, and it is<br />
''modular'' if the ports in <math>I\cup I'</math> are all dangling: a modular connection is<br />
always orthogonal.<br />
<br />
We say <math>R_0</math> is a ''subnet'' of <math>R</math>, if there exists a net <math>R'</math> and a connection<br />
<math>(I,I',f)</math> between <math>R_0</math> and <math>R'</math> such that <math>R=R_0\bowtie_f{R'}</math>.<br />
<br />
{{Lemma|<br />
Let <math>R_0</math>, <math>R_1</math> and <math>R'</math> be nets such that <math>R_0</math> and <math>R_1</math><br />
are disjoint from <math>R</math>,<br />
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math><br />
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that<br />
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.<br />
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to<br />
<math>R_1\bowtie_{f\circ\phi^{-1}}{R'}</math>.<br />
}}<br />
<br />
=== Rewriting ===<br />
<br />
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets<br />
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule<br />
is a pair <math>(R_0,R_1)</math> such that there exist:<br />
<br />
* nets <math>R'_0</math> and <math>R'_1</math> isomorphic to <math>r_0</math> and <math>r_1</math> respectively, namely <math>R'_i=\phi_i(r_i)</math>, so that moreover <math>\phi_0(p)=\phi_1(p)</math> for all <math>p\in\textrm{fp}(r_0)</math> (in particular, <math>\textrm{fp}(R'_0)=\textrm{fp}(R'_1)</math>);<br />
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;<br />
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;<br />
such that each <math>R_i</math> is nominally isomorphic to<br />
<math>R'_i\bowtie_f{R''}</math>.<br />
<br />
=== Typing ===<br />
<br />
A typing system on signature <math>\Sigma</math> is the data of a<br />
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,<br />
together with a typing discipline for each symbol, ''i.e.'' a relation<br />
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.<br />
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma<br />
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.<br />
<br />
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math><br />
such that:<br />
<br />
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;<br />
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;<br />
where, in the last formula, we implicitly generalized<br />
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,<br />
in the obvious, componentwise fashion.<br />
The ''interface'' of the typed net <math>(R,\tau)</math> is then<br />
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.<br />
<br />
The idea, is that a wire <math>\{p,q\}</math> bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in<br />
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule<br />
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)<br />
to active outputs (conclusions).<br />
<br />
Observe that if <math>(R,\tau)</math> is a typed net, and<br />
<math>\phi:R\cong R'</math> is an isomorphism,<br />
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:<br />
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.<br />
<br />
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets<br />
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and<br />
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.<br />
Then this induces a typing of <math>R\bowtie_f{R'}</math><br />
preserving the interface on the remaining free ports.<br />
<br />
=== Boxes ===<br />
<br />
TODO</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/SandboxSandbox2012-09-06T08:40:35Z<p>Lionel Vaux: </p>
<hr />
<div>{{Sandbox}}<br />
<br />
== Please start edit below ==<br />
<br />
* titi<br />
* * toto<br />
** tata<br />
* toto</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/FocalizationFocalization2012-09-05T20:20:20Z<p>Lionel Vaux: typo in redirect</p>
<hr />
<div>#REDIRECT [[Reversibility and focalization]]</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/FocalizationFocalization2012-09-05T20:19:58Z<p>Lionel Vaux: Created page with "#SEDIRECT Reversibility and focalization"</p>
<hr />
<div>#SEDIRECT [[Reversibility and focalization]]</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/A_formal_account_of_netsA formal account of nets2012-09-01T07:05:09Z<p>Lionel Vaux: /* Conventions */ … were useless</p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring out most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== Preliminaries ==<br />
<br />
=== The short story ===<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* the top/down or passive/active orientation of cells is related with the distinction between premisses and conclusions of rules, (and in that sense, a cut is not a logical rule, but the focus of interaction between two rules);<br />
* cuts are thus wires rather than cells/links: this fits with the intuition of GoI, but not with the most common presentations of proof nets;<br />
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.<br />
== Nets ==<br />
<br />
=== Wires ===<br />
<br />
A ''wiring'' is the data of a finite set <math>P</math> of ports<br />
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):<br />
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.<br />
Hence a wiring is equivalently given by<br />
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,<br />
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then<br />
the orbits.<br />
Another equivalent presentation is to consider <math>{W}</math> as<br />
a (simple, loopless, undirected) graph, with vertices in P,<br />
all of degree 1.<br />
<br />
We say two wirings are disjoint when their sets of ports are.<br />
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is<br />
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,<br />
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\cong I'</math>.<br />
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained<br />
by identifying the ports pairwise mapped by <math>f</math>, and then<br />
``straightening`` the paths thus obtained to recover wires:<br />
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math><br />
for the number of loops thus appeared.<br />
<br />
We describe these operations a bit more formally.<br />
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.<br />
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in<br />
<math>P\cup P'</math>, and such that<br />
there is an edge between <math>p</math> and <math>q</math> iff<br />
<math>q={W}(p)</math> or<br />
<math>q={W'}(p)</math> or<br />
<math>q=f(p)</math> or<br />
<math>p=f(q)</math>:<br />
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.<br />
Vertices in <math>P_0\cup P'_0</math><br />
are of degree 1, and the others are of degree 2.<br />
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:<br />
<br />
* straight paths, with both ends in <math>P_0\cup P_0'</math>;<br />
* cycles, with vertices all in <math>I\cup I'</math>.<br />
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that<br />
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.<br />
And <math>\Inner{W}{W'}_{f}</math> is the number of<br />
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely<br />
the number of support sets of cycles (i.e. we forget about the starting<br />
vertice of cycles).<br />
<br />
{{Lemma|<br />
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,<br />
and two connections <math>(I,I',f):P\pinj P'</math> and<br />
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.<br />
Then<br />
<br />
<math> (W\bowtie_f W')\bowtie_g W''=<br />
W\bowtie_f(W'\bowtie_g W'')</math><br />
<br />
and<br />
<br />
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=<br />
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math><br />
}}<br />
<br />
{{Proof|<br />
The first equation holds because open maximal paths in<br />
<math>W\dblcolon_f{W'\bowtie_g}{{W}''}</math> correspond with those in<br />
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in<br />
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in<br />
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.<br />
The second equation holds because both sides are two possible writings for<br />
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math><br />
}}<br />
<br />
=== Nets ===<br />
<br />
A ''signature'' is the data of a set<br />
<math>\Sigma</math> of symbols, together with arity functions<br />
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of<br />
''active'' ports, or conclusions)<br />
and <math>\pi:\Sigma\to\mathbf N</math> (number of<br />
''passive'' ports, or hypotheses).<br />
In the remaining, we assume<br />
such a signature is given.<br />
<br />
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of<br />
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists<br />
of pairwise distinct ports:<br />
<math>\alpha(c)\in P^{\alpha(\sigma)}</math><br />
is the list of ''active'' ports<br />
and <math>\pi(c)\in P^{\pi(\sigma)}</math><br />
is the list of ''passive'' ports.<br />
<br />
A ''net'' is the data of a wiring <math>(P,W)</math> and of a set <math>C</math> of disjoint cells on<br />
<math>P</math>. It follows from the definitions that each port <math>p\in P</math> appears in<br />
exactly one wire and in at most one cell: we say <math>p</math> is ''free'' if it is<br />
not part of a cell, and <math>p</math> is ''internal'' otherwise. We write <math>\textrm{fp}(R)</math> for<br />
the set of free ports of a net <math>R</math>.<br />
<br />
Generally, the “names” of internal ports of a net are not relevant, but free<br />
ports matter most often: internal ports are the analogue of bound variables in<br />
<math>\lambda</math>-terms.<br />
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math><br />
is the data of a bijection of ports <math>\phi:P\cong P'</math> and a bijection<br />
of cells <math>\psi:C\cong C'</math> such that:<br />
<br />
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;<br />
* for all <math>c\in C</math>:<br />
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.<br />
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math><br />
implies <math>p=\phi(p)</math>.<br />
<br />
=== Rewriting ===<br />
<br />
We say two nets are disjoint when their sets of ports are.<br />
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a<br />
connection between <math>W</math> and <math>W'</math>, such that<br />
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.<br />
We then write <math>R\bowtie_f{R'}</math> for the net<br />
with wiring <math>W\bowtie_f{W'}</math> and cells<br />
<math>C\cup C'</math>.<br />
<br />
{{Lemma|<br />
Let <math>R_0</math>, <math>R_1</math> and <math>R'</math> be nets such that <math>R_0</math> and <math>R_1</math><br />
are disjoint from <math>R</math>,<br />
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math><br />
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that<br />
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.<br />
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to<br />
<math>R_1\bowtie_{f\circ\phi^{-1}}{R'}</math>.<br />
}}<br />
<br />
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets<br />
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule<br />
is a pair <math>(R_0,R_1)</math> such that there exist:<br />
<br />
* nets <math>R'_0</math> and <math>R'_1</math> isomorphic to <math>r_0</math> and <math>r_1</math> respectively, namely <math>R'_i=\phi_i(r_i)</math>, so that moreover <math>\phi_0(p)=\phi_1(p)</math> for all <math>p\in\textrm{fp}(r_0)</math> (in particular, <math>\textrm{fp}(R'_0)=\textrm{fp}(R'_1)</math>);<br />
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;<br />
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;<br />
such that each <math>R_i</math> is nominally isomorphic to<br />
<math>R'_i\bowtie_f{R''}</math>.<br />
<br />
=== Typing ===<br />
<br />
A typing system on signature <math>\Sigma</math> is the data of a<br />
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,<br />
together with a typing discipline for each symbol, ''i.e.'' a relation<br />
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.<br />
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma<br />
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.<br />
<br />
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math><br />
such that:<br />
<br />
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;<br />
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;<br />
where, in the last formula, we implicitly generalized<br />
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,<br />
in the obvious, componentwise fashion.<br />
The ''interface'' of the typed net <math>(R,\tau)</math> is then<br />
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.<br />
<br />
The idea, is that a wire <math>\{p,q\}</math> bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in<br />
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule<br />
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)<br />
to active outputs (conclusions).<br />
<br />
Observe that if <math>(R,\tau)</math> is a typed net, and<br />
<math>\phi:R\cong R'</math> is an isomorphism,<br />
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:<br />
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.<br />
<br />
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets<br />
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and<br />
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.<br />
Then this induces a typing of <math>R\bowtie_f{R'}</math><br />
preserving the interface on the remaining free ports.<br />
<br />
=== Boxes ===<br />
<br />
TODO</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/A_formal_account_of_netsA formal account of nets2012-08-31T11:18:21Z<p>Lionel Vaux: </p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring out most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== Preliminaries ==<br />
<br />
=== The short story ===<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* the top/down or passive/active orientation of cells is related with the distinction between premisses and conclusions of rules, (and in that sense, a cut is not a logical rule, but the focus of interaction between two rules);<br />
* cuts are thus wires rather than cells/links: this fits with the intuition of GoI, but not with the most common presentations of proof nets;<br />
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.<br />
=== Conventions ===<br />
<br />
If <math>A</math> and <math>B</math> are sets, we write <math>A+B</math> for<br />
<math>\{0\}\times A \cup \{1\}\times B</math>.<br />
More generally,<br />
<math>A_0+\cdots+A_n=\{0\}\times A \cup {\cdots} \cup \{n\}\times A_n</math>.<br />
There are natural bijections <math>A+(B+C)\cong A+B+C \cong (A+B)+C</math>.<br />
<br />
== Nets ==<br />
<br />
=== Wires ===<br />
<br />
A ''wiring'' is the data of a finite set <math>P</math> of ports<br />
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):<br />
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.<br />
Hence a wiring is equivalently given by<br />
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,<br />
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then<br />
the orbits.<br />
Another equivalent presentation is to consider <math>{W}</math> as<br />
a (simple, loopless, undirected) graph, with vertices in P,<br />
all of degree 1.<br />
<br />
We say two wirings are disjoint when their sets of ports are.<br />
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is<br />
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,<br />
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\cong I'</math>.<br />
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained<br />
by identifying the ports pairwise mapped by <math>f</math>, and then<br />
``straightening`` the paths thus obtained to recover wires:<br />
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math><br />
for the number of loops thus appeared.<br />
<br />
We describe these operations a bit more formally.<br />
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.<br />
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in<br />
<math>P\cup P'</math>, and such that<br />
there is an edge between <math>p</math> and <math>q</math> iff<br />
<math>q={W}(p)</math> or<br />
<math>q={W'}(p)</math> or<br />
<math>q=f(p)</math> or<br />
<math>p=f(q)</math>:<br />
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.<br />
Vertices in <math>P_0\cup P'_0</math><br />
are of degree 1, and the others are of degree 2.<br />
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:<br />
<br />
* straight paths, with both ends in <math>P_0\cup P_0'</math>;<br />
* cycles, with vertices all in <math>I\cup I'</math>.<br />
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that<br />
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.<br />
And <math>\Inner{W}{W'}_{f}</math> is the number of<br />
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely<br />
the number of support sets of cycles (i.e. we forget about the starting<br />
vertice of cycles).<br />
<br />
{{Lemma|<br />
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,<br />
and two connections <math>(I,I',f):P\pinj P'</math> and<br />
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.<br />
Then<br />
<br />
<math> (W\bowtie_f W')\bowtie_g W''=<br />
W\bowtie_f(W'\bowtie_g W'')</math><br />
<br />
and<br />
<br />
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=<br />
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math><br />
}}<br />
<br />
{{Proof|<br />
The first equation holds because open maximal paths in<br />
<math>W\dblcolon_f{W'\bowtie_g}{{W}''}</math> correspond with those in<br />
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in<br />
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in<br />
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.<br />
The second equation holds because both sides are two possible writings for<br />
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math><br />
}}<br />
<br />
=== Nets ===<br />
<br />
A ''signature'' is the data of a set<br />
<math>\Sigma</math> of symbols, together with arity functions<br />
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of<br />
''active'' ports, or conclusions)<br />
and <math>\pi:\Sigma\to\mathbf N</math> (number of<br />
''passive'' ports, or hypotheses).<br />
In the remaining, we assume<br />
such a signature is given.<br />
<br />
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of<br />
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists<br />
of pairwise distinct ports:<br />
<math>\alpha(c)\in P^{\alpha(\sigma)}</math><br />
is the list of ''active'' ports<br />
and <math>\pi(c)\in P^{\pi(\sigma)}</math><br />
is the list of ''passive'' ports.<br />
<br />
A ''net'' is the data of a wiring <math>(P,W)</math> and of a set <math>C</math> of disjoint cells on<br />
<math>P</math>. It follows from the definitions that each port <math>p\in P</math> appears in<br />
exactly one wire and in at most one cell: we say <math>p</math> is ''free'' if it is<br />
not part of a cell, and <math>p</math> is ''internal'' otherwise. We write <math>\textrm{fp}(R)</math> for<br />
the set of free ports of a net <math>R</math>.<br />
<br />
Generally, the “names” of internal ports of a net are not relevant, but free<br />
ports matter most often: internal ports are the analogue of bound variables in<br />
<math>\lambda</math>-terms.<br />
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math><br />
is the data of a bijection of ports <math>\phi:P\cong P'</math> and a bijection<br />
of cells <math>\psi:C\cong C'</math> such that:<br />
<br />
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;<br />
* for all <math>c\in C</math>:<br />
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.<br />
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math><br />
implies <math>p=\phi(p)</math>.<br />
<br />
=== Rewriting ===<br />
<br />
We say two nets are disjoint when their sets of ports are.<br />
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a<br />
connection between <math>W</math> and <math>W'</math>, such that<br />
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.<br />
We then write <math>R\bowtie_f{R'}</math> for the net<br />
with wiring <math>W\bowtie_f{W'}</math> and cells<br />
<math>C\cup C'</math>.<br />
<br />
{{Lemma|<br />
Let <math>R_0</math>, <math>R_1</math> and <math>R'</math> be nets such that <math>R_0</math> and <math>R_1</math><br />
are disjoint from <math>R</math>,<br />
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math><br />
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that<br />
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.<br />
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to<br />
<math>R_1\bowtie_{f\circ\phi^{-1}}{R'}</math>.<br />
}}<br />
<br />
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets<br />
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule<br />
is a pair <math>(R_0,R_1)</math> such that there exist:<br />
<br />
* nets <math>R'_0</math> and <math>R'_1</math> isomorphic to <math>r_0</math> and <math>r_1</math> respectively, namely <math>R'_i=\phi_i(r_i)</math>, so that moreover <math>\phi_0(p)=\phi_1(p)</math> for all <math>p\in\textrm{fp}(r_0)</math> (in particular, <math>\textrm{fp}(R'_0)=\textrm{fp}(R'_1)</math>);<br />
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;<br />
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;<br />
such that each <math>R_i</math> is nominally isomorphic to<br />
<math>R'_i\bowtie_f{R''}</math>.<br />
<br />
=== Typing ===<br />
<br />
A typing system on signature <math>\Sigma</math> is the data of a<br />
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,<br />
together with a typing discipline for each symbol, ''i.e.'' a relation<br />
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.<br />
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma<br />
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.<br />
<br />
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math><br />
such that:<br />
<br />
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;<br />
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;<br />
where, in the last formula, we implicitly generalized<br />
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,<br />
in the obvious, componentwise fashion.<br />
The ''interface'' of the typed net <math>(R,\tau)</math> is then<br />
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.<br />
<br />
The idea, is that a wire <math>\{p,q\}</math> bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in<br />
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule<br />
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)<br />
to active outputs (conclusions).<br />
<br />
Observe that if <math>(R,\tau)</math> is a typed net, and<br />
<math>\phi:R\cong R'</math> is an isomorphism,<br />
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:<br />
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.<br />
<br />
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets<br />
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and<br />
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.<br />
Then this induces a typing of <math>R\bowtie_f{R'}</math><br />
preserving the interface on the remaining free ports.<br />
<br />
=== Boxes ===<br />
<br />
TODO</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Proof-netsProof-nets2012-08-31T11:17:57Z<p>Lionel Vaux: Blanked the page</p>
<hr />
<div></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Proof-netsProof-nets2012-08-30T23:43:00Z<p>Lionel Vaux: Created page with "The aim of this page is to provide a common framework for describing linear logic proof nets, interaction nets, multiport interaction nets, and the likes, while factoring out mos…"</p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring out most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== Preliminaries ==<br />
<br />
=== The short story ===<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* the top/down or passive/active orientation of cells is related with the distinction between premisses and conclusions of rules, (and in that sense, a cut is not a logical rule, but the focus of interaction between two rules);<br />
* cuts are thus wires rather than cells/links: this fits with the intuition of GoI, but not with the most common presentations of proof nets;<br />
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.<br />
=== Conventions ===<br />
<br />
If <math>A</math> and <math>B</math> are sets, we write <math>A+B</math> for<br />
<math>\{0\}\times A \cup \{1\}\times B</math>.<br />
More generally,<br />
<math>A_0+\cdots+A_n=\{0\}\times A \cup {\cdots} \cup \{n\}\times A_n</math>.<br />
There are natural bijections <math>A+(B+C)\cong A+B+C \cong (A+B)+C</math>.<br />
<br />
== Nets ==<br />
<br />
=== Wires ===<br />
<br />
A ''wiring'' is the data of a finite set <math>P</math> of ports<br />
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):<br />
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.<br />
Hence a wiring is equivalently given by<br />
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,<br />
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then<br />
the orbits.<br />
Another equivalent presentation is to consider <math>{W}</math> as<br />
a (simple, loopless, undirected) graph, with vertices in P,<br />
all of degree 1.<br />
<br />
We say two wirings are disjoint when their sets of ports are.<br />
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is<br />
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,<br />
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\leftrightarrow I'</math>.<br />
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained<br />
by identifying the ports pairwise mapped by <math>f</math>, and then<br />
``straightening`` the paths thus obtained to recover wires:<br />
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math><br />
for the number of loops thus appeared.<br />
<br />
We describe these operations a bit more formally.<br />
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.<br />
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in<br />
<math>P\cup P'</math>, and such that<br />
there is an edge between <math>p</math> and <math>q</math> iff<br />
<math>q={W}(p)</math>,<br />
<math>q={W'}(p)</math>,<br />
<math>q=f(p)</math>,<br />
<math>p=f(q)</math>:<br />
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.<br />
Vertices in <math>P_0\cup P'_0</math><br />
are of degree 1, and the others are of degree 2.<br />
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:<br />
<br />
* straight paths, with both ends in <math>P_0\cup P_0'</math>;<br />
* cycles, with vertices all in <math>I\cup I'</math>.<br />
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that<br />
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.<br />
And <math>\Inner{W}{W'}_{f}</math> is the number of<br />
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely<br />
the number of support sets of cycles (i.e. we forget about the starting<br />
vertice of cycles).<br />
<br />
{{Lemma|<br />
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,<br />
and two connections <math>(I,I',f):P\pinj P'</math> and<br />
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.<br />
Then<br />
<br />
<math> (W\bowtie_f W')\bowtie_g W''=<br />
W\bowtie_f(W'\bowtie_g W'')</math><br />
<br />
and<br />
<br />
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=<br />
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math><br />
}}<br />
<br />
{{Proof|<br />
The first equation holds because open maximal paths in<br />
<math>W\dblcolon_f{W\bowtie_g'}{{W}''}</math> correspond with those in<br />
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in<br />
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in<br />
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.<br />
The second equation holds because both sides are two possible writings for<br />
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math><br />
}}<br />
<br />
=== Nets ===<br />
<br />
A ''signature'' is the data of a set<br />
<math>\Sigma</math> of symbols, together with arity functions<br />
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of<br />
''active'' ports, or conclusions)<br />
and <math>\pi:\Sigma\to\mathbf N</math> (number of<br />
''passive'' ports, or hypotheses).<br />
In the remaining, we assume<br />
such a signature is given.<br />
<br />
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of<br />
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists<br />
of pairwise distinct ports:<br />
<math>\alpha(c)\in P^{\alpha(\sigma)}</math><br />
is the list of ''active'' ports<br />
and <math>\pi(c)\in P^{\pi(\sigma)}</math><br />
is the list of ''passive'' ports.<br />
<br />
A ''net'' is the data of a wiring <math>(P,W)</math> and of a set <math>C</math> of disjoint cells on<br />
<math>P</math>. It follows from the definitions that each port <math>p\in P</math> appears in<br />
exactly one wire and in at most one cell: we say <math>p</math> is ''free'' if it is<br />
not part of a cell, and <math>p</math> is ''internal'' otherwise. We write <math>\textrm{fp}(R)</math> for<br />
the set of free ports of a net <math>R</math>.<br />
<br />
Generally, the “names” of internal ports of a net are not relevant, but free<br />
ports matter most often: internal ports are the analogue of bound variables in<br />
<math>\lambda</math>-terms.<br />
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math><br />
is the data of a bijection of ports <math>\phi:P\leftrightarrow P'</math> and a bijection<br />
of cells <math>\psi:C\leftrightarrow C'</math> such that:<br />
<br />
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;<br />
* for all <math>c\in C</math>:<br />
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.<br />
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math><br />
implies <math>p=\phi(p)</math>.<br />
<br />
=== Rewriting ===<br />
<br />
We say two nets are disjoint when their sets of ports are.<br />
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a<br />
connection between <math>W</math> and <math>W'</math>, such that<br />
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.<br />
We then write <math>R\bowtie_f{R'}</math> for the net<br />
with wiring <math>W\bowtie_f{W'}</math> and cells<br />
<math>C\cup C'</math>.<br />
<br />
{{Lemma|<br />
Let <math>R_0</math>, <math>R_1</math> and <math>R'</math> be nets such that <math>R_0</math> and <math>R_1</math><br />
are disjoint from <math>R</math>,<br />
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math><br />
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that<br />
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.<br />
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to<br />
<math>R_1\bowtie_f\circ\phi^{-1}{R'}</math>.<br />
}}<br />
<br />
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets<br />
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule<br />
is a pair <math>(R_0,R_1)</math> such that there exist:<br />
<br />
* a nets <math>R'_0</math> and <math>R'_1</math> isomorphic to <math>r_0</math> and <math>r_1</math> respectively, namely <math>R'_i=\phi_i(r_i)</math>, so that moreover <math>\phi_0(p)=\phi_1(p)</math> for all <math>p\in\textrm{fp}(r_0)</math> (in particular, <math>\textrm{fp}(R'_0)=\textrm{fp}(R'_1)</math>);<br />
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;<br />
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;<br />
such that each <math>R_i</math> is nominally isomorphic to<br />
<math>R'_i\bowtie_f{R''}</math>.<br />
<br />
=== Typing ===<br />
<br />
A typing system on signature <math>\Sigma</math> is the data of a<br />
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,<br />
together with a typing discipline for each symbol, ''i.e.'' a relation<br />
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.<br />
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma<br />
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.<br />
<br />
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math><br />
such that:<br />
<br />
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;<br />
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;<br />
where, in the last formula, we implicitly generalized<br />
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,<br />
in the obvious, componentwise fashion.<br />
The ''interface'' of the typed net <math>(R,\tau)</math> is then<br />
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.<br />
<br />
The idea, is that a wire <math>{p,q}</math>, bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in<br />
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule<br />
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)<br />
to active outputs (conclusions).<br />
<br />
Observe that if <math>(R,\tau)</math> is a typed net, and<br />
<math>\phi:R\leftrightarrow R'</math> is an isomorphism,<br />
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:<br />
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.<br />
<br />
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets<br />
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and<br />
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.<br />
Then this induces a typing of <math>R\bowtie_f{R'}</math><br />
preserving the interface on the remaining free ports.<br />
<br />
=== Boxes ===<br />
<br />
TODO</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/A_formal_account_of_netsA formal account of nets2012-02-15T16:16:29Z<p>Lionel Vaux: stub</p>
<hr />
<div>The aim of this page is to provide a common framework for describing linear<br />
logic proof nets, interaction nets, multiport interaction nets, and the likes,<br />
while factoring most of the tedious, uninteresting details (clearly not the<br />
fanciest page of LLWiki).<br />
<br />
== The short story ==<br />
<br />
* the general flavor is that of multiport interaction nets;<br />
* cuts are thus wires rather than cells/links:<br />
this fits with the intuition of GoI, <br />
but not with usual presentations of proof nets;<br />
* the top/down or passive/active orientation of cells<br />
is related with the distinction between premisses and conclusions of rules,<br />
(and in that sense, a cut is not a logical rule, but the focus of interaction <br />
between two rules);<br />
* when representing proof nets, we introduce axioms as cells.<br />
<br />
<br />
== Nets ==<br />
<br />
== Plugging ==<br />
<br />
=== The particular case of proof-like nets ===<br />
<br />
== Rewriting ==<br />
<br />
== Boxes ==</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Talk:Proof-netsTalk:Proof-nets2011-01-17T13:46:23Z<p>Lionel Vaux: /* Complément de Michele sur ce qu'on voudrait pouvoir traiter */</p>
<hr />
<div>Maybe we should try and start again our discussion concerning proof nets, <br />
their definition(s), and their graphical representations on this wiki.<br />
First, I leave some open questions:<br />
* Is there anything new concerning this matter ?<br />
* Can we agree on some common ground to start these pages ?<br />
* Why not start from scratch and see what breaks ?<br />
In order to fix ideas, I recall the main points of our email discussions of October 2009. --[[User:Lionel Vaux|Lionel Vaux]] 13:45, 17 January 2011 (UTC)<br />
<br />
== Discussion des 11-12 oct. 2009 ==<br />
<br />
=== Message initial d'Olivier ===<br />
<br />
Bonjour a tous,<br />
<br />
Il est grand temps de commencer a se pencher sur la question des reseaux de preuve dans llwiki.<br />
<br />
Je vous rappelle quelques elements que je suggerais dans mon precedent mail sur la question :<br />
<blockquote>De maniere a pouvoir commencer a parler de reseaux de preuve dans le wiki, il semble necessaire de:<br />
* Faire un choix de definition formelle principale qui sera utilisee dans les differentes pages parlant de reseaux (il faut donc qu'elle s'adapte facilement aux differentes extensions que l'on voudra traiter). Des definitions alternatives pourront etre decrites dans la page des reseaux (ou des pages specifiques) mais pas utilisees en dehors.<br />
* Definir une syntaxe pour saisir les reseaux (au moins pour les plus simples, ou en fournissant la possibilite de donner des indications de placements de noeuds, ...).<br />
* Choisir comment dessiner les reseaux a partir de la syntaxe de saisie et les integrer dans les pages du wiki.</blockquote><br />
<br />
Je vous propose dans un premier temps de faire une collecte de suggestions :<br />
* votre (vos) choix de definition formelle de reseaux (juste une esquisse des elements clefs)<br />
* la syntaxe dont vous reveriez pour ecrire vos reseaux<br />
* votre moteur favori pour dessiner/afficher des reseaux<br />
* des exemples significatifs de reseaux de maniere a faire un peu de benchmark entre les differentes propositions des 3 points precedents<br />
<br />
J'attends vos propositions,<br />
Olivier.<br />
<br />
<br />
=== Définition formelle des réseaux ===<br />
<br />
==== Contribution de Laurent ====<br />
<br />
Réseaux de preuve = réseau d'interaction (plus boîtes), c'est à dire un<br />
ensemble de ports, un ensemble de tuples de ports (les cellules) et un ensemble<br />
de couples de ports (les fils) et tout le tintouin qui va avec.<br />
<br />
''Question d'Olivier'': comment est-ce qu'on traite les axiomes et coupures ? comme des fils ou comme des cellules bi-ports ?<br />
<br />
''Réponse de Laurent'': Je proteste: ces questions ne sont pas bateau. En toute rigueur si on veut<br />
coller à la définition originale de Girard (et accessoirement pour d'autres<br />
raisons intéressantes comme par exemple définir simplement la eta-expansion,<br />
garder la possibilité de définir la réduction non-ax) il faut des cellules<br />
bi-ports ce qui oblige à lever la restriction "un unique port ppal" des réseaux<br />
d'interaction (les restrictions sont faites pour être levées s'pas?). Après on<br />
peut ajouter qu'il est souvent commode - par exemple pour définir les réseaux<br />
diff ou les zones de broadcast - de virer les cellules ax et cut.<br />
<br />
''Remarque de Lorenzo'': Tout à fait d'accord avec la remarque de Laurent (Regnier :-), autrement c'est tautologique).<br />
<br />
''Question d'Olivier'': comment definit-on les boites ? comme des sous-reseaux ou comme des cellules (multi-ports ?) auquelles sont recursivement associes des reseaux ?<br />
<br />
''Réponse de Laurent'': Des cellules auxquelles sont récursivement associés des réseaux.<br />
<br />
''Remarque de Lorenzo'': Là aussi, je suis d'accord. Il m'est arrivé cependant de faire subir des opérations chirurgicales délicates aux réseaux (notamment en étudiant l'injectivité), et je pense que ce serait utile d'avoir une définition permettant facilement de décrire l'effacement du pourtour des boites. L'option préconisée par Laurent me parait compatible avec cette nécessité (quitte à rajouter une cellule porte auxiliaire de boite $?P$).<br />
<br />
==== Contribution de Marc ====<br />
<br />
Bon il faut se demander ce que l'on a envie de faire avec des réseaux.<br />
Voila ce que j'imagine. On veut :<br />
* (a) pouvoir décrire facilement des traductions dans les réseaux<br />
* (b) pouvoir écrire naturellement des réseaux<br />
* (c) avoir une définition de la réduction autrement qu'avec les mains<br />
* (d) avoir un partage entre les réseaux de preuve et les réseaux d'interaction<br />
* (e) pouvoir ajouter des boites (promotion et additives)<br />
* (f) pouvoir ajouter des sommes<br />
* (g) avoir une notion de chemins et de réduction de chemins pour pouvoir embrayer sur la gdi à la D-R<br />
J'annonce la couleur tout de suite, il n'existe pas, à mon avis, une<br />
solution parfaite pour tout cela.<br />
Dans ma thèse j'ai une définition qui nous permet de faire bien c-d-g, a peu<br />
près a-e-f, mais qui n'est pas vraiment une représentation très naturelle<br />
(enfin c'est celle que propose Laurent à peu de différences près).<br />
Pour résumer j'ai une définition des réseaux qui permet de définir la<br />
réduction par clôture au contexte.<br />
<br />
<br />
==== Contribution de Michele ====<br />
<br />
Moi j'hesite entre trois differentes definitions des reseaux, chaque<br />
definition ayant des pour et contre. Je note ici un'esquisse des mes<br />
choix, avec les + et les -...<br />
<br />
(ne me pas grondez trop durament pour mon fraicais et mes impardonnables omissions: ils sont des notes, ecrites rapidement ;-)).<br />
<br />
(j'omets des variants plus specifiques comme "reseaux = forets des formules + axiom linking"...).<br />
<br />
<br />
===== Syntaxe JY =====<br />
<br />
<br />
JY=Jean-Yves Girard.<br />
<br />
un reseau est un '''hypergraphe''' etiquete, les noeds etant les (occurrences des) formules, et les hyperaretes etant les regles deductives (axiomes et coupures y compris).<br />
<br />
* + definition formelle simple<br />
* + elegant traitement de fussionement des formules pour composer les modules (voir minus de syntax Y);<br />
* - distinction entre conclusion et hypothese, donc distinction entre reseau et module: regles de reduction doivent etre definies sur les modules (redexes et contracta sont modules). En plus, immaginez quelle "joie" est introduire les sommes formelles de modules, pour parler de sliced proof nets, ou des reseaux differentiels;<br />
* - l'elimination des coupures sur les '''structures''' de preuve (il faut permettre la reduction aussi en presence des erreurs, bien sur!) crée des circles vicieux (e.g. une contraction ayant une parmi ses premisses comme conclusion): laid à les dessiner;<br />
* - la presence des axioms est legerement antypatique pour etudier la correspondence lambda-calcul/réseaux, et tout à fait antypatique pour parler des reseaux differentiels (reduction contraction/cocontraction introduise des axioms).<br />
<br />
<br />
===== Syntaxe L =====<br />
<br />
L=Laurent regnier (PhD Thesis), comme olivier Laurent (PhD Thesis) et beaucoup d'autres autors, comme Lorenzo tortora de falco et la plus parts des papiers sur les logiques Legeres.<br />
<br />
un reseau est un '''graphe''' etiquete, les regles sont les noeds et les aretes les (occurrences des) formules<br />
<br />
* + pedagogiquement superefficace: les graphes sont beaucoup plus intuitives des hypergraphes; aussi formellement la syntax L peut etre definie sans trop "baroquisme";<br />
* + les circles vicieux (e.g. une contraction ayant une premisse comme sa conclusion) peuvent etre facilement dessines; en general les dessins resultent jolis<br />
* + comme dans JY, elegant fussionement des aretes pour composer les modules (cela depend du fait que on a les axiomes explicits);<br />
* - memes problemes de la syntaxe JY: distinction conclusion/hypothese, reseau/module, presence axiomes antypatique pour reseaux differentiels.<br />
<br />
<br />
===== Syntaxe Y =====<br />
<br />
Y=Yves Lafont, base de depart des reseaux differentiels.<br />
<br />
un reseau est un '''graphe et un hypergraphe''', le graphe donnant les wires (i.e. les occurences des formules (modulo dualite) et regles identite (axioms et coupure)) et l'hypergraphe donnant les cellules (i.e. les regles logiques et structurelles).<br />
<br />
* + distinction entre conclusion et hypothese d'un module devient une difference d'orientation des wires, quelle elegance! On depasse la distinction entre reseau et module;<br />
* + mis en evidence des coupures commutatives, comme la coupure qui depasse le paradigme des réseaux *d'interactions* (commutative = coupure ayant une porte active qui n'est pas principal, i.e. porte auxiliare boite)<br />
* +/- superjolie dessins, au niveau graphique la syntaxe Y est sans doute la meilleur mais au niveau de definition formelle elle est lourde (deux structure graphique, wires et cells...)<br />
* - laborieuse definition de fussionement des conclusions entre reseaux (voir theses de Damiano et Lionel ("alpha"-reecriture que fonde step by step les wires a fusionner), sinon voir solution Marc (reseaux = permutations, mais puis il faut bien definire les cellules "commutatives", comme la contraction...))<br />
<br />
Les trois groupes peuvent avoir differentes "declinations", selon la maniere d'approcher à des problemes classiques des réseaux, par exemples:<br />
<br />
* boites (exponentielles, additives...): sont des regles sequentielles (i.e. in JY (resp. L et Y) des hyperarretes (resp. des noeds, cellules) etiquettes par des reseaux), ou des "zones" qui delimites des sousgraphes? (moi je suis pour la solution des boites comme regles sequentielles, beaucoup plus elegante au niveau formel)<br />
* definition des reductions canoniques (associativite des contractions, neutralite affaiblissement, commutations de la contraction avec la porte auxiliaire) ou utilisation de rapresentantes canoniques?<br />
* definition des additives (& et \top) par boites, tranches, poids etc; definition du second ordre par boites ou subtiles conditions d'avoir variables lies distincte deux à deux; etc.<br />
<br />
<br />
=== Syntaxe pour écrire vos reseaux ===<br />
<br />
<br />
==== Laurent ====<br />
<br />
Le calcul des séquents.<br />
<br />
''Question d'Olivier'': c'est une base solide ! un petit defaut est, pour des reseaux un peu gros : est-ce que l'information induite pour le placement des noeuds est suffisante ou faut-il un moyen de rajouter une telle information ?<br />
<br />
<br />
==== Marc ====<br />
<br />
Je propose deux syntaxes : une syntaxe permettant par exemple d'écrire un lambda-terme et que le réseau se fasse tout seul, et une syntaxe explicite pour écrire des réseaux, cette-dernière devrait être assez proche de la syntaxe d'Yves pour les réseaux d'interaction. L'idéal serait d'avoir une syntaxe hybride permettant de manipuler des traductions comme des sortes de boites.<br />
<br />
<br />
==== Michele ====<br />
<br />
calcul de sequent, avec tensor/coupure unaire si je veux ecrire des reseaux pas corrects<br />
<br />
<br />
=== Moteur pour dessiner/afficher des réseaux ===<br />
<br />
<br />
==== Marc ====<br />
<br />
J'ai un moteur basé sur ma proposition précédente. Pour le moment j'ai du code caml pour écrire et réduire des réseaux d'interaction (avec somme) et du code pour faire du placement automatique. Le tout affichant une interface pour modifier le dessin. Pour pouvoir l'intégrer au wiki il faudrait rajouter une interface oueb, et c'est là le problème. Vincent Balat a un truc permettant de faire exécuter du caml sur un navigateur par un interprète bytecode en javascript, ca devrait suffir à nos besoins, mais je ne sais pas si on peut l'avoir indépendemment de Ocsigen. En tout cas, pour continuer ce programme j'ai un problème de temps, donc pour le rendre productif il faudrait que j'ai de l'aide.<br />
<br />
<br />
==== Michele ====<br />
<br />
quand je suis tout seul: xfig (pas superjolie mais efficace, avec<br />
"combined Latex/Pdf"); quand j'ai l'assistence de Paolo j'utilise son<br />
package basé sur tikz... les dessins sont magnifiques, mais je trouve<br />
la syntaxe encor trop difficile pour moi quand je dois dessiner des<br />
reseaux avec boites, sommes formelles et quelques cycles...<br />
<br />
<br />
=== Exemples significatifs de réseaux ===<br />
<br />
<br />
==== Laurent ====<br />
<br />
Le contre-exemple de David à l'injectivité de la sémantique en lambda-mu-calcul.<br />
<br />
<br />
==== Marc ====<br />
<br />
Je propose les zones de communication, parce que c'est l'exemple typique de<br />
réseau n'ayant pas d'orientation verticale naturelle.<br />
<br />
<br />
==== Michele ====<br />
<br />
* ''reseaux et semantique'': controexemple injectivité dans Coh qui ''vient'' de David-Py (l'originale de David-Py est separé dans Coh); controexemple injectivité Coh sans boite (Lorenzo docet); controexemple injectivité de Rel (:o, non, je rigole, je ne l'ai pas...)<br />
* ''reseaux et elimination de coupures'': controexemple confluence et/ou normalisation en presence de cycle switching ou des types pures; contrexemple à confluence de DiLL sans associativité de (co)contraction.<br />
<br />
<br />
=== Complément de Michele sur ce qu'on voudrait pouvoir traiter ===<br />
<br />
Il peut etre utile pour bien choisir une syntaxe et un langage pour<br />
ecrire les reseaux avoir en tete les sujets qu'on veut traiter. Ici<br />
une petite liste de sujets que je trouve tres amusants (il est<br />
vraiment une esquisse, pour commencer la discussion):<br />
<br />
* reseaux et sequentialization (critere de correction):<br />
** dans MLL (critere voyage, switching acyclicité et connexion, contractions (linearité du critere), autres?); problemes des unites (solutions ?, reseaux MLL et categories *-autonome);<br />
** dans MELL: extension facile avec mix (probleme affaiblissement analogue problemes des unites); extension au "lambdaMELL" (fragment minimale de MELL);<br />
** dans MALL..........................................<br />
** criteres polarises (LLpol et LLP);<br />
** dans LL2<br />
* lambda calcul:<br />
** resultats de bisimulation<br />
** reseaux et lambda calcul avec substitutions explicites<br />
** reseaux polarise et calculs avec stream (lambdamu, lambdac, etc)<br />
* elimination des coupures:<br />
** normalisation (avec correction + types), developments finis (reduction exponentielle termine), interaction et correction (Th de Bechet)<br />
** confluence (avec correction et tranches additives); perpetualité;<br />
** classes de complexité borné (proprietes structurelles des reseaux qui caracterisent des classes de complexité)<br />
* semantique:<br />
** webbed semantics: experiments, injectivité, correction semantique et logique (problemes dans MELL, dans MALL)<br />
** game semantics et GoI<br />
* reseaux differentiels (DiLL):<br />
** traduction de LL dans DiLL<br />
** calcul avec ressources (et differentiel) dans DiLL<br />
** pi-calcul dans DiLL<br />
** proprietes d'elimination des coupures dans DiLL (confluence, normalization, developements finis, standardisation, perpetualité)</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Talk:Proof-netsTalk:Proof-nets2011-01-17T13:46:07Z<p>Lionel Vaux: /* Complément de Michele sur ce qu'on voudrait pouvoir traiter = */</p>
<hr />
<div>Maybe we should try and start again our discussion concerning proof nets, <br />
their definition(s), and their graphical representations on this wiki.<br />
First, I leave some open questions:<br />
* Is there anything new concerning this matter ?<br />
* Can we agree on some common ground to start these pages ?<br />
* Why not start from scratch and see what breaks ?<br />
In order to fix ideas, I recall the main points of our email discussions of October 2009. --[[User:Lionel Vaux|Lionel Vaux]] 13:45, 17 January 2011 (UTC)<br />
<br />
== Discussion des 11-12 oct. 2009 ==<br />
<br />
=== Message initial d'Olivier ===<br />
<br />
Bonjour a tous,<br />
<br />
Il est grand temps de commencer a se pencher sur la question des reseaux de preuve dans llwiki.<br />
<br />
Je vous rappelle quelques elements que je suggerais dans mon precedent mail sur la question :<br />
<blockquote>De maniere a pouvoir commencer a parler de reseaux de preuve dans le wiki, il semble necessaire de:<br />
* Faire un choix de definition formelle principale qui sera utilisee dans les differentes pages parlant de reseaux (il faut donc qu'elle s'adapte facilement aux differentes extensions que l'on voudra traiter). Des definitions alternatives pourront etre decrites dans la page des reseaux (ou des pages specifiques) mais pas utilisees en dehors.<br />
* Definir une syntaxe pour saisir les reseaux (au moins pour les plus simples, ou en fournissant la possibilite de donner des indications de placements de noeuds, ...).<br />
* Choisir comment dessiner les reseaux a partir de la syntaxe de saisie et les integrer dans les pages du wiki.</blockquote><br />
<br />
Je vous propose dans un premier temps de faire une collecte de suggestions :<br />
* votre (vos) choix de definition formelle de reseaux (juste une esquisse des elements clefs)<br />
* la syntaxe dont vous reveriez pour ecrire vos reseaux<br />
* votre moteur favori pour dessiner/afficher des reseaux<br />
* des exemples significatifs de reseaux de maniere a faire un peu de benchmark entre les differentes propositions des 3 points precedents<br />
<br />
J'attends vos propositions,<br />
Olivier.<br />
<br />
<br />
=== Définition formelle des réseaux ===<br />
<br />
==== Contribution de Laurent ====<br />
<br />
Réseaux de preuve = réseau d'interaction (plus boîtes), c'est à dire un<br />
ensemble de ports, un ensemble de tuples de ports (les cellules) et un ensemble<br />
de couples de ports (les fils) et tout le tintouin qui va avec.<br />
<br />
''Question d'Olivier'': comment est-ce qu'on traite les axiomes et coupures ? comme des fils ou comme des cellules bi-ports ?<br />
<br />
''Réponse de Laurent'': Je proteste: ces questions ne sont pas bateau. En toute rigueur si on veut<br />
coller à la définition originale de Girard (et accessoirement pour d'autres<br />
raisons intéressantes comme par exemple définir simplement la eta-expansion,<br />
garder la possibilité de définir la réduction non-ax) il faut des cellules<br />
bi-ports ce qui oblige à lever la restriction "un unique port ppal" des réseaux<br />
d'interaction (les restrictions sont faites pour être levées s'pas?). Après on<br />
peut ajouter qu'il est souvent commode - par exemple pour définir les réseaux<br />
diff ou les zones de broadcast - de virer les cellules ax et cut.<br />
<br />
''Remarque de Lorenzo'': Tout à fait d'accord avec la remarque de Laurent (Regnier :-), autrement c'est tautologique).<br />
<br />
''Question d'Olivier'': comment definit-on les boites ? comme des sous-reseaux ou comme des cellules (multi-ports ?) auquelles sont recursivement associes des reseaux ?<br />
<br />
''Réponse de Laurent'': Des cellules auxquelles sont récursivement associés des réseaux.<br />
<br />
''Remarque de Lorenzo'': Là aussi, je suis d'accord. Il m'est arrivé cependant de faire subir des opérations chirurgicales délicates aux réseaux (notamment en étudiant l'injectivité), et je pense que ce serait utile d'avoir une définition permettant facilement de décrire l'effacement du pourtour des boites. L'option préconisée par Laurent me parait compatible avec cette nécessité (quitte à rajouter une cellule porte auxiliaire de boite $?P$).<br />
<br />
==== Contribution de Marc ====<br />
<br />
Bon il faut se demander ce que l'on a envie de faire avec des réseaux.<br />
Voila ce que j'imagine. On veut :<br />
* (a) pouvoir décrire facilement des traductions dans les réseaux<br />
* (b) pouvoir écrire naturellement des réseaux<br />
* (c) avoir une définition de la réduction autrement qu'avec les mains<br />
* (d) avoir un partage entre les réseaux de preuve et les réseaux d'interaction<br />
* (e) pouvoir ajouter des boites (promotion et additives)<br />
* (f) pouvoir ajouter des sommes<br />
* (g) avoir une notion de chemins et de réduction de chemins pour pouvoir embrayer sur la gdi à la D-R<br />
J'annonce la couleur tout de suite, il n'existe pas, à mon avis, une<br />
solution parfaite pour tout cela.<br />
Dans ma thèse j'ai une définition qui nous permet de faire bien c-d-g, a peu<br />
près a-e-f, mais qui n'est pas vraiment une représentation très naturelle<br />
(enfin c'est celle que propose Laurent à peu de différences près).<br />
Pour résumer j'ai une définition des réseaux qui permet de définir la<br />
réduction par clôture au contexte.<br />
<br />
<br />
==== Contribution de Michele ====<br />
<br />
Moi j'hesite entre trois differentes definitions des reseaux, chaque<br />
definition ayant des pour et contre. Je note ici un'esquisse des mes<br />
choix, avec les + et les -...<br />
<br />
(ne me pas grondez trop durament pour mon fraicais et mes impardonnables omissions: ils sont des notes, ecrites rapidement ;-)).<br />
<br />
(j'omets des variants plus specifiques comme "reseaux = forets des formules + axiom linking"...).<br />
<br />
<br />
===== Syntaxe JY =====<br />
<br />
<br />
JY=Jean-Yves Girard.<br />
<br />
un reseau est un '''hypergraphe''' etiquete, les noeds etant les (occurrences des) formules, et les hyperaretes etant les regles deductives (axiomes et coupures y compris).<br />
<br />
* + definition formelle simple<br />
* + elegant traitement de fussionement des formules pour composer les modules (voir minus de syntax Y);<br />
* - distinction entre conclusion et hypothese, donc distinction entre reseau et module: regles de reduction doivent etre definies sur les modules (redexes et contracta sont modules). En plus, immaginez quelle "joie" est introduire les sommes formelles de modules, pour parler de sliced proof nets, ou des reseaux differentiels;<br />
* - l'elimination des coupures sur les '''structures''' de preuve (il faut permettre la reduction aussi en presence des erreurs, bien sur!) crée des circles vicieux (e.g. une contraction ayant une parmi ses premisses comme conclusion): laid à les dessiner;<br />
* - la presence des axioms est legerement antypatique pour etudier la correspondence lambda-calcul/réseaux, et tout à fait antypatique pour parler des reseaux differentiels (reduction contraction/cocontraction introduise des axioms).<br />
<br />
<br />
===== Syntaxe L =====<br />
<br />
L=Laurent regnier (PhD Thesis), comme olivier Laurent (PhD Thesis) et beaucoup d'autres autors, comme Lorenzo tortora de falco et la plus parts des papiers sur les logiques Legeres.<br />
<br />
un reseau est un '''graphe''' etiquete, les regles sont les noeds et les aretes les (occurrences des) formules<br />
<br />
* + pedagogiquement superefficace: les graphes sont beaucoup plus intuitives des hypergraphes; aussi formellement la syntax L peut etre definie sans trop "baroquisme";<br />
* + les circles vicieux (e.g. une contraction ayant une premisse comme sa conclusion) peuvent etre facilement dessines; en general les dessins resultent jolis<br />
* + comme dans JY, elegant fussionement des aretes pour composer les modules (cela depend du fait que on a les axiomes explicits);<br />
* - memes problemes de la syntaxe JY: distinction conclusion/hypothese, reseau/module, presence axiomes antypatique pour reseaux differentiels.<br />
<br />
<br />
===== Syntaxe Y =====<br />
<br />
Y=Yves Lafont, base de depart des reseaux differentiels.<br />
<br />
un reseau est un '''graphe et un hypergraphe''', le graphe donnant les wires (i.e. les occurences des formules (modulo dualite) et regles identite (axioms et coupure)) et l'hypergraphe donnant les cellules (i.e. les regles logiques et structurelles).<br />
<br />
* + distinction entre conclusion et hypothese d'un module devient une difference d'orientation des wires, quelle elegance! On depasse la distinction entre reseau et module;<br />
* + mis en evidence des coupures commutatives, comme la coupure qui depasse le paradigme des réseaux *d'interactions* (commutative = coupure ayant une porte active qui n'est pas principal, i.e. porte auxiliare boite)<br />
* +/- superjolie dessins, au niveau graphique la syntaxe Y est sans doute la meilleur mais au niveau de definition formelle elle est lourde (deux structure graphique, wires et cells...)<br />
* - laborieuse definition de fussionement des conclusions entre reseaux (voir theses de Damiano et Lionel ("alpha"-reecriture que fonde step by step les wires a fusionner), sinon voir solution Marc (reseaux = permutations, mais puis il faut bien definire les cellules "commutatives", comme la contraction...))<br />
<br />
Les trois groupes peuvent avoir differentes "declinations", selon la maniere d'approcher à des problemes classiques des réseaux, par exemples:<br />
<br />
* boites (exponentielles, additives...): sont des regles sequentielles (i.e. in JY (resp. L et Y) des hyperarretes (resp. des noeds, cellules) etiquettes par des reseaux), ou des "zones" qui delimites des sousgraphes? (moi je suis pour la solution des boites comme regles sequentielles, beaucoup plus elegante au niveau formel)<br />
* definition des reductions canoniques (associativite des contractions, neutralite affaiblissement, commutations de la contraction avec la porte auxiliaire) ou utilisation de rapresentantes canoniques?<br />
* definition des additives (& et \top) par boites, tranches, poids etc; definition du second ordre par boites ou subtiles conditions d'avoir variables lies distincte deux à deux; etc.<br />
<br />
<br />
=== Syntaxe pour écrire vos reseaux ===<br />
<br />
<br />
==== Laurent ====<br />
<br />
Le calcul des séquents.<br />
<br />
''Question d'Olivier'': c'est une base solide ! un petit defaut est, pour des reseaux un peu gros : est-ce que l'information induite pour le placement des noeuds est suffisante ou faut-il un moyen de rajouter une telle information ?<br />
<br />
<br />
==== Marc ====<br />
<br />
Je propose deux syntaxes : une syntaxe permettant par exemple d'écrire un lambda-terme et que le réseau se fasse tout seul, et une syntaxe explicite pour écrire des réseaux, cette-dernière devrait être assez proche de la syntaxe d'Yves pour les réseaux d'interaction. L'idéal serait d'avoir une syntaxe hybride permettant de manipuler des traductions comme des sortes de boites.<br />
<br />
<br />
==== Michele ====<br />
<br />
calcul de sequent, avec tensor/coupure unaire si je veux ecrire des reseaux pas corrects<br />
<br />
<br />
=== Moteur pour dessiner/afficher des réseaux ===<br />
<br />
<br />
==== Marc ====<br />
<br />
J'ai un moteur basé sur ma proposition précédente. Pour le moment j'ai du code caml pour écrire et réduire des réseaux d'interaction (avec somme) et du code pour faire du placement automatique. Le tout affichant une interface pour modifier le dessin. Pour pouvoir l'intégrer au wiki il faudrait rajouter une interface oueb, et c'est là le problème. Vincent Balat a un truc permettant de faire exécuter du caml sur un navigateur par un interprète bytecode en javascript, ca devrait suffir à nos besoins, mais je ne sais pas si on peut l'avoir indépendemment de Ocsigen. En tout cas, pour continuer ce programme j'ai un problème de temps, donc pour le rendre productif il faudrait que j'ai de l'aide.<br />
<br />
<br />
==== Michele ====<br />
<br />
quand je suis tout seul: xfig (pas superjolie mais efficace, avec<br />
"combined Latex/Pdf"); quand j'ai l'assistence de Paolo j'utilise son<br />
package basé sur tikz... les dessins sont magnifiques, mais je trouve<br />
la syntaxe encor trop difficile pour moi quand je dois dessiner des<br />
reseaux avec boites, sommes formelles et quelques cycles...<br />
<br />
<br />
=== Exemples significatifs de réseaux ===<br />
<br />
<br />
==== Laurent ====<br />
<br />
Le contre-exemple de David à l'injectivité de la sémantique en lambda-mu-calcul.<br />
<br />
<br />
==== Marc ====<br />
<br />
Je propose les zones de communication, parce que c'est l'exemple typique de<br />
réseau n'ayant pas d'orientation verticale naturelle.<br />
<br />
<br />
==== Michele ====<br />
<br />
* ''reseaux et semantique'': controexemple injectivité dans Coh qui ''vient'' de David-Py (l'originale de David-Py est separé dans Coh); controexemple injectivité Coh sans boite (Lorenzo docet); controexemple injectivité de Rel (:o, non, je rigole, je ne l'ai pas...)<br />
* ''reseaux et elimination de coupures'': controexemple confluence et/ou normalisation en presence de cycle switching ou des types pures; contrexemple à confluence de DiLL sans associativité de (co)contraction.<br />
<br />
<br />
==== Complément de Michele sur ce qu'on voudrait pouvoir traiter ====<br />
<br />
Il peut etre utile pour bien choisir une syntaxe et un langage pour<br />
ecrire les reseaux avoir en tete les sujets qu'on veut traiter. Ici<br />
une petite liste de sujets que je trouve tres amusants (il est<br />
vraiment une esquisse, pour commencer la discussion):<br />
<br />
* reseaux et sequentialization (critere de correction):<br />
** dans MLL (critere voyage, switching acyclicité et connexion, contractions (linearité du critere), autres?); problemes des unites (solutions ?, reseaux MLL et categories *-autonome);<br />
** dans MELL: extension facile avec mix (probleme affaiblissement analogue problemes des unites); extension au "lambdaMELL" (fragment minimale de MELL);<br />
** dans MALL..........................................<br />
** criteres polarises (LLpol et LLP);<br />
** dans LL2<br />
* lambda calcul:<br />
** resultats de bisimulation<br />
** reseaux et lambda calcul avec substitutions explicites<br />
** reseaux polarise et calculs avec stream (lambdamu, lambdac, etc)<br />
* elimination des coupures:<br />
** normalisation (avec correction + types), developments finis (reduction exponentielle termine), interaction et correction (Th de Bechet)<br />
** confluence (avec correction et tranches additives); perpetualité;<br />
** classes de complexité borné (proprietes structurelles des reseaux qui caracterisent des classes de complexité)<br />
* semantique:<br />
** webbed semantics: experiments, injectivité, correction semantique et logique (problemes dans MELL, dans MALL)<br />
** game semantics et GoI<br />
* reseaux differentiels (DiLL):<br />
** traduction de LL dans DiLL<br />
** calcul avec ressources (et differentiel) dans DiLL<br />
** pi-calcul dans DiLL<br />
** proprietes d'elimination des coupures dans DiLL (confluence, normalization, developements finis, standardisation, perpetualité)</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Talk:Proof-netsTalk:Proof-nets2011-01-17T13:45:38Z<p>Lionel Vaux: </p>
<hr />
<div>Maybe we should try and start again our discussion concerning proof nets, <br />
their definition(s), and their graphical representations on this wiki.<br />
First, I leave some open questions:<br />
* Is there anything new concerning this matter ?<br />
* Can we agree on some common ground to start these pages ?<br />
* Why not start from scratch and see what breaks ?<br />
In order to fix ideas, I recall the main points of our email discussions of October 2009. --[[User:Lionel Vaux|Lionel Vaux]] 13:45, 17 January 2011 (UTC)<br />
<br />
== Discussion des 11-12 oct. 2009 ==<br />
<br />
=== Message initial d'Olivier ===<br />
<br />
Bonjour a tous,<br />
<br />
Il est grand temps de commencer a se pencher sur la question des reseaux de preuve dans llwiki.<br />
<br />
Je vous rappelle quelques elements que je suggerais dans mon precedent mail sur la question :<br />
<blockquote>De maniere a pouvoir commencer a parler de reseaux de preuve dans le wiki, il semble necessaire de:<br />
* Faire un choix de definition formelle principale qui sera utilisee dans les differentes pages parlant de reseaux (il faut donc qu'elle s'adapte facilement aux differentes extensions que l'on voudra traiter). Des definitions alternatives pourront etre decrites dans la page des reseaux (ou des pages specifiques) mais pas utilisees en dehors.<br />
* Definir une syntaxe pour saisir les reseaux (au moins pour les plus simples, ou en fournissant la possibilite de donner des indications de placements de noeuds, ...).<br />
* Choisir comment dessiner les reseaux a partir de la syntaxe de saisie et les integrer dans les pages du wiki.</blockquote><br />
<br />
Je vous propose dans un premier temps de faire une collecte de suggestions :<br />
* votre (vos) choix de definition formelle de reseaux (juste une esquisse des elements clefs)<br />
* la syntaxe dont vous reveriez pour ecrire vos reseaux<br />
* votre moteur favori pour dessiner/afficher des reseaux<br />
* des exemples significatifs de reseaux de maniere a faire un peu de benchmark entre les differentes propositions des 3 points precedents<br />
<br />
J'attends vos propositions,<br />
Olivier.<br />
<br />
<br />
=== Définition formelle des réseaux ===<br />
<br />
==== Contribution de Laurent ====<br />
<br />
Réseaux de preuve = réseau d'interaction (plus boîtes), c'est à dire un<br />
ensemble de ports, un ensemble de tuples de ports (les cellules) et un ensemble<br />
de couples de ports (les fils) et tout le tintouin qui va avec.<br />
<br />
''Question d'Olivier'': comment est-ce qu'on traite les axiomes et coupures ? comme des fils ou comme des cellules bi-ports ?<br />
<br />
''Réponse de Laurent'': Je proteste: ces questions ne sont pas bateau. En toute rigueur si on veut<br />
coller à la définition originale de Girard (et accessoirement pour d'autres<br />
raisons intéressantes comme par exemple définir simplement la eta-expansion,<br />
garder la possibilité de définir la réduction non-ax) il faut des cellules<br />
bi-ports ce qui oblige à lever la restriction "un unique port ppal" des réseaux<br />
d'interaction (les restrictions sont faites pour être levées s'pas?). Après on<br />
peut ajouter qu'il est souvent commode - par exemple pour définir les réseaux<br />
diff ou les zones de broadcast - de virer les cellules ax et cut.<br />
<br />
''Remarque de Lorenzo'': Tout à fait d'accord avec la remarque de Laurent (Regnier :-), autrement c'est tautologique).<br />
<br />
''Question d'Olivier'': comment definit-on les boites ? comme des sous-reseaux ou comme des cellules (multi-ports ?) auquelles sont recursivement associes des reseaux ?<br />
<br />
''Réponse de Laurent'': Des cellules auxquelles sont récursivement associés des réseaux.<br />
<br />
''Remarque de Lorenzo'': Là aussi, je suis d'accord. Il m'est arrivé cependant de faire subir des opérations chirurgicales délicates aux réseaux (notamment en étudiant l'injectivité), et je pense que ce serait utile d'avoir une définition permettant facilement de décrire l'effacement du pourtour des boites. L'option préconisée par Laurent me parait compatible avec cette nécessité (quitte à rajouter une cellule porte auxiliaire de boite $?P$).<br />
<br />
==== Contribution de Marc ====<br />
<br />
Bon il faut se demander ce que l'on a envie de faire avec des réseaux.<br />
Voila ce que j'imagine. On veut :<br />
* (a) pouvoir décrire facilement des traductions dans les réseaux<br />
* (b) pouvoir écrire naturellement des réseaux<br />
* (c) avoir une définition de la réduction autrement qu'avec les mains<br />
* (d) avoir un partage entre les réseaux de preuve et les réseaux d'interaction<br />
* (e) pouvoir ajouter des boites (promotion et additives)<br />
* (f) pouvoir ajouter des sommes<br />
* (g) avoir une notion de chemins et de réduction de chemins pour pouvoir embrayer sur la gdi à la D-R<br />
J'annonce la couleur tout de suite, il n'existe pas, à mon avis, une<br />
solution parfaite pour tout cela.<br />
Dans ma thèse j'ai une définition qui nous permet de faire bien c-d-g, a peu<br />
près a-e-f, mais qui n'est pas vraiment une représentation très naturelle<br />
(enfin c'est celle que propose Laurent à peu de différences près).<br />
Pour résumer j'ai une définition des réseaux qui permet de définir la<br />
réduction par clôture au contexte.<br />
<br />
<br />
==== Contribution de Michele ====<br />
<br />
Moi j'hesite entre trois differentes definitions des reseaux, chaque<br />
definition ayant des pour et contre. Je note ici un'esquisse des mes<br />
choix, avec les + et les -...<br />
<br />
(ne me pas grondez trop durament pour mon fraicais et mes impardonnables omissions: ils sont des notes, ecrites rapidement ;-)).<br />
<br />
(j'omets des variants plus specifiques comme "reseaux = forets des formules + axiom linking"...).<br />
<br />
<br />
===== Syntaxe JY =====<br />
<br />
<br />
JY=Jean-Yves Girard.<br />
<br />
un reseau est un '''hypergraphe''' etiquete, les noeds etant les (occurrences des) formules, et les hyperaretes etant les regles deductives (axiomes et coupures y compris).<br />
<br />
* + definition formelle simple<br />
* + elegant traitement de fussionement des formules pour composer les modules (voir minus de syntax Y);<br />
* - distinction entre conclusion et hypothese, donc distinction entre reseau et module: regles de reduction doivent etre definies sur les modules (redexes et contracta sont modules). En plus, immaginez quelle "joie" est introduire les sommes formelles de modules, pour parler de sliced proof nets, ou des reseaux differentiels;<br />
* - l'elimination des coupures sur les '''structures''' de preuve (il faut permettre la reduction aussi en presence des erreurs, bien sur!) crée des circles vicieux (e.g. une contraction ayant une parmi ses premisses comme conclusion): laid à les dessiner;<br />
* - la presence des axioms est legerement antypatique pour etudier la correspondence lambda-calcul/réseaux, et tout à fait antypatique pour parler des reseaux differentiels (reduction contraction/cocontraction introduise des axioms).<br />
<br />
<br />
===== Syntaxe L =====<br />
<br />
L=Laurent regnier (PhD Thesis), comme olivier Laurent (PhD Thesis) et beaucoup d'autres autors, comme Lorenzo tortora de falco et la plus parts des papiers sur les logiques Legeres.<br />
<br />
un reseau est un '''graphe''' etiquete, les regles sont les noeds et les aretes les (occurrences des) formules<br />
<br />
* + pedagogiquement superefficace: les graphes sont beaucoup plus intuitives des hypergraphes; aussi formellement la syntax L peut etre definie sans trop "baroquisme";<br />
* + les circles vicieux (e.g. une contraction ayant une premisse comme sa conclusion) peuvent etre facilement dessines; en general les dessins resultent jolis<br />
* + comme dans JY, elegant fussionement des aretes pour composer les modules (cela depend du fait que on a les axiomes explicits);<br />
* - memes problemes de la syntaxe JY: distinction conclusion/hypothese, reseau/module, presence axiomes antypatique pour reseaux differentiels.<br />
<br />
<br />
===== Syntaxe Y =====<br />
<br />
Y=Yves Lafont, base de depart des reseaux differentiels.<br />
<br />
un reseau est un '''graphe et un hypergraphe''', le graphe donnant les wires (i.e. les occurences des formules (modulo dualite) et regles identite (axioms et coupure)) et l'hypergraphe donnant les cellules (i.e. les regles logiques et structurelles).<br />
<br />
* + distinction entre conclusion et hypothese d'un module devient une difference d'orientation des wires, quelle elegance! On depasse la distinction entre reseau et module;<br />
* + mis en evidence des coupures commutatives, comme la coupure qui depasse le paradigme des réseaux *d'interactions* (commutative = coupure ayant une porte active qui n'est pas principal, i.e. porte auxiliare boite)<br />
* +/- superjolie dessins, au niveau graphique la syntaxe Y est sans doute la meilleur mais au niveau de definition formelle elle est lourde (deux structure graphique, wires et cells...)<br />
* - laborieuse definition de fussionement des conclusions entre reseaux (voir theses de Damiano et Lionel ("alpha"-reecriture que fonde step by step les wires a fusionner), sinon voir solution Marc (reseaux = permutations, mais puis il faut bien definire les cellules "commutatives", comme la contraction...))<br />
<br />
Les trois groupes peuvent avoir differentes "declinations", selon la maniere d'approcher à des problemes classiques des réseaux, par exemples:<br />
<br />
* boites (exponentielles, additives...): sont des regles sequentielles (i.e. in JY (resp. L et Y) des hyperarretes (resp. des noeds, cellules) etiquettes par des reseaux), ou des "zones" qui delimites des sousgraphes? (moi je suis pour la solution des boites comme regles sequentielles, beaucoup plus elegante au niveau formel)<br />
* definition des reductions canoniques (associativite des contractions, neutralite affaiblissement, commutations de la contraction avec la porte auxiliaire) ou utilisation de rapresentantes canoniques?<br />
* definition des additives (& et \top) par boites, tranches, poids etc; definition du second ordre par boites ou subtiles conditions d'avoir variables lies distincte deux à deux; etc.<br />
<br />
<br />
=== Syntaxe pour écrire vos reseaux ===<br />
<br />
<br />
==== Laurent ====<br />
<br />
Le calcul des séquents.<br />
<br />
''Question d'Olivier'': c'est une base solide ! un petit defaut est, pour des reseaux un peu gros : est-ce que l'information induite pour le placement des noeuds est suffisante ou faut-il un moyen de rajouter une telle information ?<br />
<br />
<br />
==== Marc ====<br />
<br />
Je propose deux syntaxes : une syntaxe permettant par exemple d'écrire un lambda-terme et que le réseau se fasse tout seul, et une syntaxe explicite pour écrire des réseaux, cette-dernière devrait être assez proche de la syntaxe d'Yves pour les réseaux d'interaction. L'idéal serait d'avoir une syntaxe hybride permettant de manipuler des traductions comme des sortes de boites.<br />
<br />
<br />
==== Michele ====<br />
<br />
calcul de sequent, avec tensor/coupure unaire si je veux ecrire des reseaux pas corrects<br />
<br />
<br />
=== Moteur pour dessiner/afficher des réseaux ===<br />
<br />
<br />
==== Marc ====<br />
<br />
J'ai un moteur basé sur ma proposition précédente. Pour le moment j'ai du code caml pour écrire et réduire des réseaux d'interaction (avec somme) et du code pour faire du placement automatique. Le tout affichant une interface pour modifier le dessin. Pour pouvoir l'intégrer au wiki il faudrait rajouter une interface oueb, et c'est là le problème. Vincent Balat a un truc permettant de faire exécuter du caml sur un navigateur par un interprète bytecode en javascript, ca devrait suffir à nos besoins, mais je ne sais pas si on peut l'avoir indépendemment de Ocsigen. En tout cas, pour continuer ce programme j'ai un problème de temps, donc pour le rendre productif il faudrait que j'ai de l'aide.<br />
<br />
<br />
==== Michele ====<br />
<br />
quand je suis tout seul: xfig (pas superjolie mais efficace, avec<br />
"combined Latex/Pdf"); quand j'ai l'assistence de Paolo j'utilise son<br />
package basé sur tikz... les dessins sont magnifiques, mais je trouve<br />
la syntaxe encor trop difficile pour moi quand je dois dessiner des<br />
reseaux avec boites, sommes formelles et quelques cycles...<br />
<br />
<br />
=== Exemples significatifs de réseaux ===<br />
<br />
<br />
==== Laurent ====<br />
<br />
Le contre-exemple de David à l'injectivité de la sémantique en lambda-mu-calcul.<br />
<br />
<br />
==== Marc ====<br />
<br />
Je propose les zones de communication, parce que c'est l'exemple typique de<br />
réseau n'ayant pas d'orientation verticale naturelle.<br />
<br />
<br />
==== Michele ====<br />
<br />
* ''reseaux et semantique'': controexemple injectivité dans Coh qui ''vient'' de David-Py (l'originale de David-Py est separé dans Coh); controexemple injectivité Coh sans boite (Lorenzo docet); controexemple injectivité de Rel (:o, non, je rigole, je ne l'ai pas...)<br />
* ''reseaux et elimination de coupures'': controexemple confluence et/ou normalisation en presence de cycle switching ou des types pures; contrexemple à confluence de DiLL sans associativité de (co)contraction.<br />
<br />
<br />
=== Complément de Michele sur ce qu'on voudrait pouvoir traiter ====<br />
<br />
Il peut etre utile pour bien choisir une syntaxe et un langage pour<br />
ecrire les reseaux avoir en tete les sujets qu'on veut traiter. Ici<br />
une petite liste de sujets que je trouve tres amusants (il est<br />
vraiment une esquisse, pour commencer la discussion):<br />
<br />
* reseaux et sequentialization (critere de correction):<br />
** dans MLL (critere voyage, switching acyclicité et connexion, contractions (linearité du critere), autres?); problemes des unites (solutions ?, reseaux MLL et categories *-autonome);<br />
** dans MELL: extension facile avec mix (probleme affaiblissement analogue problemes des unites); extension au "lambdaMELL" (fragment minimale de MELL);<br />
** dans MALL..........................................<br />
** criteres polarises (LLpol et LLP);<br />
** dans LL2<br />
* lambda calcul:<br />
** resultats de bisimulation<br />
** reseaux et lambda calcul avec substitutions explicites<br />
** reseaux polarise et calculs avec stream (lambdamu, lambdac, etc)<br />
* elimination des coupures:<br />
** normalisation (avec correction + types), developments finis (reduction exponentielle termine), interaction et correction (Th de Bechet)<br />
** confluence (avec correction et tranches additives); perpetualité;<br />
** classes de complexité borné (proprietes structurelles des reseaux qui caracterisent des classes de complexité)<br />
* semantique:<br />
** webbed semantics: experiments, injectivité, correction semantique et logique (problemes dans MELL, dans MALL)<br />
** game semantics et GoI<br />
* reseaux differentiels (DiLL):<br />
** traduction de LL dans DiLL<br />
** calcul avec ressources (et differentiel) dans DiLL<br />
** pi-calcul dans DiLL<br />
** proprietes d'elimination des coupures dans DiLL (confluence, normalization, developements finis, standardisation, perpetualité)</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Main_PageMain Page2010-12-09T15:03:37Z<p>Lionel Vaux: /* Contents */ Libérez les réseaux !</p>
<hr />
<div>== Contents ==<br />
<br />
* An [[introduction]] to linear logic<br />
* Syntax<br />
** [[Sequent calculus]]<br />
** [[Intuitionistic linear logic]]<br />
** [[Fragment|Fragments]]<br />
** [[Proof-nets]]<br />
** Translations of [[Translations of classical logic|classical]] and [[Translations of intuitionistic logic|intuitionistic]] logics<br />
* [[Semantics]]<br />
** [[Coherent semantics]]<br />
** [[Phase semantics]]<br />
** [[Categorical semantics]]<br />
** [[Relational semantics]]<br />
** [[Finiteness semantics]]<br />
** [[Geometry of interaction]]<br />
** [[Game semantics]]<br />
* [[Light linear logics]]<br />
<br />
== Getting started ==<br />
<br />
* Please read the [[recommendations]] before edition in this wiki.<br />
* If you are familiar with these [[recommendations]] (are you?) and only want a reference of available LaTeX macros, see [[LLWiki LaTeX Style]].<br />
* Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.<br />
* You can use the [[sandbox]] for tests.<br />
* [[Special:Wantedpages|Wanted pages]].<br />
<br />
<!--<br />
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]<br />
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]<br />
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
--></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Talk:Proof-netsTalk:Proof-nets2010-12-09T15:02:14Z<p>Lionel Vaux: discussion on basic definitions</p>
<hr />
<div>Maybe we should try and start again our discussion concerning proof nets, <br />
their definition(s), and their graphical representations on this wiki.<br />
First, I leave some open questions:<br />
* Is there anything new concerning this matter ?<br />
* Can we agree on some common ground to start these pages ?<br />
* Why not start from scratch and see what breaks ?<br />
--[[User:Lionel Vaux|Lionel Vaux]] 15:02, 9 December 2010 (UTC)</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Template:StubTemplate:Stub2009-10-16T13:40:45Z<p>Lionel Vaux: </p>
<hr />
<div>''This page is a stub and needs more content.''<br />
<br />
----</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Template:StubTemplate:Stub2009-10-16T13:39:32Z<p>Lionel Vaux: Default text for stubs</p>
<hr />
<div>This page is a stub and needs more content.<br />
----</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/IsomorphismIsomorphism2009-10-16T13:38:52Z<p>Lionel Vaux: added template stub</p>
<hr />
<div>{{stub}}<br />
<br />
Two formulas <math>A</math> and <math>B</math> are isomorphic, when there are two proofs <math>\pi</math> of <math>A \vdash B</math> and <math>\rho</math> of <math>B \vdash A</math> such that eliminating the cut on <math>A</math> in<br />
<br />
<math>\AxRule{}\VdotsRule{\pi}{A \vdash B}\AxRule{}\VdotsRule{\rho}{B \vdash A}\LabelRule{\rulename{cut}}\BinRule{B\vdash B}\DisplayProof</math><br />
<br />
leads to an [[Sequent_calculus#Expansion_of_identities|<math>\eta</math>-expansion]] of <br />
<br />
<math>\LabelRule{\rulename{ax}}\NulRule{B\vdash B}\DisplayProof</math>, <br />
<br />
and eliminating the cut on <math>B</math> in <br />
<br />
<math>\AxRule{}\VdotsRule{\pi}{A \vdash B}\AxRule{}\VdotsRule{\rho}{B \vdash A}\LabelRule{\rulename{cut}}\BinRule{A\vdash A}\DisplayProof</math><br />
<br />
leads to an [[Sequent_calculus#Expansion_of_identities|<math>\eta</math>-expansion]] of <br />
<br />
<math>\LabelRule{\rulename{ax}}\NulRule{A\vdash A}\DisplayProof</math>.<br />
<br />
Some well known isomorphisms of linear logic are the following ones: <br />
* <math>A\tens B \limp C \cong A\limp B \limp C</math><br />
* …</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Template:StubTemplate:Stub2009-10-16T13:38:11Z<p>Lionel Vaux: New page: This is a stub.</p>
<hr />
<div>This is a stub.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/IsomorphismIsomorphism2009-10-16T12:30:23Z<p>Lionel Vaux: stub</p>
<hr />
<div>Two formulas <math>A</math> and <math>B</math> are isomorphic, when there are two proofs <math>\pi</math> of <math>A \vdash B</math> and <math>\rho</math> of <math>B \vdash A</math> such that eliminating the cut on <math>A</math> in<br />
<br />
<math>\AxRule{}\VdotsRule{\pi}{A \vdash B}\AxRule{}\VdotsRule{\rho}{B \vdash A}\LabelRule{\rulename{cut}}\BinRule{B\vdash B}\DisplayProof</math><br />
<br />
leads to an [[Sequent_calculus#Expansion_of_identities|<math>\eta</math>-expansion]] of <br />
<br />
<math>\LabelRule{\rulename{ax}}\NulRule{B\vdash B}\DisplayProof</math>, <br />
<br />
and eliminating the cut on <math>B</math> in <br />
<br />
<math>\AxRule{}\VdotsRule{\pi}{A \vdash B}\AxRule{}\VdotsRule{\rho}{B \vdash A}\LabelRule{\rulename{cut}}\BinRule{A\vdash A}\DisplayProof</math><br />
<br />
leads to an [[Sequent_calculus#Expansion_of_identities|<math>\eta</math>-expansion]] of <br />
<br />
<math>\LabelRule{\rulename{ax}}\NulRule{A\vdash A}\DisplayProof</math>.<br />
<br />
Some well known isomorphisms of linear logic are the following ones: <br />
* <math>A\tens B \limp C \cong A\limp B \limp C</math><br />
* …</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-10-12T09:29:25Z<p>Lionel Vaux: fixed reference</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the [[relational semantics|purely relational model of linear logic]]. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls [[Phase_semantics#Closure_operators|familiar definitions]], as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\powerset A</math> the powerset of <math>A</math> and by <math>\finpowerset A</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \powerset A</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak F}</math> in <math>A</math> as <math>{\mathfrak F}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak F},\ a\cap a'\in\finpowerset A\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak F}\orth</math>. For all <math>{\mathfrak F}\subseteq\powerset A</math>, we have the following immediate properties: <math>\finpowerset A\subseteq {\mathfrak F}\orth</math>; <math>{\mathfrak F}\subseteq {\mathfrak F}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak F}</math>, <math>{\mathfrak F}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak F}\orth = {\mathfrak F}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak F}</math> of subsets of <math>A</math> such that <math>{\mathfrak F}\biorth = {\mathfrak F}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\finpowerset A)</math> is a finiteness space and <math>(A,\finpowerset A)\orth = (A,\powerset A)</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\finpowerset A)=(A,\powerset A)</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak F}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak F}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
<br />
<math><br />
\begin{align}<br />
f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right) &\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall \beta\in \web{{\mathcal B}}, f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall \alpha\in \web{{\mathcal A}}, f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\end{align}<br />
</math><br />
<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>.<ref>The fact that the additive connectors are identified, i.e. that we obtain a biproduct, is to be related with the enrichment of <math>\mathbf{Fin}</math> over the monoid structure of set union: see {{BibEntry|bibtype=journal|author=Marcello P. Fiore|title=Differential Structure in Models of Multiplicative Biadditive Intuitionistic Linear Logic|journal=TLCA 2007}} This identification can also be shown to be a [[isomorphism]] of LL with sums of proofs.</ref><br />
The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
<br />
<math><br />
\begin{align}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{align}<br />
</math><br />
<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: <br />
<br />
<math>\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).</math><br />
<br />
<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\finmulset A</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\finmulset a\subseteq\finmulset A</math>.<br />
If <math>\overline\alpha\in\finmulset A</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\finpowerset A</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \finmulset{\web{{\mathcal A}}}</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\finmulset{\web{{\mathcal A}}};\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
<br />
<br />
<math>\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),</math><br />
<br />
<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
<br />
<br />
<math>\left\{ \left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\ (\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal A}\tens\oc{\mathcal B}).</math><br />
<br />
<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.<br />
<br />
==References==<br />
<references /></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-10-12T09:20:26Z<p>Lionel Vaux: /* Additives */ mention the more general fact that additives are identified in a Mon-enriched model</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the [[relational semantics|purely relational model of linear logic]]. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls [[Phase_semantics#Closure_operators|familiar definitions]], as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\powerset A</math> the powerset of <math>A</math> and by <math>\finpowerset A</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \powerset A</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak F}</math> in <math>A</math> as <math>{\mathfrak F}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak F},\ a\cap a'\in\finpowerset A\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak F}\orth</math>. For all <math>{\mathfrak F}\subseteq\powerset A</math>, we have the following immediate properties: <math>\finpowerset A\subseteq {\mathfrak F}\orth</math>; <math>{\mathfrak F}\subseteq {\mathfrak F}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak F}</math>, <math>{\mathfrak F}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak F}\orth = {\mathfrak F}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak F}</math> of subsets of <math>A</math> such that <math>{\mathfrak F}\biorth = {\mathfrak F}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\finpowerset A)</math> is a finiteness space and <math>(A,\finpowerset A)\orth = (A,\powerset A)</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\finpowerset A)=(A,\powerset A)</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak F}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak F}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
<br />
<math><br />
\begin{align}<br />
f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right) &\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall \beta\in \web{{\mathcal B}}, f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall \alpha\in \web{{\mathcal A}}, f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\end{align}<br />
</math><br />
<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>.<ref>The fact that the additive connectors are identified, i.e. that we obtain a biproduct, is to be related with the enrichment of <math>\mathbf{Fin}</math> over the monoid structure of set union: see {{BibEntry|bibtype=inproceedings|author=Fiore, Marcello P.|title=Differential Structure in Models of Multiplicative Biadditive Intuitionistic Linear Logic|booktitle=TLCA|year=2007|pages=163-177|ee={http://dx.doi.org/10.1007/978-3-540-73228-0_13}|editor={Simona Ronchi Della Rocca}|title={Typed Lambda Calculi and Applications, 8th International Conference, TLCA 2007, Paris, France, June 26-28, 2007, Proceedings}|publisher={Springer}|series={Lecture Notes in Computer Science}|volume={4583}|isbn={978-3-540-73227-3}}}.</ref><br />
The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
<br />
<math><br />
\begin{align}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{align}<br />
</math><br />
<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: <br />
<br />
<math>\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).</math><br />
<br />
<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\finmulset A</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\finmulset a\subseteq\finmulset A</math>.<br />
If <math>\overline\alpha\in\finmulset A</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\finpowerset A</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \finmulset{\web{{\mathcal A}}}</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\finmulset{\web{{\mathcal A}}};\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
<br />
<br />
<math>\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),</math><br />
<br />
<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
<br />
<br />
<math>\left\{ \left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\ (\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal A}\tens\oc{\mathcal B}).</math><br />
<br />
<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/LLWiki_LaTeX_StyleLLWiki LaTeX Style2009-07-06T15:58:29Z<p>Lionel Vaux: /* Proof trees */ describe all available commands for proof trees</p>
<hr />
<div>== Mathematical notations ==<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|-<br />
| <math>A\orth</math><br />
| <pre>A\orth</pre><br />
|-<br />
| <math>A\biorth</math><br />
| <pre>A\biorth</pre><br />
|-<br />
| <math>A\triorth</math><br />
| <pre>A\triorth</pre><br />
|-<br />
| <math>A\tens B</math><br />
| <pre>A\tens B</pre><br />
|-<br />
| <math>A\parr B</math><br />
| <pre>A\parr B</pre><br />
|-<br />
| <math>A\plus B</math><br />
| <pre>A\plus B</pre><br />
|-<br />
| <math>A\with B</math><br />
| <pre>A\with B</pre><br />
|-<br />
| <math>\one</math><br />
| <pre>\one</pre><br />
|-<br />
| <math>\bot</math><br />
| <pre>\bot</pre><br />
|-<br />
| <math>\zero</math><br />
| <pre>\zero</pre><br />
|-<br />
| <math>\top</math><br />
| <pre>\top</pre><br />
|-<br />
| <math>\oc A</math><br />
| <pre>\oc A</pre><br />
|-<br />
| <math>\wn A</math><br />
| <pre>\wn A</pre><br />
|-<br />
| <math>A\limp B</math><br />
| <pre>A\limp B</pre><br />
|-<br />
| <math>A\linequiv B</math><br />
| <pre>A\linequiv B</pre><br />
|-<br />
| <math>\shpos A</math><br />
| <pre>\shpos A</pre><br />
|-<br />
| <math>\shneg A</math><br />
| <pre>\shneg A</pre><br />
|-<br />
| <math>\shift A</math><br />
| <pre>\shift A</pre><br />
|-<br />
| <math>\pg A</math><br />
| <pre>\pg A</pre><br />
|-<br />
| <math>A\imp B</math><br />
| <pre>A\imp B</pre><br />
|-<br />
| <math>\sem{A}</math><br />
| <pre>\sem{A}</pre><br />
|-<br />
| <math>\web{A}</math><br />
| <pre>\web{A}</pre><br />
|-<br />
| <math>A\coh B</math><br />
| <pre>A\coh B</pre><br />
|-<br />
| <math>A\scoh B</math><br />
| <pre>A\scoh B</pre><br />
|-<br />
| <math>A\incoh B</math><br />
| <pre>A\incoh B</pre><br />
|-<br />
| <math>A\sincoh B</math><br />
| <pre>A\sincoh B</pre><br />
|-<br />
| <math>A\cliq B</math><br />
| <pre>A\cliq B</pre><br />
|-<br />
| <math>\set{x}{P}</math><br />
| <pre>\set{x}{P}</pre><br />
|-<br />
| <math>\powerset{A}</math><br />
| <pre>\powerset{A}</pre><br />
|-<br />
| <math>\finpowerset{A}</math><br />
| <pre>\finpowerset{A}</pre><br />
|-<br />
| <math>\mulset{A}</math><br />
| <pre>\mulset{A}</pre><br />
|-<br />
| <math>\finmulset{A}</math><br />
| <pre>\finmulset{A}</pre><br />
|-<br />
| <math>\Bot</math><br />
| <pre>\Bot</pre><br />
|-<br />
| <math>A\Perp B</math><br />
| <pre>A\Perp B</pre><br />
|-<br />
|}<br />
<br />
== Proof trees ==<br />
<br />
Proof trees are described using a postfix syntax and terminated with <tt>\DisplayProof</tt><br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|- <br />
| '''Description'''<br />
| '''Command'''<br />
| '''Example'''<br />
| '''LaTeX source'''<br />
|-<br />
| Axiom node <br /> (for hypotheses)<br />
| <pre>\AxRule</pre><br />
| <math><br />
\AxRule{\vdash A}<br />
\DisplayProof</math><br />
| <pre><br />
\AxRule{\vdash A}<br />
\DisplayProof</pre><br />
|-<br />
| Nullary rule <br /> (for logical axioms) <br />
| <pre>\NulRule</pre><br />
| <math><br />
\NulRule{A \vdash A}<br />
\DisplayProof</math><br />
| <pre><br />
\NulRule{A \vdash A}<br />
\DisplayProof</pre><br />
|-<br />
| Unary rule<br />
| <pre>\UnaRule</pre><br />
| <math><br />
\AxRule{\vdash \wn\Gamma, A}<br />
\UnaRule{\vdash \wn\Gamma, \oc A}<br />
\DisplayProof</math><br />
| <pre><br />
\AxRule{\vdash \wn\Gamma, A}<br />
\UnaRule{\vdash \wn\Gamma, \oc A}<br />
\DisplayProof</pre><br />
|-<br />
| Binary rule<br />
| <pre>\BinRule</pre><br />
| <math><br />
\AxRule{\Gamma\vdash A}<br />
\AxRule{\Delta,A\vdash C}<br />
\BinRule{\Gamma,\Delta\vdash C}<br />
\DisplayProof</math><br />
| <pre><br />
\AxRule{\Gamma\vdash A}<br />
\AxRule{\Delta,A\vdash C}<br />
\BinRule{\Gamma,\Delta\vdash C}<br />
\DisplayProof</pre><br />
|- <br />
| Ternary rule <br />
| <pre>\TriRule</pre><br />
| <math><br />
\AxRule{\vdash A}<br />
\AxRule{\vdash B}<br />
\AxRule{\vdash C}<br />
\TriRule{\vdash A\land B\land C}<br />
\DisplayProof</math><br />
| <pre><br />
\AxRule{\vdash A}<br />
\AxRule{\vdash B}<br />
\AxRule{\vdash C}<br />
\TriRule{\vdash A\land B\land C}<br />
\DisplayProof</pre><br />
|-<br />
| Label <br /> (before any of the above)<br />
| <pre>\LabelRule</pre><br />
| <math>\AxRule{\Gamma\vdash A}<br />
\AxRule{\Delta,A\vdash C}<br />
\LabelRule{\rulename{cut}}<br />
\BinRule{\Gamma,\Delta\vdash C}<br />
\DisplayProof</math><br />
| <pre><br />
\AxRule{\Gamma\vdash A}<br />
\AxRule{\Delta,A\vdash C}<br />
\LabelRule{\rulename{cut}}<br />
\BinRule{\Gamma,\Delta\vdash C}<br />
\DisplayProof</pre><br />
|-<br />
| Proof ellipsis<br /> ''(two arguments !)''<br />
| <pre>\VdotsRule</pre><br />
| <math><br />
\AxRule{[A]}<br />
\VdotsRule{\pi}{B}<br />
\UnaRule{A\imp B}<br />
\DisplayProof</math><br />
| <pre><br />
\AxRule{[A]}<br />
\VdotsRule{\pi}{B}<br />
\UnaRule{A\imp B}<br />
\DisplayProof</pre><br />
|}<br />
<math></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/RecommendationsRecommendations2009-07-06T15:12:54Z<p>Lionel Vaux: /* Proofs */ only a simple example</p>
<hr />
<div>== User account ==<br />
<br />
* Use "FirstName LastName" as Username.<br />
* Use a valid e-mail address.<br />
<br />
== Conventions ==<br />
<br />
* Use English only, even for comments, discussions, ...<br />
* Use <tt><nowiki>== Header ==</nowiki></tt> for higher-level headers, ''do not'' use only one equals sign on a side.<br />
<br />
== Notations ==<br />
<br />
For uniformity, use the [[notations|common notations]] when they are already defined, and add your notations to the [[notations|notations page]] when you introduce new ones.<br />
<br />
== Definitions and theorems ==<br />
<br />
For theorem-style environments, use the appropriate predefined [http://www.mediawiki.org/wiki/Templates templates]: [[Template:Definition|Definition]], [[Template:Theorem|Theorem]], [[Template:Proposition|Proposition]], [[Template:Lemma|Lemma]], [[Template:Corollary|Corollary]] (with an optional parameter "title").<br />
Additional templates are [[Template:Proof|Proof]] for proofs and [[Template:Remark|Remark]] for remarks.<br />
<br />
{| border="1" cellpadding="10" cellspacing="1"<br />
|-<br />
|<pre><br />
{{Definition|title=Concept|A new concept.}}<br />
<br />
{{Theorem|This is a nice concept.}}<br />
<br />
{{Proof|Left to the reader.}}<br />
<br />
{{Remark|Really nice, isn't it?}}<br />
</pre><br />
|<br />
{{Definition|title=Concept|A new concept.}}<br />
<br />
{{Theorem|This is a nice concept.}}<br />
<br />
{{Proof|Left to the reader.}}<br />
<br />
{{Remark|Really nice, isn't it?}}<br />
|-<br />
|}<br />
<br />
== Mathematical typesetting ==<br />
<br />
=== Formulas ===<br />
<br />
* use the macros defined in the [[LLWiki LaTeX Style]]<br />
<br />
=== Proofs ===<br />
<br />
The syntax for proofs is based on the [http://whttp://www.math.ucsd.edu/~sbuss/ResearchWeb/bussproofs/ bussproofs.sty] package, but available only through a sugar-coated specific to llwiki. Here is an example:<br />
<pre><br />
\AxRule{}<br />
\VdotsRule{s}{{}\vdash\Gamma,A\imp B}<br />
\AxRule{}<br />
\VdotsRule{t}{{}\vdash\Gamma, A}<br />
\BinRule{{}\vdash \Gamma, B}<br />
\LabelRule{\rulename{modus ponens}}<br />
\DisplayProof<br />
\quad<br />
\longrightarrow_\beta<br />
\quad<br />
\AxRule{}<br />
\VdotsRule{s[t/x]}{{}\vdash\Gamma, B}<br />
\DisplayProof<br />
</pre><br />
<br />
<math><br />
\AxRule{}<br />
\VdotsRule{s}{{}\vdash\Gamma,A\imp B}<br />
\AxRule{}<br />
\VdotsRule{t}{{}\vdash\Gamma, A}<br />
\BinRule{{}\vdash \Gamma, B}<br />
\LabelRule{\rulename{modus ponens}}<br />
\DisplayProof<br />
\quad<br />
\longrightarrow_\beta<br />
\quad<br />
\AxRule{}<br />
\VdotsRule{s[t/x]}{{}\vdash\Gamma, B}<br />
\DisplayProof<br />
</math><br />
<br />
A list of all available macros for proofs is available on the page for the [[LLWiki_LaTeX_Style#Proof_trees|LLWiki LaTeX package]].<br />
<br />
=== Set of rules ===<br />
<br />
For a group of rules, separate rules on a line by <nowiki>\qquad</nowiki> and separate lines by <nowiki><br /></nowiki>.<br />
<br />
<pre><br />
<math><br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_1}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
\qquad<br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_1}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
</math><br />
<br />
<br /><br />
<br />
<math><br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_3}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
\qquad<br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_4}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
</math><br />
</pre><br />
<br />
<math><br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_1}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
\qquad<br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_2}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
</math><br />
<br />
<br /><br />
<br />
<math><br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_3}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
\qquad<br />
\AxRule{\textit{Hyp}_1}<br />
\AxRule{\textit{Hyp}_2}<br />
\LabelRule{\rulename{Rule}_4}<br />
\BinRule{\textit{Concl}}<br />
\DisplayProof<br />
</math></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-07-06T14:59:38Z<p>Lionel Vaux: link to relational semantics</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the [[relational semantics|purely relational model of linear logic]]. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls [[Phase_semantics#Closure_operators|familiar definitions]], as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\powerset A</math> the powerset of <math>A</math> and by <math>\finpowerset A</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \powerset A</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak F}</math> in <math>A</math> as <math>{\mathfrak F}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak F},\ a\cap a'\in\finpowerset A\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak F}\orth</math>. For all <math>{\mathfrak F}\subseteq\powerset A</math>, we have the following immediate properties: <math>\finpowerset A\subseteq {\mathfrak F}\orth</math>; <math>{\mathfrak F}\subseteq {\mathfrak F}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak F}</math>, <math>{\mathfrak F}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak F}\orth = {\mathfrak F}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak F}</math> of subsets of <math>A</math> such that <math>{\mathfrak F}\biorth = {\mathfrak F}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\finpowerset A)</math> is a finiteness space and <math>(A,\finpowerset A)\orth = (A,\powerset A)</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\finpowerset A)=(A,\powerset A)</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak F}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak F}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
<br />
<math><br />
\begin{align}<br />
f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right) &\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall \beta\in \web{{\mathcal B}}, f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall \alpha\in \web{{\mathcal A}}, f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\end{align}<br />
</math><br />
<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>. The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
<br />
<math><br />
\begin{align}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{align}<br />
</math><br />
<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: <br />
<br />
<math>\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).</math><br />
<br />
<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\finmulset A</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\finmulset a\subseteq\finmulset A</math>.<br />
If <math>\overline\alpha\in\finmulset A</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\finpowerset A</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \finmulset{\web{{\mathcal A}}}</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\finmulset{\web{{\mathcal A}}};\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
<br />
<br />
<math>\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),</math><br />
<br />
<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
<br />
<br />
<math>\left\{ \left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\ (\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal A}\tens\oc{\mathcal B}).</math><br />
<br />
<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-07-06T14:57:33Z<p>Lionel Vaux: Use \powerset, \finpowerset and \finmulset notations</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the purely relational model of linear logic. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls [[Phase_semantics#Closure_operators|familiar definitions]], as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\powerset A</math> the powerset of <math>A</math> and by <math>\finpowerset A</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \powerset A</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak F}</math> in <math>A</math> as <math>{\mathfrak F}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak F},\ a\cap a'\in\finpowerset A\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak F}\orth</math>. For all <math>{\mathfrak F}\subseteq\powerset A</math>, we have the following immediate properties: <math>\finpowerset A\subseteq {\mathfrak F}\orth</math>; <math>{\mathfrak F}\subseteq {\mathfrak F}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak F}</math>, <math>{\mathfrak F}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak F}\orth = {\mathfrak F}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak F}</math> of subsets of <math>A</math> such that <math>{\mathfrak F}\biorth = {\mathfrak F}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\finpowerset A)</math> is a finiteness space and <math>(A,\finpowerset A)\orth = (A,\powerset A)</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\finpowerset A)=(A,\powerset A)</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak F}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak F}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
<br />
<math><br />
\begin{align}<br />
f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right) &\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall a\in \mathfrak F\left({\mathcal A}\right), f\cdot a \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall \beta\in \web{{\mathcal B}}, f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\\<br />
&\iff \forall \alpha\in \web{{\mathcal A}}, f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right) \text{ and } \forall b\in \mathfrak F\left({\mathcal B}\orth\right), f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)<br />
\end{align}<br />
</math><br />
<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>. The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
<br />
<math><br />
\begin{align}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{align}<br />
</math><br />
<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: <br />
<br />
<math>\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).</math><br />
<br />
<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\finmulset A</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\finmulset a\subseteq\finmulset A</math>.<br />
If <math>\overline\alpha\in\finmulset A</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\finpowerset A</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \finmulset{\web{{\mathcal A}}}</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\finmulset{\web{{\mathcal A}}};\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
<br />
<br />
<math>\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),</math><br />
<br />
<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
<br />
<br />
<math>\left\{ \left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\ (\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal A}\tens\oc{\mathcal B}).</math><br />
<br />
<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/NotationsNotations2009-07-06T14:48:23Z<p>Lionel Vaux: /* Finiteness spaces */ justify the notation of fniiteness structures</p>
<hr />
<div>== Logical systems ==<br />
<br />
For a given logical system such as <math>MLL</math> (for multiplicative linear logic), we consider the following variations:<br />
{|<br />
|-<br />
! Notation<br />
! Meaning<br />
! Connectives<br />
|-<br />
| <math>MLL</math><br />
| propositional without units<br />
| <math>X,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_u</math><br />
| propositional with units only<br />
| <math>\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_0</math><br />
| propositional with units and variables<br />
| <math>X,\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_1</math><br />
| first-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_{01}</math><br />
| first-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_2</math><br />
| second-order propositional without units<br />
| <math>X,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{02}</math><br />
| second-order propositional with units<br />
| <math>X,\one,\bot,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{12}</math><br />
| first-order and second-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{012}</math><br />
| first-order and second-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
|}<br />
<br />
== Formulas and proof trees ==<br />
<br />
=== Formulas ===<br />
<br />
* First order quantification: <math>\forall x A</math> with substitution <math>A[t/x]</math><br />
* Second order quantification: <math>\forall X A</math> with substitution <math>A[B/X]</math><br />
* Quantification of arbitrary order (mainly first or second): <math>\forall\xi A</math> with substitution <math>A[\tau/\xi]</math><br />
<br />
=== Rule names ===<br />
<br />
Name of the connective, followed by some additional information if required, followed by "L" for a left rule or "R" for a right rule. This is for a two-sided system, "R" is implicit for one-sided systems.<br />
For example: <math>\wedge_1 \text{add} L</math>.<br />
<br />
== Semantics ==<br />
<br />
=== Coherent spaces ===<br />
* Web of the space <math>X</math>: <math>\web X</math><br />
* Coherence relation of the space <math>X</math>: large <math>\coh_X</math> and strict <math>\scoh_X</math><br />
<br />
=== [[Finiteness spaces]] ===<br />
* Web of the finiteness space <math>\mathcal A</math>: <math>\web{\mathcal A}</math> <br />
* Finiteness structure of the space <math>\mathcal A</math>: <math>\mathfrak F(\mathcal A)</math> (we use <tt>\mathfrak</tt>, which is consistent with the fact that <math>\finpowerset{\web{\mathcal A}}\subseteq \mathfrak F(\mathcal A) \subseteq\powerset{\web{\mathcal A}}</math>).</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/NotationsNotations2009-07-06T14:41:08Z<p>Lionel Vaux: /* Semantics */ Notations for finiteness spaces</p>
<hr />
<div>== Logical systems ==<br />
<br />
For a given logical system such as <math>MLL</math> (for multiplicative linear logic), we consider the following variations:<br />
{|<br />
|-<br />
! Notation<br />
! Meaning<br />
! Connectives<br />
|-<br />
| <math>MLL</math><br />
| propositional without units<br />
| <math>X,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_u</math><br />
| propositional with units only<br />
| <math>\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_0</math><br />
| propositional with units and variables<br />
| <math>X,\one,\bot,{\tens},{\parr}</math><br />
|-<br />
| <math>MLL_1</math><br />
| first-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_{01}</math><br />
| first-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A</math><br />
|-<br />
| <math>MLL_2</math><br />
| second-order propositional without units<br />
| <math>X,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{02}</math><br />
| second-order propositional with units<br />
| <math>X,\one,\bot,{\tens},{\parr},\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{12}</math><br />
| first-order and second-order without units<br />
| <math>X\vec{t},{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
| <math>MLL_{012}</math><br />
| first-order and second-order with units<br />
| <math>X\vec{t},\one,\bot,{\tens},{\parr},\forall x A,\exists x A,\forall X A,\exists X A</math><br />
|-<br />
|}<br />
<br />
== Formulas and proof trees ==<br />
<br />
=== Formulas ===<br />
<br />
* First order quantification: <math>\forall x A</math> with substitution <math>A[t/x]</math><br />
* Second order quantification: <math>\forall X A</math> with substitution <math>A[B/X]</math><br />
* Quantification of arbitrary order (mainly first or second): <math>\forall\xi A</math> with substitution <math>A[\tau/\xi]</math><br />
<br />
=== Rule names ===<br />
<br />
Name of the connective, followed by some additional information if required, followed by "L" for a left rule or "R" for a right rule. This is for a two-sided system, "R" is implicit for one-sided systems.<br />
For example: <math>\wedge_1 \text{add} L</math>.<br />
<br />
== Semantics ==<br />
<br />
=== Coherent spaces ===<br />
* Web of the space <math>X</math>: <math>\web X</math><br />
* Coherence relation of the space <math>X</math>: large <math>\coh_X</math> and strict <math>\scoh_X</math><br />
<br />
=== [[Finiteness spaces]] ===<br />
* Web of the space <math>\mathcal A</math>: <math>\web {\mathcal A}</math><br />
* Finiteness structure of the space <math>\mathcal A</math>: <math>\mathfrak F(\mathcal A)</math></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_spacesFiniteness spaces2009-07-06T14:36:34Z<p>Lionel Vaux: Alias for Finiteness semantics</p>
<hr />
<div>#REDIRECT[[Finiteness semantics]]</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Main_PageMain Page2009-06-10T20:49:24Z<p>Lionel Vaux: /* Getting started */ make clear the recommandation page should be visited before going wild on latex</p>
<hr />
<div>== Contents ==<br />
<br />
* An [[introduction]] to linear logic<br />
* Syntax<br />
** [[Sequent calculus]]<br />
** [[Intuitionistic linear logic]]<br />
** [[Fragment|Fragments]]<br />
** Proof-nets<br />
** Translations of [[Translations of classical logic|classical]] and [[Translations of intuitionistic logic|intuitionistic]] logics<br />
* [[Semantics]]<br />
** [[Coherent semantics]]<br />
** [[Phase semantics]]<br />
** [[Categorical semantics]]<br />
** [[Relational semantics]]<br />
** [[Finiteness semantics]]<br />
** [[Geometry of interaction]]<br />
** [[Game semantics]]<br />
* [[Light linear logics]]<br />
<br />
== Getting started ==<br />
<br />
* Please read the [[recommendations]] before edition in this wiki.<br />
* If you are familiar with these [[recommendations]] (are you ?) and only want a reference of available LaTeX macros, see [[LLWiki LaTeX Style]].<br />
* Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.<br />
* You can use the [[sandbox]] for tests.<br />
* [[Special:Wantedpages|Wanted pages]].<br />
<br />
<!--<br />
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]<br />
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]<br />
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
--></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Relational_semanticsRelational semantics2009-06-10T19:51:32Z<p>Lionel Vaux: use llwiki.sty notations for the powerset and the set of finite multisets</p>
<hr />
<div>== Relational semantics ==<br />
<br />
This is the simplest denotational semantics of linear logic. It consists in interpreting a formula <math>A</math> as a set <math>A^*</math> and a proof <math>\pi</math> of <math>A</math> as a subset <math>\pi^*</math> of <math>A^*</math>.<br />
<br />
=== The category of sets and relations ===<br />
<br />
It is the category <math>\mathbf{Rel}</math> whose objects are sets, and such that <math>\mathbf{Rel}(X,Y)=\powerset{X\times Y}</math>. Composition is the ordinary composition of relations: given <math>s\in\mathbf{Rel}(X,Y)</math> and <math>t\in\mathbf{Rel}(Y,Z)</math>, one <br />
sets <math>t\circ s=\set{(a,c)\in X\times Z}{\exists b\in Y\ (a,b)\in s\ \text{and}\ (b,c)\in t}</math> and the identity morphism is the diagonal relation <math>\mathsf{Id}_X=\set{(a,a)}{a\in X}</math>.<br />
<br />
An isomorphism in the category <math>\mathbf{Rel}</math> is a relation which is a bijection, as easily checked.<br />
<br />
==== Monoidal structure ====<br />
<br />
The tensor product is the usual cartesian product of sets <math>X\tens Y=X\times Y</math> (which <em>is not</em> a cartesian product in the category <math>\mathbf{Rel}</math> in the categorical sense). It is a bifunctor: given <math>s_i\in\mathbf{Rel}(X_i,Y_i)</math> (for <math>i=1,2</math>), one sets <math>s_1\tens s_2=\set{((a_1,a_2),(b_1,b_2))}{(a_i,b_i)\in s_i\ \text{for}\ i=1,2}</math>. The unit of this tensor product is <math>\one=\{*\}</math> where <math>*</math> is an arbitrary element.<br />
<br />
For defining a monoidal category, it is not sufficient to provide the definition of the tensor product functor <math>\tens</math> and its unit <math>\one</math>, one has also to provide natural isomorphisms <math>\lambda_X\in\mathbf{Rel}(\one\tens X,X)</math>,<br />
<math>\rho_X\in\mathbf{Rel}(X\tens\one,X)</math> (left and right neutrality of <math>\one</math> for <math>\tens</math>) and <math>\alpha_{X,Y,Z}\in\mathbf{Rel}((X\tens Y)\tens Z,X\tens(Y\tens Z))</math> (associativity of <math>\tens</math>). All these isomorphisms have to satisfy a number of commutations. In the present case, they are defined in the obvious way.<br />
<br />
This monoidal category <math>(\mathbf{Rel},\tens,\one,\lambda,\rho)</math> is symmetric, meaning that it is endowed with an additional natural isomorphism <math>\sigma_{X,Y}\in\mathbf{Rel}(X\tens Y,Y\tens X)</math>, also subject to some commutations. Here, again, this isomorphism is defined in the obvious way (symmetry of the cartesian product). So, to be precise, the SMCC (symmetric monoidal closed category) <math>\mathbf{Rel}</math> is the tuple <math>(\mathbf{Rel},\tens,\one,\lambda,\rho,\alpha,\sigma)</math>, but we shall simply denote it as <math>\mathbf{Rel}</math>.<br />
<br />
The SMCC <math>\mathbf{Rel}</math> is closed. This means that, given any object <math>X</math> of <math>\mathbf{Rel}</math> (a set), the functor <math>Z\mapsto Z\tens X</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>) admits a right adjoint <math>Y\mapsto (X\limp Y)</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>). In other words, for any objects <math>X</math> and <math>Y</math>, we are given an object <math>X\limp Y</math> and a morphism <math>\mathsf{ev}_{X,Y}\in\mathbf{Rel}((X\limp Y)\tens X,Y)</math> with the following universal property: for any morphism <math>s\in\mathbf{Rel}(Z\tens X,Y)</math>, there is a unique morphism <math>\mathsf{fun}(s)\in\mathbf{Rel}(Z,X\limp Y)</math> such that <math>\mathsf{ev}_{X,Y}\circ(\mathsf{fun}(s)\tens\mathsf{Id}_X)=s</math>.<br />
<br />
The definition of all these data is quite simple in <math>\mathbf{Rel}</math>: <math>X\limp Y=X\times Y</math>, <math>\mathsf{ev}_{X,Y}=\set{(((a,b),a),b)}{(a,b)\in X\times Y}</math> and <math>\mathsf{fun}(s)=\set{(c,(a,b))}{((c,a),b)\in s}</math>.<br />
<br />
Let <math>\bot=\one=\{*\}</math>. Then we have <math>\mathsf{ev}\circ\sigma:\mathbf{Rel}(X\tens(X\limp\bot),\bot)</math> and hence <math>\eta_X=\mathsf{fun}(\mathsf{ev}\circ\sigma)\in\mathbf{Rel}(X,(X\limp\bot)\limp\bot)</math>. It is clear that <math>\eta=\set{(a,((a,*),*))}{a\in X}</math> and hence <math>\eta</math> is a natural isomorphism: one says that the SMCC <math>\mathbf{Rel}</math> is a *-autonomous category, with <math>\bot</math> as dualizing object.<br />
<br />
==== Additives ====<br />
<br />
Given a family <math>(X_i)_{i\in I}</math>, let <math>\with_{i\in I}X_i=\cup_{i\in I}\{i\}\times X_i</math>. Let <math>\pi_j\in\mathbf{Rel}(\with_{i\in I}X_i,X_j)</math> given by <math>\pi_j=\set{((j,a),a)}{a\in X_j}</math>. Then <math>(\with_{i\in I}X_i,(\pi_i)_{i\in I})</math> is the cartesian product of the <math>X_i</math>s in the category <math>\mathbf{Rel}</math>.<br />
<br />
==== Exponentials ====<br />
<br />
One defines <math>\oc X</math> as the set of all finite multisets of elements of <math>X</math>. Given <math>s\in\mathbf{Rel}(X,Y)</math>, one defines <math>\oc s=\set{([a_1,\dots,a_n],[b_1,\dots,b_n])}{n\in\mathbb N\ \text{and}\ \forall i\ (a_i,b_i)\in s}</math> where <math>[a_1,\dots,a_n]</math> is the multiset containing <math>a_1,\dots,a_n</math>, taking multiplicities into account. This defines a functor <math>\mathbf{Rel}\to\mathbf{Rel}</math>, that we endow with a comonad structure as follows:<br />
* the counit, called dereliction, is the natural transformation <math>\mathsf{der}_X\in\mathbf{Rel}(\oc X,X)</math>, given by <math>\mathsf{der}_X=\set{([a],a)}{a\in X}</math><br />
* the comultiplication, called digging, is the natural transformation <math>\mathsf{digg}_X\in\mathbf{Rel}(\oc X,\oc\oc X)</math>, given by <math>\mathsf{digg}_X=\set{(m_1+\cdots+m_n,[m_1,\dots,m_n])}{n\in\mathbb N\ \text{and}\ m_1,\dots,m_n\in\oc X}</math><br />
<br />
=== Interpretation of propositional linear logic (<math>LL_0</math>) ===<br />
<br />
The structure described above gives rise to the following interpretation of<br />
formulas and proofs of linear logic.<br />
<br />
For all propositional variable <math>X</math>, fix a set <math>\web X</math>.<br />
Then with each formula <math>A</math>, we associate a set <math>\web A</math> as follows: <br />
* <math>\web{A\orth}=\web A</math>;<br />
* <math>\web{A\tens B}=\web{A\parr B}=\web A\times\web B</math>;<br />
* <math>\web{A\with B}=\web{A\plus B}=(\{1\}\times\web A)\cup(\{2\}\times\web B)</math>;<br />
* <math>\web{\oc A}=\web{\wn A}=\finmulset{\web A}</math>.<br />
<br />
We then interpret the proofs of <math>LL_0</math> as follows: with each proof<br />
<math>\pi</math> of sequent <math>\vdash A_1,\ldots,A_n</math>, we associate a<br />
subset <math>\sem\pi\subseteq\web{A_1}\times\cdots\times\web{A_n}</math>.<br />
* Identity group:<br />
*: <math>\sem{<br />
\LabelRule{ \rulename{axiom} }<br />
\NulRule{ \vdash A\orth, A }<br />
\DisplayProof}=\set{(a,a)}{a\in\web A}<br />
</math> <br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\AxRule{}<br />
\VdotsRule{ \rho }{ \vdash \Delta, A\orth }<br />
\LabelRule{ \rulename{cut} }<br />
\BinRule{ \vdash \Gamma, \Delta }<br />
\DisplayProof} = \set{(\gamma,\delta)}{\exists a\in\web A,\ (\gamma,a)\in\sem\pi\land(\delta,a)\in\sem\rho}<br />
</math><br />
* Multiplicative group:<br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\AxRule{}<br />
\VdotsRule{ \rho }{ \vdash \Delta, B }<br />
\LabelRule{ \tens }<br />
\BinRule{ \vdash \Gamma, \Delta, A \tens B }<br />
\DisplayProof} = \set{(\gamma,\delta,a,b)}{(\gamma,a)\in\sem\pi\land(\delta,b)\in\sem\rho}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ }<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A, B }<br />
\LabelRule{ \parr }<br />
\UnaRule{ \vdash \Gamma, A \parr B }<br />
\DisplayProof} = \set{(\gamma,(a,b))}{(\gamma,a,b)\in\sem\pi}<br />
</math> <br />
*: <math><br />
\sem{<br />
\LabelRule{ \one }<br />
\NulRule{ \vdash \one }<br />
\DisplayProof} = \{ * \}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma }<br />
\LabelRule{ \bot }<br />
\UnaRule{ \vdash \Gamma, \bot }<br />
\DisplayProof} = \set{(\gamma,*)}{\gamma\in\sem\pi}<br />
</math><br />
* Additive group:<br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\LabelRule{ \plus_1 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, B }<br />
\LabelRule{ \plus_2 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\AxRule{}<br />
\VdotsRule{ \rho }{ \vdash \Gamma, B }<br />
\LabelRule{ \with }<br />
\BinRule{ \vdash, \Gamma, A \with B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi} \cup \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\rho}<br />
</math><br />
*: <math><br />
\sem{<br />
\LabelRule{ \top }<br />
\NulRule{ \vdash \Gamma, \top }<br />
\DisplayProof} = \emptyset<br />
</math><br />
* Exponential group:<br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\LabelRule{ d }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[a])}{(\gamma,a)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma }<br />
\LabelRule{ w }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[])}{\gamma\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, \wn A, \wn A }<br />
\LabelRule{ c }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,m+n)}{(\gamma,m,n)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \wn A_1,\ldots,\wn A_n,B }<br />
\LabelRule{ \oc }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,\oc B }<br />
\DisplayProof} = \set{<br />
\left(\sum_{i=1}^k m_1^i,\ldots,\sum_{i=1}^k m_n^i,[b_1,\ldots,b_k]\right)}<br />
{\forall i,\ (m_1^i,\ldots,m_n^i,b_i)\in\sem\pi}<br />
</math><br />
<br />
{{Theorem|If proof <math>\pi'</math> is obtained from <math>\pi</math> by eliminating a cut, <br />
then <math>\sem\pi=\sem{\pi'}</math>.}}</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Relational_semanticsRelational semantics2009-06-10T19:48:58Z<p>Lionel Vaux: /* Interpretation of propositional linear logic (LL_0) */ Use \VdotsRule to denote prooftrees</p>
<hr />
<div>== Relational semantics ==<br />
<br />
This is the simplest denotational semantics of linear logic. It consists in interpreting a formula <math>A</math> as a set <math>A^*</math> and a proof <math>\pi</math> of <math>A</math> as a subset <math>\pi^*</math> of <math>A^*</math>.<br />
<br />
=== The category of sets and relations ===<br />
<br />
It is the category <math>\mathbf{Rel}</math> whose objects are sets, and such that <math>\mathbf{Rel}(X,Y)=\mathcal P(X\times Y)</math>. Composition is the ordinary composition of relations: given <math>s\in\mathbf{Rel}(X,Y)</math> and <math>t\in\mathbf{Rel}(Y,Z)</math>, one <br />
sets <math>t\circ s=\set{(a,c)\in X\times Z}{\exists b\in Y\ (a,b)\in s\ \text{and}\ (b,c)\in t}</math> and the identity morphism is the diagonal relation <math>\mathsf{Id}_X=\set{(a,a)}{a\in X}</math>.<br />
<br />
An isomorphism in the category <math>\mathbf{Rel}</math> is a relation which is a bijection, as easily checked.<br />
<br />
==== Monoidal structure ====<br />
<br />
The tensor product is the usual cartesian product of sets <math>X\tens Y=X\times Y</math> (which <em>is not</em> a cartesian product in the category <math>\mathbf{Rel}</math> in the categorical sense). It is a bifunctor: given <math>s_i\in\mathbf{Rel}(X_i,Y_i)</math> (for <math>i=1,2</math>), one sets <math>s_1\tens s_2=\set{((a_1,a_2),(b_1,b_2))}{(a_i,b_i)\in s_i\ \text{for}\ i=1,2}</math>. The unit of this tensor product is <math>\one=\{*\}</math> where <math>*</math> is an arbitrary element.<br />
<br />
For defining a monoidal category, it is not sufficient to provide the definition of the tensor product functor <math>\tens</math> and its unit <math>\one</math>, one has also to provide natural isomorphisms <math>\lambda_X\in\mathbf{Rel}(\one\tens X,X)</math>,<br />
<math>\rho_X\in\mathbf{Rel}(X\tens\one,X)</math> (left and right neutrality of <math>\one</math> for <math>\tens</math>) and <math>\alpha_{X,Y,Z}\in\mathbf{Rel}((X\tens Y)\tens Z,X\tens(Y\tens Z))</math> (associativity of <math>\tens</math>). All these isomorphisms have to satisfy a number of commutations. In the present case, they are defined in the obvious way.<br />
<br />
This monoidal category <math>(\mathbf{Rel},\tens,\one,\lambda,\rho)</math> is symmetric, meaning that it is endowed with an additional natural isomorphism <math>\sigma_{X,Y}\in\mathbf{Rel}(X\tens Y,Y\tens X)</math>, also subject to some commutations. Here, again, this isomorphism is defined in the obvious way (symmetry of the cartesian product). So, to be precise, the SMCC (symmetric monoidal closed category) <math>\mathbf{Rel}</math> is the tuple <math>(\mathbf{Rel},\tens,\one,\lambda,\rho,\alpha,\sigma)</math>, but we shall simply denote it as <math>\mathbf{Rel}</math>.<br />
<br />
The SMCC <math>\mathbf{Rel}</math> is closed. This means that, given any object <math>X</math> of <math>\mathbf{Rel}</math> (a set), the functor <math>Z\mapsto Z\tens X</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>) admits a right adjoint <math>Y\mapsto (X\limp Y)</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>). In other words, for any objects <math>X</math> and <math>Y</math>, we are given an object <math>X\limp Y</math> and a morphism <math>\mathsf{ev}_{X,Y}\in\mathbf{Rel}((X\limp Y)\tens X,Y)</math> with the following universal property: for any morphism <math>s\in\mathbf{Rel}(Z\tens X,Y)</math>, there is a unique morphism <math>\mathsf{fun}(s)\in\mathbf{Rel}(Z,X\limp Y)</math> such that <math>\mathsf{ev}_{X,Y}\circ(\mathsf{fun}(s)\tens\mathsf{Id}_X)=s</math>.<br />
<br />
The definition of all these data is quite simple in <math>\mathbf{Rel}</math>: <math>X\limp Y=X\times Y</math>, <math>\mathsf{ev}_{X,Y}=\set{(((a,b),a),b)}{(a,b)\in X\times Y}</math> and <math>\mathsf{fun}(s)=\set{(c,(a,b))}{((c,a),b)\in s}</math>.<br />
<br />
Let <math>\bot=\one=\{*\}</math>. Then we have <math>\mathsf{ev}\circ\sigma:\mathbf{Rel}(X\tens(X\limp\bot),\bot)</math> and hence <math>\eta_X=\mathsf{fun}(\mathsf{ev}\circ\sigma)\in\mathbf{Rel}(X,(X\limp\bot)\limp\bot)</math>. It is clear that <math>\eta=\set{(a,((a,*),*))}{a\in X}</math> and hence <math>\eta</math> is a natural isomorphism: one says that the SMCC <math>\mathbf{Rel}</math> is a *-autonomous category, with <math>\bot</math> as dualizing object.<br />
<br />
==== Additives ====<br />
<br />
Given a family <math>(X_i)_{i\in I}</math>, let <math>\with_{i\in I}X_i=\cup_{i\in I}\{i\}\times X_i</math>. Let <math>\pi_j\in\mathbf{Rel}(\with_{i\in I}X_i,X_j)</math> given by <math>\pi_j=\set{((j,a),a)}{a\in X_j}</math>. Then <math>(\with_{i\in I}X_i,(\pi_i)_{i\in I})</math> is the cartesian product of the <math>X_i</math>s in the category <math>\mathbf{Rel}</math>.<br />
<br />
==== Exponentials ====<br />
<br />
One defines <math>\oc X</math> as the set of all finite multisets of elements of <math>X</math>. Given <math>s\in\mathbf{Rel}(X,Y)</math>, one defines <math>\oc s=\set{([a_1,\dots,a_n],[b_1,\dots,b_n])}{n\in\mathbb N\ \text{and}\ \forall i\ (a_i,b_i)\in s}</math> where <math>[a_1,\dots,a_n]</math> is the multiset containing <math>a_1,\dots,a_n</math>, taking multiplicities into account. This defines a functor <math>\mathbf{Rel}\to\mathbf{Rel}</math>, that we endow with a comonad structure as follows:<br />
* the counit, called dereliction, is the natural transformation <math>\mathsf{der}_X\in\mathbf{Rel}(\oc X,X)</math>, given by <math>\mathsf{der}_X=\set{([a],a)}{a\in X}</math><br />
* the comultiplication, called digging, is the natural transformation <math>\mathsf{digg}_X\in\mathbf{Rel}(\oc X,\oc\oc X)</math>, given by <math>\mathsf{digg}_X=\set{(m_1+\cdots+m_n,[m_1,\dots,m_n])}{n\in\mathbb N\ \text{and}\ m_1,\dots,m_n\in\oc X}</math><br />
<br />
=== Interpretation of propositional linear logic (<math>LL_0</math>) ===<br />
<br />
The structure described above gives rise to the following interpretation of<br />
formulas and proofs of linear logic.<br />
<br />
For all propositional variable <math>X</math>, fix a set <math>\web X</math>.<br />
Then with each formula <math>A</math>, we associate a set <math>\web A</math> as follows: <br />
* <math>\web{A\orth}=\web A</math>;<br />
* <math>\web{A\tens B}=\web{A\parr B}=\web A\times\web B</math>;<br />
* <math>\web{A\with B}=\web{A\plus B}=(\{1\}\times\web A)\cup(\{2\}\times\web B)</math>;<br />
* <math>\web{\oc A}=\web{\wn A}=\mathcal M_f(\web A)</math>.<br />
<br />
We then interpret the proofs of <math>LL_0</math> as follows: with each proof<br />
<math>\pi</math> of sequent <math>\vdash A_1,\ldots,A_n</math>, we associate a<br />
subset <math>\sem\pi\subseteq\web{A_1}\times\cdots\times\web{A_n}</math>.<br />
* Identity group:<br />
*: <math>\sem{<br />
\LabelRule{ \rulename{axiom} }<br />
\NulRule{ \vdash A\orth, A }<br />
\DisplayProof}=\set{(a,a)}{a\in\web A}<br />
</math> <br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\AxRule{}<br />
\VdotsRule{ \rho }{ \vdash \Delta, A\orth }<br />
\LabelRule{ \rulename{cut} }<br />
\BinRule{ \vdash \Gamma, \Delta }<br />
\DisplayProof} = \set{(\gamma,\delta)}{\exists a\in\web A,\ (\gamma,a)\in\sem\pi\land(\delta,a)\in\sem\rho}<br />
</math><br />
* Multiplicative group:<br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\AxRule{}<br />
\VdotsRule{ \rho }{ \vdash \Delta, B }<br />
\LabelRule{ \tens }<br />
\BinRule{ \vdash \Gamma, \Delta, A \tens B }<br />
\DisplayProof} = \set{(\gamma,\delta,a,b)}{(\gamma,a)\in\sem\pi\land(\delta,b)\in\sem\rho}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ }<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A, B }<br />
\LabelRule{ \parr }<br />
\UnaRule{ \vdash \Gamma, A \parr B }<br />
\DisplayProof} = \set{(\gamma,(a,b))}{(\gamma,a,b)\in\sem\pi}<br />
</math> <br />
*: <math><br />
\sem{<br />
\LabelRule{ \one }<br />
\NulRule{ \vdash \one }<br />
\DisplayProof} = \{ * \}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma }<br />
\LabelRule{ \bot }<br />
\UnaRule{ \vdash \Gamma, \bot }<br />
\DisplayProof} = \set{(\gamma,*)}{\gamma\in\sem\pi}<br />
</math><br />
* Additive group:<br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\LabelRule{ \plus_1 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, B }<br />
\LabelRule{ \plus_2 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\AxRule{}<br />
\VdotsRule{ \rho }{ \vdash \Gamma, B }<br />
\LabelRule{ \with }<br />
\BinRule{ \vdash, \Gamma, A \with B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi} \cup \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\rho}<br />
</math><br />
*: <math><br />
\sem{<br />
\LabelRule{ \top }<br />
\NulRule{ \vdash \Gamma, \top }<br />
\DisplayProof} = \emptyset<br />
</math><br />
* Exponential group:<br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, A }<br />
\LabelRule{ d }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[a])}{(\gamma,a)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma }<br />
\LabelRule{ w }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[])}{\gamma\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \Gamma, \wn A, \wn A }<br />
\LabelRule{ c }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,m+n)}{(\gamma,m,n)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{}<br />
\VdotsRule{ \pi }{ \vdash \wn A_1,\ldots,\wn A_n,B }<br />
\LabelRule{ \oc }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,\oc B }<br />
\DisplayProof} = \set{<br />
\left(\sum_{i=1}^k m_1^i,\ldots,\sum_{i=1}^k m_n^i,[b_1,\ldots,b_k]\right)}<br />
{\forall i,\ (m_1^i,\ldots,m_n^i,b_i)\in\sem\pi}<br />
</math><br />
<br />
{{Theorem|If proof <math>\pi'</math> is obtained from <math>\pi</math> by eliminating a cut, <br />
then <math>\sem\pi=\sem{\pi'}</math>.}}</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Relational_semanticsRelational semantics2009-06-10T09:51:20Z<p>Lionel Vaux: /* Interpretation of propositional linear logic (LL_0) */ fixed bullet list</p>
<hr />
<div>== Relational semantics ==<br />
<br />
This is the simplest denotational semantics of linear logic. It consists in interpreting a formula <math>A</math> as a set <math>A^*</math> and a proof <math>\pi</math> of <math>A</math> as a subset <math>\pi^*</math> of <math>A^*</math>.<br />
<br />
=== The category of sets and relations ===<br />
<br />
It is the category <math>\mathbf{Rel}</math> whose objects are sets, and such that <math>\mathbf{Rel}(X,Y)=\mathcal P(X\times Y)</math>. Composition is the ordinary composition of relations: given <math>s\in\mathbf{Rel}(X,Y)</math> and <math>t\in\mathbf{Rel}(Y,Z)</math>, one <br />
sets <math>t\circ s=\set{(a,c)\in X\times Z}{\exists b\in Y\ (a,b)\in s\ \text{and}\ (b,c)\in t}</math> and the identity morphism is the diagonal relation <math>\mathsf{Id}_X=\set{(a,a)}{a\in X}</math>.<br />
<br />
An isomorphism in the category <math>\mathbf{Rel}</math> is a relation which is a bijection, as easily checked.<br />
<br />
==== Monoidal structure ====<br />
<br />
The tensor product is the usual cartesian product of sets <math>X\tens Y=X\times Y</math> (which <em>is not</em> a cartesian product in the category <math>\mathbf{Rel}</math> in the categorical sense). It is a bifunctor: given <math>s_i\in\mathbf{Rel}(X_i,Y_i)</math> (for <math>i=1,2</math>), one sets <math>s_1\tens s_2=\set{((a_1,a_2),(b_1,b_2))}{(a_i,b_i)\in s_i\ \text{for}\ i=1,2}</math>. The unit of this tensor product is <math>\one=\{*\}</math> where <math>*</math> is an arbitrary element.<br />
<br />
For defining a monoidal category, it is not sufficient to provide the definition of the tensor product functor <math>\tens</math> and its unit <math>\one</math>, one has also to provide natural isomorphisms <math>\lambda_X\in\mathbf{Rel}(\one\tens X,X)</math>,<br />
<math>\rho_X\in\mathbf{Rel}(X\tens\one,X)</math> (left and right neutrality of <math>\one</math> for <math>\tens</math>) and <math>\alpha_{X,Y,Z}\in\mathbf{Rel}((X\tens Y)\tens Z,X\tens(Y\tens Z))</math> (associativity of <math>\tens</math>). All these isomorphisms have to satisfy a number of commutations. In the present case, they are defined in the obvious way.<br />
<br />
This monoidal category <math>(\mathbf{Rel},\tens,\one,\lambda,\rho)</math> is symmetric, meaning that it is endowed with an additional natural isomorphism <math>\sigma_{X,Y}\in\mathbf{Rel}(X\tens Y,Y\tens X)</math>, also subject to some commutations. Here, again, this isomorphism is defined in the obvious way (symmetry of the cartesian product). So, to be precise, the SMCC (symmetric monoidal closed category) <math>\mathbf{Rel}</math> is the tuple <math>(\mathbf{Rel},\tens,\one,\lambda,\rho,\alpha,\sigma)</math>, but we shall simply denote it as <math>\mathbf{Rel}</math>.<br />
<br />
The SMCC <math>\mathbf{Rel}</math> is closed. This means that, given any object <math>X</math> of <math>\mathbf{Rel}</math> (a set), the functor <math>Z\mapsto Z\tens X</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>) admits a right adjoint <math>Y\mapsto (X\limp Y)</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>). In other words, for any objects <math>X</math> and <math>Y</math>, we are given an object <math>X\limp Y</math> and a morphism <math>\mathsf{ev}_{X,Y}\in\mathbf{Rel}((X\limp Y)\tens X,Y)</math> with the following universal property: for any morphism <math>s\in\mathbf{Rel}(Z\tens X,Y)</math>, there is a unique morphism <math>\mathsf{fun}(s)\in\mathbf{Rel}(Z,X\limp Y)</math> such that <math>\mathsf{ev}_{X,Y}\circ(\mathsf{fun}(s)\tens\mathsf{Id}_X)=s</math>.<br />
<br />
The definition of all these data is quite simple in <math>\mathbf{Rel}</math>: <math>X\limp Y=X\times Y</math>, <math>\mathsf{ev}_{X,Y}=\set{(((a,b),a),b)}{(a,b)\in X\times Y}</math> and <math>\mathsf{fun}(s)=\set{(c,(a,b))}{((c,a),b)\in s}</math>.<br />
<br />
Let <math>\bot=\one=\{*\}</math>. Then we have <math>\mathsf{ev}\circ\sigma:\mathbf{Rel}(X\tens(X\limp\bot),\bot)</math> and hence <math>\eta_X=\mathsf{fun}(\mathsf{ev}\circ\sigma)\in\mathbf{Rel}(X,(X\limp\bot)\limp\bot)</math>. It is clear that <math>\eta=\set{(a,((a,*),*))}{a\in X}</math> and hence <math>\eta</math> is a natural isomorphism: one says that the SMCC <math>\mathbf{Rel}</math> is a *-autonomous category, with <math>\bot</math> as dualizing object.<br />
<br />
==== Additives ====<br />
<br />
Given a family <math>(X_i)_{i\in I}</math>, let <math>\with_{i\in I}X_i=\cup_{i\in I}\{i\}\times X_i</math>. Let <math>\pi_j\in\mathbf{Rel}(\with_{i\in I}X_i,X_j)</math> given by <math>\pi_j=\set{((j,a),a)}{a\in X_j}</math>. Then <math>(\with_{i\in I}X_i,(\pi_i)_{i\in I})</math> is the cartesian product of the <math>X_i</math>s in the category <math>\mathbf{Rel}</math>.<br />
<br />
==== Exponentials ====<br />
<br />
One defines <math>\oc X</math> as the set of all finite multisets of elements of <math>X</math>. Given <math>s\in\mathbf{Rel}(X,Y)</math>, one defines <math>\oc s=\set{([a_1,\dots,a_n],[b_1,\dots,b_n])}{n\in\mathbb N\ \text{and}\ \forall i\ (a_i,b_i)\in s}</math> where <math>[a_1,\dots,a_n]</math> is the multiset containing <math>a_1,\dots,a_n</math>, taking multiplicities into account. This defines a functor <math>\mathbf{Rel}\to\mathbf{Rel}</math>, that we endow with a comonad structure as follows:<br />
* the counit, called dereliction, is the natural transformation <math>\mathsf{der}_X\in\mathbf{Rel}(\oc X,X)</math>, given by <math>\mathsf{der}_X=\set{([a],a)}{a\in X}</math><br />
* the comultiplication, called digging, is the natural transformation <math>\mathsf{digg}_X\in\mathbf{Rel}(\oc X,\oc\oc X)</math>, given by <math>\mathsf{digg}_X=\set{(m_1+\cdots+m_n,[m_1,\dots,m_n])}{n\in\mathbb N\ \text{and}\ m_1,\dots,m_n\in\oc X}</math><br />
<br />
=== Interpretation of propositional linear logic (<math>LL_0</math>) ===<br />
<br />
The structure described above gives rise to the following interpretation of<br />
formulas and proofs of linear logic.<br />
<br />
For all propositional variable <math>X</math>, fix a set <math>\web X</math>.<br />
Then with each formula <math>A</math>, we associate a set <math>\web A</math> as follows: <br />
* <math>\web{A\orth}=\web A</math>;<br />
* <math>\web{A\tens B}=\web{A\parr B}=\web A\times\web B</math>;<br />
* <math>\web{A\with B}=\web{A\plus B}=(\{1\}\times\web A)\cup(\{2\}\times\web B)</math>;<br />
* <math>\web{\oc A}=\web{\wn A}=\mathcal M_f(\web A)</math>.<br />
<br />
We then interpret the proofs of <math>LL_0</math> as follows: with each proof<br />
<math>\pi</math> of sequent <math>\vdash A_1,\ldots,A_n</math>, we associate a<br />
subset <math>\sem\pi\subseteq\web{A_1}\times\cdots\times\web{A_n}</math>.<br />
* Identity group:<br />
*: <math>\sem{<br />
\LabelRule{ \rulename{axiom} }<br />
\NulRule{ \vdash A\orth, A }<br />
\DisplayProof}=\set{(a,a)}{a\in\web A}<br />
</math> <br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Delta, A\orth }<br />
\LabelRule{ \rulename{cut} }<br />
\BinRule{ \vdash \Gamma, \Delta }<br />
\DisplayProof} = \set{(\gamma,\delta)}{\exists a\in\web A,\ (\gamma,a)\in\sem\pi\land(\delta,a)\in\sem\rho}<br />
</math><br />
* Multiplicative group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Delta, B }<br />
\LabelRule{ \tens }<br />
\BinRule{ \vdash \Gamma, \Delta, A \tens B }<br />
\DisplayProof} = \set{(\gamma,\delta,a,b)}{(\gamma,a)\in\sem\pi\land(\delta,b)\in\sem\rho}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A, B }<br />
\LabelRule{ \parr }<br />
\UnaRule{ \vdash \Gamma, A \parr B }<br />
\DisplayProof} = \set{(\gamma,(a,b))}{(\gamma,a,b)\in\sem\pi}<br />
</math> <br />
*: <math><br />
\sem{<br />
\LabelRule{ \one }<br />
\NulRule{ \vdash \one }<br />
\DisplayProof} = \{ * \}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma }<br />
\LabelRule{ \bot }<br />
\UnaRule{ \vdash \Gamma, \bot }<br />
\DisplayProof} = \set{(\gamma,*)}{\gamma\in\sem\pi}<br />
</math><br />
* Additive group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\LabelRule{ \plus_1 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, B }<br />
\LabelRule{ \plus_2 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Gamma, B }<br />
\LabelRule{ \with }<br />
\BinRule{ \vdash, \Gamma, A \with B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi} \cup \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\rho}<br />
</math><br />
*: <math><br />
\sem{<br />
\LabelRule{ \top }<br />
\NulRule{ \vdash \Gamma, \top }<br />
\DisplayProof} = \emptyset<br />
</math><br />
* Exponential group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\LabelRule{ d }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[a])}{(\gamma,a)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma }<br />
\LabelRule{ w }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[])}{\gamma\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, \wn A, \wn A }<br />
\LabelRule{ c }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,m+n)}{(\gamma,m,n)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,B }<br />
\LabelRule{ \oc }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,\oc B }<br />
\DisplayProof} = \set{<br />
\left(\sum_{i=1}^k m_1^i,\ldots,\sum_{i=1}^k m_n^i,[b_1,\ldots,b_k]\right)}<br />
{\forall i,\ (m_1^i,\ldots,m_n^i,b_i)\in\sem\pi}<br />
</math><br />
<br />
{{Theorem|If proof <math>\pi'</math> is obtained from <math>\pi</math> by eliminating a cut, <br />
then <math>\sem\pi=\sem{\pi'}</math>.}}</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Relational_semanticsRelational semantics2009-06-10T09:45:44Z<p>Lionel Vaux: use llwiki.sty macro \set for sets</p>
<hr />
<div>== Relational semantics ==<br />
<br />
This is the simplest denotational semantics of linear logic. It consists in interpreting a formula <math>A</math> as a set <math>A^*</math> and a proof <math>\pi</math> of <math>A</math> as a subset <math>\pi^*</math> of <math>A^*</math>.<br />
<br />
=== The category of sets and relations ===<br />
<br />
It is the category <math>\mathbf{Rel}</math> whose objects are sets, and such that <math>\mathbf{Rel}(X,Y)=\mathcal P(X\times Y)</math>. Composition is the ordinary composition of relations: given <math>s\in\mathbf{Rel}(X,Y)</math> and <math>t\in\mathbf{Rel}(Y,Z)</math>, one <br />
sets <math>t\circ s=\set{(a,c)\in X\times Z}{\exists b\in Y\ (a,b)\in s\ \text{and}\ (b,c)\in t}</math> and the identity morphism is the diagonal relation <math>\mathsf{Id}_X=\set{(a,a)}{a\in X}</math>.<br />
<br />
An isomorphism in the category <math>\mathbf{Rel}</math> is a relation which is a bijection, as easily checked.<br />
<br />
==== Monoidal structure ====<br />
<br />
The tensor product is the usual cartesian product of sets <math>X\tens Y=X\times Y</math> (which <em>is not</em> a cartesian product in the category <math>\mathbf{Rel}</math> in the categorical sense). It is a bifunctor: given <math>s_i\in\mathbf{Rel}(X_i,Y_i)</math> (for <math>i=1,2</math>), one sets <math>s_1\tens s_2=\set{((a_1,a_2),(b_1,b_2))}{(a_i,b_i)\in s_i\ \text{for}\ i=1,2}</math>. The unit of this tensor product is <math>\one=\{*\}</math> where <math>*</math> is an arbitrary element.<br />
<br />
For defining a monoidal category, it is not sufficient to provide the definition of the tensor product functor <math>\tens</math> and its unit <math>\one</math>, one has also to provide natural isomorphisms <math>\lambda_X\in\mathbf{Rel}(\one\tens X,X)</math>,<br />
<math>\rho_X\in\mathbf{Rel}(X\tens\one,X)</math> (left and right neutrality of <math>\one</math> for <math>\tens</math>) and <math>\alpha_{X,Y,Z}\in\mathbf{Rel}((X\tens Y)\tens Z,X\tens(Y\tens Z))</math> (associativity of <math>\tens</math>). All these isomorphisms have to satisfy a number of commutations. In the present case, they are defined in the obvious way.<br />
<br />
This monoidal category <math>(\mathbf{Rel},\tens,\one,\lambda,\rho)</math> is symmetric, meaning that it is endowed with an additional natural isomorphism <math>\sigma_{X,Y}\in\mathbf{Rel}(X\tens Y,Y\tens X)</math>, also subject to some commutations. Here, again, this isomorphism is defined in the obvious way (symmetry of the cartesian product). So, to be precise, the SMCC (symmetric monoidal closed category) <math>\mathbf{Rel}</math> is the tuple <math>(\mathbf{Rel},\tens,\one,\lambda,\rho,\alpha,\sigma)</math>, but we shall simply denote it as <math>\mathbf{Rel}</math>.<br />
<br />
The SMCC <math>\mathbf{Rel}</math> is closed. This means that, given any object <math>X</math> of <math>\mathbf{Rel}</math> (a set), the functor <math>Z\mapsto Z\tens X</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>) admits a right adjoint <math>Y\mapsto (X\limp Y)</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>). In other words, for any objects <math>X</math> and <math>Y</math>, we are given an object <math>X\limp Y</math> and a morphism <math>\mathsf{ev}_{X,Y}\in\mathbf{Rel}((X\limp Y)\tens X,Y)</math> with the following universal property: for any morphism <math>s\in\mathbf{Rel}(Z\tens X,Y)</math>, there is a unique morphism <math>\mathsf{fun}(s)\in\mathbf{Rel}(Z,X\limp Y)</math> such that <math>\mathsf{ev}_{X,Y}\circ(\mathsf{fun}(s)\tens\mathsf{Id}_X)=s</math>.<br />
<br />
The definition of all these data is quite simple in <math>\mathbf{Rel}</math>: <math>X\limp Y=X\times Y</math>, <math>\mathsf{ev}_{X,Y}=\set{(((a,b),a),b)}{(a,b)\in X\times Y}</math> and <math>\mathsf{fun}(s)=\set{(c,(a,b))}{((c,a),b)\in s}</math>.<br />
<br />
Let <math>\bot=\one=\{*\}</math>. Then we have <math>\mathsf{ev}\circ\sigma:\mathbf{Rel}(X\tens(X\limp\bot),\bot)</math> and hence <math>\eta_X=\mathsf{fun}(\mathsf{ev}\circ\sigma)\in\mathbf{Rel}(X,(X\limp\bot)\limp\bot)</math>. It is clear that <math>\eta=\set{(a,((a,*),*))}{a\in X}</math> and hence <math>\eta</math> is a natural isomorphism: one says that the SMCC <math>\mathbf{Rel}</math> is a *-autonomous category, with <math>\bot</math> as dualizing object.<br />
<br />
==== Additives ====<br />
<br />
Given a family <math>(X_i)_{i\in I}</math>, let <math>\with_{i\in I}X_i=\cup_{i\in I}\{i\}\times X_i</math>. Let <math>\pi_j\in\mathbf{Rel}(\with_{i\in I}X_i,X_j)</math> given by <math>\pi_j=\set{((j,a),a)}{a\in X_j}</math>. Then <math>(\with_{i\in I}X_i,(\pi_i)_{i\in I})</math> is the cartesian product of the <math>X_i</math>s in the category <math>\mathbf{Rel}</math>.<br />
<br />
==== Exponentials ====<br />
<br />
One defines <math>\oc X</math> as the set of all finite multisets of elements of <math>X</math>. Given <math>s\in\mathbf{Rel}(X,Y)</math>, one defines <math>\oc s=\set{([a_1,\dots,a_n],[b_1,\dots,b_n])}{n\in\mathbb N\ \text{and}\ \forall i\ (a_i,b_i)\in s}</math> where <math>[a_1,\dots,a_n]</math> is the multiset containing <math>a_1,\dots,a_n</math>, taking multiplicities into account. This defines a functor <math>\mathbf{Rel}\to\mathbf{Rel}</math>, that we endow with a comonad structure as follows:<br />
* the counit, called dereliction, is the natural transformation <math>\mathsf{der}_X\in\mathbf{Rel}(\oc X,X)</math>, given by <math>\mathsf{der}_X=\set{([a],a)}{a\in X}</math><br />
* the comultiplication, called digging, is the natural transformation <math>\mathsf{digg}_X\in\mathbf{Rel}(\oc X,\oc\oc X)</math>, given by <math>\mathsf{digg}_X=\set{(m_1+\cdots+m_n,[m_1,\dots,m_n])}{n\in\mathbb N\ \text{and}\ m_1,\dots,m_n\in\oc X}</math><br />
<br />
=== Interpretation of propositional linear logic (<math>LL_0</math>) ===<br />
<br />
The structure described above gives rise to the following interpretation of<br />
formulas and proofs of linear logic.<br />
<br />
For all propositional variable <math>X</math>, fix a set <math>\web X</math>.<br />
Then with each formula <math>A</math>, we associate a set <math>\web A</math> as follows: <br />
* <math>\web{A\orth}=\web A</math>;<br />
* <math>\web{A\tens B}=\web{A\parr B}=\web A\times\web B</math>;<br />
* <math>\web{A\with B}=\web{A\plus B}=(\{1\}\times\web A)\cup(\{2\}\times\web B)</math>;<br />
* <math>\web{\oc A}=\web{\wn A}=\mathcal M_f(\web A)</math>.<br />
<br />
We then interpret the proofs of <math>LL_0</math> as follows: with each proof<br />
<math>\pi</math> of sequent <math>\vdash A_1,\ldots,A_n</math>, we associate a<br />
subset <math>\sem\pi\subseteq\web{A_1}\times\cdots\times\web{A_n}</math>.<br />
* Identity group:<br />
*: <math>\sem{<br />
\LabelRule{ \rulename{axiom} }<br />
\NulRule{ \vdash A\orth, A }<br />
\DisplayProof}=\set{(a,a)}{a\in\web A}<br />
</math> <br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Delta, A\orth }<br />
\LabelRule{ \rulename{cut} }<br />
\BinRule{ \vdash \Gamma, \Delta }<br />
\DisplayProof} = \set{(\gamma,\delta)}{\exists a\in\web A,\ (\gamma,a)\in\sem\pi\land(\delta,a)\in\sem\rho}<br />
</math><br />
* Multiplicative group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Delta, B }<br />
\LabelRule{ \tens }<br />
\BinRule{ \vdash \Gamma, \Delta, A \tens B }<br />
\DisplayProof} = \set{(\gamma,\delta,a,b)}{(\gamma,a)\in\sem\pi\land(\delta,b)\in\sem\rho}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A, B }<br />
\LabelRule{ \parr }<br />
\UnaRule{ \vdash \Gamma, A \parr B }<br />
\DisplayProof} = \set{(\gamma,(a,b))}{(\gamma,a,b)\in\sem\pi}<br />
</math> <br />
*: <math><br />
\sem{<br />
\LabelRule{ \one }<br />
\NulRule{ \vdash \one }<br />
\DisplayProof} = \{ * \}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma }<br />
\LabelRule{ \bot }<br />
\UnaRule{ \vdash \Gamma, \bot }<br />
\DisplayProof} = \set{(\gamma,*)}{\gamma\in\sem\pi}<br />
</math><br />
* Additive group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\LabelRule{ \plus_1 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi}<br />
</math><br />
:* <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, B }<br />
\LabelRule{ \plus_2 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\pi}<br />
</math><br />
:* <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Gamma, B }<br />
\LabelRule{ \with }<br />
\BinRule{ \vdash, \Gamma, A \with B }<br />
\DisplayProof} = \set{(\gamma,(1,a))}{(\gamma,a)\in\sem\pi} \cup \set{(\gamma,(2,b))}{(\gamma,b)\in\sem\rho}<br />
</math><br />
:* <math><br />
\sem{<br />
\LabelRule{ \top }<br />
\NulRule{ \vdash \Gamma, \top }<br />
\DisplayProof} = \emptyset<br />
</math><br />
* Exponential group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\LabelRule{ d }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[a])}{(\gamma,a)\in\sem\pi}<br />
</math><br />
:* <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma }<br />
\LabelRule{ w }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,[])}{\gamma\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, \wn A, \wn A }<br />
\LabelRule{ c }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \set{(\gamma,m+n)}{(\gamma,m,n)\in\sem\pi}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,B }<br />
\LabelRule{ \oc }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,\oc B }<br />
\DisplayProof} = \set{<br />
\left(\sum_{i=1}^k m_1^i,\ldots,\sum_{i=1}^k m_n^i,[b_1,\ldots,b_k]\right)}<br />
{\forall i,\ (m_1^i,\ldots,m_n^i,b_i)\in\sem\pi}<br />
</math><br />
<br />
{{Theorem|If proof <math>\pi'</math> is obtained from <math>\pi</math> by eliminating a cut, <br />
then <math>\sem\pi=\sem{\pi'}</math>.}}</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/LLWiki_LaTeX_StyleLLWiki LaTeX Style2009-06-10T09:39:26Z<p>Lionel Vaux: example of proof tree</p>
<hr />
<div>== Mathematical notations ==<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|-<br />
| <math>A\orth</math><br />
| <pre>A\orth</pre><br />
|-<br />
| <math>A\biorth</math><br />
| <pre>A\biorth</pre><br />
|-<br />
| <math>A\triorth</math><br />
| <pre>A\triorth</pre><br />
|-<br />
| <math>A\tens B</math><br />
| <pre>A\tens B</pre><br />
|-<br />
| <math>A\parr B</math><br />
| <pre>A\parr B</pre><br />
|-<br />
| <math>A\plus B</math><br />
| <pre>A\plus B</pre><br />
|-<br />
| <math>A\with B</math><br />
| <pre>A\with B</pre><br />
|-<br />
| <math>\one</math><br />
| <pre>\one</pre><br />
|-<br />
| <math>\bot</math><br />
| <pre>\bot</pre><br />
|-<br />
| <math>\zero</math><br />
| <pre>\zero</pre><br />
|-<br />
| <math>\top</math><br />
| <pre>\top</pre><br />
|-<br />
| <math>\oc A</math><br />
| <pre>\oc A</pre><br />
|-<br />
| <math>\wn A</math><br />
| <pre>\wn A</pre><br />
|-<br />
| <math>A\limp B</math><br />
| <pre>A\limp B</pre><br />
|-<br />
| <math>A\linequiv B</math><br />
| <pre>A\linequiv B</pre><br />
|-<br />
| <math>\shpos A</math><br />
| <pre>\shpos A</pre><br />
|-<br />
| <math>\shneg A</math><br />
| <pre>\shneg A</pre><br />
|-<br />
| <math>\shift A</math><br />
| <pre>\shift A</pre><br />
|-<br />
| <math>\pg A</math><br />
| <pre>\pg A</pre><br />
|-<br />
| <math>A\imp B</math><br />
| <pre>A\imp B</pre><br />
|-<br />
| <math>\sem{A}</math><br />
| <pre>\sem{A}</pre><br />
|-<br />
| <math>\web{A}</math><br />
| <pre>\web{A}</pre><br />
|-<br />
| <math>A\coh B</math><br />
| <pre>A\coh B</pre><br />
|-<br />
| <math>A\scoh B</math><br />
| <pre>A\scoh B</pre><br />
|-<br />
| <math>A\incoh B</math><br />
| <pre>A\incoh B</pre><br />
|-<br />
| <math>A\sincoh B</math><br />
| <pre>A\sincoh B</pre><br />
|-<br />
| <math>A\cliq B</math><br />
| <pre>A\cliq B</pre><br />
|-<br />
| <math>\set{x}{P}</math><br />
| <pre>\set{x}{P}</pre><br />
|-<br />
| <math>\Bot</math><br />
| <pre>\Bot</pre><br />
|-<br />
| <math>A\Perp B</math><br />
| <pre>A\Perp B</pre><br />
|-<br />
|}<br />
<br />
== Proof trees ==<br />
<br />
<math><br />
\AxRule{{}\vdash\Gamma,A\parr B\parr C}<br />
\NulRule{{}\vdash A,A\orth}<br />
\NulRule{{}\vdash B,B\orth}<br />
\NulRule{{}\vdash C,C\orth}<br />
\TriRule{{}\vdash A,B,C,A\orth\tens B\orth\tens C\orth}<br />
\LabelRule{\rulename{cut}}<br />
\BinRule{{}\vdash\Gamma,A,B,C}<br />
\UnaRule{{}\vdash\Gamma,A\parr B\parr C}<br />
\DisplayProof<br />
</math></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Relational_semanticsRelational semantics2009-05-23T19:44:11Z<p>Lionel Vaux: /* Relational semantics */ Interpretation of first order propositional linear logic</p>
<hr />
<div>== Relational semantics ==<br />
<br />
This is the simplest denotational semantics of linear logic. It consists in interpreting a formula <math>A</math> as a set <math>A^*</math> and a proof <math>\pi</math> of <math>A</math> as a subset <math>\pi^*</math> of <math>A^*</math>.<br />
<br />
=== The category of sets and relations ===<br />
<br />
It is the category <math>\mathbf{Rel}</math> whose objects are sets, and such that <math>\mathbf{Rel}(X,Y)=\mathcal P(X\times Y)</math>. Composition is the ordinary composition of relations: given <math>s\in\mathbf{Rel}(X,Y)</math> and <math>t\in\mathbf{Rel}(Y,Z)</math>, one <br />
sets <math>t\circ s=\set{(a,c)\in X\times Z}{\exists b\in Y\ (a,b)\in s\ \text{and}\ (b,c)\in t}</math> and the identity morphism is the diagonal relation <math>\mathsf{Id}_X=\set{(a,a)}{a\in X}</math>.<br />
<br />
An isomorphism in the category <math>\mathbf{Rel}</math> is a relation which is a bijection, as easily checked.<br />
<br />
==== Monoidal structure ====<br />
<br />
The tensor product is the usual cartesian product of sets <math>X\tens Y=X\times Y</math> (which <em>is not</em> a cartesian product in the category <math>\mathbf{Rel}</math> in the categorical sense). It is a bifunctor: given <math>s_i\in\mathbf{Rel}(X_i,Y_i)</math> (for <math>i=1,2</math>), one sets <math>s_1\tens s_2=\set{((a_1,a_2),(b_1,b_2))}{(a_i,b_i)\in s_i\ \text{for}\ i=1,2}</math>. The unit of this tensor product is <math>\one=\{*\}</math> where <math>*</math> is an arbitrary element.<br />
<br />
For defining a monoidal category, it is not sufficient to provide the definition of the tensor product functor <math>\tens</math> and its unit <math>\one</math>, one has also to provide natural isomorphisms <math>\lambda_X\in\mathbf{Rel}(\one\tens X,X)</math>,<br />
<math>\rho_X\in\mathbf{Rel}(X\tens\one,X)</math> (left and right neutrality of <math>\one</math> for <math>\tens</math>) and <math>\alpha_{X,Y,Z}\in\mathbf{Rel}((X\tens Y)\tens Z,X\tens(Y\tens Z))</math> (associativity of <math>\tens</math>). All these isomorphisms have to satisfy a number of commutations. In the present case, they are defined in the obvious way.<br />
<br />
This monoidal category <math>(\mathbf{Rel},\tens,\one,\lambda,\rho)</math> is symmetric, meaning that it is endowed with an additional natural isomorphism <math>\sigma_{X,Y}\in\mathbf{Rel}(X\tens Y,Y\tens X)</math>, also subject to some commutations. Here, again, this isomorphism is defined in the obvious way (symmetry of the cartesian product). So, to be precise, the SMCC (symmetric monoidal closed category) <math>\mathbf{Rel}</math> is the tuple <math>(\mathbf{Rel},\tens,\one,\lambda,\rho,\alpha,\sigma)</math>, but we shall simply denote it as <math>\mathbf{Rel}</math>.<br />
<br />
The SMCC <math>\mathbf{Rel}</math> is closed. This means that, given any object <math>X</math> of <math>\mathbf{Rel}</math> (a set), the functor <math>Z\mapsto Z\tens X</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>) admits a right adjoint <math>Y\mapsto (X\limp Y)</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>). In other words, for any objects <math>X</math> and <math>Y</math>, we are given an object <math>X\limp Y</math> and a morphism <math>\mathsf{ev}_{X,Y}\in\mathbf{Rel}((X\limp Y)\tens X,Y)</math> with the following universal property: for any morphism <math>s\in\mathbf{Rel}(Z\tens X,Y)</math>, there is a unique morphism <math>\mathsf{fun}(s)\in\mathbf{Rel}(Z,X\limp Y)</math> such that <math>\mathsf{ev}_{X,Y}\circ(\mathsf{fun}(s)\tens\mathsf{Id}_X)=s</math>.<br />
<br />
The definition of all these data is quite simple in <math>\mathbf{Rel}</math>: <math>X\limp Y=X\times Y</math>, <math>\mathsf{ev}_{X,Y}=\set{(((a,b),a),b)}{(a,b)\in X\times Y}</math> and <math>\mathsf{fun}(s)=\set{(c,(a,b))}{((c,a),b)\in s}</math>.<br />
<br />
Let <math>\bot=\one=\{*\}</math>. Then we have <math>\mathsf{ev}\circ\sigma:\mathbf{Rel}(X\tens(X\limp\bot),\bot)</math> and hence <math>\eta_X=\mathsf{fun}(\mathsf{ev}\circ\sigma)\in\mathbf{Rel}(X,(X\limp\bot)\limp\bot)</math>. It is clear that <math>\eta=\set{(a,((a,*),*))}{a\in X}</math> and hence <math>\eta</math> is a natural isomorphism: one says that the SMCC <math>\mathbf{Rel}</math> is a *-autonomous category, with <math>\bot</math> as dualizing object.<br />
<br />
==== Additives ====<br />
<br />
Given a family <math>(X_i)_{i\in I}</math>, let <math>\with_{i\in I}X_i=\cup_{i\in I}\{i\}\times X_i</math>. Let <math>\pi_j\in\mathbf{Rel}(\with_{i\in I}X_i,X_j)</math> given by <math>\pi_j=\set{((j,a),a)}{a\in X_j}</math>. Then <math>(\with_{i\in I}X_i,(\pi_i)_{i\in I})</math> is the cartesian product of the <math>X_i</math>s in the category <math>\mathbf{Rel}</math>.<br />
<br />
==== Exponentials ====<br />
<br />
One defines <math>\oc X</math> as the set of all finite multisets of elements of <math>X</math>. Given <math>s\in\mathbf{Rel}(X,Y)</math>, one defines <math>\oc s=\set{([a_1,\dots,a_n],[b_1,\dots,b_n])}{n\in\mathbb N\ \text{and}\ \forall i\ (a_i,b_i)\in s}</math> where <math>[a_1,\dots,a_n]</math> is the multiset containing <math>a_1,\dots,a_n</math>, taking multiplicities into account. This defines a functor <math>\mathbf{Rel}\to\mathbf{Rel}</math>, that we endow with a comonad structure as follows:<br />
* the counit, called dereliction, is the natural transformation <math>\mathsf{der}_X\in\mathbf{Rel}(\oc X,X)</math>, given by <math>\mathsf{der}_X=\set{([a],a)}{a\in X}</math><br />
* the comultiplication, called digging, is the natural transformation <math>\mathsf{digg}_X\in\mathbf{Rel}(\oc X,\oc\oc X)</math>, given by <math>\mathsf{digg}_X=\set{(m_1+\cdots+m_n,[m_1,\dots,m_n])}{n\in\mathbb N\ \text{and}\ m_1,\dots,m_n\in\oc X}</math><br />
<br />
=== Interpretation of first order propositional linear logic (<math>LL_0</math>) ===<br />
<br />
The structure described above gives rise to the following interpretation of<br />
formulas and proofs of linear logic.<br />
<br />
For all propositional variable <math>X</math>, fix a set <math>\web X</math>.<br />
Then with each formula <math>A</math>, we associate a set <math>\web A</math> as follows: <br />
* <math>\web{A\orth}=\web A</math>;<br />
* <math>\web{A\tens B}=\web{A\parr B}=\web A\times\web B</math>;<br />
* <math>\web{A\with B}=\web{A\plus B}=(\{1\}\times\web A)\cup(\{2\}\times\web B)</math>;<br />
* <math>\web{\oc A}=\web{\wn A}=\mathcal M_f(\web A)</math>.<br />
<br />
We then interpret the proofs of <math>LL_0</math> as follows: with each proof<br />
<math>\pi</math> of sequent <math>\vdash A_1,\ldots,A_n</math>, we associate a<br />
subset <math>\sem\pi\subseteq\web{A_1}\times\cdots\times\web{A_n}</math>.<br />
* Identity group:<br />
*: <math>\sem{<br />
\LabelRule{ \rulename{axiom} }<br />
\NulRule{ \vdash A\orth, A }<br />
\DisplayProof}=\{(a,a);\ a\in\web A\}<br />
</math> <br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Delta, A\orth }<br />
\LabelRule{ \rulename{cut} }<br />
\BinRule{ \vdash \Gamma, \Delta }<br />
\DisplayProof} = \left\{(\gamma,\delta);\ \exists a\in\web A,\ (\gamma,a)\in\sem\pi\land(\delta,a)\in\sem\rho\right\}<br />
</math><br />
* Multiplicative group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Delta, B }<br />
\LabelRule{ \tens }<br />
\BinRule{ \vdash \Gamma, \Delta, A \tens B }<br />
\DisplayProof} = \left\{(\gamma,\delta,a,b);\ (\gamma,a)\in\sem\pi\land(\delta,b)\in\sem\rho\right\}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A, B }<br />
\LabelRule{ \parr }<br />
\UnaRule{ \vdash \Gamma, A \parr B }<br />
\DisplayProof} = \left\{(\gamma,(a,b));\ (\gamma,a,b)\in\sem\pi\right\}<br />
</math> <br />
*: <math><br />
\sem{<br />
\LabelRule{ \one }<br />
\NulRule{ \vdash \one }<br />
\DisplayProof} = \{ * \}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma }<br />
\LabelRule{ \bot }<br />
\UnaRule{ \vdash \Gamma, \bot }<br />
\DisplayProof} = \{ (\gamma,*);\ \gamma\in\sem\pi\}<br />
</math><br />
* Additive group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\LabelRule{ \plus_1 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \{ (\gamma,(1,a));\ (\gamma,a)\in\sem\pi\}<br />
</math><br />
:* <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, B }<br />
\LabelRule{ \plus_2 }<br />
\UnaRule{ \vdash \Gamma, A \plus B }<br />
\DisplayProof} = \{ (\gamma,(2,b));\ (\gamma,b)\in\sem\pi\}<br />
</math><br />
:* <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\AxRule{ \rho }<br />
\UnaRule{ \vdash \Gamma, B }<br />
\LabelRule{ \with }<br />
\BinRule{ \vdash, \Gamma, A \with B }<br />
\DisplayProof} = \{ (\gamma,(1,a));\ (\gamma,a)\in\sem\pi\}\cup \{ (\gamma,(2,b));\ (\gamma,b)\in\sem\rho\}<br />
</math><br />
:* <math><br />
\sem{<br />
\LabelRule{ \top }<br />
\NulRule{ \vdash \Gamma, \top }<br />
\DisplayProof} = \emptyset<br />
</math><br />
* Exponential group:<br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, A }<br />
\LabelRule{ d }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \{ (\gamma,[a]);\ (\gamma,a)\in\sem\pi\}<br />
</math><br />
:* <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma }<br />
\LabelRule{ w }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \{ (\gamma,[]);\ \gamma\in\sem\pi\}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \Gamma, \wn A, \wn A }<br />
\LabelRule{ c }<br />
\UnaRule{ \vdash \Gamma, \wn A }<br />
\DisplayProof} = \{ (\gamma,m+n);\ (\gamma,m,n)\in\sem\pi\}<br />
</math><br />
*: <math><br />
\sem{<br />
\AxRule{ \pi }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,B }<br />
\LabelRule{ \oc }<br />
\UnaRule{ \vdash \wn A_1,\ldots,\wn A_n,\oc B }<br />
\DisplayProof} = \left\{<br />
\left(\sum_{i=1}^k m_1^i,\ldots,\sum_{i=1}^k m_n^i,[b_1,\ldots,b_k]\right);<br />
\ \forall i,\ (m_1^i,\ldots,m_n^i,b_i)\in\sem\pi\right\}<br />
</math><br />
<br />
{{Theorem|If proof <math>\pi'</math> is obtained from <math>\pi</math> by eliminating a cut, <br />
then <math>\sem\pi=\sem{\pi'}</math>.}}</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Phase_semanticsPhase semantics2009-05-23T13:19:38Z<p>Lionel Vaux: /* Relations and operators on subsets */ simplified definition of <R></p>
<hr />
<div>==Introduction==<br />
<br />
The semantics given by phase spaces is a kind of "formula and provability semantics", and is thus quite different in spirit from the more usual denotational semantics of linear logic. (Those are rather some "formulas and ''proofs'' semantics".)<br />
<br />
--- probably a whole lot more of blabla to put here... ---<br />
<br />
==Preliminaries: relation and closure operators==<br />
<br />
Part of the structure obtained from phase semantics works in a very general framework and relies solely on the notion of relation between two sets.<br />
<br />
<br />
===Relations and operators on subsets===<br />
<br />
The starting point of phase semantics is the notion of ''duality''. The structure needed to talk about duality is very simple: one just needs a relation <math>R</math> between two sets <math>X</math> and <math>Y</math>. Using standard mathematical practice, we can write either <math>(a,b) \in R</math> or <math>a\mathrel{R} b</math> to say that <math>a\in X</math> and <math>b\in Y</math> are related.<br />
<br />
{{Definition|<br />
If <math>R\subseteq X\times Y</math> is a relation, we write <math>R^\sim\subseteq Y\times X</math> for the converse relation: <math>(b,a)\in R^\sim</math> iff <math>(a,b)\in R</math>.<br />
}}<br />
<br />
Such a relation yields three interesting operators sending subsets of <math>X</math> to subsets of <math>Y</math>:<br />
<br />
{{Definition|<br />
Let <math>R\subseteq X\times Y</math> be a relation, define the operators <math>\langle R\rangle</math>, <math>[R]</math> and <math>\_^R</math> taking subsets of <math>X</math> to subsets of <math>Y</math> as follows:<br />
# <math>b\in\langle R\rangle(x)</math> iff <math>\exists a\in x,\ (a,b)\in R</math><br />
# <math>b\in[R](x)</math> iff <math>\forall a\in X,\ (a,b)\in R \implies a\in x</math><br />
# <math>b\in x^R</math> iff <math>\forall a\in x, (a,b)\in R</math><br />
}}<br />
<br />
The operator <math>\langle R\rangle</math> is usually called the ''direct image'' of the relation, <math>[R]</math> is sometimes called the ''universal image'' of the relation.<br />
<br />
It is trivial to check that <math>\langle R\rangle</math> and <math>[R]</math> are covariant (increasing for the <math>\subseteq</math> relation) while <math>\_^R</math> is contravariant (decreasing for the <math>\subseteq</math> relation). More interesting:<br />
<br />
{{Lemma|title=Galois Connections|<br />
# <math>\langle R\rangle</math> is right-adjoint to <math>[R^\sim]</math>: for any <math>x\subseteq X</math> and <math>y\subseteq Y</math>, we have <math>[R^\sim]y \subseteq x</math> iff <math>y\subseteq \langle R\rangle(x)</math><br />
# we have <math>y\subseteq x^R</math> iff <math>x\subseteq y^{R^\sim}</math><br />
}}<br />
<br />
This implies directly that <math>\langle R\rangle</math> commutes with arbitrary unions and <math>[R]</math> commutes with arbitrary intersections. (And in fact, any operator commuting with arbitrary unions (resp. intersections) is of the form <math>\langle R\rangle</math> (resp. <math>[R]</math>).<br />
<br />
{{Remark|the operator <math>\_^R</math> sends unions to intersections because <math>\_^R : \mathcal{P}(X) \to \mathcal{P}(Y)^\mathrm{op}</math> is right adjoint to <math>\_^{R^\sim} : \mathcal{P}(Y)^{\mathrm{op}} \to \mathcal{P}(X)</math>...}}<br />
<br />
===Closure operators===<br />
<br />
{{Definition|<br />
A closure operator on <math>\mathcal{P}(X)</math> is a monotonic operator <math>P</math> on the subsets of <math>X</math> which satisfies:<br />
# for all <math>x\subseteq X</math>, we have <math>x\subseteq P(x)</math><br />
# for all <math>x\subseteq X</math>, we have <math>P(P(x))\subseteq P(x)</math><br />
}}<br />
<br />
Closure operators are quite common in mathematics and computer science. They correspond exactly to the notion of ''monad'' on a preorder...<br />
<br />
It follows directly from the definition that for any closure operator <math>P</math>, the image <math>P(x)</math> is a fixed point of <math>P</math>. Moreover:<br />
<br />
{{Lemma|<br />
<math>P(x)</math> is the smallest fixed point of <math>P</math> containing <math>x</math>.<br />
}}<br />
<br />
One other important property is the following:<br />
<br />
{{Lemma|<br />
Write <math>\mathcal{F}(P) = \{x\ |\ P(x)\subseteq x\}</math> for the collection of fixed points of a closure operator <math>P</math>. We have that <math>\left(\mathcal{F}(P),\bigcap\right)</math> is a complete inf-lattice.<br />
}}<br />
<br />
{{Remark|<br />
A closure operator is in fact determined by its set of fixed points: we have <math>P(x) = \bigcup \{ y\ |\ y\in\mathcal{F}(P),\,y\subseteq x\}</math>}}<br />
<br />
Since any complete inf-lattice is automatically a complete sup-lattice, <math>\mathcal{F}(P)</math> is also a complete sup-lattice. However, the sup operation isn't given by plain union:<br />
<br />
{{Lemma|<br />
If <math>P</math> is a closure operator on <math>\mathcal{P}(X)</math>, and if <math>(x_i)_{i\in I}</math> is a (possibly infinite) family of subsets of <math>X</math>, we write <math>\bigvee_{i\in I} x_i = P\left(\bigcup_{i\in I} x_i\right)</math>.<br />
<br />
We have <math>\left(\mathcal{F}(P),\bigcap,\bigvee\right)</math> is a complete lattice.<br />
}}<br />
<br />
{{Proof|<br />
easy.<br />
}}<br />
<br />
<br />
A rather direct consequence of the Galois connections of the previous section is:<br />
<br />
{{Lemma|<br />
The operator and <math>\langle R\rangle \circ [R^\sim]</math> and the operator <math>x\mapsto {x^R}^{R^\sim}</math> are closures.<br />
}}<br />
<br />
A last trivial lemma:<br />
<br />
{{Lemma|<br />
We have <math>x^R = {{x^R}^{R^\sim}}^{R}</math>.<br />
<br />
As a consequence, a subset <math>x\subseteq X</math> is in <math>\mathcal{F}({\_^R}^{R^\sim})</math> iff it is of the form <math>y^{R^\sim}</math>.<br />
}}<br />
<br />
{{Remark|everything gets a little simpler when <math>R</math> is a symmetric relation on <math>X</math>.}}<br />
<br />
==Phase Semantics==<br />
<br />
<br />
===Phase spaces===<br />
<br />
{{Definition|title=monoid|<br />
A monoid is simply a set <math>X</math> equipped with a binary operation <math>\_\cdot\_</math> s.t.:<br />
# the operation is associative<br />
# there is a neutral element <math>1\in X</math><br />
The monoid is ''commutative'' when the binary operation is commutative.<br />
}}<br />
<br />
{{Definition|title=Phase space|<br />
A phase space is given by:<br />
# a commutative monoid <math>(X,1,\cdot)</math>,<br />
# together with a subset <math>\Bot\subseteq X</math>.<br />
The elements of <math>X</math> are called ''phases''.<br />
<br />
We write <math>\bot</math> for the relation <math>\{(a,b)\ |\ a\cdot b \in \Bot\}</math>. This relation is symmetric.<br />
<br />
A ''fact'' in a phase space is simply a fixed point for the closure operator <math>x\mapsto x\biorth</math>.<br />
}}<br />
<br />
<br />
Thanks to the preliminary work, we have:<br />
<br />
{{Corollary|<br />
The set of facts of a phase space is a complete lattice where:<br />
# <math>\bigwedge_{i\in I} x_i</math> is simply <math>\bigcap_{i\in I} x_i</math>,<br />
# <math>\bigvee_{i\in I} x_i</math> is <math>\left(\bigcup_{i\in I} x_i\right)\biorth</math>.<br />
}}<br />
<br />
===Additive connectives===<br />
<br />
The previous corollary makes the following definition correct:<br />
<br />
{{Definition|title=additive connectives|<br />
If <math>(X,1,\cdot,\Bot)</math> is a phase space, we define the following facts and operations on facts:<br />
# <math>\top = X = \emptyset\orth</math><br />
# <math>\zero = \emptyset\biorth = X\orth</math><br />
# <math>x\with y = x\cap y</math><br />
# <math>x\plus y = (x\cup y)\biorth</math><br />
}}<br />
<br />
Once again, the next lemma follows from previous observations:<br />
<br />
{{Lemma|title=additive de Morgan laws|<br />
We have<br />
# <math>\zero\orth = \top</math><br />
# <math>\top\orth = \zero</math><br />
# <math>(x\with y)\orth = x\orth \plus y\orth</math><br />
# <math>(x\plus y)\orth = x\orth \with y\orth</math><br />
}}<br />
<br />
===Multiplicative connectives===<br />
<br />
In order to define the multiplicative connectives, we actually need to use the monoid structure of our phase space. One interpretation that is reminiscent in phase semantics is that our spaces are collections of ''tests'' / programs / proofs / ''strategies'' that can interact with each other. The result of the interaction between <math>a</math> and <math>b</math> is simply <math>a\cdot b</math>.<br />
<br />
The set <math>\Bot</math> can be thought of as the set of "good" things, and we thus have <math>a\in x\orth</math> iff "<math>a</math> interacts correctly with all the elements of <math>x</math>".<br />
<br />
<br />
{{Definition|<br />
If <math>x</math> and <math>y</math> are two subsets of a phase space, we write <math>x\cdot y</math> for the set <math>\{a\cdot b\ |\ a\in x, b\in y\}</math>.<br />
}}<br />
Thus <math>x\cdot y</math> contains all the possible interactions between one element of <math>x</math> and one element of <math>y</math>.<br />
<br />
<br />
The tensor connective of linear logic is now defined as:<br />
<br />
{{Definition| title=multiplicative connectives|<br />
If <math>x</math> and <math>y</math> are facts in a phase space, we define<br />
* <math>\one = \{1\}\biorth</math>;<br />
* <math>\bot = \one\orth</math>;<br />
* the tensor <math>x\tens y</math> to be the fact <math>(x\cdot y)\biorth</math>;<br />
* the par connective is the de Morgan dual of the tensor: <math>x\parr y = (x\orth \tens y\orth)\orth</math>;<br />
* the linear arrow is just <math>x\limp y = (x\tens y\orth)\orth</math>.<br />
}}<br />
<br />
Note that by unfolding the definition of <math>\limp</math>, we have the following, "intuitive" definition of <math>x\limp y</math>:<br />
<br />
{{Lemma|<br />
If <math>x</math> and <math>y</math> are facts, we have <math>a\in x\limp y</math> iff <math>\forall b\in x,\,a\cdot b\in y</math><br />
}}<br />
<br />
{{Proof|<br />
easy exercise. }}<br />
<br />
Readers familiar with realisability will appreciate...<br />
<br />
{{Remark|<br />
Some people say that this idea of orthogonality was implicitly present in Tait's proof of strong normalisation. More recently, Jean-Louis Krivine and Alexandre Miquel have used the idea explicitly to do realisability...}}<br />
<br />
<br />
===Properties===<br />
<br />
All the expected properties hold:<br />
<br />
{{Lemma|<br />
* The operations <math>\tens</math>, <math>\parr</math>, <math>\plus</math> and <math>\with</math> are commutative and associative,<br />
* They have respectively <math>\one</math>, <math>\bot</math>, <math>\zero</math> and <math>\top</math> for neutral element,<br />
* <math>\zero</math> is absorbant for <math>\tens</math>,<br />
* <math>\top</math> is absorbant for <math>\parr</math>,<br />
* <math>\tens</math> distributes over <math>\plus</math>,<br />
* <math>\parr</math> distributes over <math>\with</math>.<br />
}}<br />
<br />
===Exponentials===<br />
<br />
{{Definition|title=Exponentials|<br />
Write <math>I</math> for the set of idempotents of a phase space: <math>I=\{a\ |\ a\cdot a=a\}</math>. We put:<br />
# <math>\oc x = (x\cap I\cap \one)\biorth</math>,<br />
# <math>\wn x = (x\orth\cap I\cap\one)\orth</math>.<br />
}}<br />
<br />
This definition captures precisely the intuition behind the exponentials:<br />
* we need to have contraction, hence we restrict to indempotents in <math>x</math>,<br />
* and weakening, hence we restrict to <math>\one</math>.<br />
Since <math>I</math> isn't necessarily a fact, we then take the biorthogonal to get a fact...<br />
<br />
==Completeness==<br />
<br />
<br />
<br />
==The Rest==</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-05-22T18:30:47Z<p>Lionel Vaux: /* Finiteness spaces */ link to closure operators</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the purely relational model of linear logic. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls [[Phase_semantics#Closure_operators|familiar definitions]], as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\mathfrak P(A)</math> the powerset of <math>A</math> and by <math>\mathfrak P_f(A)</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \mathfrak P(A)</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak F}</math> in <math>A</math> as <math>{\mathfrak F}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak F},\ a\cap a'\in\mathfrak P_f(A)\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak F}\orth</math>. For all <math>{\mathfrak F}\subseteq\mathfrak P(A)</math>, we have the following immediate properties: <math>\mathfrak P_f(A) \subseteq {\mathfrak F}\orth</math>; <math>{\mathfrak F}\subseteq {\mathfrak F}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak F}</math>, <math>{\mathfrak F}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak F}\orth = {\mathfrak F}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak F}</math> of subsets of <math>A</math> such that <math>{\mathfrak F}\biorth = {\mathfrak F}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\mathfrak P_f(A))</math> is a finiteness space and <math>(A,\mathfrak P_f(A))\orth = (A,\mathfrak P(A))</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\mathfrak P_f(A))=(A,\mathfrak P(A))</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak F}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak F}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
\begin{center}<br />
\begin{tabular}{r@{\ iff\ }l}<br />
<math>f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> & <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall \beta\in \web{{\mathcal B}}</math>, <math>f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall \alpha\in \web{{\mathcal A}}</math>, <math>f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\end{tabular}<br />
\end{center}<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>. The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
\begin{eqnarray*}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=&\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=&\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{eqnarray*}<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: <br />
<br />
<math>\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).</math><br />
<br />
<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\mathfrak M_f(A)</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\mathfrak M_f(a)\subseteq\mathfrak M_f(A)</math>.<br />
If <math>\overline\alpha\in\mathfrak M_f(A)</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak P_f(A)</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \mathfrak M_f\left(\web{{\mathcal A}}\right)</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\mathfrak M_f\left(\web{{\mathcal A}}\right);\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
<br />
<br />
<math>\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),</math><br />
<br />
<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
<br />
<br />
<math>\left\{ \left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\ (\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal A}\tens\oc{\mathcal B}).</math><br />
<br />
<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-05-22T18:01:25Z<p>Lionel Vaux: fixed display math</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the purely relational model of linear logic. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls familiar definitions, as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\mathfrak P(A)</math> the powerset of <math>A</math> and by <math>\mathfrak P_f(A)</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \mathfrak P(A)</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak F}</math> in <math>A</math> as <math>{\mathfrak F}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak F},\ a\cap a'\in\mathfrak P_f(A)\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak F}\orth</math>. For all <math>{\mathfrak F}\subseteq\mathfrak P(A)</math>, we have the following immediate properties: <math>\mathfrak P_f(A) \subseteq {\mathfrak F}\orth</math>; <math>{\mathfrak F}\subseteq {\mathfrak F}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak F}</math>, <math>{\mathfrak F}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak F}\orth = {\mathfrak F}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak F}</math> of subsets of <math>A</math> such that <math>{\mathfrak F}\biorth = {\mathfrak F}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\mathfrak P_f(A))</math> is a finiteness space and <math>(A,\mathfrak P_f(A))\orth = (A,\mathfrak P(A))</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\mathfrak P_f(A))=(A,\mathfrak P(A))</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak F}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak F}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
\begin{center}<br />
\begin{tabular}{r@{\ iff\ }l}<br />
<math>f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> & <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall \beta\in \web{{\mathcal B}}</math>, <math>f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall \alpha\in \web{{\mathcal A}}</math>, <math>f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\end{tabular}<br />
\end{center}<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>. The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
\begin{eqnarray*}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=&\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=&\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{eqnarray*}<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: <br />
<br />
<math>\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).</math><br />
<br />
<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\mathfrak M_f(A)</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\mathfrak M_f(a)\subseteq\mathfrak M_f(A)</math>.<br />
If <math>\overline\alpha\in\mathfrak M_f(A)</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak P_f(A)</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \mathfrak M_f\left(\web{{\mathcal A}}\right)</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\mathfrak M_f\left(\web{{\mathcal A}}\right);\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
<br />
<br />
<math>\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),</math><br />
<br />
<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
<br />
<br />
<math>\left\{ \left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\ (\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal A}\tens\oc{\mathcal B}).</math><br />
<br />
<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-05-22T17:56:50Z<p>Lionel Vaux: support for \[ and \]</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the purely relational model of linear logic. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls familiar definitions, as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\mathfrak P(A)</math> the powerset of <math>A</math> and by <math>\mathfrak P_f(A)</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \mathfrak P(A)</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak F}</math> in <math>A</math> as <math>{\mathfrak F}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak F},\ a\cap a'\in\mathfrak P_f(A)\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak F}\orth</math>. For all <math>{\mathfrak F}\subseteq\mathfrak P(A)</math>, we have the following immediate properties: <math>\mathfrak P_f(A) \subseteq {\mathfrak F}\orth</math>; <math>{\mathfrak F}\subseteq {\mathfrak F}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak F}</math>, <math>{\mathfrak F}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak F}\orth = {\mathfrak F}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak F}</math> of subsets of <math>A</math> such that <math>{\mathfrak F}\biorth = {\mathfrak F}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\mathfrak P_f(A))</math> is a finiteness space and <math>(A,\mathfrak P_f(A))\orth = (A,\mathfrak P(A))</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\mathfrak P_f(A))=(A,\mathfrak P(A))</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak F}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak F}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
\begin{center}<br />
\begin{tabular}{r@{\ iff\ }l}<br />
<math>f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> & <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall \beta\in \web{{\mathcal B}}</math>, <math>f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall \alpha\in \web{{\mathcal A}}</math>, <math>f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\end{tabular}<br />
\end{center}<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>. The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
\begin{eqnarray*}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=&\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=&\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{eqnarray*}<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: <br />
<br />
<math>\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).</math><br />
<br />
<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\mathfrak M_f(A)</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\mathfrak M_f(a)\subseteq\mathfrak M_f(A)</math>.<br />
If <math>\overline\alpha\in\mathfrak M_f(A)</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak P_f(A)</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \mathfrak M_f\left(\web{{\mathcal A}}\right)</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\mathfrak M_f\left(\web{{\mathcal A}}\right);\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
<br />
<br />
<math>\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),</math><br />
<br />
<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
<br />
<br />
<math>\left\{<br />
\left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\<br />
(\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal<br />
B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal<br />
B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal<br />
A}\tens\oc{\mathcal B}).</math><br />
<br />
<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-05-22T17:53:28Z<p>Lionel Vaux: math typo</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the purely relational model of linear logic. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls familiar definitions, as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\mathfrak P(A)</math> the powerset of <math>A</math> and by <math>\mathfrak P_f(A)</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \mathfrak P(A)</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak f}</math> in <math>A</math> as <math>{\mathfrak f}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak f},\ a\cap a'\in\mathfrak P_f(A)\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak f}\orth</math>. For all <math>{\mathfrak f}\subseteq\mathfrak P(A)</math>, we have the following immediate properties: <math>\mathfrak P_f(A) \subseteq {\mathfrak f}\orth</math>; <math>{\mathfrak f}\subseteq {\mathfrak f}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak f}</math>, <math>{\mathfrak f}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak f}\orth = {\mathfrak f}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak f}</math> of subsets of <math>A</math> such that <math>{\mathfrak f}\biorth = {\mathfrak f}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\mathfrak P_f(A))</math> is a finiteness space and <math>(A,\mathfrak P_f(A))\orth = (A,\mathfrak P(A))</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\mathfrak P_f(A))=(A,\mathfrak P(A))</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak f}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak f}</math> is not closed under directed unions in general: for all <math>k\in{\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
\begin{center}<br />
\begin{tabular}{r@{\ iff\ }l}<br />
<math>f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> & <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall \beta\in \web{{\mathcal B}}</math>, <math>f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall \alpha\in \web{{\mathcal A}}</math>, <math>f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\end{tabular}<br />
\end{center}<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>. The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
\begin{eqnarray*}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=&\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=&\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{eqnarray*}<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: \[\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).\]<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\mathfrak M_f(A)</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\mathfrak M_f(a)\subseteq\mathfrak M_f(A)</math>.<br />
If <math>\overline\alpha\in\mathfrak M_f(A)</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak P_f(A)</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \mathfrak M_f\left(\web{{\mathcal A}}\right)</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\mathfrak M_f\left(\web{{\mathcal A}}\right);\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
\[\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),\]<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
\[\left\{<br />
\left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\<br />
(\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal<br />
B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal<br />
B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal<br />
A}\tens\oc{\mathcal B}).\]<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-05-22T17:52:12Z<p>Lionel Vaux: fixed math and sectionning</p>
<hr />
<div>The category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations was introduced by Ehrhard, refining the purely relational model of linear logic. A finiteness space is a set equipped with a finiteness structure, i.e. a particular set of subsets which are said to be finitary; and the model is such that the usual relational denotation of a proof in linear logic is always a finitary subset of its conclusion. By the usual co-Kleisli construction, this also provides a model of the simply typed lambda-calculus: the cartesian closed category <math>\mathbf{Fin}_\oc</math>.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary subsets of dual types is always finite. This feature allows to reformulate Girard's quantitative semantics in a standard algebraic setting, where morphisms interpreting typed <math>\lambda</math>-terms are analytic functions between the topological vector spaces generated by vectors with finitary supports. This provided the semantical foundations of Ehrhard-Regnier's differential <math>\lambda</math>-calculus and motivated the general study of a differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed <math>\lambda</math>-calculi only: for instance, the relational semantics of fixpoint combinators is never finitary. The whole point of the finiteness construction is actually to reject infinite computations. Indeed, from a logical point of view, computation is cut elimination: the finiteness structure ensures the intermediate sets involved in the relational interpretation of a cut are all finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
== Finiteness spaces ==<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is given by the following notion of orthogonality: <math>a\mathrel \bot a'</math> iff <math>a\cap a'</math> is finite. Then one unrolls familiar definitions, as we do in the following paragraphs.<br />
<br />
Let <math>A</math> be a set. Denote by <math>\mathfrak P(A)</math> the powerset of <math>A</math> and by <math>\mathfrak P_f(A)</math> the set of all finite subsets of <math>A</math>. Let <math>{\mathfrak F} \subseteq \mathfrak P(A)</math> any set of subsets of <math>A</math>. We define the pre-dual of <math>{\mathfrak f}</math> in <math>A</math> as <math>{\mathfrak f}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak f},\ a\cap a'\in\mathfrak P_f(A)\right\}</math>. In general we will omit the subscript in the pre-dual notation and just write <math>{\mathfrak f}\orth</math>. For all <math>{\mathfrak f}\subseteq\mathfrak P(A)</math>, we have the following immediate properties: <math>\mathfrak P_f(A) \subseteq {\mathfrak f}\orth</math>; <math>{\mathfrak f}\subseteq {\mathfrak f}\biorth</math>; if <math>{\mathfrak G}\subseteq{\mathfrak f}</math>, <math>{\mathfrak f}\orth\subseteq {\mathfrak G}\orth</math>. By the last two, we get <math>{\mathfrak f}\orth = {\mathfrak f}\triorth</math>. A finiteness structure on <math>A</math> is then a set <math>{\mathfrak f}</math> of subsets of <math>A</math> such that <math>{\mathfrak f}\biorth = {\mathfrak f}</math>.<br />
<br />
A finiteness space is a dependant pair <math>{\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)</math> where <math>\web {\mathcal A}</math> is the underlying set (the web of <math>{\mathcal A}</math>) and <math>\mathfrak F\left(\mathcal A\right)</math> is a finiteness structure on <math>\web {\mathcal A}</math>. We then write <math>{\mathcal A}\orth</math> for the dual finiteness space: <math>\web {{\mathcal A}\orth} = \web {\mathcal A}</math> and <math>\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}</math>. The elements of <math>\mathfrak F\left(\mathcal A\right)</math> are called the finitary subsets of <math>{\mathcal A}</math>.<br />
<br />
===== Example. =====<br />
For all set <math>A</math>, <math>(A,\mathfrak P_f(A))</math> is a finiteness space and <math>(A,\mathfrak P_f(A))\orth = (A,\mathfrak P(A))</math>. In particular, each finite set <math>A</math> is the web of exactly one finiteness space: <math>(A,\mathfrak P_f(A))=(A,\mathfrak P(A))</math>. We introduce the following two: <math>\zero = \zero\orth = \left(\emptyset, \{\emptyset\}\right)</math> and <math>\one = \one\orth = \left(\{\emptyset\}, \{\emptyset, \{\emptyset\}\}\right)</math>. We also introduce the finiteness space of natural numbers <math>{\mathcal N}</math> by: <math>|{\mathcal N}|={\mathbf N}</math> and <math>a\in\mathfrak F\left(\mathcal N\right)</math> iff <math>a</math> is finite. We write <math>\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
Notice that <math>{\mathfrak F}</math> is a finiteness structure iff it is of the form <math>{\mathfrak G}\orth</math>. It follows that any finiteness structure <math>{\mathfrak f}</math> is downwards closed for inclusion, and closed under finite unions and arbitrary intersections. Notice however that <math>{\mathfrak f}</math> is not closed under directed unions in general: for all <math>k\in{\\mathbf N}</math>, write <math>k{\downarrow}=\left\{j;\ j\le k\right\}\in\mathfrak F\left({\mathcal N}\right)</math>; then <math>k{\downarrow}\subseteq k'{\downarrow}</math> as soon as <math>k\le k'</math>, but <math>\bigcup_{k\ge0} k{\downarrow}={\\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)</math>.<br />
<br />
<br />
=== Multiplicatives ===<br />
For all finiteness spaces <math>{\mathcal A}</math> and <math>{\mathcal B}</math>, we define <math>{\mathcal A} \tens {\mathcal B}</math> by <math>\web {{\mathcal A} \tens {\mathcal B}} = \web{\mathcal A} \times \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{a\times b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth</math>. It can be shown that <math>\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = \left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}</math>, where <math>\left.c\right|_l</math> and <math>\left.c\right|_r</math> are the obvious projections. <br />
<br />
Let <math>f\subseteq A \times B</math> be a relation from <math>A</math> to <math>B</math>, we write <math>f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}</math>. For all <math>a\subseteq A</math>, we set <math>f\cdot a = \left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}</math>. If moreover <math>g\subseteq B \times C</math>, we define <math>g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}</math>. Then, setting <math>{\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth</math>, <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}</math> is characterized as follows:<br />
\begin{center}<br />
\begin{tabular}{r@{\ iff\ }l}<br />
<math>f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> & <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall a\in \mathfrak F\left({\mathcal A}\right)</math>, <math>f\cdot a \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall \beta\in \web{{\mathcal B}}</math>, <math>f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\\<br />
& <math>\forall \alpha\in \web{{\mathcal A}}</math>, <math>f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right)</math> and <math>\forall b\in \mathfrak F\left({\mathcal B}\orth\right)</math>, <math>f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)</math><br />
\end{tabular}<br />
\end{center}<br />
The elements of <math>\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math> are called finitary relations from <math>{\mathcal A}</math> to <math>{\mathcal B}</math>. By the previous characterization, the identity relation <math>\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}</math> is finitary, and the composition of two finitary relations is also finitary. One can thus define the category <math>\mathbf{Fin}</math> of finiteness spaces and finitary relations: the objects of <math>\mathbf{Fin}</math> are all finiteness spaces, and <math>\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)</math>. Equipped with the tensor product <math>\tens</math>, <math>\mathbf{Fin}</math> is symmetric monoidal, with unit <math>\one</math>; it is monoidal closed by the definition of <math>\limp</math>; it is <math>*</math>-autonomous by the obvious isomorphism between <math>{\mathcal A}\orth</math> and <math>{\mathcal A}\limp\one</math>.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, <math>{\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}</math> (consider <math>{\mathcal A}</math> and --><br />
<!-- <math>{\mathcal B}</math> such that <math>\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}</math> and <math>\web{{\mathcal B}}</math> is finite). --><br />
<br />
===== Example. =====<br />
Setting <math>\mathcal{S}=\left\{(k,k+1);\ k\in{\\mathbf N}\right\}</math> and <math>\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}</math>, we have <math>\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})</math> and <math>\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}</math>.<br />
<br />
<br />
<br />
=== Additives ===<br />
We now introduce the cartesian structure of <math>\mathbf{Fin}</math>. We define <math>{\mathcal A} \oplus {\mathcal B}</math> by <math>\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus \web{\mathcal B}</math> and <math>\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}</math> where <math>\uplus</math> denotes the disjoint union of sets: <math>x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)</math>. We have <math>\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth</math>. The category <math>\mathbf{Fin}</math> is both cartesian and co-cartesian, with <math>\oplus</math> being the product and co-product, and <math>\zero</math> the initial and terminal object. Projections are given by:<br />
\begin{eqnarray*}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=&\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=&\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{eqnarray*}<br />
and if <math>f\in\mathbf{Fin}({\mathcal C},{\mathcal A})</math> and <math>g\in\mathbf{Fin}({\mathcal C},{\mathcal B})</math>, pairing is given by: \[\left\langle f,g\right\rangle = \left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\} \cup \left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} \in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).\]<br />
The unique morphism from <math>{\mathcal A}</math> to <math>\zero</math> is the empty relation. The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write <math>{\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)</math>. Then <math>\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle =\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} \in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)</math><br />
is an isomorphism.<br />
<!-- the inverse of which we denote by <math>\mathcal{P}</math>. --><br />
<!-- Hence <math>\one\oplus{\mathcal N}\cong {\mathcal N}</math>. --><br />
<br />
=== Exponentials ===<br />
If <math>A</math> is a set, we denote by <math>\mathfrak M_f(A)</math> the set of all finite multisets of<br />
elements of <math>A</math>, and if <math>a\subseteq A</math>, we write <math>a^{\oc}=\mathfrak M_f(a)\subseteq\mathfrak M_f(A)</math>.<br />
If <math>\overline\alpha\in\mathfrak M_f(A)</math>, we denote its support by<br />
<math>\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak P_f(A)</math>. For all finiteness space <math>{\mathcal A}</math>, we define<br />
<math>\oc {\mathcal A}</math> by: <math>\web{\oc {\mathcal A}}= \mathfrak M_f\left(\web{{\mathcal A}}\right)</math> and <math>\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth</math>.<br />
It can be shown that <math>\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\mathfrak M_f\left(\web{{\mathcal A}}\right);\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}</math>.<br />
Then, for all <math>f\in\mathbf{Fin}({\mathcal A},{\mathcal B})</math>, we set<br />
\[\oc f =\left\{\left(\left[\alpha_1,\ldots,\alpha_n\right],\left[\beta_1,\ldots,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),\]<br />
which defines a functor.<br />
Natural transformations <br />
<math>\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in \web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})</math> and <br />
<math>\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\ldots,\overline\alpha_n\right]\right);\ \forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}</math> make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- <math>\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)</math>, --><br />
<math>\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)</math><br />
and<br />
\[\left\{<br />
\left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\<br />
(\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal<br />
B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal<br />
B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal<br />
A}\tens\oc{\mathcal B}).\]<br />
More generally, we have<br />
<math>\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n</math>.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Finiteness_semanticsFiniteness semantics2009-05-22T17:38:35Z<p>Lionel Vaux: initial import</p>
<hr />
<div>The category $\mathbf{Fin}$ of finiteness spaces and finitary relations was introduced<br />
by Ehrhard, refining the purely relational model of linear<br />
logic. A finiteness space is a set equipped with a finiteness structure, i.e.<br />
a particular set of subsets which are said to be finitary; and the model is<br />
such that the usual relational denotation of a proof in linear logic is always<br />
a finitary subset of its conclusion. By the usual co-Kleisli construction,<br />
this also provides a model of the simply typed lambda-calculus: the cartesian<br />
closed category $\mathbf{Fin}_\oc$.<br />
<br />
The main property of finiteness spaces is that the intersection of two finitary<br />
subsets of dual types is always finite. This feature allows to reformulate<br />
Girard's quantitative semantics in a standard algebraic setting, where<br />
morphisms interpreting typed $\lambda$-terms are analytic functions between the<br />
topological vector spaces generated by vectors with finitary supports. This<br />
provided the semantical foundations of Ehrhard-Regnier's differential<br />
$\lambda$-calculus and motivated the general study of a<br />
differential extension of linear logic.<br />
<br />
It is worth noticing that finiteness spaces can accomodate typed<br />
$\lambda$-calculi only: for instance, the relational semantics of fixpoint<br />
combinators is never finitary. The whole point of the finiteness construction<br />
is actually to reject infinite computations. Indeed, from a logical point of<br />
view, computation is cut elimination: the finiteness structure ensures the<br />
intermediate sets involved in the relational interpretation of a cut are all<br />
finite. In that sense, the finitary semantics is intrinsically typed.<br />
<br />
\section*{Finiteness spaces}<br />
<br />
The construction of finiteness spaces follows a well known pattern. It is<br />
given by the following notion of orthogonality: $a\mathrel \bot a'$ iff<br />
$a\cap a'$ is finite. Then one unrolls familiar definitions, as we do in the<br />
following paragraphs.<br />
<br />
Let $A$ be a set. Denote by $\mathfrak P(A)$ the powerset of $A$ and by $\mathfrak P_f(A)$<br />
the set of all finite subsets of $A$. Let ${\mathfrak f} \subseteq \mathfrak P(A)$ any<br />
set of subsets of $A$. We define the pre-dual of ${\mathfrak f}$ in $A$ as<br />
${\mathfrak f}^{\bot_{A}}=\left\{a'\subseteq A;\ \forall a\in{\mathfrak f},\ a\cap<br />
a'\in\mathfrak P_f(A)\right\}$. In general we will omit the subscript in the pre-dual notation<br />
and just write ${\mathfrak f}\orth$. For all ${\mathfrak f}\subseteq\mathfrak P(A)$, we have<br />
the following immediate properties: $\mathfrak P_f(A) \subseteq {\mathfrak f}\orth$;<br />
${\mathfrak f}\subseteq {\mathfrak f}\biorth$; if ${\mathfrak G}\subseteq{\mathfrak f}$,<br />
${\mathfrak f}\orth\subseteq {\mathfrak G}\orth$. By the last two, we get ${\mathfrak f}\orth =<br />
{\mathfrak f}\triorth$. A finiteness structure on $A$ is then a set ${\mathfrak f}$<br />
of subsets of $A$ such that ${\mathfrak f}\biorth = {\mathfrak f}$.<br />
<br />
A finiteness space is a dependant pair <br />
${\mathcal A}=\left(\web{\mathcal A},\mathfrak F\left(\mathcal A\right)\right)$ where<br />
$\web {\mathcal A}$ is the underlying set (the web of ${\mathcal A}$) and $\mathfrak F\left(\mathcal A\right)$ is a<br />
finiteness structure on $\web {\mathcal A}$. We then write ${\mathcal A}\orth$ for the dual<br />
finiteness space: $\web {{\mathcal A}\orth} = \web {\mathcal A}$ and<br />
$\mathfrak F\left({\mathcal A}\orth\right)=\mathfrak F\left({\mathcal A}\right)^{\bot}$. The elements of $\mathfrak F\left(\mathcal A\right)$ are called the<br />
finitary subsets of ${\mathcal A}$.<br />
<br />
===== Example. =====<br />
\label{ex:fs}<br />
For all set $A$, $(A,\mathfrak P_f(A))$ is a finiteness space<br />
and $(A,\mathfrak P_f(A))\orth = (A,\mathfrak P(A))$.<br />
In particular, each finite set $A$ is the web of exactly one<br />
finiteness space: $(A,\mathfrak P_f(A))=(A,\mathfrak P(A))$. We introduce the following two:<br />
$\zero = \zero\orth = \left(\emptyset,<br />
\{\emptyset\}\right)$ and $\one = \one\orth = \left(\{\emptyset\}, <br />
\{\emptyset, \{\emptyset\}\}\right)$.<br />
We also introduce the finiteness space of natural numbers ${\mathcal N}$<br />
by: $|{\mathcal N}|={\mathbf N}$ and<br />
$a\in\mathfrak F\left(\mathcal N\right)$ iff $a$ is finite.<br />
We write $\mathcal O=\{0\}\in\mathfrak F\left({\mathcal N}\right)$.<br />
<br />
Notice that ${\mathfrak f}$ is a finiteness structure iff it is of the form<br />
${\mathfrak G}\orth$. It follows that any finiteness structure ${\mathfrak f}$ is downwards<br />
closed for inclusion, and closed under finite unions and arbitrary<br />
intersections. Notice however that ${\mathfrak f}$ is not closed under directed<br />
unions in general: for all $k\in{\\mathbf N}$, write $k{\downarrow}=\left\{j;\ j\le<br />
k\right\}\in\mathfrak F\left({\mathcal N}\right)$; then $k{\downarrow}\subseteq k'{\downarrow}$ as soon as $k\le<br />
k'$, but $\bigcup_{k\ge0} k{\downarrow}={\\mathbf N}\not\in\mathfrak F\left({\mathcal N}\right)$.<br />
<br />
<br />
\subsection*{Multiplicatives}<br />
For all finiteness spaces ${\mathcal A}$ and ${\mathcal B}$, <br />
we define ${\mathcal A} \tens {\mathcal B}$ by $\web {{\mathcal A} \tens {\mathcal B}}<br />
= \web{\mathcal A} \times \web{\mathcal B}$ and $\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) = <br />
\left\{a\times b;\ <br />
a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}\biorth$.<br />
It can be shown that $\mathfrak F\left({\mathcal A} \tens {\mathcal B}\right) =<br />
\left\{ c \subseteq \web{\mathcal A}\times\web{\mathcal B};\ \left.c\right|_l\in \mathfrak F\left(\mathcal A\right),\ \left.c\right|_r\in\mathfrak F\left(\mathcal B\right)\right\}$, where $\left.c\right|_l$ and $\left.c\right|_r$ are the obvious projections. <br />
<br />
Let $f\subseteq A \times B$ be a relation from $A$ to $B$, <br />
we write $f\orth=\left\{(\beta,\alpha);\ (\alpha,\beta)\in f\right\}$.<br />
For all $a\subseteq A$, we set $f\cdot a =<br />
\left\{\beta\in B;\ \exists \alpha\in a,\ (\alpha,\beta)\in f\right\}$.<br />
If moreover $g\subseteq B \times C$, we define<br />
$g \bullet f = \left\{(\alpha,\gamma)\in A\times C;\ \exists \beta\in B,\ (\alpha,\beta)\in f\wedge(\beta,\gamma)\in g\right\}$.<br />
Then, setting ${\mathcal A}\limp{\mathcal B} = \left({\mathcal A}\otimes {\mathcal B}\orth\right)\orth$,<br />
$\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)\subseteq {\web{\mathcal A}\times\web{\mathcal B}}$ is characterized as follows:<br />
\begin{center}<br />
\begin{tabular}{r@{\ iff\ }l}<br />
$f\in \mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)$<br />
& $\forall a\in \mathfrak F\left({\mathcal A}\right)$, $f\cdot a \in\mathfrak F\left({\mathcal B}\right)$ and <br />
$\forall b\in \mathfrak F\left({\mathcal B}\orth\right)$, $f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)$<br />
\\<br />
& $\forall a\in \mathfrak F\left({\mathcal A}\right)$, $f\cdot a \in\mathfrak F\left({\mathcal B}\right)$ and <br />
$\forall \beta\in \web{{\mathcal B}}$, $f\orth\cdot \left\{\beta\right\} \in\mathfrak F\left({\mathcal A}\orth\right)$<br />
\\<br />
& $\forall \alpha\in \web{{\mathcal A}}$, $f\cdot \left\{\alpha\right\} \in\mathfrak F\left({\mathcal B}\right)$ and <br />
$\forall b\in \mathfrak F\left({\mathcal B}\orth\right)$, $f\orth\cdot b \in\mathfrak F\left({\mathcal A}\orth\right)$<br />
\end{tabular}<br />
\end{center}<br />
The elements of $\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)$ are called finitary relations from <br />
${\mathcal A}$ to ${\mathcal B}$. By the previous characterization, the identity relation <br />
$\mathsf{id}_{{\mathcal A}} = \left\{(\alpha,\alpha);\ \alpha\in\web{{\mathcal A}}\right\}$ is finitary,<br />
and the composition of two finitary relations <br />
is also finitary. One can thus define the category $\mathbf{Fin}$ of<br />
finiteness spaces and finitary relations: the objects <br />
of $\mathbf{Fin}$ are all finiteness spaces, and $\mathbf{Fin}({\mathcal A},{\mathcal B})=\mathfrak F\left({\mathcal A}\limp{\mathcal B}\right)$.<br />
Equipped with the tensor product $\tens$, $\mathbf{Fin}$ is symmetric monoidal, <br />
with unit $\one$; it is monoidal closed by the definition of <br />
$\limp$; it is $*$-autonomous<br />
by the obvious isomorphism between ${\mathcal A}\orth$ and ${\mathcal A}\limp\one$.<br />
<!-- By contrast with the purely relational model, it is not compact closed: --><br />
<!-- in general, ${\mathcal A}\limp {\mathcal B}\not\cong{\mathcal A}\orth\tens {\mathcal B}$ (consider ${\mathcal A}$ and --><br />
<!-- ${\mathcal B}$ such that $\mathfrak F\left({\mathcal A}\right)=\powerset{\web{{\mathcal A}}}$ and $\web{{\mathcal B}}$ is finite). --><br />
<br />
===== Example. =====<br />
Setting $\mathcal{S}=\left\{(k,k+1);\ k\in{\\mathbf N}\right\}$ <br />
and $\mathcal{P}=\left\{(k+1,k);\ k\in{\mathbf N}\right\}$, we have<br />
$\mathcal{S},\mathcal{P}\in\mathbf{Fin}({\mathcal N},{\mathcal N})$ and <br />
$\mathcal{P}\bullet\mathcal{S}=\mathsf{id}_{{\mathcal N}}$.<br />
<br />
<br />
<br />
\subsection*{Additives}<br />
We now introduce the cartesian structure of $\mathbf{Fin}$. <br />
We define ${\mathcal A} \oplus {\mathcal B}$ by $\web {{\mathcal A} \oplus {\mathcal B}} = \web{\mathcal A} \uplus<br />
\web{\mathcal B}$ and $\mathfrak F\left({\mathcal A} \oplus {\mathcal B}\right) = \left\{ a\uplus b;\ a\in \mathfrak F\left(\mathcal A\right),\ b\in\mathfrak F\left(\mathcal B\right)\right\}$ where $\uplus$ denotes the disjoint union of sets: <br />
$x\uplus y=(\{1\}\times x)\cup(\{2\}\times y)$. We have<br />
$\left({\mathcal A}\oplus {\mathcal B}\right)\orth = {\mathcal A}\orth\oplus{\mathcal B}\orth$. The category $\mathbf{Fin}$ is<br />
both cartesian and co-cartesian, with $\oplus$ being the product and co-product,<br />
and $\zero$ the initial and terminal object.<br />
Projections are given by:<br />
\begin{eqnarray*}<br />
\lambda_{{\mathcal A},{\mathcal B}}&=&\left\{\left((1,\alpha),\alpha\right);\ \alpha\in\web{\mathcal A}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal A}) \\<br />
\rho_{{\mathcal A},{\mathcal B}}&=&\left\{\left((2,\beta),\beta\right);\ \beta\in\web{\mathcal B}\right\}<br />
\in\mathbf{Fin}({\mathcal A}\oplus{\mathcal B},{\mathcal B}) <br />
\end{eqnarray*}<br />
and if $f\in\mathbf{Fin}({\mathcal C},{\mathcal A})$ and $g\in\mathbf{Fin}({\mathcal C},{\mathcal B})$, pairing is given by:<br />
\[\left\langle f,g\right\rangle = <br />
\left\{\left(\gamma,(1,\alpha)\right);\ (\gamma,\alpha)\in f\right\}<br />
\cup <br />
\left\{\left(\gamma,(2,\beta)\right);\ (\gamma,\beta)\in g\right\} <br />
\in\mathbf{Fin}({\mathcal C},{\mathcal A}\oplus{\mathcal B}).\]<br />
The unique morphism from ${\mathcal A}$ to $\zero$ is the empty relation.<br />
The co-cartesian structure is obtained symmetrically.<br />
<br />
===== Example. =====<br />
Write ${\mathcal O}\orth=\left\{(0,\emptyset)\right\}\in\mathbf{Fin}({\mathcal N},\one)$.<br />
Then <br />
$\left\langle{{\mathcal O}\orth},{\mathcal{P}}\right\rangle<br />
=\{ (0,(1,\emptyset)) \}\cup \{ (k+1,(2,k)) ;\ k\in{\mathbf N} \} <br />
\in\mathbf{Fin}\left({\mathcal N},\one\oplus{\mathcal N}\right)$<br />
is an isomorphism.<br />
<!-- the inverse of which we denote by $\mathcal{P}$. --><br />
<!-- Hence $\one\oplus{\mathcal N}\cong {\mathcal N}$. --><br />
<br />
\subsection*{Exponentials}<br />
If $A$ is a set, we denote by $\mathfrak M_f(A)$ the set of all finite multisets of<br />
elements of $A$, and if $a\subseteq A$, we write $a^{\oc}=\mathfrak M_f(a)\subseteq\mathfrak M_f(A)$.<br />
If $\overline\alpha\in\mathfrak M_f(A)$, we denote its support by<br />
$\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak P_f(A)$. For all finiteness space ${\mathcal A}$, we define<br />
$\oc {\mathcal A}$ by: $\web{\oc<br />
{\mathcal A}}= \mathfrak M_f\left(\web{{\mathcal A}}\right)$ and $\mathfrak F\left(\oc{\mathcal A}\right)=\left\{a^{\oc};\ a\in\mathfrak F\left({\mathcal A}\right)\right\}\biorth$.<br />
It can be shown that $\mathfrak F\left(\oc{\mathcal A}\right) = \left\{\overline a\subseteq\mathfrak M_f\left(\web{{\mathcal A}}\right);\ \bigcup_{\overline\alpha\in \overline a}\mathrm{Support}\left(\overline \alpha\right)\in\mathfrak F\left(\mathcal A\right)\right\}$.<br />
Then, for all $f\in\mathbf{Fin}({\mathcal A},{\mathcal B})$, we set<br />
\[\oc f =\left\{\left(\left[\alpha_1,\dotsc,\alpha_n\right],\left[\beta_1,\dotsc,\beta_n\right]\right);\ \forall i,\ (\alpha_i,\beta_i)\in f\right\} \in \mathbf{Fin}(\oc {\mathcal A}, \oc {\mathcal B}),\]<br />
which defines a functor.<br />
Natural transformations <br />
$\mathsf{der}_{{\mathcal A}}=\left\{([\alpha],\alpha);\ \alpha\in<br />
\web{{\mathcal A}}\right\}\in\mathbf{Fin}(\oc{\mathcal A},{\mathcal A})$ and <br />
$\mathsf{digg}_{{\mathcal A}}=\left\{\left(\sum_{i=1}^n\overline\alpha_i,\left[\overline\alpha_1,\dotsc,\overline\alpha_n\right]\right);\ <br />
\forall i,\ \overline\alpha_i\in\web{\oc {\mathcal A}}\right\}$ make this functor a comonad.<br />
<br />
===== Example. =====<br />
We have isomorphisms <br />
<!-- $\left\{(n[\emptyset],n);\ n\in{\mathbf N}\right\}\in\mathbf{Fin}(\oc\one,{\mathcal N}\orth)$, --><br />
$\left\{([],\emptyset)\right\}\in\mathbf{Fin}(\oc\zero,\one)$<br />
and<br />
\[\left\{<br />
\left(\overline\alpha_l+\overline\beta_r,\left(\overline\alpha,\overline\beta\right)\right);\<br />
(\overline\alpha_l,\overline\alpha)\in\oc\lambda_{{\mathcal A},{\mathcal<br />
B}}\wedge(\overline\beta_r,\overline\beta)\in\oc\rho_{{\mathcal A},{\mathcal<br />
B}}\right\} \in\mathbf{Fin}(\oc({\mathcal A}\oplus{\mathcal B}),\oc{\mathcal<br />
A}\tens\oc{\mathcal B}).\]<br />
More generally, we have<br />
$\oc\left({\mathcal A}_1\oplus\cdots\oplus{\mathcal A}_n\right)\cong\oc{\mathcal A}_1\tens\cdots\tens\oc{\mathcal A}_n$.</div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Main_PageMain Page2009-05-22T17:38:00Z<p>Lionel Vaux: pointer to finiteness semantics</p>
<hr />
<div>== Contents ==<br />
<br />
* An [[introduction]] to linear logic<br />
* Syntax<br />
** [[Sequent calculus]]<br />
** [[Intuitionistic linear logic]]<br />
** [[Fragment|Fragments]]<br />
** Proof-nets<br />
** Translations of [[Translations of classical logic|classical]] and [[Translations of intuitionistic logic|intuitionistic]] logics<br />
* [[Semantics]]<br />
** [[Coherent semantics]]<br />
** [[Phase semantics]]<br />
** [[Categorical semantics]]<br />
** [[Relational semantics]]<br />
** [[Finiteness semantics]]<br />
** [[Geometry of interaction]]<br />
** [[Game semantics]]<br />
* [[Light linear logics]]<br />
<br />
== Getting started ==<br />
<br />
* Please read the [[recommendations]] before edition in this wiki.<br />
* Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.<br />
* Available LaTeX macros are listed on the [[LLWiki LaTeX Style]] page.<br />
* You can use the [[sandbox]] for tests.<br />
* [[Special:Wantedpages|Wanted pages]].<br />
<br />
<!--<br />
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]<br />
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]<br />
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
--></div>Lionel Vauxhttp://llwiki.ens-lyon.fr/mediawiki/index.php/Relational_semanticsRelational semantics2009-05-02T21:56:40Z<p>Lionel Vaux: /* Monoidal structure */ redundancy</p>
<hr />
<div>== Relational semantics ==<br />
<br />
This is the simplest denotational semantics of linear logic. It consists in interpreting a formula <math>A</math> as a set <math>A^*</math> and a proof <math>\pi</math> of <math>A</math> as a subset <math>\pi^*</math> of <math>A^*</math>.<br />
<br />
=== The category of sets and relations ===<br />
<br />
It is the category <math>\mathbf{Rel}</math> whose objects are sets, and such that <math>\mathbf{Rel}(X,Y)=\mathcal P(X\times Y)</math>. Composition is the ordinary composition of relations: given <math>s\in\mathbf{Rel}(X,Y)</math> and <math>t\in\mathbf{Rel}(Y,Z)</math>, one <br />
sets <math>t\circ s=\set{(a,c)\in X\times Z}{\exists b\in Y\ (a,b)\in s\ \text{and}\ (b,c)\in t}</math> and the identity morphism is the diagonal relation <math>\mathsf{Id}_X=\set{(a,a)}{a\in X}</math>.<br />
<br />
An isomorphism in the category <math>\mathbf{Rel}</math> is a relation which is a bijection, as easily checked.<br />
<br />
==== Monoidal structure ====<br />
<br />
The tensor product is the usual cartesian product of sets <math>X\tens Y=X\times Y</math> (which <em>is not</em> a cartesian product in the category <math>\mathbf{Rel}</math> in the categorical sense). It is a bifunctor: given <math>s_i\in\mathbf{Rel}(X_i,Y_i)</math> (for <math>i=1,2</math>), one sets <math>s_1\tens s_2=\set{((a_1,a_2),(b_1,b_2))}{(a_i,b_i)\in s_i\ \text{for}\ i=1,2}</math>. The unit of this tensor product is <math>\one=\{*\}</math> where <math>*</math> is an arbitrary element.<br />
<br />
For defining a monoidal category, it is not sufficient to provide the definition of the tensor product functor <math>\tens</math> and its unit <math>\one</math>, one has also to provide natural isomorphisms <math>\lambda_X\in\mathbf{Rel}(\one\tens X,X)</math>,<br />
<math>\rho_X\in\mathbf{Rel}(X\tens\one,X)</math> (left and right neutrality of <math>\one</math> for <math>\tens</math>) and <math>\alpha_{X,Y,Z}\in\mathbf{Rel}((X\tens Y)\tens Z,X\tens(Y\tens Z))</math> (associativity of <math>\tens</math>). All these isomorphisms have to satisfy a number of commutations. In the present case, they are defined in the obvious way.<br />
<br />
This monoidal category <math>(\mathbf{Rel},\tens,\one,\lambda,\rho)</math> is symmetric, meaning that it is endowed with an additional natural isomorphism <math>\sigma_{X,Y}\in\mathbf{Rel}(X\tens Y,Y\tens X)</math>, also subject to some commutations. Here, again, this isomorphism is defined in the obvious way (symmetry of the cartesian product). So, to be precise, the SMCC (symmetric monoidal closed category) <math>\mathbf{Rel}</math> is the tuple <math>(\mathbf{Rel},\tens,\one,\lambda,\rho,\alpha,\sigma)</math>, but we shall simply denote it as <math>\mathbf{Rel}</math>.<br />
<br />
The SMCC <math>\mathbf{Rel}</math> is closed. This means that, given any object <math>X</math> of <math>\mathbf{Rel}</math> (a set), the functor <math>Z\mapsto Z\tens X</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>) admits a right adjoint <math>Y\mapsto (X\limp Y)</math> (from <math>\mathbf{Rel}</math> to <math>\mathbf{Rel}</math>). In other words, for any objects <math>X</math> and <math>Y</math>, we are given an object <math>X\limp Y</math> and a morphism <math>\mathsf{ev}_{X,Y}\in\mathbf{Rel}((X\limp Y)\tens X,Y)</math> with the following universal property: for any morphism <math>s\in\mathbf{Rel}(Z\tens X,Y)</math>, there is a unique morphism <math>\mathsf{fun}(s)\in\mathbf{Rel}(Z,X\limp Y)</math> such that <math>\mathsf{ev}_{X,Y}\circ(\mathsf{fun}(s)\tens\mathsf{Id}_X)=s</math>.<br />
<br />
The definition of all these data is quite simple in <math>\mathbf{Rel}</math>: <math>X\limp Y=X\times Y</math>, <math>\mathsf{ev}_{X,Y}=\set{(((a,b),a),b)}{(a,b)\in X\times Y}</math> and <math>\mathsf{fun}(s)=\set{(c,(a,b))}{((c,a),b)\in s}</math>.<br />
<br />
Let <math>\bot=\one=\{*\}</math>. Then we have <math>\mathsf{ev}\circ\sigma:\mathbf{Rel}(X\tens(X\limp\bot),\bot)</math> and hence <math>\eta_X=\mathsf{fun}(\mathsf{ev}\circ\sigma)\in\mathbf{Rel}(X,(X\limp\bot)\limp\bot)</math>. It is clear that <math>\eta=\set{(a,((a,*),*))}{a\in X}</math> and hence <math>\eta</math> is a natural isomorphism: one says that the SMCC <math>\mathbf{Rel}</math> is a *-autonomous category, with <math>\bot</math> as dualizing object.<br />
<br />
==== Additives ====<br />
<br />
Given a family <math>(X_i)_{i\in I}</math>, let <math>\with_{i\in I}X_i=\cup_{i\in I}\{i\}\times X_i</math>. Let <math>\pi_j\in\mathbf{Rel}(\with_{i\in I}X_i,X_j)</math> given by <math>\pi_j=\set{((j,a),a)}{a\in X_j}</math>. Then <math>(\with_{i\in I}X_i,(\pi_i)_{i\in I})</math> is the cartesian product of the <math>X_i</math>s in the category <math>\mathbf{Rel}</math>.<br />
<br />
==== Exponentials ====<br />
<br />
One defines <math>\oc X</math> as the set of all finite multisets of elements of <math>X</math>. Given <math>s\in\mathbf{Rel}(X,Y)</math>, one defines <math>\oc s=\set{([a_1,\dots,a_n],[b_1,\dots,b_n])}{n\in\mathbb N\ \text{and}\ \forall i\ (a_i,b_i)\in s}</math> where <math>[a_1,\dots,a_n]</math> is the multiset containing <math>a_1,\dots,a_n</math>, taking multiplicities into account. This defines a functor <math>\mathbf{Rel}\to\mathbf{Rel}</math>, that we endow with a comonad structure as follows:<br />
* the counit, called dereliction, is the natural transformation <math>\mathsf{der}_X\in\mathbf{Rel}(\oc X,X)</math>, given by <math>\mathsf{der}_X=\set{([a],a)}{a\in X}</math><br />
* the comultiplication, called digging, is the natural transformation <math>\mathsf{digg}_X\in\mathbf{Rel}(\oc X,\oc\oc X)</math>, given by <math>\mathsf{digg}_X=\set{(m_1+\cdots+m_n,[m_1,\dots,m_n])}{n\in\mathbb N\ \text{and}\ m_1,\dots,m_n\in\oc X}</math></div>Lionel Vaux