rustfmt and clippy check, with skip check option for markdown files and
docs
rustfmt check taken from zkEVM
@leolara These edits change the source code (by fixing warnings and
conforming to rustfmt). Most are cosmetic, but I'd still suggest you
review them. Thanks!
---------
Co-authored-by: Steve Wang <qwang97@wharton.upenn.edu>
Co-authored-by: Chih Cheng Liang <chihchengliang@gmail.com>
High Level Description
Simplified syntax for adding and building lookup columns.
- Adding lookup: call add_lookup in step_type_def to modify StepTypeContext
- Building lookup: call lookup() without a parameter to initialize; call add(source_column, lookup_column) to build lookup match constraints; call enable(enabler_column) to add an enabler column
- Example: add_lookup(lookup().add(source_col_1, lookup_col_1).enable(enabler_col).add(source_col_2, lookup_col2)
Technical Details (from a user -> dsl -> ast -> ir perspective):
1. Added LookupBuilder to dsl/cb with exposed methods to update Lookup in ast
2. Modified Lookup in ast to include an annotation field, which is now auto generated, as well as an enabler column field
3. Lookup now takes (Constraint, Expr) for (LHS, RHS), where LHS is the source column and RHS is the lookup column; Lookup takes Constraint for the enabler column
4. In ir, PolyLookup takes the auto-generated annotation from Lookup in ast and Halo2 backend takes annotation from PolyLookup in ir.
Next Step
1. Test the new lookup syntax on zkEVM bytecode circuit
---------
(With lots of inspirations and guidance from Leo Lara)
Co-authored-by: Steve Wang <qian.wang.wg24@wharton.upenn.edu>