Type Alias SystemComplex

Source
pub type SystemComplex<F> = VmChipComplex<F, SystemExecutor<F>, SystemPeriphery<F>>;
Expand description

The base VmChipComplex with only system chips.

Aliased Type§

struct SystemComplex<F> {
    pub base: SystemBase<F>,
    pub inventory: VmInventory<SystemExecutor<F>, SystemPeriphery<F>>,
    /* private fields */
}

Fields§

§base: SystemBase<F>§inventory: VmInventory<SystemExecutor<F>, SystemPeriphery<F>>

Extendable collection of chips for executing instructions. System ensures it contains:

  • PhantomChip
  • PublicValuesChip if continuations disabled
  • Poseidon2Chip if continuations enabled

Implementations§

Source§

impl<F: PrimeField32> SystemComplex<F>

Source

pub fn new(config: SystemConfig) -> Self

Source§

impl<F: PrimeField32, E, P> VmChipComplex<F, E, P>

Source

pub fn config(&self) -> &SystemConfig

Source§

impl<F: PrimeField32, E, P> VmChipComplex<F, E, P>

Source

pub fn inventory_builder(&self) -> VmInventoryBuilder<'_, F>
where E: AnyEnum, P: AnyEnum,

Source

pub fn extend<E3, P3, Ext>( self, config: &Ext, ) -> Result<VmChipComplex<F, E3, P3>, VmInventoryError>
where Ext: VmExtension<F>, E: Into<E3> + AnyEnum, P: Into<P3> + AnyEnum, Ext::Executor: Into<E3>, Ext::Periphery: Into<P3>,

Extend the chip complex with a new extension. A new chip complex with different type generics is returned with the combined inventory.

Source

pub fn transmute<E2, P2>(self) -> VmChipComplex<F, E2, P2>
where E: Into<E2>, P: Into<P2>,

Source

pub fn append( &mut self, other: VmInventory<E, P>, ) -> Result<(), VmInventoryError>

Appends other to the current inventory. This means self comes earlier in the dependency chain.

Source

pub fn program_chip(&self) -> &ProgramChip<F>

Source

pub fn program_chip_mut(&mut self) -> &mut ProgramChip<F>

Source

pub fn connector_chip(&self) -> &VmConnectorChip<F>

Source

pub fn connector_chip_mut(&mut self) -> &mut VmConnectorChip<F>

Source

pub fn memory_controller(&self) -> &MemoryController<F>

Source

pub fn range_checker_chip(&self) -> &SharedVariableRangeCheckerChip

Source

pub fn public_values_chip(&self) -> Option<&PublicValuesChip<F>>
where E: AnyEnum,

Source

pub fn poseidon2_chip(&self) -> Option<&Poseidon2PeripheryChip<F>>
where P: AnyEnum,

Source

pub fn poseidon2_chip_mut(&mut self) -> Option<&mut Poseidon2PeripheryChip<F>>
where P: AnyEnum,

Source

pub fn finalize_memory(&mut self)
where P: AnyEnum,

Source

pub fn take_streams(&mut self) -> Streams<F>

This should only be called after segment execution has finished.

Source

pub fn num_airs(&self) -> usize

Source

pub fn get_internal_trace_heights(&self) -> VmComplexTraceHeights

Return trace heights of (SystemBase, Inventory). Usually this is for aggregation and not useful for regular users.

Warning: the order of get_trace_heights is deterministic, but it is not the same as the order of air_names. In other words, the order here does not match the order of AIR IDs.

Source

pub fn get_dummy_internal_trace_heights(&self) -> VmComplexTraceHeights

Return dummy trace heights of (SystemBase, Inventory). Usually this is for aggregation to generate a dummy proof and not useful for regular users.

Warning: the order of get_dummy_trace_heights is deterministic, but it is not the same as the order of air_names. In other words, the order here does not match the order of AIR IDs.

Source

pub fn airs<SC: StarkGenericConfig>(&self) -> Vec<AirRef<SC>>
where Domain<SC>: PolynomialSpace<Val = F>, E: Chip<SC>, P: Chip<SC>,