fn combine_pair<F: Field>(
mle_evaluation_first: F,
maybe_mle_evaluation_second: Option<F>,
prefix_vars_first: &[bool],
chal_point: &[F],
) -> (F, Vec<bool>)Expand description
Given an MLE evaluation, and an option of a second MLE evaluation pair, this combines the two together this assumes that the first MLE evaluation and the second MLE evaluation are pairs, if the second MLE evaluation is a Some()
A pair consists of two MLE evaluations that match in every fixed bit except for the least significant one. This is because we combine in the reverse order that we split in terms of selectors, and we split in terms of selectors by doing huffman (most significant bit).
Example: if mle_evaluation_first has fixed bits true, true, false, its pair would have fixed bits true, true, true. When we combine them, the combined MLE has fixed bits true, true. We also simultaneously update the combined evaluation to use the challenge according to the index we combined at.
If there is no pair, then this is assumed to be an mle with all 0s.