chriseth 36bd7abec7 Ignore range constraint on output. (#3190)
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.
2025-08-19 09:52:23 +00:00
2025-03-25 18:46:26 +00:00
2025-03-25 18:46:26 +00:00
2025-05-21 12:08:50 +00:00
2025-08-04 19:03:05 +00:00
2025-05-16 14:30:09 +00:00
2025-05-21 12:08:50 +00:00
2025-05-21 12:08:50 +00:00
2025-08-15 13:21:11 +00:00
2025-04-16 07:56:28 +00:00
2025-05-21 12:08:50 +00:00
2025-05-16 14:30:09 +00:00
2025-05-16 14:30:09 +00:00
2025-04-16 07:56:28 +00:00
2024-09-13 17:03:37 +00:00
2025-08-12 10:10:01 +00:00
2024-05-14 16:29:23 +00:00
2024-05-14 16:29:23 +00:00
2025-05-21 08:19:49 +00:00
2025-05-16 14:30:09 +00:00

powdr

Matrix Chat Twitter Follow

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.

Description
No description provided
Readme 219 MiB
Languages
Rust 83.1%
HTML 10.8%
Python 4.5%
Cuda 1.1%
Shell 0.5%