package gates import ( gl "github.com/succinctlabs/gnark-plonky2-verifier/goldilocks" "github.com/succinctlabs/gnark-plonky2-verifier/poseidon" ) type EvaluationVars struct { localConstants []gl.QuadraticExtensionVariable localWires []gl.QuadraticExtensionVariable publicInputsHash poseidon.GoldilocksHashOut } func NewEvaluationVars( localConstants []gl.QuadraticExtensionVariable, localWires []gl.QuadraticExtensionVariable, publicInputsHash poseidon.GoldilocksHashOut, ) *EvaluationVars { return &EvaluationVars{ localConstants: localConstants, localWires: localWires, publicInputsHash: publicInputsHash, } } func (e *EvaluationVars) RemovePrefix(numSelectors uint64) { e.localConstants = e.localConstants[numSelectors:] } func (e *EvaluationVars) GetLocalExtAlgebra(wireRange Range) gl.QuadraticExtensionAlgebraVariable { // For now, only support degree 2 if wireRange.end-wireRange.start != gl.D { panic("Range must be of size D") } var ret gl.QuadraticExtensionAlgebraVariable for i := wireRange.start; i < wireRange.end; i++ { ret[i-wireRange.start] = e.localWires[i] } return ret }