Skip to content

Commit ee9f8fe

Browse files
author
akokoshn
committed
Improve rename copy constraints
1 parent 0b2834a commit ee9f8fe

File tree

3 files changed

+26
-29
lines changed

3 files changed

+26
-29
lines changed

bin/assigner/src/main.cpp

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void print_hex_byteblob(std::ostream &os, TIter iter_begin, TIter iter_end, bool
7878
template<typename Endianness, typename ArithmetizationType, typename ConstraintSystemType>
7979
void print_circuit(const circuit_proxy<ArithmetizationType> &circuit_proxy,
8080
const assignment_proxy<ArithmetizationType> &table_proxy,
81-
bool rename_required, std::ostream &out = std::cout) {
81+
std::ostream &out = std::cout) {
8282
using TTypeBase = nil::marshalling::field_type<Endianness>;
8383
using plonk_constraint_system = nil::marshalling::types::bundle<
8484
TTypeBase, std::tuple<
@@ -102,31 +102,28 @@ void print_circuit(const circuit_proxy<ArithmetizationType> &circuit_proxy,
102102
const auto& copy_constraints = circuit_proxy.copy_constraints();
103103
typename ConstraintSystemType::copy_constraints_container_type used_copy_constraints;
104104
const auto& used_copy_constraints_idx = circuit_proxy.get_used_copy_constraints();
105-
for (const auto &it : used_copy_constraints_idx) {
106-
used_copy_constraints.push_back(copy_constraints[it]);
107-
}
108-
109-
if (rename_required) {
110-
const auto& used_rows = table_proxy.get_used_rows();
111-
std::uint32_t local_row = 0;
112-
for (const auto &row : used_rows) {
113-
for (auto &constraint : used_copy_constraints) {
114-
const auto first_var = constraint.first;
115-
const auto second_var = constraint.second;
116-
if ((first_var.type == variable_type::column_type::witness ||
117-
first_var.type == variable_type::column_type::constant) &&
118-
first_var.rotation == row) {
119-
constraint.first = variable_type(first_var.index, local_row, first_var.relative,
120-
first_var.type);
121-
}
122-
if ((second_var.type == variable_type::column_type::witness ||
123-
second_var.type == variable_type::column_type::constant) &&
124-
second_var.rotation == row) {
125-
constraint.second = variable_type(second_var.index, local_row,
126-
second_var.relative, second_var.type);
127-
}
105+
if (circuit_proxy.get_id() > 0) {
106+
const auto start_row = table_proxy.get_start_row();
107+
for (const auto &it : used_copy_constraints_idx) {
108+
auto first_var = copy_constraints[it].first;
109+
auto second_var = copy_constraints[it].second;
110+
if (first_var.type == variable_type::column_type::witness ||
111+
first_var.type == variable_type::column_type::constant) {
112+
ASSERT(first_var.rotation >= start_row);
113+
first_var =
114+
variable_type(first_var.index, first_var.rotation - start_row, first_var.relative, first_var.type);
115+
}
116+
if (second_var.type == variable_type::column_type::witness ||
117+
second_var.type == variable_type::column_type::constant) {
118+
ASSERT(second_var.rotation >= start_row);
119+
second_var = variable_type(second_var.index, second_var.rotation - start_row, second_var.relative,
120+
second_var.type);
128121
}
129-
local_row++;
122+
used_copy_constraints.push_back({first_var, second_var});
123+
}
124+
} else {
125+
for (const auto &it : used_copy_constraints_idx) {
126+
used_copy_constraints.push_back(copy_constraints[it]);
130127
}
131128
}
132129

@@ -514,7 +511,7 @@ int curve_dependent_main(std::string bytecode_file_name,
514511
}
515512

516513
print_circuit<nil::marshalling::option::big_endian, ArithmetizationType, ConstraintSystemType>(
517-
parser_instance.circuits[0], parser_instance.assignments[0], false, ocircuit);
514+
parser_instance.circuits[0], parser_instance.assignments[0], ocircuit);
518515
ocircuit.close();
519516
} else if (parser_instance.assignments.size() > 1) {
520517
for (std::uint32_t idx = 0; idx < parser_instance.assignments.size(); idx++) {
@@ -543,7 +540,7 @@ int curve_dependent_main(std::string bytecode_file_name,
543540

544541
ASSERT_MSG(idx < parser_instance.circuits.size(), "Not found circuit");
545542
print_circuit<nil::marshalling::option::big_endian, ArithmetizationType, ConstraintSystemType>(
546-
parser_instance.circuits[idx], parser_instance.assignments[idx], (idx > 0), ocircuit);
543+
parser_instance.circuits[idx], parser_instance.assignments[idx], ocircuit);
547544

548545
ocircuit.close();
549546
}

0 commit comments

Comments
 (0)