
## miden::core::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 kernel procedure digests from the advice stack, reducing them, and storing the<br />reduced result at `variable_length_public_inputs_address_ptr` (in the ACE READ section).<br />3. Loading the auxiliary randomness from the advice stack so it can be checked later.<br /><br />Note that the fixed length public inputs are stored as extension field elements.<br />The kernel digests are temporarily stored in memory starting at<br />`variable_length_public_inputs_address_ptr` during reduction. The final reduced value<br />overwrites the start of this region and remains in the ACE READ section.<br /><br />POSTCONDITION: random coin input_len=0 on return.<br /><br />The generic verifier (stark/verifier.masm) calls reseed_direct immediately after this<br />procedure, which requires input_len=0. This postcondition holds because:<br />- FLPI (40 base felts) are absorbed in groups of 8 via direct sponge permutation<br />(5 iterations * 8 = 40), bypassing the buffer entirely.<br />- VLPI (kernel digests, each padded to 8 felts) are absorbed via adv_pipe + permute,<br />also bypassing the buffer.<br />- Both paths reset the buffer counters (input_len=0, output_len=8) after completion.<br /><br />If FLPI size changes from a multiple of 8, or VLPI digest padding changes from 8,<br />this postcondition must be re-verified.<br /><br />Input:<br />- Operand stack: [...]<br />- Advice stack: [fixed_len_PI..., num_kernel_proc_digests,<br />kernel_digest_elements..., beta0, beta1, alpha0, alpha1, ...]<br />Output: [...]<br /> |
