sp1_hypercube/logup_gkr/
proof.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4use slop_alloc::{Backend, CpuBackend};
5use slop_multilinear::{Mle, MleEval, Point};
6use slop_sumcheck::PartialSumcheckProof;
7
8#[derive(Debug, Serialize, Deserialize, Clone)]
10#[serde(bound(serialize = "Mle<EF, B>: Serialize", deserialize = "Mle<EF, B>: Deserialize<'de>"))]
11pub struct LogUpGkrOutput<EF, B: Backend = CpuBackend> {
12 pub numerator: Mle<EF, B>,
14 pub denominator: Mle<EF, B>,
16}
17
18#[derive(Debug, Serialize, Deserialize, Clone)]
20pub struct LogupGkrRoundProof<EF> {
21 pub numerator_0: EF,
23 pub numerator_1: EF,
25 pub denominator_0: EF,
27 pub denominator_1: EF,
29 pub sumcheck_proof: PartialSumcheckProof<EF>,
31}
32
33#[derive(Debug, Serialize, Deserialize, Clone)]
35pub struct LogupGkrProof<EF> {
36 pub circuit_output: LogUpGkrOutput<EF>,
38 pub round_proofs: Vec<LogupGkrRoundProof<EF>>,
40 pub logup_evaluations: LogUpEvaluations<EF>,
42}
43
44#[derive(Debug, Serialize, Deserialize, Clone)]
46pub struct ChipEvaluation<EF> {
47 pub main_trace_evaluations: MleEval<EF>,
49 pub preprocessed_trace_evaluations: Option<MleEval<EF>>,
51}
52
53#[derive(Debug, Serialize, Deserialize, Clone)]
54pub struct LogUpEvaluations<EF> {
56 pub point: Point<EF>,
58 pub chip_openings: BTreeMap<String, ChipEvaluation<EF>>,
60}