diff --git a/libraries/pbes/include/mcrl2/pbes/pbesinst_lazy.h b/libraries/pbes/include/mcrl2/pbes/pbesinst_lazy.h index bd05bbdb3c..9f07dd9857 100644 --- a/libraries/pbes/include/mcrl2/pbes/pbesinst_lazy.h +++ b/libraries/pbes/include/mcrl2/pbes/pbesinst_lazy.h @@ -275,6 +275,7 @@ class pbesinst_lazy_algorithm } } + /// Replaces propositional variables in the expression psi that are irrelevant for the given proof_graph. static void rewrite_star(pbes_expression& result, const structure_graph& G, bool alpha, @@ -284,13 +285,13 @@ class pbesinst_lazy_algorithm const pbes_expression& psi) { bool changed = false; - std::regex re("Z(neg|pos)_(\\d+)_.*"); + thread_local std::regex re("Z(neg|pos)_(\\d+)_.*"); std::smatch match; // Now we need to find all reachable X --> Y, following vertices that are not ranked. mCRL2log(log::debug) << "X = " << X << ", psi = " << psi << std::endl; - std::set Ys; + std::unordered_set Ys; // If X is won by player alpha, i.e. in the winning set W. auto it = W.find(X); @@ -302,8 +303,8 @@ class pbesinst_lazy_algorithm // (the initial vertex is in W and every reachable one). Ys.insert(X); - std::set todo = { index }; - std::set done; + std::unordered_set todo = { index }; + std::unordered_set done; while (!todo.empty()) {