Technical Overview

As shown in an earlier section (refer to Components), Stwo represents the trace using multiple tables where each table is referred to as a component. An AIR in Stwo is a collection of multiple components. Components can interact with one another, and the consistency of these interactions is verified using logUp.

For example, in the hash function example, the scheduling component and computing component interact with each other, where both the components lookup the input and output pair. The consistency of this interaction is then verified by adding logUp constraints to each component.

Each component consists of a trace table of a specific height along with a set of constraints. These constraints include computation constraints as well as lookup constraints (refer to Lookups).

This section provides an overview of how these components are converted into a composition polynomial. This composition polynomial is then used by a polynomial commitment scheme to commit and generate evaluation proofs.

AIR to Composition Polynomial

This section explains how a composition polynomial is computed using an example.

Consider an AIR composed of two components with trace tables: and . The component table is defined over the trace domain , which is a canonic coset of size . Similarly, component table is defined over the trace domain of size .

The prover interpolates the trace polynomials for each component and then evaluates the trace polynomials over an evaluation domain that is a blowup factor times larger than the trace domain. Thus, the evaluation domain for component table is of size . Similarly, the evaluation domain for component table is of size . Both interpolation and evaluation use circle FFT. The prover then commits to the evaluations of trace polynomials from all components using a single Merkle tree.

Both component tables define computation constraints and lookup constraints for their specific component. The component constraints are proven table-wise, each with its separate domain quotient, which are then combined into a single cross-domain composition polynomial. Suppose the component tables and have a total of and constraints, respectively.

The verifier sends to the prover. We use the same to combine all constraints across different component tables. First, is used to compute the random linear combination of all constraints on component to obtain the component-level composition polynomial . Then, the prover uses the same to compute the component-level composition polynomial for component .

The prover then computes the quotient for component table as , where is the vanishing polynomial for trace domain . Similarly, the prover computes the quotient for component table as .

Finally, the prover computes the cross-domain composition polynomial as where is the total number of constraints of the component table .

The next section examines how these concepts are implemented.