在本文中,我们将介绍一些实用的内积代数技巧,这些技巧在后续推导范围证明(以及将电路编码为内积)时会非常有用。每条规则都会附带一个简单的证明。
符号说明
加粗的变量(如 )表示向量。未加粗的变量(如 )表示标量。运算符 是两个向量的 Hadamard 乘积(逐元素相乘),即 。我们使用简写 “lhs” 和 “rhs” 分别指代等式的“左侧”(left-hand side)和“右侧”(right-hand side)。“加数”(summand)是加法中的一个元素,例如,如果 ,那么 和 就被称为加数。 向量是一个全 1 向量,即 。除非另有说明,否则所有向量默认具有相同的长度 。
规则 1:当内积中的一个向量是多个向量的求和时,可以将其展开
假设我们正在计算一个内积,其中一个向量是两个向量的和——例如 。我们可以将其拆分为两个内积的和:
证明:
lhs 可以写为
rhs 可以写为
规则 2:具有公共项的内积可以合并
下面 lhs 上的两个内积具有公共向量 。因此,它们可以合并:
这实际上是规则 1 的 lhs 和 rhs 互换。
证明与规则 1 相同。
规则 3:将向量移至内积的另一侧
一个内积可以被重写为 向量与原始向量的 Hadamard 乘积:
证明:
规则 4:我们可以将向量加到内积的其中一项中,以强制两个内积具有公共项
假设我们要将内积 和内积 相加,并且内积之和为 。请注意,它们具有不同的分量,因此我们无法使用规则 2 将它们相加。尽管如此,以下等式
可以写为
在上述场景中,我们可以在两边加上 。
现在我们有了公共的 项,我们可以使用规则 2 组合它们:
既然我们已经强制 lhs 上的两个内积具有公共项 ,我们可以再次使用规则 2 将它们合并成一个向量:
因此,
可以重写为
规则 5:将两个不相关向量的内积相加
我们可以将 (它们没有公共向量)相加并得到:
证明:
该证明表明,有时创造性地寻找可以加到等式两边的内积会非常方便。
规则 6:标量可以移入和移出内积
该命题的证明留给读者作为练习。作为提示,常数项可以移入和移出求和公式。
本教程是我们 ZK Bulletproofs 系列的一部分。