Calculate required degree of lookup

This commit is contained in:
therealyingtong 2021-02-12 09:40:53 +08:00 committed by Sean Bowe
parent aca6de61f8
commit 2f2de13887
No known key found for this signature in database
GPG Key ID: 95684257D8F8B031
2 changed files with 12 additions and 3 deletions

View File

@ -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());

View File

@ -25,7 +25,7 @@ impl<F: Field> Argument<F> {
// 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<F: Field> Argument<F> {
//
// 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
}
}