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
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.