Type Alias E

Source
pub type E<F> = Expr<ConstantExpr<F, BerkeleyChallengeTerm>, Column<RelationColumnType>>;
Expand description

Type to represent a constraint on the individual columns of the execution trace. As a reminder, a constraint can be formally defined as a multi-variate polynomial over a finite field. The variables of the polynomial are defined as kimchi_msm::columns::Column. The expression framework defined in kimchi::circuits::expr is used to describe the multi-variate polynomials. For instance, a vanilla 3-wires PlonK constraint can be defined using the multi-variate polynomial of degree 2 P(X, Y, Z) = q_x X + q_y Y + q_m X Y + q_o Z + q_c To represent this multi-variate polynomial using the expression framework, we would use 3 different columns.

Aliased Type§

pub enum E<F> {
    Atom(ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>),
    Pow(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, u64),
    Add(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>),
    Mul(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>),
    Sub(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>),
    Double(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>),
    Square(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>),
    Cache(CacheId, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>),
    IfFeature(FeatureFlag, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>),
}

Variants§

§

Atom(ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>)

§

Pow(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, u64)

§

Add(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>)

§

Mul(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>)

§

Sub(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>)

§

Double(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>)

§

Square(Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>)

§

Cache(CacheId, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>)

§

IfFeature(FeatureFlag, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>, Box<Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column<RelationColumnType>>>>)