pub trait PhantomSubExecutor<F> {
// Required method
fn phantom_execute(
&mut self,
memory: &MemoryController<F>,
streams: &mut Streams<F>,
discriminant: PhantomDiscriminant,
a: F,
b: F,
c_upper: u16,
) -> Result<()>;
}
Expand description
Phantom sub-instructions affect the runtime of the VM and the trace matrix values. However they all have no AIR constraints besides advancing the pc by DEFAULT_PC_STEP.
They should not mutate memory, but they can mutate the input & hint streams.
Phantom sub-instructions are only allowed to use operands
a,b
and c_upper = c.as_canonical_u32() >> 16
.