Files
powdr/pil-analyzer
Thibaut Schaeffer 2cb4548283 Linear constraint remover (#2425)
# what

Replace certain multilinear constraints* with intermediate polynomials
in pilopt.
*with no next references, not touching public inputs

# why

[This
comment](https://github.com/powdr-labs/powdr/issues/2337#issuecomment-2621634278)
highlights a use-case where materialising a column which is only
constrained to a non-shifted multilinear polynomial is wasteful. Fixing
this when we create the code is tricky, since we cannot know the degree
of the constraint from pil. This is however something pilopt can do,
which is what we attempt to do here

# unknowns

- [x] We have similar optimizers for `x = 42` and `x = y` which are both
multilinear expressions. They do no yield intermediate polynomials,
since in that case it is fine to "inline" them. This implementation
currently makes sure all three optimizer apply to distinct cases, but
maybe it would be better to have a single optimizer which handles all
three cases, only introducing intermediate polynomials in the non
trivial cases (`42` and `y`)
      - Implemented in https://github.com/powdr-labs/powdr/pull/2532

---------

Co-authored-by: chriseth <chris@ethereum.org>
Co-authored-by: Gaston Zanitti <gzanitti@gmail.com>
2025-04-10 16:56:30 +00:00
..
2025-04-10 16:56:30 +00:00