I tried to split the selector to fixed process into two stages:
Just update the ConstraintSystem (replace selectors in gates, lookups etc with selector expressions built from fixed columns)
Transform assigned selectors to assigned fixed columns to be used for the selector expressions
For uncompressed selectors this works.
For compressed selectors this doesn't work, because step 1 requires the selector assignments to figure out how to build the selector expressions. Without the selector assignments the generated output is invalid.
There are a few reasons why this wasn't found in tests
I can think of two possible solutions:
a. Revert the split of selector to fixed process to a single stage
b. Review the implementation of compile_selectors::process(...) and see if we can make it work without access to the selector assignments in the sage of updating the ConstraintSystem.
I believe I broke the selector compression in this PR https://github.com/privacy-scaling-explorations/halo2/pull/290 via this commit https://github.com/privacy-scaling-explorations/halo2/pull/290/commits/eddbe95ec3333bd9d5117b3ea1bfe4e38d72054f
I tried to split the selector to fixed process into two stages:
For uncompressed selectors this works. For compressed selectors this doesn't work, because step 1 requires the selector assignments to figure out how to build the selector expressions. Without the selector assignments the generated output is invalid.
There are a few reasons why this wasn't found in tests
I can think of two possible solutions: a. Revert the split of selector to fixed process to a single stage b. Review the implementation of
compile_selectors::process(...)
and see if we can make it work without access to the selector assignments in the sage of updating theConstraintSystem
.