24 template <
typename RecursiveCurve>
26 typename RecursiveCurve::Builder*
builder,
32 for (
auto& element : native_claim.challenge) {
49 requires Curve::is_stdlib_type
52 native_claim.challenge.reserve(
challenge.size());
54 for (
auto& recursive_challenge :
challenge) {
55 native_claim.challenge.emplace_back(recursive_challenge.get_value());
69 FF hash_with_origin_tagging([[maybe_unused]]
const std::string& domain_separator, T& transcript)
const
71 using Codec =
typename T::Codec;
72 std::vector<FF> claim_elements;
77 auto append_tagged = [&]<
typename U>(
const U& component) {
78 auto frs = bb::tag_and_serialize<T::in_circuit, Codec>(component,
tag);
79 claim_elements.insert(claim_elements.end(), frs.begin(), frs.end());
84 append_tagged(element);
94 bb::unset_free_witness_tags<T::in_circuit, FF>(claim_elements);
97 return T::HashFunction::hash(claim_elements);
Fr evaluate_mle(std::span< const Fr > evaluation_points, bool shift=false) const
evaluate multi-linear extension p(X_0,…,X_{n-1}) = \sum_i a_i*L_i(X_0,…,X_{n-1}) at u = (u_0,...