#pragma once #include "verifier_standard.h" #include "inputCircuit.hpp" #include "circuit.h" #include "sumcheck.h" //#include #include #include "polynomial.h" #include "config_pc.hpp" #include #define GKR_PROOF 1 #define RANGE_PROOF 2 #define RANGE_PROOF_OPT 6 #define RANGE_PROOF_LOOKUP 7 #define MATMUL_PROOF 3 #define ADD_PROOF 4 #define DIVISION_CHECK 5 #define LOOKUP_PROOF 8 #define HASH_SUMCHECK 9 struct layer_proof{ int type; vector output; F initial_randomness,out_eval; vector> randomness; vector q_poly; vector c_poly; vector vr; vector>> w_hashes; F final_rand; }; typedef struct layer_proof layer_proof; struct lookup_proof{ F previous_r; proof mP1,mP2; proof sP1; vector mul_out1,mul_out2,read_eval_x,write_eval_x,indexes_eval,x1; F read_eval,read_eval1,read_eval2,write_eval,write_eval1,write_eval2,sum1,sum2; F final_eval; F final_rand; }; struct polynomial_data{ vector poly; vector> eval_point; vector eval; }; struct feedforward_proof{ map poly_map; vector proofs; }; struct SHA_witness{ vector bits; vector aux,numbers; }; typedef struct SHA_witness SHA_witness; typedef struct Point Point; struct proof prove_matrix_evaluations(vector &data, vector randomness, int sizes, int b1_size,int b2_size, int read_write_size);