From 2f2de13887045645b14c73051aab908807ddb11c Mon Sep 17 00:00:00 2001 From: therealyingtong Date: Fri, 12 Feb 2021 09:40:53 +0800 Subject: [PATCH] Calculate required degree of lookup --- src/plonk.rs | 2 +- src/plonk/lookup.rs | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/plonk.rs b/src/plonk.rs index 205613b..4e147d1 100644 --- a/src/plonk.rs +++ b/src/plonk.rs @@ -472,7 +472,7 @@ fn test_proving() { let sl_ = meta.query_any(sl.into(), Rotation::cur()); let sl2_ = meta.query_any(sl2.into(), Rotation::cur()); meta.lookup(&[a_.clone()], &[sl_.clone()]); - meta.lookup(&[a_ + b_], &[sl_ + sl2_]); + meta.lookup(&[a_ * b_], &[sl_ * sl2_]); meta.create_gate("Combined add-mult", |meta| { let d = meta.query_advice(d, Rotation::next()); diff --git a/src/plonk/lookup.rs b/src/plonk/lookup.rs index 6755d05..e632c08 100644 --- a/src/plonk/lookup.rs +++ b/src/plonk/lookup.rs @@ -25,7 +25,7 @@ impl Argument { // degree 2: // l_0(X) * (1 - z'(X)) = 0 // - // degree 3: + // degree (1 + input_degree + table_degree): // z'(X) (a'(X) + \beta) (s'(X) + \gamma) // - z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma) // @@ -34,6 +34,15 @@ impl Argument { // // degree 2: // (a′(X)−s′(X))⋅(a′(X)−a′(\omega{-1} X)) = 0 - 3 + let mut input_degree = 1; + for expr in self.input_columns.iter() { + input_degree = std::cmp::max(input_degree, expr.degree()); + } + let mut table_degree = 1; + for expr in self.table_columns.iter() { + table_degree = std::cmp::max(table_degree, expr.degree()); + } + + 1 + input_degree + table_degree } }