30 template <
typename RecursiveCurve>
32 typename RecursiveCurve::Builder*
builder,
38 for (
auto& element : native_claim.challenge) {
55 requires Curve::is_stdlib_type
58 native_claim.challenge.reserve(
challenge.size());
60 for (
auto& recursive_challenge :
challenge) {
61 native_claim.challenge.emplace_back(recursive_challenge.get_value());
76 template <
typename Codec,
typename HashFn>
FF hash_with_origin_tagging(
const OriginTag&
tag)
const
79 std::vector<FF> claim_elements;
82 auto append_tagged = [&]<
typename U>(
const U& component) {
83 auto frs = bb::tag_and_serialize<in_circuit, Codec>(component,
tag);
84 claim_elements.insert(claim_elements.end(), frs.begin(), frs.end());
89 append_tagged(element);
99 bb::unset_free_witness_tags<in_circuit, FF>(claim_elements);
102 return HashFn::hash(claim_elements);
111 template <
typename TranscriptType>
FF hash_with_origin_tagging(
const TranscriptType& transcript)
const
114 return hash_with_origin_tagging<typename TranscriptType::Codec, typename TranscriptType::HashFunction>(
tag);
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,...