## std::sys::vm::public_inputs
| Procedure | Description |
| ----------- | ------------- |
| process_public_inputs | Processes the public inputs.<br /><br />This involves:<br /><br />1. Loading from the advice stack the fixed-length public inputs and storing them in memory<br />starting from the address pointed to by `public_inputs_address_ptr`.<br />2. Loading from the advice stack the variable-length public inputs, storing them temporarily<br />in memory, and then reducing them to an element in the challenge field using the auxiliary<br />randomness. This reduced value is then used to impose a boundary condition on the relevant<br />auxiliary column.<br /><br />Note that the fixed length public inputs are stored as extension field elements while<br />the variable length ones are stored as base field elements.<br /><br />Note also that, while loading the above, we compute the hash of the public inputs. The hashing<br />starts with capacity registers of the hash function set to `C` that is the result of hashing<br />the proof context.<br /><br />The output D, that is the digest of the above hashing, is then used in order to reseed<br />the random coin.<br /><br />It is worth noting that:<br /><br />1. Only the fixed-length public inputs are stored for the lifetime of the verification procedure.<br />The variable-length public inputs are stored temporarily, as this simplifies the task of<br />reducing them using the auxiliary randomness. On the other hand, the resulting values from<br />the aforementioned reductions are stored right after the fixed-length public inputs. These<br />are stored in a word-aligned manner and padded with zeros if needed.<br />2. The public inputs address is computed in such a way so as we end up with the following<br />memory layout:<br /><br />[..., a_0...a_{m-1}, b_0...b_{n-1}, alpha0, alpha1, beta0, beta1, OOD-evaluations-start, ...]<br /><br />where:<br /><br />1. [a_0...a_{m-1}] are the fixed-length public inputs stored as extension field elements. This<br />section is double-word-aligned.<br />2. [b_0...b_{n-1}] are the results of reducing the variable length public inputs using<br />auxiliary randomness. This section is word-aligned.<br />3. [alpha0, alpha1, beta0, beta1] is the auxiliary randomness.<br />4. `OOD-evaluations-start` is the first field element of the section containing the OOD<br />evaluations.<br />3. Note that for each bus message in a group in the variable length public inputs, each<br />message is expected to be padded to the next multiple of 8 and provided in reverse order.<br />This has the benefit of making the reduction using the auxiliary randomness more efficient<br />using `horner_eval_base`.<br /><br /><br />Input: [C, ...]<br />Output: [...]<br /> |