Connection arguments
The connection arguments is called copy-satisfy in GWC19. As its name, the argument is used to partition the commitment matrix and make the cells of the matrix in same partition contain the same value.
The Polynomial Identity Language (PIL) use **connect ** keyword to express connection arguments.
Definition
Given a vector and a partition of [n]. If for each , the whenever , and , then the elements whose indices in one are connected(copy-satisfy).
Example
Let be a specified partition of column with 6 elements. Observe the two columns depicted below:
| a | b |
|---|---|
| 3 | 3 |
| 9 | 9 |
| 3 | 7 |
| 1 | 1 |
| 3 | 3 |
| 1 | 1 |
the column a is copy-satisfy because the indices of elements in is 1, 3, 5. and ; the indices of elements in is 4, 6. and .
the column b is not copy-satisfy because the indices of elements in is 1, 3, 5. but .
Given the column a as above. we can construct a permutation map . Such for each , the map can make the elements whose indices in form a circle: 1 -> 3, 3 -> 5, 5 -> 1; 4 -> 6, 6 -> 4; 2->2.
In the zero-knowledge proof(ZKP), use the exponent of multiplicative generator() as the value of column SA of map: So in this example, the column a and the column SA as below table:
| a | SA |
|---|---|
| 3 | |
| 9 | |
| 3 | |
| 1 | |
| 3 | |
| 1 |
PIL
In the PIL context, the previous connection argument between a column a and a column SA, encoding the values of as , can be declared using the keyword connect using the syntax a connect {SA}:
the snippet of code as below:
include "config.pil";
namespace Connection(%N);
pol commit a;
pol constant SA;
{a} connect {SA};