diff --git a/tket2-hseries/src/lazify_measure.rs b/tket2-hseries/src/lazify_measure.rs index e1e0c2f5..7a233ced 100644 --- a/tket2-hseries/src/lazify_measure.rs +++ b/tket2-hseries/src/lazify_measure.rs @@ -125,7 +125,10 @@ impl LazifyMeasureRewrite { Self::check_signature(node, QSystemOp::LazyMeasure, hugr.get_optype(node))?; let subgraph = SiblingSubgraph::from_node(node, &hugr); - let uses = hugr.linked_inputs(node, 0).collect_vec(); + // SimpleReplacement adds edges in a nondeterministic order. This + // results in linked_inputs returning items in a nondeterministic + // order. We sort them here to restore determinism. + let uses = hugr.linked_inputs(node, 0).sorted().collect_vec(); let (lazy_measure_node, replacement) = { let bool_uses = uses.len(); let mut builder = @@ -165,7 +168,8 @@ impl LazifyMeasureRewrite { Self::check_signature(node, QSystemOp::LazyMeasureReset, hugr.get_optype(node))?; let subgraph = SiblingSubgraph::from_node(node, &hugr); - let uses = hugr.linked_inputs(node, 1).collect_vec(); + // See comment in try_new_measure + let uses = hugr.linked_inputs(node, 1).sorted().collect_vec(); let (lazy_measure_reset_node, replacement) = { let bool_uses = uses.len(); let mut builder = {