1use std::collections::HashMap;
2
3use num::Integer;
4use shared_types::Field;
5
6use crate::{claims::Claim, layer::LayerId, prover::GKRCircuitDescription};
7
8pub fn sanitycheck_input_layers_and_claims<F: Field>(
14 input_layer_claims: &[Claim<F>],
15 circuit_description: &GKRCircuitDescription<F>,
16) {
17 let mut input_layer_claims_map: HashMap<LayerId, usize> = HashMap::new();
18 input_layer_claims.iter().for_each(|claim| {
19 input_layer_claims_map
20 .entry(claim.get_to_layer_id())
21 .and_modify(|x| x.inc())
22 .or_insert(1);
23 });
24 let input_layers_map: HashMap<LayerId, usize> = circuit_description
27 .input_layers
28 .iter()
29 .map(|circuit_input_layer| (circuit_input_layer.layer_id, circuit_input_layer.num_vars))
30 .collect();
31 input_layer_claims_map
32 .iter()
33 .for_each(|(layer_id, num_claims)| {
34 let layer_num_vars = input_layers_map.get(layer_id).unwrap();
35 println!("Layer ID {layer_id} with {num_claims} claims and {layer_num_vars} num vars");
36 });
37}