From ba43801ae0edd920aaedcc040e24b84ce2cc1116 Mon Sep 17 00:00:00 2001
From: Usachev Daniil <d.s.usachev@gmail.com>
Date: Mon, 3 Mar 2025 16:20:03 +0300
Subject: [PATCH 1/3] fix

---
 lib/kitty                                    | 2 +-
 src/gate/estimator/equivalence_estimator.cpp | 7 ++++---
 src/gate/optimizer/reducer.cpp               | 3 +--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/kitty b/lib/kitty
index cd86c526d..514a3dfd9 160000
--- a/lib/kitty
+++ b/lib/kitty
@@ -1 +1 @@
-Subproject commit cd86c526d3e228b61114b8f883e9f28697169d30
+Subproject commit 514a3dfd9ae967804c429c722c446ea6455154e4
diff --git a/src/gate/estimator/equivalence_estimator.cpp b/src/gate/estimator/equivalence_estimator.cpp
index 520f9925a..335bbc81d 100644
--- a/src/gate/estimator/equivalence_estimator.cpp
+++ b/src/gate/estimator/equivalence_estimator.cpp
@@ -125,9 +125,10 @@ void EquivalenceEstimator<SB>::estimate(
     addRoots<SB>(builder, result, tempRoots, newConstants, 0);
   } else {
     for (size_t i = 0; i < sizeRoots;) {
-      for (auto nodeID = result.roots[i]; nodeID != model::EntryID::Invalid;
-          nodeID = addTempRoot<SB>(builder, result, tempRoots, nodeID, 
-                                   newConstants, firstRun));
+      for (auto nodeID = result.roots[i]; nodeID != model::EntryID::Invalid && 
+           builder->hasSim(nodeID);
+           nodeID = addTempRoot<SB>(builder, result, tempRoots, nodeID, 
+                                    newConstants, firstRun));
 
       if (addRoots<SB>(builder, result, tempRoots, newConstants, i)) {
         auto it = result.roots.begin() + i;
diff --git a/src/gate/optimizer/reducer.cpp b/src/gate/optimizer/reducer.cpp
index 767e29af6..84d0f00a8 100644
--- a/src/gate/optimizer/reducer.cpp
+++ b/src/gate/optimizer/reducer.cpp
@@ -531,8 +531,6 @@ void Reducer<SB>::transform(
   estimator::EqResult estimatorResult;
   estimator::EquivalenceEstimator<SB> estimator;
 
-
-  simulator::Simulator<model::SubnetBuilder> simulator(builder);
   CounterExamples counterExamples;
   NotEqualPairs notEqualPairs;
   uint16_t inNum = builder->getInNum();
@@ -540,6 +538,7 @@ void Reducer<SB>::transform(
   for (uint16_t i = 0; i < numEstimations; ++i) {
 
     // Simulation and Estimation.
+    simulator::Simulator<model::SubnetBuilder> simulator(builder);
     if (counterExamples.empty()) {
       randomSimulation<SB>(builder, simulator, estimator, estimatorSettings, 
                            estimatorResult, numSimulations);
-- 
GitLab


From 203648ded88500be4da459222fdb9b708a14cd63 Mon Sep 17 00:00:00 2001
From: Usachev Daniil <d.s.usachev@gmail.com>
Date: Mon, 3 Mar 2025 16:52:15 +0300
Subject: [PATCH 2/3] update

---
 src/gate/optimizer/reducer.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/gate/optimizer/reducer.cpp b/src/gate/optimizer/reducer.cpp
index 84d0f00a8..0c03ab34a 100644
--- a/src/gate/optimizer/reducer.cpp
+++ b/src/gate/optimizer/reducer.cpp
@@ -539,6 +539,7 @@ void Reducer<SB>::transform(
 
     // Simulation and Estimation.
     simulator::Simulator<model::SubnetBuilder> simulator(builder);
+    std::cout << "sim start" << std::endl;
     if (counterExamples.empty()) {
       randomSimulation<SB>(builder, simulator, estimator, estimatorSettings, 
                            estimatorResult, numSimulations);
@@ -549,6 +550,7 @@ void Reducer<SB>::transform(
 
       counterExamples.clear();
     }
+    std::cout << "sim end" << std::endl;
 
     for (auto it = estimatorResult.roots.begin(); 
          it != estimatorResult.roots.end(); ++it) { 
-- 
GitLab


From 0abb9d6bd5b919c8645e98fad198170b6a5f025e Mon Sep 17 00:00:00 2001
From: Usachev Daniil <d.s.usachev@gmail.com>
Date: Mon, 3 Mar 2025 18:56:13 +0300
Subject: [PATCH 3/3] update

---
 src/gate/optimizer/reducer.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/gate/optimizer/reducer.cpp b/src/gate/optimizer/reducer.cpp
index 0c03ab34a..84d0f00a8 100644
--- a/src/gate/optimizer/reducer.cpp
+++ b/src/gate/optimizer/reducer.cpp
@@ -539,7 +539,6 @@ void Reducer<SB>::transform(
 
     // Simulation and Estimation.
     simulator::Simulator<model::SubnetBuilder> simulator(builder);
-    std::cout << "sim start" << std::endl;
     if (counterExamples.empty()) {
       randomSimulation<SB>(builder, simulator, estimator, estimatorSettings, 
                            estimatorResult, numSimulations);
@@ -550,7 +549,6 @@ void Reducer<SB>::transform(
 
       counterExamples.clear();
     }
-    std::cout << "sim end" << std::endl;
 
     for (auto it = estimatorResult.roots.begin(); 
          it != estimatorResult.roots.end(); ++it) { 
-- 
GitLab