* Do not export allocator
* Make sure to use jemalloc in all downstream tests
* Update readme
* Remove test jemalloc boilerplate
* One more
* Fix clippies
* One more
* Clippy
Co-authored-by: Daniel Lubarov <daniel@lubarov.com>
* First draft of bitwise AND.
* Refactor everything; add support for other binary bitops.
* Documentation; fix integration into rest of ALU.
* Allow `cargo fmt` to make code harder to read.
* Refactor following Jakub's suggestions.
* Fix variable name.
* Minor documentation.
* Basic tests.
* Address Daniel's PR comments.
* Remove the 'BIT' prefix from the BIT{AND,IOR,XOR,ANDNOT} names.
* cargo fmt/clippy
* Simplify bit test.
* First draft for division.
* `eval_division` work
* Division
* Minor: outdated fixme
* Tests and better column names
* Minor lints
* Remove redundant constraint
* Make division proof more formal
* Minor proof and comments
Co-authored-by: Hamish Ivey-Law <hamish@ivey-law.name>
* Halo2 style lookup arguments in System Zero
It's a really nice and simple protocol, particularly for the verifier since the constraints are trivial (aside from the underlying batched permutation checks, which we already support). See the [Halo2 book](https://zcash.github.io/halo2/design/proving-system/lookup.html) and this [talk](https://www.youtube.com/watch?v=YlTt12s7vGE&t=5237s) by @daira.
Previously we generated the whole trace in row-wise form, but it's much more efficient to generate these "permuted" columns column-wise. So I changed our STARK framework to accept the trace in column-wise form. STARK impls now have the flexibility to do some generation row-wise and some column-wise (without extra costs; there's a single transpose as before).
* sorting
* fixes
* PR feedback
* into_iter
* timing