Proof-nets

From LLWiki
(Difference between revisions)
Jump to: navigation, search
(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…")
 
m (fix wording)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
−
The aim of this page is to provide a common framework for describing linear
+
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.
−
logic proof nets, interaction nets, multiport interaction nets, and the likes,
 
−
while factoring out most of the tedious, uninteresting details (clearly not the
 
−
fanciest page of LLWiki).
 
−  
−
== Preliminaries ==
 
−  
−
=== The short story ===
 
−  
−
* the general flavor is that of multiport interaction nets;
 
−
* 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);
 
−
* 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;
 
−
* when representing proof nets, we introduce axioms explicitly as cells, so that axiom-cuts do not vanish.
 
−
=== Conventions ===
 
−  
−
If <math>A</math> and <math>B</math> are sets, we write <math>A+B</math> for
 
−
<math>\{0\}\times A \cup \{1\}\times B</math>.
 
−
More generally,
 
−
<math>A_0+\cdots+A_n=\{0\}\times A \cup {\cdots} \cup \{n\}\times A_n</math>.
 
−
There are natural bijections <math>A+(B+C)\cong A+B+C \cong (A+B)+C</math>.
 
−  
−
== Nets ==
 
−  
−
=== Wires ===
 
−  
−
A ''wiring'' is the data of a finite set <math>P</math> of ports
 
−
and of a partition <math>{W}</math> of <math>P</math> by pairs (the ''wires''):
 
−
if <math>\{p,q\}\in{W}</math>, we write <math>{W}(p)=q</math> and <math>{W}(q)=p</math>.
 
−
Hence a wiring is equivalently given by
 
−
an involutive permutation <math>{W}</math> of finite domain <math>P</math>,
 
−
without fixpoints (forall <math>p</math>, <math>{W}(p)\not=p</math>): the wires are then
 
−
the orbits.
 
−
Another equivalent presentation is to consider <math>{W}</math> as
 
−
a (simple, loopless, undirected) graph, with vertices in P,
 
−
all of degree 1.
 
−  
−
We say two wirings are disjoint when their sets of ports are.
 
−
A ''connection'' between two disjoint wirings <math>W</math> and <math>W'</math> is
 
−
a partial injection <math>(I,I',f):P\pinj P'</math>: <math>I\subseteq P</math>,
 
−
<math>I'\subseteq P'</math> and <math>f</math> is a bijection <math>I\leftrightarrow I'</math>.
 
−
We then write <math>W\bowtie_f{{W}'}</math> for the wiring obtained
 
−
by identifying the ports pairwise mapped by <math>f</math>, and then
 
−
``straightening`` the paths thus obtained to recover wires:
 
−
notice this might also introduce loops and we write <math>\Inner{W}{W'}_f</math>
 
−
for the number of loops thus appeared.
 
−  
−
We describe these operations a bit more formally.
 
−
Write <math>P = P_0\uplus I</math> and <math>P' = P_0'\uplus I'</math>.
 
−
Then consider the graph <math>W\dblcolon_f{{W}'}</math> with vertices in
 
−
<math>P\cup P'</math>, and such that
 
−
there is an edge between <math>p</math> and <math>q</math> iff
 
−
<math>q={W}(p)</math>,
 
−
<math>q={W'}(p)</math>,
 
−
<math>q=f(p)</math>,
 
−
<math>p=f(q)</math>:
 
−
in other words, <math>W\dblcolon_f{{W}'}=W\cup W'\cup f\cup f^{-1}</math>.
 
−
Vertices in <math>P_0\cup P'_0</math>
 
−
are of degree 1, and the others are of degree 2.
 
−
Hence maximal paths in <math>W\dblcolon_f{{W}'}</math> are of two kinds:
 
−  
−
* straight paths, with both ends in <math>P_0\cup P_0'</math>;
 
−
* cycles, with vertices all in <math>I\cup I'</math>.
 
−
Then the wires in <math>W\bowtie_f{{W}'}</math> are the pairs <math>\{p,p'\}</math> such that
 
−
<math>p</math> and <math>p'</math> are the ends of a path in <math>W\dblcolon_f{{W}'}</math>.
 
−
And <math>\Inner{W}{W'}_{f}</math> is the number of
 
−
cycles in <math>W\dblcolon_f{{W}'}</math>, or more precisely
 
−
the number of support sets of cycles (i.e. we forget about the starting
 
−
vertice of cycles).
 
−  
−
{{Lemma|
 
−
Consider three wirings <math>(P,W)</math>, <math>(P',W')</math> and <math>(P'',W'')</math>,
 
−
and two connections <math>(I,I',f):P\pinj P'</math> and
 
−
<math>(J',J'',g):P'\pinj P''</math> such that <math>I'\cap J'=\emptyset</math>.
 
−
Then
 
−  
−
<math> (W\bowtie_f W')\bowtie_g W''=
 
−
W\bowtie_f(W'\bowtie_g W'')</math>
 
−  
−
and
 
−  
−
<math> \Inner{W}{W'}_{f}+\Inner{(W\bowtie_f{{W}'})}{{W}''}_g=
 
−
\Inner{W}{(W'\bowtie_g W'')}_f+\Inner{{W}'}{{W}''}_g.</math>
 
−
}}
 
−  
−
{{Proof|
 
−
The first equation holds because open maximal paths in
 
−
<math>W\dblcolon_f{W\bowtie_g'}{{W}''}</math> correspond with those in
 
−
<math>W\dblcolon_f{(W'\dblcolon_g{{W}''})}</math>, hence in
 
−
<math>(W\dblcolon_f W')\dblcolon_g W''</math>, hence in
 
−
<math>{W\bowtie_f{{W}'}}\dblcolon_g{{W}''}</math>.
 
−
The second equation holds because both sides are two possible writings for
 
−
the number of loops in <math>{(W\dblcolon_f{{W}'})}\dblcolon_g{{W}''}</math>
 
−
}}
 
−  
−
=== Nets ===
 
−  
−
A ''signature'' is the data of a set
 
−
<math>\Sigma</math> of symbols, together with arity functions
 
−
<math>\alpha:\Sigma\to\mathbf{N}\setminus\{0\}</math> (number of
 
−
''active'' ports, or conclusions)
 
−
and <math>\pi:\Sigma\to\mathbf N</math> (number of
 
−
''passive'' ports, or hypotheses).
 
−
In the remaining, we assume
 
−
such a signature is given.
 
−  
−
A ''cell'' <math>c</math> with ports in <math>P</math> is the data of
 
−
a symbol <math>\sigma\in\Sigma</math> and of two disjoint lists
 
−
of pairwise distinct ports:
 
−
<math>\alpha(c)\in P^{\alpha(\sigma)}</math>
 
−
is the list of ''active'' ports
 
−
and <math>\pi(c)\in P^{\pi(\sigma)}</math>
 
−
is the list of ''passive'' ports.
 
−  
−
A ''net'' is the data of a wiring <math>(P,W)</math> and of a set <math>C</math> of disjoint cells on
 
−
<math>P</math>. It follows from the definitions that each port <math>p\in P</math> appears in
 
−
exactly one wire and in at most one cell: we say <math>p</math> is ''free'' if it is
 
−
not part of a cell, and <math>p</math> is ''internal'' otherwise. We write <math>\textrm{fp}(R)</math> for
 
−
the set of free ports of a net <math>R</math>.
 
−  
−
Generally, the “names” of internal ports of a net are not relevant, but free
 
−
ports matter most often: internal ports are the analogue of bound variables in
 
−
<math>\lambda</math>-terms.
 
−
More formally, an ''isomorphism'' from net <math>R</math> to net <math>R'</math>
 
−
is the data of a bijection of ports <math>\phi:P\leftrightarrow P'</math> and a bijection
 
−
of cells <math>\psi:C\leftrightarrow C'</math> such that:
 
−  
−
* for all <math>p\in P</math>, <math>W'(\phi(p))=\phi(W(p))</math>;
 
−
* for all <math>c\in C</math>:
 
−
Observe that under these conditions <math>\psi</math> is uniquely induced by <math>\phi</math>.
 
−
We say that the isomorphism <math>\phi</math> is ''nominal'' if moreover <math>p\in\textrm{fp}(R)</math>
 
−
implies <math>p=\phi(p)</math>.
 
−  
−
=== Rewriting ===
 
−  
−
We say two nets are disjoint when their sets of ports are.
 
−
Let <math>R</math> and <math>R'</math> be disjoint nets, and <math>(I,I',f)</math> be a
 
−
connection between <math>W</math> and <math>W'</math>, such that
 
−
<math>I\subseteq \textrm{fp}(R)</math> and <math>I'\subseteq \textrm{fp}(R')</math>.
 
−
We then write <math>R\bowtie_f{R'}</math> for the net
 
−
with wiring <math>W\bowtie_f{W'}</math> and cells
 
−
<math>C\cup C'</math>.
 
−  
−
{{Lemma|
 
−
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>
 
−
are disjoint from <math>R</math>,
 
−
<math>(I,I',f)</math> be a connection <math>\textrm{fp}(R_0)\pinj \textrm{fp}(R')</math>
 
−
and <math>\phi</math> an isomorphism <math>R_0\cong R_1</math> such that
 
−
<math>\phi(p)=\phi(p')</math> for all <math>p\in\textrm{fp}(R_0)\setminus I</math>.
 
−
Then <math>R_0\bowtie_f{R'}</math> is nominally isomorphic to
 
−
<math>R_1\bowtie_f\circ\phi^{-1}{R'}</math>.
 
−
}}
 
−  
−
A ''net rewriting rule'' is a pair <math>(r_0,r_1)</math> of nets
 
−
such that <math>\textrm{fp}(r_0)=\textrm{fp}(r_1)</math>. Then an instance of this rule
 
−
is a pair <math>(R_0,R_1)</math> such that there exist:
 
−  
−
* 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>);
 
−
* a net <math>R''</math>, disjoint from <math>R'_0</math> and <math>R'_1</math>;
 
−
* a connection <math>(\textrm{fp}(R'_0),J,f):\textrm{fp}(R'_0)\pinj \textrm{fp}(R'')</math>;
 
−
such that each <math>R_i</math> is nominally isomorphic to
 
−
<math>R'_i\bowtie_f{R''}</math>.
 
−  
−
=== Typing ===
 
−  
−
A typing system on signature <math>\Sigma</math> is the data of a
 
−
set <math>\Theta</math> of types, an involutive negation <math>\cdot\orth:\Theta\to\Theta</math>,
 
−
together with a typing discipline for each symbol, ''i.e.'' a relation
 
−
<math>\Theta(\sigma)\subseteq\Theta^{\alpha(\sigma)}\times\Theta^{\pi(\sigma)}</math>.
 
−
We then write <math>A_1,\cdots,A_{\pi(\sigma)}\vdash_\sigma
 
−
B_1,\cdots,B_{\alpha(\sigma)}</math> for <math>(\vec A,\vec B)\in\Theta(\sigma)</math>.
 
−  
−
Then a ''typing'' for net <math>R=(P,W,C)</math> is a function <math>\tau:P\to \Theta</math>
 
−
such that:
 
−  
−
* for all <math>p\in P</math>, <math>\tau(W(p))=\tau(p)\orth</math>;
 
−
* for all <math>c\in C</math> of symbol <math>\sigma</math>, <math>\tau(\pi(c))\vdash\tau(\alpha(c))\orth</math>;
 
−
where, in the last formula, we implicitly generalized
 
−
<math>\tau</math> to lists of ports and <math>\cdot\orth</math> to lists of formulas,
 
−
in the obvious, componentwise fashion.
 
−
The ''interface'' of the typed net <math>(R,\tau)</math> is then
 
−
the restriction of <math>\tau</math> to <math>\textrm{fp}(R)</math>.
 
−  
−
The idea, is that a wire <math>{p,q}</math>, bears the type <math>\tau(q)</math> (resp. <math>\tau(p)</math>) in
 
−
the direction <math>(p,q)</math> (resp. <math>(q,p)</math>), so that a rule
 
−
<math>\vec A\vdash_\sigma \vec B</math> reads as an inference from passive inputs (hypotheses)
 
−
to active outputs (conclusions).
 
−  
−
Observe that if <math>(R,\tau)</math> is a typed net, and
 
−
<math>\phi:R\leftrightarrow R'</math> is an isomorphism,
 
−
then <math>R'</math> is typed and its interface is <math>\tau\circ\phi^{-1}</math>:
 
−
in particular, if <math>\phi</math> is nominal, <math>R'</math> and <math>R</math> have the same interface.
 
−  
−
Now let <math>(R,\tau)</math> and <math>(R',\tau')</math> be typed nets
 
−
and <math>(I,I',f)</math> a connection so that <math>\tau'\circ f</math> and
 
−
<math>\tau\orth=\cdot\orth\circ\tau</math> coincide on <math>I</math>.
 
−
Then this induces a typing of <math>R\bowtie_f{R'}</math>
 
−
preserving the interface on the remaining free ports.
 
−  
−
=== Boxes ===
 
−  
−
TODO
 

Latest revision as of 16:41, 25 June 2013

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.

Personal tools