Skip to content

Conversation

kunxian-xia
Copy link
Collaborator

No description provided.

@kunxian-xia kunxian-xia marked this pull request as draft August 24, 2025 11:15
@kunxian-xia kunxian-xia marked this pull request as ready for review August 24, 2025 17:12
@kunxian-xia
Copy link
Collaborator Author

trigger the integration test for gkr keccak

@kunxian-xia kunxian-xia changed the title Docs: explain prover's design for supporting precompile Docs: explain prover's design for precompiles Aug 25, 2025
@@ -283,6 +286,8 @@ impl<E: ExtensionField> ZerocheckLayer<E> for Layer<E> {
);
let in_point = in_point.into_iter().map(|c| c.elements).collect_vec();

// TODO: is there any check on eq_left, eq_right, eq for rotation argument?
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hero78119 It seems to me that eq_left / eq_right / eq_target is not checked at all.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rotation eq will be re-construct when the random point was derived from previous layer

.chain(rotation_left.par_iter().map(|rotation_left| {
MultilinearExtension::from_evaluations_ext_vec(
rotation_left.len(),
build_eq_x_r_vec(rotation_left),
)
}))
// for rotation right point
.chain(rotation_right.par_iter().map(|rotation_right| {
MultilinearExtension::from_evaluations_ext_vec(
rotation_right.len(),
build_eq_x_r_vec(rotation_right),
)
}))
// for rotation point
.chain(rotation_point.par_iter().map(|rotation_point| {
MultilinearExtension::from_evaluations_ext_vec(
rotation_point.len(),
build_eq_x_r_vec(rotation_point),
)
}))
.collect::<Vec<_>>();

in summary, eq will transform from A to B format

  • format A: each eq will be assign as selector with only 0, 1 during witness generation to serve layer by layer witness inference
  • format B: once random point $$r$$ derive from previous layer, each eq will be constructed via build_eq(r) then proceed sumcheck

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the array self.out_sel_and_eval_exprs does not include eq_left / eq_right / eq.

izip!(&self.out_sel_and_eval_exprs, &eval_and_dedup_points).for_each(
|((sel_type, _), (_, out_point))| {
sel_type.evaluate(
&mut main_evals,
out_point.as_ref().unwrap(),
&in_point,
num_instances,
self.n_witin,
);
},
);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants