We've added a new feature to the static analyzer that tracks which gates contain each variable. This is helpful for removing false-positive variables from the analyzer by using gate selectors combined with additional knowledge about variables (e.g., tau or range tags).
This information is stored in an unordered map with keys of type std::pair<uint32_t, size_t>, where:
- uint32_t represents the real variable index
- size_t represents the index of the UltraTraceBlock in the reference array of TraceBlocks contained within the Ultra Circuit Builder
Since std::unordered_map doesn't provide default hash and equality functions for std::pair keys, we've implemented these ourselves. Our approach is based on the hash_combine function from the Boost library, which efficiently combines hashes of the two elements in the pair.
Definition at line 28 of file graph.hpp.