Define the constant terms an expression can use.
It can be any constant term (Literal), a matrix (Mds - used by the
permutation used by Poseidon for instance), or endomorphism coefficients
(EndoCoefficient - used as an optimisation).
As for challengeTerm, it has been used initially to implement the PLONK
IOP, with the custom gate Poseidon. However, the terms have no built-in
semantic in the expression framework.
TODO: we should generalize the expression type over challenges and constants.
See https://github.com/MinaProtocol/mina/issues/15287
Use as a result of the expression evaluations routine.
For now, the left branch is the result of an evaluation and the right branch
is the ID of an element in the cache
Flat bytecode for the fused evaluator: a stack machine walked once per domain
row, with intermediates living in a register frame rather than full-domain
arrays.
Execution mode for the experimental fused row-wise evaluator.
KIMCHI_FUSED_EVAL=1 uses it (falling back to the vectorised path for
expressions it does not handle); =verify runs both and asserts they agree.
Compute the evaluations of the unnormalized lagrange polynomial on
H_8 or H_4. Taking H_8 as an example, we show how to compute this
polynomial on the expanded domain.