primitives.expression_bytecode.witness_generation#

Witness STD computation for lookup and permutation arguments.

Recovered from git history (731d33f4~1) and adapted to current codebase.

Mathematical variables used throughout this module:

N – domain size (number of trace rows, = 2^n_bits) dim – field element dimension (1 = base field FF, 3 = extension field FF3)

Functions#

get_hint_field_values(→ numpy.ndarray)

Fetch hint field values, multiplying multiple operands if present.

evaluate_hint_field_with_expressions(→ numpy.ndarray)

Evaluate field1 * field2^(-1) using expression evaluator.

multiply_hint_fields(→ None)

Compute dest = field1 * field2^(-1) for each hint.

acc_mul_hint_fields(→ None)

Compute running sum (add=True) or product (add=False) of field1 * field2^(-1).

update_airgroup_value(→ None)

Update airgroup value: airgroupValue op= field1 * field2^(-1).

calculate_witness_std(→ None)

Calculate gsum (prod=False) or gprod (prod=True) witness columns.

Module Contents#

primitives.expression_bytecode.witness_generation.get_hint_field_values(stark_info: protocol.stark_info.StarkInfo, expressions_bin: primitives.expression_bytecode.expressions_bin.ExpressionsBin, buffers: primitives.expression_bytecode.expression_evaluator.BufferSet, hint_id: int, field_name: str, inverse: bool = False) numpy.ndarray[source]#

Fetch hint field values, multiplying multiple operands if present.

primitives.expression_bytecode.witness_generation.evaluate_hint_field_with_expressions(stark_info: protocol.stark_info.StarkInfo, expressions_bin: primitives.expression_bytecode.expressions_bin.ExpressionsBin, buffers: primitives.expression_bytecode.expression_evaluator.BufferSet, expressions_ctx: primitives.expression_bytecode.expression_evaluator.ExpressionsPack, hint_id: int, field1_name: str, field2_name: str, field2_inverse: bool = True) numpy.ndarray[source]#

Evaluate field1 * field2^(-1) using expression evaluator.

primitives.expression_bytecode.witness_generation.multiply_hint_fields(stark_info: protocol.stark_info.StarkInfo, expressions_bin: primitives.expression_bytecode.expressions_bin.ExpressionsBin, buffers: primitives.expression_bytecode.expression_evaluator.BufferSet, expressions_ctx: primitives.expression_bytecode.expression_evaluator.ExpressionsPack, hint_ids: list[int], dest_field: str, field1: str, field2: str, field2_inverse: bool = True) None[source]#

Compute dest = field1 * field2^(-1) for each hint.

primitives.expression_bytecode.witness_generation.acc_mul_hint_fields(stark_info: protocol.stark_info.StarkInfo, expressions_bin: primitives.expression_bytecode.expressions_bin.ExpressionsBin, buffers: primitives.expression_bytecode.expression_evaluator.BufferSet, expressions_ctx: primitives.expression_bytecode.expression_evaluator.ExpressionsPack, hint_id: int, dest_field: str, airgroup_val_field: str, field1: str, field2: str, add: bool) None[source]#

Compute running sum (add=True) or product (add=False) of field1 * field2^(-1).

primitives.expression_bytecode.witness_generation.update_airgroup_value(stark_info: protocol.stark_info.StarkInfo, expressions_bin: primitives.expression_bytecode.expressions_bin.ExpressionsBin, buffers: primitives.expression_bytecode.expression_evaluator.BufferSet, expressions_ctx: primitives.expression_bytecode.expression_evaluator.ExpressionsPack, hint_id: int, airgroup_val_field: str, field1: str, field2: str, add: bool) None[source]#

Update airgroup value: airgroupValue op= field1 * field2^(-1).

primitives.expression_bytecode.witness_generation.calculate_witness_std(stark_info: protocol.stark_info.StarkInfo, expressions_bin: primitives.expression_bytecode.expressions_bin.ExpressionsBin, buffers: primitives.expression_bytecode.expression_evaluator.BufferSet, expressions_ctx: primitives.expression_bytecode.expression_evaluator.ExpressionsPack, prod: bool) None[source]#

Calculate gsum (prod=False) or gprod (prod=True) witness columns.