| 192 | let less_than_multiplicity = Expr::main(5); |
| 193 | let range_check_multiplicity = Expr::main(6); |
| 194 | let mul_multiplicity = Expr::main(7); |
| 195 | let xor_split7_multiplicity = Expr::main(8); |
| 196 | let xor_split4_multiplicity = Expr::main(9); |
| 197 | |
| 198 | // Preprocessed columns |
| 199 | let i = Expr::preprocessed(0); |
| 200 | let j = Expr::preprocessed(1); |
| 201 | let xor = Expr::preprocessed(2); |
| 202 | let add_r = Expr::preprocessed(3); |
| 203 | let sub_r = Expr::preprocessed(4); |
| 204 | let and = Expr::preprocessed(5); |
| 205 | let or = Expr::preprocessed(6); |
| 206 | let less_than = Expr::preprocessed(7); |
| 207 | let mul_lo = Expr::preprocessed(8); |
| 208 | let mul_hi = Expr::preprocessed(9); |
| 209 | let xor_split7_hi = Expr::preprocessed(10); |
| 210 | let xor_split7_lo = Expr::preprocessed(11); |
| 211 | let xor_split4_hi = Expr::preprocessed(12); |
| 212 | let xor_split4_lo = Expr::preprocessed(13); |
| 213 | |
| 214 | // pull = negated multiplicity. |
| 215 | let pull_xor = Lookup { |
| 216 | multiplicity: -xor_multiplicity, |
| 217 | args: vec![xor_channel, i.clone(), j.clone(), xor], |
| 218 | }; |
| 219 | |
| 220 | let pull_add = Lookup { |
| 221 | multiplicity: -add_multiplicity, |
| 222 | args: vec![add_channel, i.clone(), j.clone(), add_r], |
| 223 | }; |
| 224 | |
| 225 | let pull_sub = Lookup { |
| 226 | multiplicity: -sub_multiplicity, |
| 227 | args: vec![sub_channel, i.clone(), j.clone(), sub_r], |
| 228 | }; |
| 229 | |
| 230 | let pull_and = Lookup { |
| 231 | multiplicity: -and_multiplicity, |
| 232 | args: vec![and_channel, i.clone(), j.clone(), and], |
| 233 | }; |
| 234 | |
| 235 | let pull_or = Lookup { |
| 236 | multiplicity: -or_multiplicity, |
| 237 | args: vec![or_channel, i.clone(), j.clone(), or], |
| 238 | }; |
| 239 | |
| 240 | let pull_less_than = Lookup { |
| 241 | multiplicity: -less_than_multiplicity, |
| 242 | args: vec![less_than_channel, i.clone(), j.clone(), less_than], |
| 243 | }; |
| 244 | |
| 245 | let pull_mul = Lookup { |
| 246 | multiplicity: -mul_multiplicity, |
| 247 | args: vec![mul_channel, i.clone(), j.clone(), mul_lo, mul_hi], |
| 248 | }; |
| 249 | |
| 250 | let pull_range_check = Lookup { |
| 251 | multiplicity: -range_check_multiplicity, |