Module o1vm::trace

source ·
Expand description

Abstract execution traces, possible long, that can be folded. A trace is a sequence of data points organized in a 2D array, constrained. This module defines structures and traits to build and manipulate traces. A trace is a collection of data points that represent the execution of a program. Some trace can be seen as “decomposable” in the sense that they can be divided into sub-traces that share the same columns, and sub-traces can be selected using “selectors”.

Structs

  • Struct representing a circuit execution trace which is decomposable in individual sub-circuits sharing the same columns. It is parameterized by
  • Implement a trace for a single instruction.

Traits

  • DecomposableTracer builds traces for some program executions. The constant type N_REL is defined as the maximum number of relation columns the trace can use per row. The type C encodes the folding configuration, from which the selector, and scalar field are derived. Examples of selectors are:
  • The trait Foldable describes structures that can be folded. For that, it requires to be able to implement a way to return a folding instance and a folding witness. It is specialized for the DecomposedTrace struct for now and is expected to fold individual instructions, selected with a specific C::Selector.
  • Tracer builds traces for some program executions. The constant type N_REL is defined as the maximum number of relation columns the trace can use per row. The type C encodes the folding configuration, from which the selector, which encodes the information of the kind of information the trace encodes, and scalar field are derived. Examples of selectors are: