Connection Arguments
This document describes the connection arguments and how they are used in Polynomial Identity Language. ### What is a connection argument? Given a vector $a = (
This document describes the connection arguments and how they are used in Polynomial Identity Language.
What is a connection argument?
Given a vector and a partition of , we say " " if for each , we have that whenever , with and .
Moreover, we say that a protocol is a connection argument if the protocol can be used by to prove to that a vector a partition of .
We use the term “connection” instead of “copy-satisfaction” because the argument is used in PIL in a more general sense than in the original definition given in GWC19.
Example
Let be a specified partition of .
Observe the two columns depicted below:
The vector because and .
Observe that, since the singleton is in , then is not related to any other element in .
Also, the vector does not because .
In the context of programs, connection arguments can be written easily in PIL by introducing a column associated with the chosen partition. This is also done in [GWC19].
Recall that column values are evaluations of a polynomial at and is the length of the execution trace.
Given a polynomial and a partition , suppose we want to write in PIL a constraint attesting to the of a certain .
We first construct a permutation such that for each set , we have that contains a cycle of all elements of .
In the above example, we would have . So then, we construct a polynomial that encodes in the exponent of . That is:
for .
In the PIL context, the previous connection argument between a column and a column , encoding the values of , can be declared using the keyword using the syntax: .
include "config.pil";
namespace Connection(%N);
pol commit a;
pol constant SA;
{a} connect {SA};A valid execution trace for this example was shown in Table 1 above.
Remark
The column does not need to be declared as a constant polynomial. The connection argument still holds true even if it is declared as committed.
Multiple copy satisfiability
Connection arguments can be extended to several columns by encoding each column with a “part” of the permutation. Informally, the permutation is now able to span across the values of each of the involved polynomials in a way that the cycles formed in the permutation must contain the same value.
Multi-column copy satisfiability
Given vectors in and a partition of , we say if for each , we have that whenever , with , and .
For example, say that we have . Then, the below table depicts an execution trace for three columns that copy-satisfies .

We reduce this problem to the one column case by thinking of the permutation as applied to the concatenation of column , then and finally .
So, the permutation that makes , and copy-satisfy is .
In this case we construct polynomials , and such that:
where are introduced here as a way of obtaining more elements (in a group of size ) and enabling correct encoding of the permutation .
See [GWC19] for more details on this encoding.
The below table shows how to compute the polynomials , and encoding the permutation of the above example:

The PIL code for this example is easily written as follows:
include "config.pil";
namespace Connection(%N);
pol commit a, b, c;
pol constant SA, SB, SC;
{ a, b, c } connect { SA, SB, SC };Last updated on
Configuration Files
The following document describes why Polynomial Identity Language uses a special configuration file. In order for PIL to securely enable modularity, especially
Cyclicity In Pil
This document describes how to introduce cyclicity to execution traces in Polynomial Identity Language. In order to synchronize the execution trace of a given p