Summary: We do not need to add the range constraint on the output because the output is uniquely determined by the formula and the range constraints on the inputs. Details: This slightly improves the "low degree bus interaction optimizer". It replaces a bus interaction by an algebraic constraint and simple range constraints in the following way: 1. It performs exhaustive search about which of the non-constant fields in the bus interaction are inputs and which (only one) is the output 2. Determines currently-known range constraints on inputs and outputs 3. Using exhaustive search, chooses a candidate function and checks that for all input values in the range constraints, the candidate computes the same output as the bus interaction would (i.e. the bus interaction also allows exactly one output compatible with the concrete values for the inputs). 4. If such a candidate is function, it replaces the bus interaction by the candidate turned into an algebraic constraint and simple range constraints (the ones determined in the beginning) This PR changes the mechanism in that it does not re-add range constraints for the output, only for the inputs. The reason is that the algebraic constraint directly computes the value for the output for all inputs within the range constraints of the input. So the algebraic constraint already enforces the range constraint on the output from the range constraints on the inputs.
powdr
WARNING: This codebase is experimental and has not been audited. DO NOT USE FOR PRODUCTION!
If you have any questions or want to contribute, feel free to write us in our Matrix Chat.
powdr provides state-of-the-art performance and security to zkVMs, enhancing them with compiler-based techniques including static analysis and formal verification.
The main components are:
- Autoprecompiles: automated synthesis of guest-specific precompiles.
- Constraint Solver: compile-time solver used to detect potential optimizations and security issues.
- powdr-OpenVM: powdr extensions for OpenVM.
For detailed documentation on powdr-asm, powdr-pil and podwrVM please visit the powdr book.
Project structure
For an overview of the project structure, run:
cargo doc --workspace --no-deps --open
Contributing
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.
License
This project is licensed under either of
at your option.
