when exporting the witness, handle the lookup selector columns too

This commit is contained in:
Balazs Komuves 2024-12-17 14:45:09 +01:00
parent 6ca8e0fa4e
commit b4085c3071
No known key found for this signature in database
GPG Key ID: F63B7AEF18435562
4 changed files with 23 additions and 16 deletions

1
plonky2/.gitignore vendored
View File

@ -1,2 +1,3 @@
.DS_Store .DS_Store
json
*.json *.json

View File

@ -129,11 +129,12 @@ pub const DEFAULT_PROVER_OPTIONS: ProverOptions = ProverOptions {
// things we want to export to be used by third party tooling // things we want to export to be used by third party tooling
#[derive(Debug,Clone,Serialize)] #[derive(Debug,Clone,Serialize)]
struct ThingsToExport<F> { struct ThingsToExport<F> {
gates: Vec<String>, // list of gates used in the circuit gates: Vec<String>, // list of gates used in the circuit
selector_vector: Vec<usize>, // the full selector vector (a gate index for each row) selector_vector: Vec<usize> , // the full selector vector (a gate index for each row)
selector_columns: Vec<Vec<F>>, // the selector columns (column-major) gate_selector_columns: Vec<Vec<F>>, // the gate selector columns (column-major)
constants_columns: Vec<Vec<F>>, // the constant columns (column-major) lookup_selectors_columns: Vec<Vec<F>>, // the lookup selector columns (there are 5 of them?)
matrix: Vec<Vec<F>>, // the witness matrix (column-major) constants_columns: Vec<Vec<F>>, // the constant columns (column-major)
matrix: Vec<Vec<F>>, // the witness matrix (column-major)
// circuit_digest: Vec<F>, // circuit_digest: Vec<F>,
} }
@ -147,20 +148,25 @@ fn collect_things_to_export<F: RichField + Extendable<D>, C: GenericConfig<D, F
let num_consts_selectors = common_data.num_constants; let num_consts_selectors = common_data.num_constants;
let num_selectors = common_data.selectors_info.num_selectors(); let num_selectors = common_data.selectors_info.num_selectors();
let num_lkp_selectors = common_data.num_lookup_selectors;
let _num_constants = num_consts_selectors - num_selectors; let _num_constants = num_consts_selectors - num_selectors;
let constants_vecs = &prover_data.constants_vecs; let constants_vecs = &prover_data.constants_vecs;
assert!( num_consts_selectors == constants_vecs.len() ); assert!( num_consts_selectors == constants_vecs.len() );
let selector_cols: Vec<Vec<F>> = constants_vecs[0..num_selectors].to_vec(); let b = num_selectors;
let constant_cols: Vec<Vec<F>> = constants_vecs[num_selectors.. ].to_vec(); let c = num_selectors + num_lkp_selectors;
let selector_cols: Vec<Vec<F>> = constants_vecs[0..b].to_vec();
let lookup_cols: Vec<Vec<F>> = constants_vecs[b..c].to_vec();
let constant_cols: Vec<Vec<F>> = constants_vecs[c.. ].to_vec();
ThingsToExport { ThingsToExport {
gates: common_data.gates.iter().map(|g| g.0.short_id()).collect(), gates: common_data.gates.iter().map(|g| g.0.short_id()).collect(),
selector_vector: common_data.selectors_info.selector_vector.clone(), selector_vector: common_data.selectors_info.selector_vector.clone(),
selector_columns: selector_cols, gate_selector_columns: selector_cols,
constants_columns: constant_cols, lookup_selectors_columns: lookup_cols,
matrix: wires_matrix.wire_values.clone(), constants_columns: constant_cols,
// circuit_digest: prover_data.circuit_digest, matrix: wires_matrix.wire_values.clone(),
// circuit_digest: prover_data.circuit_digest,
} }
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long