diff --git a/docs/tket/api/BiMapHeaders_8hpp.html b/docs/tket/api/BiMapHeaders_8hpp.html
index 49d19049f8..8090dfd0ad 100644
--- a/docs/tket/api/BiMapHeaders_8hpp.html
+++ b/docs/tket/api/BiMapHeaders_8hpp.html
@@ -91,66 +91,66 @@
diff --git a/docs/tket/api/BiMapHeaders_8hpp__dep__incl.map b/docs/tket/api/BiMapHeaders_8hpp__dep__incl.map
index 0d076503f2..f04a8e7e1c 100644
--- a/docs/tket/api/BiMapHeaders_8hpp__dep__incl.map
+++ b/docs/tket/api/BiMapHeaders_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
diff --git a/docs/tket/api/BiMapHeaders_8hpp__dep__incl.md5 b/docs/tket/api/BiMapHeaders_8hpp__dep__incl.md5
index e970b2e88b..c073656ee6 100644
--- a/docs/tket/api/BiMapHeaders_8hpp__dep__incl.md5
+++ b/docs/tket/api/BiMapHeaders_8hpp__dep__incl.md5
@@ -1 +1 @@
-b7ba52148e02ba960b34838163f7717b
\ No newline at end of file
+11192d902f59bfca86b832e5a4463de1
\ No newline at end of file
diff --git a/docs/tket/api/BiMapHeaders_8hpp__dep__incl.png b/docs/tket/api/BiMapHeaders_8hpp__dep__incl.png
index 01267c67fd..fda255e20c 100644
Binary files a/docs/tket/api/BiMapHeaders_8hpp__dep__incl.png and b/docs/tket/api/BiMapHeaders_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/Boxes_8hpp.html b/docs/tket/api/Boxes_8hpp.html
index caa77ea20b..c8a483a6e9 100644
--- a/docs/tket/api/Boxes_8hpp.html
+++ b/docs/tket/api/Boxes_8hpp.html
@@ -155,66 +155,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Boxes_8hpp__dep__incl.map b/docs/tket/api/Boxes_8hpp__dep__incl.map
index 4fbeb9c4c9..9880894624 100644
--- a/docs/tket/api/Boxes_8hpp__dep__incl.map
+++ b/docs/tket/api/Boxes_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Boxes_8hpp__dep__incl.md5 b/docs/tket/api/Boxes_8hpp__dep__incl.md5
index b3374a7111..dc6f2fe476 100644
--- a/docs/tket/api/Boxes_8hpp__dep__incl.md5
+++ b/docs/tket/api/Boxes_8hpp__dep__incl.md5
@@ -1 +1 @@
-ccba539efc406b76ffbdadb59ea6027e
\ No newline at end of file
+7c1eb28e361d84d0bd96142ba077c28e
\ No newline at end of file
diff --git a/docs/tket/api/Boxes_8hpp__dep__incl.png b/docs/tket/api/Boxes_8hpp__dep__incl.png
index 719129b254..a5e37c7e6a 100644
Binary files a/docs/tket/api/Boxes_8hpp__dep__incl.png and b/docs/tket/api/Boxes_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/CircUtils_8cpp_source.html b/docs/tket/api/CircUtils_8cpp_source.html
index 9465f8435e..ba51f577e0 100644
--- a/docs/tket/api/CircUtils_8cpp_source.html
+++ b/docs/tket/api/CircUtils_8cpp_source.html
@@ -1513,7 +1513,7 @@
Circuit with_TK2(Gate_ptr op)
Express a gate as a circuit using TK2 as the only multi-qubit gate.
std::vector< Slice > SliceVec
bool is_unitary(const Eigen::MatrixXcd &U, double tol)
Test matrix for unitarity.
-bool is_projective_type(OpType optype)
Test for measurement and reset gates.
+bool is_projective_type(OpType optype)
Test for measurement and reset gates.
Eigen::Matrix2cd get_matrix_from_circ(const Circuit &circ)
Convert a one-qubit circuit of TK1 operations to its corresponding matrix.
Eigen::Matrix2cd get_matrix(const Circuit &circ, const Vertex &vert)
Convert a vertex holding a TK1 operation to its corresponding matrix.
std::tuple< Eigen::Matrix4cd, std::array< double, 3 >, Eigen::Matrix4cd > get_information_content(const Eigen::Matrix4cd &X)
Performs KAK decomposition.
@@ -1523,12 +1523,12 @@
std::vector< UnitID > unit_vector_t
double fmodn(double x, unsigned n)
Evaluate modulo n in the range [0,n)
-bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
+bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
boost::adjacency_list< boost::listS, boost::listS, boost::bidirectionalS, boost::property< boost::vertex_index_t, int, VertexProperties >, EdgeProperties > DAG
Graph representing a circuit, with operations as nodes.
bool is_box_type(OpType optype)
Test for boxes (complex packaged operations)
std::pair< Circuit, Complex > decompose_2cx_DV(const Eigen::Matrix4cd &U)
Decompose a unitary matrix into a 2-CXs preceding a diagonal operator.
std::vector< Qubit > qubit_vector_t
-bool is_controlled_gate_type(OpType optype)
Test for controlled gates.
+bool is_controlled_gate_type(OpType optype)
Test for controlled gates.
std::optional< double > eval_expr_mod(const Expr &e, unsigned n)
Evaluate an expression modulo n.
std::vector< Vertex > VertexVec
diff --git a/docs/tket/api/CircuitSimulator_8hpp.html b/docs/tket/api/CircuitSimulator_8hpp.html
index 9901578971..fad8cb05ff 100644
--- a/docs/tket/api/CircuitSimulator_8hpp.html
+++ b/docs/tket/api/CircuitSimulator_8hpp.html
@@ -126,66 +126,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/CircuitSimulator_8hpp__dep__incl.map b/docs/tket/api/CircuitSimulator_8hpp__dep__incl.map
index 7917265d03..d1f1d6232d 100644
--- a/docs/tket/api/CircuitSimulator_8hpp__dep__incl.map
+++ b/docs/tket/api/CircuitSimulator_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/CircuitSimulator_8hpp__dep__incl.md5 b/docs/tket/api/CircuitSimulator_8hpp__dep__incl.md5
index def7dd7db5..3d53586a63 100644
--- a/docs/tket/api/CircuitSimulator_8hpp__dep__incl.md5
+++ b/docs/tket/api/CircuitSimulator_8hpp__dep__incl.md5
@@ -1 +1 @@
-3bc81a158fbbf6450c6d44d744fbde9e
\ No newline at end of file
+fac3083fb436ef0c9a9601ac68029b8b
\ No newline at end of file
diff --git a/docs/tket/api/CircuitSimulator_8hpp__dep__incl.png b/docs/tket/api/CircuitSimulator_8hpp__dep__incl.png
index 4bedd19b97..ae336d16d7 100644
Binary files a/docs/tket/api/CircuitSimulator_8hpp__dep__incl.png and b/docs/tket/api/CircuitSimulator_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/Circuit_8hpp.html b/docs/tket/api/Circuit_8hpp.html
index bdb4e69258..61ba0d459e 100644
--- a/docs/tket/api/Circuit_8hpp.html
+++ b/docs/tket/api/Circuit_8hpp.html
@@ -180,66 +180,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Circuit_8hpp__dep__incl.map b/docs/tket/api/Circuit_8hpp__dep__incl.map
index 74bcdb0091..ba3b66bb8b 100644
--- a/docs/tket/api/Circuit_8hpp__dep__incl.map
+++ b/docs/tket/api/Circuit_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Circuit_8hpp__dep__incl.md5 b/docs/tket/api/Circuit_8hpp__dep__incl.md5
index 32162b8333..9d9325177f 100644
--- a/docs/tket/api/Circuit_8hpp__dep__incl.md5
+++ b/docs/tket/api/Circuit_8hpp__dep__incl.md5
@@ -1 +1 @@
-fd03c130bf09ff0208edeaf5d8018749
\ No newline at end of file
+447c4b6549e6ca77789389c5cf2333f6
\ No newline at end of file
diff --git a/docs/tket/api/Circuit_8hpp__dep__incl.png b/docs/tket/api/Circuit_8hpp__dep__incl.png
index a43dc6a66f..409b663553 100644
Binary files a/docs/tket/api/Circuit_8hpp__dep__incl.png and b/docs/tket/api/Circuit_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/ClassicalExpBox_8hpp.html b/docs/tket/api/ClassicalExpBox_8hpp.html
index 79854df4a7..65b1e76186 100644
--- a/docs/tket/api/ClassicalExpBox_8hpp.html
+++ b/docs/tket/api/ClassicalExpBox_8hpp.html
@@ -145,66 +145,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.map b/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.map
index b15ae4c5d6..89a86b534f 100644
--- a/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.map
+++ b/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.md5 b/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.md5
index b2a0293219..89cef0e196 100644
--- a/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.md5
+++ b/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.md5
@@ -1 +1 @@
-0c6d0fe74f8b4fc658d241feea505934
\ No newline at end of file
+647ff9b1d82e43d44a2c980b2096c574
\ No newline at end of file
diff --git a/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.png b/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.png
index ace4e0eeee..c561e8f6b3 100644
Binary files a/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.png and b/docs/tket/api/ClassicalExpBox_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/Command_8hpp.html b/docs/tket/api/Command_8hpp.html
index 1c03c0ba39..2321b3f2b8 100644
--- a/docs/tket/api/Command_8hpp.html
+++ b/docs/tket/api/Command_8hpp.html
@@ -153,66 +153,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Command_8hpp__dep__incl.map b/docs/tket/api/Command_8hpp__dep__incl.map
index f51e9e91de..1878dad828 100644
--- a/docs/tket/api/Command_8hpp__dep__incl.map
+++ b/docs/tket/api/Command_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Command_8hpp__dep__incl.md5 b/docs/tket/api/Command_8hpp__dep__incl.md5
index 2f8be2504b..2505facd02 100644
--- a/docs/tket/api/Command_8hpp__dep__incl.md5
+++ b/docs/tket/api/Command_8hpp__dep__incl.md5
@@ -1 +1 @@
-4e428e06ac56d586f2661a9c99e85b63
\ No newline at end of file
+63af5f70a376971f233b14f804a9b7ac
\ No newline at end of file
diff --git a/docs/tket/api/Command_8hpp__dep__incl.png b/docs/tket/api/Command_8hpp__dep__incl.png
index 664808fa7a..f6da40c4d7 100644
Binary files a/docs/tket/api/Command_8hpp__dep__incl.png and b/docs/tket/api/Command_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/Conditional_8hpp.html b/docs/tket/api/Conditional_8hpp.html
index 365ee7d07b..6e73bc45c9 100644
--- a/docs/tket/api/Conditional_8hpp.html
+++ b/docs/tket/api/Conditional_8hpp.html
@@ -136,66 +136,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Conditional_8hpp__dep__incl.map b/docs/tket/api/Conditional_8hpp__dep__incl.map
index 0576114d27..583d988115 100644
--- a/docs/tket/api/Conditional_8hpp__dep__incl.map
+++ b/docs/tket/api/Conditional_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Conditional_8hpp__dep__incl.md5 b/docs/tket/api/Conditional_8hpp__dep__incl.md5
index 59fbab9fa2..db3fea4725 100644
--- a/docs/tket/api/Conditional_8hpp__dep__incl.md5
+++ b/docs/tket/api/Conditional_8hpp__dep__incl.md5
@@ -1 +1 @@
-5b1a07bd54ce26955adf54b834599a7b
\ No newline at end of file
+78b9a7e718b7c45a36b35f98efb32a67
\ No newline at end of file
diff --git a/docs/tket/api/Conditional_8hpp__dep__incl.png b/docs/tket/api/Conditional_8hpp__dep__incl.png
index 32de9f9ac7..2350d541ca 100644
Binary files a/docs/tket/api/Conditional_8hpp__dep__incl.png and b/docs/tket/api/Conditional_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/ConjugationBox_8cpp.html b/docs/tket/api/ConjugationBox_8cpp.html
new file mode 100644
index 0000000000..fc0b5f2dc7
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8cpp.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+tket: src/Circuit/ConjugationBox.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/docs/tket/api/ConjugationBox_8cpp__incl.map b/docs/tket/api/ConjugationBox_8cpp__incl.map
new file mode 100644
index 0000000000..416a77f63e
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8cpp__incl.map
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/ConjugationBox_8cpp__incl.md5 b/docs/tket/api/ConjugationBox_8cpp__incl.md5
new file mode 100644
index 0000000000..d0c2159115
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8cpp__incl.md5
@@ -0,0 +1 @@
+6f4c618ba6f145c801dd7396f0e413bb
\ No newline at end of file
diff --git a/docs/tket/api/ConjugationBox_8cpp__incl.png b/docs/tket/api/ConjugationBox_8cpp__incl.png
new file mode 100644
index 0000000000..dcabf2d230
Binary files /dev/null and b/docs/tket/api/ConjugationBox_8cpp__incl.png differ
diff --git a/docs/tket/api/ConjugationBox_8cpp_source.html b/docs/tket/api/ConjugationBox_8cpp_source.html
new file mode 100644
index 0000000000..a65040112b
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8cpp_source.html
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+tket: src/Circuit/ConjugationBox.cpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
26 const std::optional<Op_ptr> uncompute)
+
+
+
+
30 uncompute_(uncompute) {
+
+
+
33 unsigned compute_size_ = compute_sig.size();
+
34 unsigned action_size_ = action_sig.size();
+
35 unsigned compute_n_qubits_ =
+
+
37 unsigned action_n_qubits_ =
+
+
39 unsigned uncompute_size_ = 0, uncompute_n_qubits_ = 0;
+
40 if (uncompute_ != std::nullopt) {
+
41 op_signature_t uncompute_sig = uncompute_.value()->get_signature();
+
42 uncompute_size_ = uncompute_sig.size();
+
43 uncompute_n_qubits_ = std::count(
+
+
+
46 if (compute_size_ != compute_n_qubits_ || action_size_ != action_n_qubits_ ||
+
47 uncompute_size_ != uncompute_n_qubits_) {
+
48 throw std::invalid_argument(
+
49 "ConjugationBox only supports quantum operations" );
+
+
51 if (compute_size_ != action_size_ ||
+
52 (uncompute_ != std::nullopt && uncompute_size_ != compute_size_)) {
+
53 throw std::invalid_argument(
+
54 "Operations provided to ConjugationBox need to have the same number of "
+
+
+
+
+
+
+
+
62 compute_(other.compute_),
+
63 action_(other.action_),
+
64 uncompute_(other.uncompute_) {}
+
+
+
67 return std::make_shared<ConjugationBox>(
+
68 compute_, action_->dagger(), uncompute_);
+
+
+
+
72 return std::make_shared<ConjugationBox>(
+
73 (uncompute_ == std::nullopt) ? compute_->dagger()->transpose()
+
74 : uncompute_.value()->transpose(),
+
75 action_->transpose(), compute_->transpose());
+
+
+
+
+
80 std::vector<unsigned> args(circ.
n_qubits ());
+
81 std::iota(args.begin(), args.end(), 0);
+
82 circ.
add_op <
unsigned >(compute_, args);
+
83 circ.
add_op <
unsigned >(action_, args);
+
84 if (uncompute_ != std::nullopt) {
+
85 circ.
add_op <
unsigned >(uncompute_.value(), args);
+
+
87 circ.
add_op <
unsigned >(compute_->dagger(), args);
+
+
89 circ_ = std::make_shared<Circuit>(circ);
+
+
+
+
+
+
+
+
97 return *compute_ == *other.compute_ && *action_ == *other.action_ &&
+
98 ((uncompute_ == std::nullopt && other.uncompute_ == std::nullopt) ||
+
99 (uncompute_ != std::nullopt && other.uncompute_ != std::nullopt &&
+
100 *uncompute_.value() == *other.uncompute_.value()) ||
+
101 (uncompute_ == std::nullopt && other.uncompute_ != std::nullopt &&
+
102 *compute_->dagger() == *other.uncompute_.value()) ||
+
103 (uncompute_ != std::nullopt && other.uncompute_ == std::nullopt &&
+
104 *uncompute_.value() == *other.compute_->dagger()));
+
+
+
+
+
+
110 j[
"compute" ] = box.get_compute();
+
111 j[
"action" ] = box.get_action();
+
+
113 j[
"uncompute" ] = nlohmann::json();
+
114 std::optional<Op_ptr> uncompute = box.get_uncompute();
+
115 if (uncompute != std::nullopt) {
+
116 j[
"uncompute" ] = uncompute.value();
+
+
+
+
+
+
122 std::optional<Op_ptr> uncompute = std::nullopt;
+
123 if (j.contains(
"uncompute" ) && !j.at(
"uncompute" ).is_null()) {
+
124 uncompute = j.at(
"uncompute" ).get<
Op_ptr >();
+
+
+
127 j.at(
"compute" ).get<
Op_ptr >(), j.at(
"action" ).get<
Op_ptr >(), uncompute);
+
+
+
130 boost::lexical_cast<boost::uuids::uuid>(j.at(
"id" ).get<std::string>()));
+
+
+
+
+
+
+
+
+
+
+
#define REGISTER_OPFACTORY(type, opclass)
When an OpType needs custom JSON conversion methods (as is the case for box types),...
+
Abstract class for an operation from which a circuit can be extracted.
+
friend Op_ptr set_box_id(BoxT &b, boost::uuids::uuid newid)
Set explicit ID on a box.
+
std::shared_ptr< Circuit > circ_
+
boost::uuids::uuid get_id() const
Unique identifier (preserved on copy)
+
op_signature_t signature_
+
+
+
unsigned n_qubits() const
+
Vertex add_op(const Op_ptr &op, const std::vector< ID > &args, std::optional< std::string > opgroup=std::nullopt)
Append an operation to the circuit.
+
Box to express computations that follow the compute-action-uncompute pattern.
+
bool is_equal(const Op &op_other) const override
Equality check between two ConjugationBox instances.
+
void generate_circuit() const override
+
Op_ptr dagger() const override
Inverse (of a unitary operation)
+
+
static Op_ptr from_json(const nlohmann::json &j)
+
static nlohmann::json to_json(const Op_ptr &op)
+
Op_ptr transpose() const override
Transpose of a unitary operation.
+
Abstract class representing an operation type.
+
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
+
OpType
Named operation types.
+
@ Quantum
A wire carrying quantum information, corresponding to some allocated Qubit.
+
std::shared_ptr< const Op > Op_ptr
+
std::vector< EdgeType > op_signature_t
+
nlohmann::json core_box_json(const Box &box)
+
+
+
+
+
diff --git a/docs/tket/api/ConjugationBox_8hpp.html b/docs/tket/api/ConjugationBox_8hpp.html
new file mode 100644
index 0000000000..69b0a2633c
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8hpp.html
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+tket: include/tket/Circuit/ConjugationBox.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include "Boxes.hpp "
+
#include "Circuit.hpp "
+
#include "tket/Utils/Json.hpp "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+
+
+
+
diff --git a/docs/tket/api/ConjugationBox_8hpp__dep__incl.map b/docs/tket/api/ConjugationBox_8hpp__dep__incl.map
new file mode 100644
index 0000000000..0e4af5104e
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8hpp__dep__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/tket/api/ConjugationBox_8hpp__dep__incl.md5 b/docs/tket/api/ConjugationBox_8hpp__dep__incl.md5
new file mode 100644
index 0000000000..cc501fdfee
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+f7aa93d8302859aa163945c1dd10a17c
\ No newline at end of file
diff --git a/docs/tket/api/ConjugationBox_8hpp__dep__incl.png b/docs/tket/api/ConjugationBox_8hpp__dep__incl.png
new file mode 100644
index 0000000000..f41f888dfe
Binary files /dev/null and b/docs/tket/api/ConjugationBox_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/ConjugationBox_8hpp__incl.map b/docs/tket/api/ConjugationBox_8hpp__incl.map
new file mode 100644
index 0000000000..01da28c3c7
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8hpp__incl.map
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/ConjugationBox_8hpp__incl.md5 b/docs/tket/api/ConjugationBox_8hpp__incl.md5
new file mode 100644
index 0000000000..f4ee46075c
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8hpp__incl.md5
@@ -0,0 +1 @@
+c7af94df912f77cba857c4188e7d5b40
\ No newline at end of file
diff --git a/docs/tket/api/ConjugationBox_8hpp__incl.png b/docs/tket/api/ConjugationBox_8hpp__incl.png
new file mode 100644
index 0000000000..498b08f060
Binary files /dev/null and b/docs/tket/api/ConjugationBox_8hpp__incl.png differ
diff --git a/docs/tket/api/ConjugationBox_8hpp_source.html b/docs/tket/api/ConjugationBox_8hpp_source.html
new file mode 100644
index 0000000000..f71a2ce85e
--- /dev/null
+++ b/docs/tket/api/ConjugationBox_8hpp_source.html
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+tket: include/tket/Circuit/ConjugationBox.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
40 const std::optional<Op_ptr> uncompute = std::nullopt);
+
+
+
+
+
+
49 const SymEngine::map_basic_basic &)
const override {
+
+
+
+
+
+
58 bool is_equal (
const Op &op_other)
const override ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
80 const std::optional<Op_ptr> uncompute_;
+
+
+
+
+
+
Abstract class for an operation from which a circuit can be extracted.
+
Box to express computations that follow the compute-action-uncompute pattern.
+
Op_ptr get_action() const
+
Op_ptr symbol_substitution(const SymEngine::map_basic_basic &) const override
Operation with values for symbols substituted.
+
bool is_equal(const Op &op_other) const override
Equality check between two ConjugationBox instances.
+
SymSet free_symbols() const override
Set of all free symbols occurring in operation parameters.
+
void generate_circuit() const override
+
Op_ptr get_compute() const
+
Op_ptr dagger() const override
Inverse (of a unitary operation)
+
~ConjugationBox() override
+
+
static Op_ptr from_json(const nlohmann::json &j)
+
static nlohmann::json to_json(const Op_ptr &op)
+
Op_ptr transpose() const override
Transpose of a unitary operation.
+
std::optional< Op_ptr > get_uncompute() const
+
Abstract class representing an operation type.
+
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
+
OpType
Named operation types.
+
std::shared_ptr< const Op > Op_ptr
+
std::set< Sym, SymCompareLess > SymSet
+
+
+
+
+
diff --git a/docs/tket/api/Constants_8hpp.html b/docs/tket/api/Constants_8hpp.html
index 2562a73cc0..533338e6ed 100644
--- a/docs/tket/api/Constants_8hpp.html
+++ b/docs/tket/api/Constants_8hpp.html
@@ -100,66 +100,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Constants_8hpp__dep__incl.map b/docs/tket/api/Constants_8hpp__dep__incl.map
index e35296eed0..11d594331b 100644
--- a/docs/tket/api/Constants_8hpp__dep__incl.map
+++ b/docs/tket/api/Constants_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Constants_8hpp__dep__incl.md5 b/docs/tket/api/Constants_8hpp__dep__incl.md5
index 25ddc6e3dc..5c3fdda75a 100644
--- a/docs/tket/api/Constants_8hpp__dep__incl.md5
+++ b/docs/tket/api/Constants_8hpp__dep__incl.md5
@@ -1 +1 @@
-675b08f5a8073231e2290f56cc04cdd5
\ No newline at end of file
+795f9c3aa28b5a1aace6395a3aea951c
\ No newline at end of file
diff --git a/docs/tket/api/Constants_8hpp__dep__incl.png b/docs/tket/api/Constants_8hpp__dep__incl.png
index 198eca38ea..395354ee4a 100644
Binary files a/docs/tket/api/Constants_8hpp__dep__incl.png and b/docs/tket/api/Constants_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/ControlledGates_8cpp_source.html b/docs/tket/api/ControlledGates_8cpp_source.html
index b78d96c069..71999c4bbf 100644
--- a/docs/tket/api/ControlledGates_8cpp_source.html
+++ b/docs/tket/api/ControlledGates_8cpp_source.html
@@ -1205,7 +1205,7 @@
bool is_unitary(const Eigen::MatrixXcd &U, double tol)
Test matrix for unitarity.
std::map< UnitID, UnitID > unit_map_t
GrayCode gen_graycode(unsigned m_controls)
Construct a GrayCode over n bits.
-bool is_multi_qubit_type(OpType optype)
Test for gates over more than one qubit.
+bool is_multi_qubit_type(OpType optype)
Test for gates over more than one qubit.
std::optional< double > eval_expr_mod(const Expr &e, unsigned n)
Evaluate an expression modulo n.
std::vector< Vertex > VertexVec
diff --git a/docs/tket/api/DAGDefs_8hpp.html b/docs/tket/api/DAGDefs_8hpp.html
index 2ccdad18d7..428c38f642 100644
--- a/docs/tket/api/DAGDefs_8hpp.html
+++ b/docs/tket/api/DAGDefs_8hpp.html
@@ -157,66 +157,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/DAGDefs_8hpp__dep__incl.map b/docs/tket/api/DAGDefs_8hpp__dep__incl.map
index b40bcd5cd6..4c22b326df 100644
--- a/docs/tket/api/DAGDefs_8hpp__dep__incl.map
+++ b/docs/tket/api/DAGDefs_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/DAGDefs_8hpp__dep__incl.md5 b/docs/tket/api/DAGDefs_8hpp__dep__incl.md5
index 60db6d9f77..f130fd3202 100644
--- a/docs/tket/api/DAGDefs_8hpp__dep__incl.md5
+++ b/docs/tket/api/DAGDefs_8hpp__dep__incl.md5
@@ -1 +1 @@
-7b94043a2f41cf9fc4777123ad1f69f2
\ No newline at end of file
+d7cc466b40ff3f275a1c2e93da0a7dc7
\ No newline at end of file
diff --git a/docs/tket/api/DAGDefs_8hpp__dep__incl.png b/docs/tket/api/DAGDefs_8hpp__dep__incl.png
index e3a7879a7f..70149b04c6 100644
Binary files a/docs/tket/api/DAGDefs_8hpp__dep__incl.png and b/docs/tket/api/DAGDefs_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/DecomposeCircuit_8cpp_source.html b/docs/tket/api/DecomposeCircuit_8cpp_source.html
index 9170656aec..6fcdfa4947 100644
--- a/docs/tket/api/DecomposeCircuit_8cpp_source.html
+++ b/docs/tket/api/DecomposeCircuit_8cpp_source.html
@@ -267,11 +267,11 @@
@ Barrier
No-op that must be preserved by compilation.
@ Conditional
See Conditional.
-bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
+bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
std::vector< TripletCd > get_triplets(const SparseMatrixXcd &matr, double abs_epsilon)
abs_epsilon is used to decide if a near-zero entry should be set to zero exactly.
std::optional< double > eval_expr(const Expr &e)
std::shared_ptr< const Op > Op_ptr
-bool is_projective_type(OpType optype)
Test for measurement and reset gates.
+bool is_projective_type(OpType optype)
Test for measurement and reset gates.
std::vector< UnitID > unit_vector_t
diff --git a/docs/tket/api/Decomposition_8cpp_source.html b/docs/tket/api/Decomposition_8cpp_source.html
index 069d8876cb..a7e279de41 100644
--- a/docs/tket/api/Decomposition_8cpp_source.html
+++ b/docs/tket/api/Decomposition_8cpp_source.html
@@ -2177,7 +2177,7 @@
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
-bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
+bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
boost::graph_traits< DAG >::vertex_descriptor Vertex
Gate_ptr as_gate_ptr(Op_ptr op)
Cast a general Op (of gate type) to a Gate.
OpType
Named operation types.
@@ -2218,12 +2218,12 @@
std::shared_ptr< const Op > Op_ptr
std::vector< Edge > EdgeVec
double trace_fidelity(double a, double b, double c)
Similarity measure of TK2(a, b, c) to SU(4) identity.
-bool is_projective_type(OpType optype)
Test for measurement and reset gates.
+bool is_projective_type(OpType optype)
Test for measurement and reset gates.
constexpr double EPS
Default tolerance for floating-point comparisons.
std::map< UnitID, UnitID > unit_map_t
Circuit TK2_circ_from_multiq(const Op_ptr op)
Replace a multi-qubit operation with an equivalent circuit using TK2 gates.
-bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
+bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
boost::adjacency_list< boost::listS, boost::listS, boost::bidirectionalS, boost::property< boost::vertex_index_t, int, VertexProperties >, EdgeProperties > DAG
Graph representing a circuit, with operations as nodes.
bool equiv_expr(const Expr &e0, const Expr &e1, unsigned n, double tol)
Test approximate equality of expressions modulo n.
std::vector< Qubit > qubit_vector_t
diff --git a/docs/tket/api/EdgeType_8hpp.html b/docs/tket/api/EdgeType_8hpp.html
index 10e02c7a57..3e414f8b11 100644
--- a/docs/tket/api/EdgeType_8hpp.html
+++ b/docs/tket/api/EdgeType_8hpp.html
@@ -105,11 +105,11 @@
-
-
+
+
-
+
@@ -117,51 +117,51 @@
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/EdgeType_8hpp__dep__incl.map b/docs/tket/api/EdgeType_8hpp__dep__incl.map
index 8e18f5d7e3..f2594c45bd 100644
--- a/docs/tket/api/EdgeType_8hpp__dep__incl.map
+++ b/docs/tket/api/EdgeType_8hpp__dep__incl.map
@@ -2,11 +2,11 @@
-
-
+
+
-
+
@@ -14,49 +14,49 @@
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/EdgeType_8hpp__dep__incl.md5 b/docs/tket/api/EdgeType_8hpp__dep__incl.md5
index e35ac0f5e8..5669e6774b 100644
--- a/docs/tket/api/EdgeType_8hpp__dep__incl.md5
+++ b/docs/tket/api/EdgeType_8hpp__dep__incl.md5
@@ -1 +1 @@
-9349d0a5d171a32deea6a2bc67583cb7
\ No newline at end of file
+2352d523f29e0c4cfc38638f6bd2247c
\ No newline at end of file
diff --git a/docs/tket/api/EdgeType_8hpp__dep__incl.png b/docs/tket/api/EdgeType_8hpp__dep__incl.png
index c5e1508b08..c946907819 100644
Binary files a/docs/tket/api/EdgeType_8hpp__dep__incl.png and b/docs/tket/api/EdgeType_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/EigenConfig_8hpp.html b/docs/tket/api/EigenConfig_8hpp.html
index b1f21ef6e2..48bcaeaa81 100644
--- a/docs/tket/api/EigenConfig_8hpp.html
+++ b/docs/tket/api/EigenConfig_8hpp.html
@@ -109,66 +109,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/EigenConfig_8hpp__dep__incl.map b/docs/tket/api/EigenConfig_8hpp__dep__incl.map
index 30d1b3ab7d..7c06683684 100644
--- a/docs/tket/api/EigenConfig_8hpp__dep__incl.map
+++ b/docs/tket/api/EigenConfig_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/EigenConfig_8hpp__dep__incl.md5 b/docs/tket/api/EigenConfig_8hpp__dep__incl.md5
index feb81728b1..f8e2d55ecf 100644
--- a/docs/tket/api/EigenConfig_8hpp__dep__incl.md5
+++ b/docs/tket/api/EigenConfig_8hpp__dep__incl.md5
@@ -1 +1 @@
-aa0e3b444306f39e4fd55cf4c83a651b
\ No newline at end of file
+5c7be99acb906bd34d8832f60384e2cc
\ No newline at end of file
diff --git a/docs/tket/api/EigenConfig_8hpp__dep__incl.png b/docs/tket/api/EigenConfig_8hpp__dep__incl.png
index a37994a47c..54eb9ceb14 100644
Binary files a/docs/tket/api/EigenConfig_8hpp__dep__incl.png and b/docs/tket/api/EigenConfig_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/Expression_8hpp__dep__incl.md5 b/docs/tket/api/Expression_8hpp__dep__incl.md5
index b276c2eae1..7eb47cd1d1 100644
--- a/docs/tket/api/Expression_8hpp__dep__incl.md5
+++ b/docs/tket/api/Expression_8hpp__dep__incl.md5
@@ -1 +1 @@
-6297b5e2a6353c87b8dabb8e673cb8d6
\ No newline at end of file
+f342eeff545217924e7549126e33010a
\ No newline at end of file
diff --git a/docs/tket/api/FlowOp_8cpp_source.html b/docs/tket/api/FlowOp_8cpp_source.html
index eb37b54023..d0603fb376 100644
--- a/docs/tket/api/FlowOp_8cpp_source.html
+++ b/docs/tket/api/FlowOp_8cpp_source.html
@@ -166,7 +166,7 @@
OpType
Named operation types.
@ Stop
Execution halts and the program terminates.
std::shared_ptr< const Op > Op_ptr
-bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
+bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
std::set< Sym, SymCompareLess > SymSet
std::vector< EdgeType > op_signature_t
diff --git a/docs/tket/api/Gate_8cpp_source.html b/docs/tket/api/Gate_8cpp_source.html
index 5fe63d9537..badeeb5b47 100644
--- a/docs/tket/api/Gate_8cpp_source.html
+++ b/docs/tket/api/Gate_8cpp_source.html
@@ -1145,7 +1145,7 @@
SymEngine::Expression Expr
Representation of a phase as a multiple of .
std::optional< double > eval_expr(const Expr &e)
std::shared_ptr< const Op > Op_ptr
-bool is_clifford_type(OpType optype)
Test for Clifford operations.
+bool is_clifford_type(OpType optype)
Test for Clifford operations.
constexpr double EPS
Default tolerance for floating-point comparisons.
Expr minus_times(const Expr &e)
Return -e.
std::vector< UnitID > unit_vector_t
diff --git a/docs/tket/api/GraphHeaders_8hpp.html b/docs/tket/api/GraphHeaders_8hpp.html
index 8121dc7519..bf924622e1 100644
--- a/docs/tket/api/GraphHeaders_8hpp.html
+++ b/docs/tket/api/GraphHeaders_8hpp.html
@@ -103,66 +103,66 @@
diff --git a/docs/tket/api/GraphHeaders_8hpp__dep__incl.map b/docs/tket/api/GraphHeaders_8hpp__dep__incl.map
index 4ea400b92a..52ac65bc27 100644
--- a/docs/tket/api/GraphHeaders_8hpp__dep__incl.map
+++ b/docs/tket/api/GraphHeaders_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
diff --git a/docs/tket/api/GraphHeaders_8hpp__dep__incl.md5 b/docs/tket/api/GraphHeaders_8hpp__dep__incl.md5
index 828c292d47..4bcb8bb95e 100644
--- a/docs/tket/api/GraphHeaders_8hpp__dep__incl.md5
+++ b/docs/tket/api/GraphHeaders_8hpp__dep__incl.md5
@@ -1 +1 @@
-218f717e9ee013c66a8e60ff4e554c99
\ No newline at end of file
+12d96d58e5fbc37e057470353c2ec5be
\ No newline at end of file
diff --git a/docs/tket/api/GraphHeaders_8hpp__dep__incl.png b/docs/tket/api/GraphHeaders_8hpp__dep__incl.png
index e06a2ce6e4..e8371f19ed 100644
Binary files a/docs/tket/api/GraphHeaders_8hpp__dep__incl.png and b/docs/tket/api/GraphHeaders_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/HelperFunctions_8hpp.html b/docs/tket/api/HelperFunctions_8hpp.html
index 6e9e5c4e07..83b74b8755 100644
--- a/docs/tket/api/HelperFunctions_8hpp.html
+++ b/docs/tket/api/HelperFunctions_8hpp.html
@@ -103,43 +103,44 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/HelperFunctions_8hpp__dep__incl.map b/docs/tket/api/HelperFunctions_8hpp__dep__incl.map
index 3591834be3..42aa3baa5b 100644
--- a/docs/tket/api/HelperFunctions_8hpp__dep__incl.map
+++ b/docs/tket/api/HelperFunctions_8hpp__dep__incl.map
@@ -1,39 +1,40 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/HelperFunctions_8hpp__dep__incl.md5 b/docs/tket/api/HelperFunctions_8hpp__dep__incl.md5
index fa0523e90c..d0c5330a6f 100644
--- a/docs/tket/api/HelperFunctions_8hpp__dep__incl.md5
+++ b/docs/tket/api/HelperFunctions_8hpp__dep__incl.md5
@@ -1 +1 @@
-4450d98a61f7ad31b6851ee679cec633
\ No newline at end of file
+1ae496ad42372cb8c61034a7cebb7329
\ No newline at end of file
diff --git a/docs/tket/api/HelperFunctions_8hpp__dep__incl.png b/docs/tket/api/HelperFunctions_8hpp__dep__incl.png
index c64864ceff..c4f7f2c3cc 100644
Binary files a/docs/tket/api/HelperFunctions_8hpp__dep__incl.png and b/docs/tket/api/HelperFunctions_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/Json_8hpp.html b/docs/tket/api/Json_8hpp.html
index 8b4f290d1d..faa7355bf6 100644
--- a/docs/tket/api/Json_8hpp.html
+++ b/docs/tket/api/Json_8hpp.html
@@ -102,66 +102,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Json_8hpp__dep__incl.map b/docs/tket/api/Json_8hpp__dep__incl.map
index 3a7e383082..1c488388db 100644
--- a/docs/tket/api/Json_8hpp__dep__incl.map
+++ b/docs/tket/api/Json_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Json_8hpp__dep__incl.md5 b/docs/tket/api/Json_8hpp__dep__incl.md5
index 0a7251d8ff..429057d81c 100644
--- a/docs/tket/api/Json_8hpp__dep__incl.md5
+++ b/docs/tket/api/Json_8hpp__dep__incl.md5
@@ -1 +1 @@
-5a64827fb75ed4cc430410bfc45df481
\ No newline at end of file
+36afd7be064566e80457bf742f0707ae
\ No newline at end of file
diff --git a/docs/tket/api/Json_8hpp__dep__incl.png b/docs/tket/api/Json_8hpp__dep__incl.png
index eedc5771e8..4d98c290c2 100644
Binary files a/docs/tket/api/Json_8hpp__dep__incl.png and b/docs/tket/api/Json_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/MatrixAnalysis_8hpp.html b/docs/tket/api/MatrixAnalysis_8hpp.html
index 76cb5c880f..4461387636 100644
--- a/docs/tket/api/MatrixAnalysis_8hpp.html
+++ b/docs/tket/api/MatrixAnalysis_8hpp.html
@@ -130,41 +130,41 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -173,23 +173,23 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.map b/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.map
index 6d4c9fc5b8..3c4ef2b6cc 100644
--- a/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.map
+++ b/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.map
@@ -1,39 +1,39 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -42,21 +42,21 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.md5 b/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.md5
index 0d69fb23f8..a0b15daa8c 100644
--- a/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.md5
+++ b/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.md5
@@ -1 +1 @@
-d1ac10329a5bb48806994ea5edf8cd2d
\ No newline at end of file
+ed94dcd3c8ef1d826615c33d154c0ff5
\ No newline at end of file
diff --git a/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.png b/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.png
index 2210415529..650c478e9f 100644
Binary files a/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.png and b/docs/tket/api/MatrixAnalysis_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/Multiplexor_8cpp_source.html b/docs/tket/api/Multiplexor_8cpp_source.html
index f1a4f67048..016c83da5b 100644
--- a/docs/tket/api/Multiplexor_8cpp_source.html
+++ b/docs/tket/api/Multiplexor_8cpp_source.html
@@ -982,7 +982,7 @@
Abstract class representing an operation type.
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
-bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
+bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
Gate_ptr as_gate_ptr(Op_ptr op)
Cast a general Op (of gate type) to a Gate.
OpType
Named operation types.
@ QControlBox
See QControlBox.
diff --git a/docs/tket/api/OpDesc_8cpp_source.html b/docs/tket/api/OpDesc_8cpp_source.html
index 92c02ad267..7e03b202cf 100644
--- a/docs/tket/api/OpDesc_8cpp_source.html
+++ b/docs/tket/api/OpDesc_8cpp_source.html
@@ -202,18 +202,18 @@
std::string latex() const
Name in Latex representation.
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
bool is_metaop_type(OpType optype)
Test for initial, final and barrier "ops".
-bool is_rotation_type(OpType optype)
Test for rotations (including controlled rotations)
+bool is_rotation_type(OpType optype)
Test for rotations (including controlled rotations)
OpType
Named operation types.
-bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
+bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
const OptUInt any
Unspecified unsigned integer.
@ Quantum
A wire carrying quantum information, corresponding to some allocated Qubit.
@ Classical
A wire carrying classical information, corresponding to some allocated Bit.
@ Boolean
A wire carrying a bit of classical information from a classical output port of one op to a classical ...
bool is_gate_type(OpType optype)
Test for elementary gates.
-bool is_parameterised_pauli_rotation_type(OpType optype)
Test for rotations around Pauli axes.
-bool is_clifford_type(OpType optype)
Test for Clifford operations.
-bool is_oneway_type(OpType optype)
Test for non-invertible operations.
-bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
+bool is_parameterised_pauli_rotation_type(OpType optype)
Test for rotations around Pauli axes.
+bool is_clifford_type(OpType optype)
Test for Clifford operations.
+bool is_oneway_type(OpType optype)
Test for non-invertible operations.
+bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
bool is_box_type(OpType optype)
Test for boxes (complex packaged operations)
std::optional< unsigned > OptUInt
Optional unsigned integer.
const std::map< OpType, OpTypeInfo > & optypeinfo()
Information including name and shape of each operation type.
diff --git a/docs/tket/api/OpDesc_8hpp.html b/docs/tket/api/OpDesc_8hpp.html
index 1bc72d6d90..1b8e22f123 100644
--- a/docs/tket/api/OpDesc_8hpp.html
+++ b/docs/tket/api/OpDesc_8hpp.html
@@ -109,66 +109,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpDesc_8hpp__dep__incl.map b/docs/tket/api/OpDesc_8hpp__dep__incl.map
index fa585d6dc2..b6d37d0924 100644
--- a/docs/tket/api/OpDesc_8hpp__dep__incl.map
+++ b/docs/tket/api/OpDesc_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpDesc_8hpp__dep__incl.md5 b/docs/tket/api/OpDesc_8hpp__dep__incl.md5
index cc1f9f9672..63ce3ff8d0 100644
--- a/docs/tket/api/OpDesc_8hpp__dep__incl.md5
+++ b/docs/tket/api/OpDesc_8hpp__dep__incl.md5
@@ -1 +1 @@
-a8943cfa5b5e437e00746c31b309dad1
\ No newline at end of file
+d5a7e2bac41f1ebe41f3f54c81a82cfc
\ No newline at end of file
diff --git a/docs/tket/api/OpDesc_8hpp__dep__incl.png b/docs/tket/api/OpDesc_8hpp__dep__incl.png
index 448dbbdcbc..2bd1f3e8ee 100644
Binary files a/docs/tket/api/OpDesc_8hpp__dep__incl.png and b/docs/tket/api/OpDesc_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/OpJsonFactory_8hpp.html b/docs/tket/api/OpJsonFactory_8hpp.html
index 8854a30bf0..fb6a51c731 100644
--- a/docs/tket/api/OpJsonFactory_8hpp.html
+++ b/docs/tket/api/OpJsonFactory_8hpp.html
@@ -104,16 +104,17 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpJsonFactory_8hpp__dep__incl.map b/docs/tket/api/OpJsonFactory_8hpp__dep__incl.map
index 70bc514d39..040d0999c5 100644
--- a/docs/tket/api/OpJsonFactory_8hpp__dep__incl.map
+++ b/docs/tket/api/OpJsonFactory_8hpp__dep__incl.map
@@ -1,12 +1,13 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpJsonFactory_8hpp__dep__incl.md5 b/docs/tket/api/OpJsonFactory_8hpp__dep__incl.md5
index e08ae60f18..20ac93acf7 100644
--- a/docs/tket/api/OpJsonFactory_8hpp__dep__incl.md5
+++ b/docs/tket/api/OpJsonFactory_8hpp__dep__incl.md5
@@ -1 +1 @@
-adc81f26224fb14eccfdc1f8225b7739
\ No newline at end of file
+3945274ad7d771ba7ec2d65a7d4c0613
\ No newline at end of file
diff --git a/docs/tket/api/OpJsonFactory_8hpp__dep__incl.png b/docs/tket/api/OpJsonFactory_8hpp__dep__incl.png
index 65922c0f15..cdb7484b77 100644
Binary files a/docs/tket/api/OpJsonFactory_8hpp__dep__incl.png and b/docs/tket/api/OpJsonFactory_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/OpJson_8cpp_source.html b/docs/tket/api/OpJson_8cpp_source.html
index a2846f6d89..bb091cca57 100644
--- a/docs/tket/api/OpJson_8cpp_source.html
+++ b/docs/tket/api/OpJson_8cpp_source.html
@@ -145,7 +145,7 @@
OpType
Named operation types.
@ Conditional
See Conditional.
@ WASM
Op containing a classical wasm function call.
-bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
+bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
bool is_gate_type(OpType optype)
Test for elementary gates.
std::shared_ptr< const Op > Op_ptr
void from_json(const nlohmann::json &j, Architecture::Connection &link)
diff --git a/docs/tket/api/OpPtrFunctions_8hpp.html b/docs/tket/api/OpPtrFunctions_8hpp.html
index da89840de7..693647ae10 100644
--- a/docs/tket/api/OpPtrFunctions_8hpp.html
+++ b/docs/tket/api/OpPtrFunctions_8hpp.html
@@ -114,66 +114,66 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.map b/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.map
index 4b218e3ce5..de47c18219 100644
--- a/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.map
+++ b/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.md5 b/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.md5
index dd8be56966..8f9b5f50ce 100644
--- a/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.md5
+++ b/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.md5
@@ -1 +1 @@
-5b9a4ff13198057aaec24c20e00b9e1a
\ No newline at end of file
+9dbb9b5f33916cfa80be24e51628adf9
\ No newline at end of file
diff --git a/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.png b/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.png
index f543ef6eb7..06508a55f4 100644
Binary files a/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.png and b/docs/tket/api/OpPtrFunctions_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/OpPtr_8hpp.html b/docs/tket/api/OpPtr_8hpp.html
index bc85a1a70f..b0eb8d210f 100644
--- a/docs/tket/api/OpPtr_8hpp.html
+++ b/docs/tket/api/OpPtr_8hpp.html
@@ -100,66 +100,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpPtr_8hpp__dep__incl.map b/docs/tket/api/OpPtr_8hpp__dep__incl.map
index ed5cf22675..8be3a2439e 100644
--- a/docs/tket/api/OpPtr_8hpp__dep__incl.map
+++ b/docs/tket/api/OpPtr_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpPtr_8hpp__dep__incl.md5 b/docs/tket/api/OpPtr_8hpp__dep__incl.md5
index d93f4a7112..0a5d600fb8 100644
--- a/docs/tket/api/OpPtr_8hpp__dep__incl.md5
+++ b/docs/tket/api/OpPtr_8hpp__dep__incl.md5
@@ -1 +1 @@
-3be0f2474680505874f0028219c42148
\ No newline at end of file
+e14219baf5699e905244e7c2a06595cc
\ No newline at end of file
diff --git a/docs/tket/api/OpPtr_8hpp__dep__incl.png b/docs/tket/api/OpPtr_8hpp__dep__incl.png
index b4c2430be5..76e884b5b7 100644
Binary files a/docs/tket/api/OpPtr_8hpp__dep__incl.png and b/docs/tket/api/OpPtr_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/OpTypeFunctions_8cpp_source.html b/docs/tket/api/OpTypeFunctions_8cpp_source.html
index 0d59e08f28..30d08a56d7 100644
--- a/docs/tket/api/OpTypeFunctions_8cpp_source.html
+++ b/docs/tket/api/OpTypeFunctions_8cpp_source.html
@@ -259,89 +259,90 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 199 static const OpTypeSet rotation_gates = {
-
-
-
-
-
-
-
-
- 208 static const OpTypeSet parameterised_pauli_rotations = {
-
- 210 return find_in_set (optype, parameterised_pauli_rotations);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 230 static const OpTypeSet no_defined_inverse = {
-
-
-
-
-
-
-
-
- 239 static const OpTypeSet clifford_gates = {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 200 static const OpTypeSet rotation_gates = {
+
+
+
+
+
+
+
+
+ 209 static const OpTypeSet parameterised_pauli_rotations = {
+
+ 211 return find_in_set (optype, parameterised_pauli_rotations);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 231 static const OpTypeSet no_defined_inverse = {
+
+
+
+
+
+
+
+
+ 240 static const OpTypeSet clifford_gates = {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
-bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
+bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
bool is_metaop_type(OpType optype)
Test for initial, final and barrier "ops".
-bool is_rotation_type(OpType optype)
Test for rotations (including controlled rotations)
+bool is_rotation_type(OpType optype)
Test for rotations (including controlled rotations)
OpType
Named operation types.
@ ToffoliBox
See ToffoliBox.
@@ -352,6 +353,7 @@
@ CRz
Controlled OpType::Rz.
@ MultiBit
A classical operation applied to multiple bits simultaneously.
@ CH
Controlled OpType::H.
+@ ConjugationBox
See ConjugationBox.
@ PhasePolyBox
See PhasePolyBox.
@ Output
Quantum output node of the circuit.
@ NPhasedX
PhasedX gates on multiple qubits.
@@ -446,31 +448,31 @@
@ PauliExpPairBox
See PauliExpPairBox.
@ Unitary3qBox
See Unitary3qBox.
std::unordered_set< OpType > OpTypeSet
Set of operation types.
-bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
+bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
bool is_initial_q_type(OpType optype)
Test for input or creation quantum "ops".
bool is_gate_type(OpType optype)
Test for elementary gates.
-bool is_parameterised_pauli_rotation_type(OpType optype)
Test for rotations around Pauli axes.
+bool is_parameterised_pauli_rotation_type(OpType optype)
Test for rotations around Pauli axes.
bool is_boundary_w_type(OpType optype)
Test for input or output for wasm "ops".
const OpTypeSet & all_projective_types()
Set of all measurement and reset gates.
const OpTypeSet & all_gate_types()
Set of all elementary gates.
-bool is_clifford_type(OpType optype)
Test for Clifford operations.
+bool is_clifford_type(OpType optype)
Test for Clifford operations.
bool is_boundary_type(OpType optype)
Test for input, creation, output or discard "ops".
-bool is_oneway_type(OpType optype)
Test for non-invertible operations.
+bool is_oneway_type(OpType optype)
Test for non-invertible operations.
const OpTypeSet & all_classical_types()
Set of all classical gates.
-bool is_projective_type(OpType optype)
Test for measurement and reset gates.
-bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
+bool is_projective_type(OpType optype)
Test for measurement and reset gates.
+bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
bool find_in_set(const OpType &val, const OpTypeSet &set)
Whether a given operation type belongs to a given set.
-bool is_multi_qubit_type(OpType optype)
Test for gates over more than one qubit.
-bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
+bool is_multi_qubit_type(OpType optype)
Test for gates over more than one qubit.
+bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
bool is_box_type(OpType optype)
Test for boxes (complex packaged operations)
const OpTypeSet & all_controlled_gate_types()
Set of all controlled gates.
bool is_boundary_q_type(OpType optype)
Test for input, creation, output or discard quantum "ops".
const OpTypeSet & all_multi_qubit_types()
Set of all gates over more than one qubit.
const OpTypeSet & all_single_qubit_types()
Set of all gates over a single qubit.
-bool is_controlled_gate_type(OpType optype)
Test for controlled gates.
+bool is_controlled_gate_type(OpType optype)
Test for controlled gates.
bool is_final_q_type(OpType optype)
Test for output or discard quantum "ops".
bool is_boundary_c_type(OpType optype)
Test for input or output for classical "ops".
const OpTypeSet & all_single_qubit_unitary_types()
Set of all single-qubit gates that can be expressed as TK1.
diff --git a/docs/tket/api/OpTypeFunctions_8hpp.html b/docs/tket/api/OpTypeFunctions_8hpp.html
index 65024bc784..53f04fd50b 100644
--- a/docs/tket/api/OpTypeFunctions_8hpp.html
+++ b/docs/tket/api/OpTypeFunctions_8hpp.html
@@ -104,66 +104,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.map b/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.map
index dbb1d53550..28f05877fc 100644
--- a/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.map
+++ b/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.md5 b/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.md5
index d7439a0372..a33ede74b3 100644
--- a/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.md5
+++ b/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.md5
@@ -1 +1 @@
-dcd236f6fce733307fba87460b63561d
\ No newline at end of file
+bba2a2a51bf784a72441b4b046dc3024
\ No newline at end of file
diff --git a/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.png b/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.png
index cac69d634e..8bc153fd0b 100644
Binary files a/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.png and b/docs/tket/api/OpTypeFunctions_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/OpTypeFunctions_8hpp_source.html b/docs/tket/api/OpTypeFunctions_8hpp_source.html
index dc55a21b39..4a0bcaddde 100644
--- a/docs/tket/api/OpTypeFunctions_8hpp_source.html
+++ b/docs/tket/api/OpTypeFunctions_8hpp_source.html
@@ -163,33 +163,33 @@
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
std::vector< OpType > OpTypeVector
Vector of operation types.
-bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
+bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
bool is_metaop_type(OpType optype)
Test for initial, final and barrier "ops".
-bool is_rotation_type(OpType optype)
Test for rotations (including controlled rotations)
+bool is_rotation_type(OpType optype)
Test for rotations (including controlled rotations)
OpType
Named operation types.
std::unordered_set< OpType > OpTypeSet
Set of operation types.
-bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
+bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
bool is_initial_q_type(OpType optype)
Test for input or creation quantum "ops".
bool is_gate_type(OpType optype)
Test for elementary gates.
-bool is_parameterised_pauli_rotation_type(OpType optype)
Test for rotations around Pauli axes.
+bool is_parameterised_pauli_rotation_type(OpType optype)
Test for rotations around Pauli axes.
bool is_boundary_w_type(OpType optype)
Test for input or output for wasm "ops".
const OpTypeSet & all_projective_types()
Set of all measurement and reset gates.
const OpTypeSet & all_gate_types()
Set of all elementary gates.
-bool is_clifford_type(OpType optype)
Test for Clifford operations.
+bool is_clifford_type(OpType optype)
Test for Clifford operations.
bool is_boundary_type(OpType optype)
Test for input, creation, output or discard "ops".
-bool is_oneway_type(OpType optype)
Test for non-invertible operations.
+bool is_oneway_type(OpType optype)
Test for non-invertible operations.
const OpTypeSet & all_classical_types()
Set of all classical gates.
-bool is_projective_type(OpType optype)
Test for measurement and reset gates.
-bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
+bool is_projective_type(OpType optype)
Test for measurement and reset gates.
+bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
bool find_in_set(const OpType &val, const OpTypeSet &set)
Whether a given operation type belongs to a given set.
-bool is_multi_qubit_type(OpType optype)
Test for gates over more than one qubit.
-bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
+bool is_multi_qubit_type(OpType optype)
Test for gates over more than one qubit.
+bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
bool is_box_type(OpType optype)
Test for boxes (complex packaged operations)
const OpTypeSet & all_controlled_gate_types()
Set of all controlled gates.
bool is_boundary_q_type(OpType optype)
Test for input, creation, output or discard quantum "ops".
const OpTypeSet & all_multi_qubit_types()
Set of all gates over more than one qubit.
const OpTypeSet & all_single_qubit_types()
Set of all gates over a single qubit.
-bool is_controlled_gate_type(OpType optype)
Test for controlled gates.
+bool is_controlled_gate_type(OpType optype)
Test for controlled gates.
bool is_final_q_type(OpType optype)
Test for output or discard quantum "ops".
bool is_boundary_c_type(OpType optype)
Test for input or output for classical "ops".
const OpTypeSet & all_single_qubit_unitary_types()
Set of all single-qubit gates that can be expressed as TK1.
diff --git a/docs/tket/api/OpTypeInfo_8cpp_source.html b/docs/tket/api/OpTypeInfo_8cpp_source.html
index c3229950ac..0dd7a2af76 100644
--- a/docs/tket/api/OpTypeInfo_8cpp_source.html
+++ b/docs/tket/api/OpTypeInfo_8cpp_source.html
@@ -225,34 +225,36 @@
148 {
"StatePreparationBox" ,
"StatePreparationBox" , {}, std::nullopt}},
-
-
- 152 {
"ProjectorAssertionBox" ,
"ProjectorAssertionBox" , {}, std::nullopt}},
-
- 154 {
"StabiliserAssertionBox" ,
"StabiliserAssertionBox" , {}, std::nullopt}},
-
-
- 157 {
"ClassicalTransform" ,
"ClassicalTransform" , {}, std::nullopt}},
-
-
-
-
- 162 {
"RangePredicate" ,
"RangePredicate" , {}, std::nullopt}},
-
- 164 {
"ExplicitPredicate" ,
"ExplicitPredicate" , {}, std::nullopt}},
-
- 166 {
"ExplicitModifier" ,
"ExplicitModifier" , {}, std::nullopt}},
-
- 168 {
"ClassicalExpBox" ,
"ClassicalExpBox" , {}, std::nullopt}},
-
-
- 171 {
"UnitaryTableauBox" ,
"UnitaryTableauBox" , {}, std::nullopt}}};
- 172 static std::unique_ptr<const std::map<OpType, OpTypeInfo>> opinfo =
- 173 std::make_unique<const std::map<OpType, OpTypeInfo>>(typeinfo);
-
-
-
-
+
+ 151 {
"ConjugationBox" ,
"ConjugationBox" , {}, std::nullopt}},
+
+
+ 154 {
"ProjectorAssertionBox" ,
"ProjectorAssertionBox" , {}, std::nullopt}},
+
+ 156 {
"StabiliserAssertionBox" ,
"StabiliserAssertionBox" , {}, std::nullopt}},
+
+
+ 159 {
"ClassicalTransform" ,
"ClassicalTransform" , {}, std::nullopt}},
+
+
+
+
+ 164 {
"RangePredicate" ,
"RangePredicate" , {}, std::nullopt}},
+
+ 166 {
"ExplicitPredicate" ,
"ExplicitPredicate" , {}, std::nullopt}},
+
+ 168 {
"ExplicitModifier" ,
"ExplicitModifier" , {}, std::nullopt}},
+
+ 170 {
"ClassicalExpBox" ,
"ClassicalExpBox" , {}, std::nullopt}},
+
+
+ 173 {
"UnitaryTableauBox" ,
"UnitaryTableauBox" , {}, std::nullopt}}};
+ 174 static std::unique_ptr<const std::map<OpType, OpTypeInfo>> opinfo =
+ 175 std::make_unique<const std::map<OpType, OpTypeInfo>>(typeinfo);
+
+
+
+
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
@@ -265,6 +267,7 @@
@ CRz
Controlled OpType::Rz.
@ MultiBit
A classical operation applied to multiple bits simultaneously.
@ CH
Controlled OpType::H.
+@ ConjugationBox
See ConjugationBox.
@ PhasePolyBox
See PhasePolyBox.
@ Output
Quantum output node of the circuit.
@ NPhasedX
PhasedX gates on multiple qubits.
diff --git a/docs/tket/api/OpTypeInfo_8hpp.html b/docs/tket/api/OpTypeInfo_8hpp.html
index 7f308d6aa5..0195ca9e7d 100644
--- a/docs/tket/api/OpTypeInfo_8hpp.html
+++ b/docs/tket/api/OpTypeInfo_8hpp.html
@@ -108,66 +108,66 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpTypeInfo_8hpp__dep__incl.map b/docs/tket/api/OpTypeInfo_8hpp__dep__incl.map
index a85a0b5cd5..f1fc68b465 100644
--- a/docs/tket/api/OpTypeInfo_8hpp__dep__incl.map
+++ b/docs/tket/api/OpTypeInfo_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/OpTypeInfo_8hpp__dep__incl.md5 b/docs/tket/api/OpTypeInfo_8hpp__dep__incl.md5
index 71470756e4..141234ab1f 100644
--- a/docs/tket/api/OpTypeInfo_8hpp__dep__incl.md5
+++ b/docs/tket/api/OpTypeInfo_8hpp__dep__incl.md5
@@ -1 +1 @@
-9ce3c238f8be87e2c24e18bd029d3c8f
\ No newline at end of file
+33a1515a76906698728c68e2e41f6da3
\ No newline at end of file
diff --git a/docs/tket/api/OpTypeInfo_8hpp__dep__incl.png b/docs/tket/api/OpTypeInfo_8hpp__dep__incl.png
index 7f0288980f..2e9da8e2fe 100644
Binary files a/docs/tket/api/OpTypeInfo_8hpp__dep__incl.png and b/docs/tket/api/OpTypeInfo_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/OpType_8hpp.html b/docs/tket/api/OpType_8hpp.html
index 6b689bf73d..f08156a730 100644
--- a/docs/tket/api/OpType_8hpp.html
+++ b/docs/tket/api/OpType_8hpp.html
@@ -297,12 +297,13 @@
, tket::StatePreparationBox
, tket::DiagonalBox
,
- tket::ClassicalExpBox
+ tket::ConjugationBox
+, tket::ClassicalExpBox
, tket::Conditional
, tket::ProjectorAssertionBox
-, tket::StabiliserAssertionBox
,
- tket::ToffoliBox
+ tket::StabiliserAssertionBox
+, tket::ToffoliBox
, tket::UnitaryTableauBox
}
diff --git a/docs/tket/api/OpType_8hpp__dep__incl.md5 b/docs/tket/api/OpType_8hpp__dep__incl.md5
index 0d98f74278..75163a2351 100644
--- a/docs/tket/api/OpType_8hpp__dep__incl.md5
+++ b/docs/tket/api/OpType_8hpp__dep__incl.md5
@@ -1 +1 @@
-02388e7e57e6d45d4a22a76fa22f07ad
\ No newline at end of file
+e5dd69fb0acc81dc649e33082ad71d50
\ No newline at end of file
diff --git a/docs/tket/api/OpType_8hpp_source.html b/docs/tket/api/OpType_8hpp_source.html
index a816d143db..0e3cb17d6b 100644
--- a/docs/tket/api/OpType_8hpp_source.html
+++ b/docs/tket/api/OpType_8hpp_source.html
@@ -301,22 +301,24 @@
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Encapsulation of a unitary stabilizer tableau as a Box to use within a circuit.
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
@@ -330,6 +332,7 @@
@ CRz
Controlled OpType::Rz.
@ MultiBit
A classical operation applied to multiple bits simultaneously.
@ CH
Controlled OpType::H.
+@ ConjugationBox
See ConjugationBox.
@ PhasePolyBox
See PhasePolyBox.
@ Output
Quantum output node of the circuit.
@ NPhasedX
PhasedX gates on multiple qubits.
diff --git a/docs/tket/api/Op_8hpp.html b/docs/tket/api/Op_8hpp.html
index 686285abb8..56bbd0434d 100644
--- a/docs/tket/api/Op_8hpp.html
+++ b/docs/tket/api/Op_8hpp.html
@@ -153,66 +153,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Op_8hpp__dep__incl.map b/docs/tket/api/Op_8hpp__dep__incl.map
index 32e77cd343..42531e30cb 100644
--- a/docs/tket/api/Op_8hpp__dep__incl.map
+++ b/docs/tket/api/Op_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/Op_8hpp__dep__incl.md5 b/docs/tket/api/Op_8hpp__dep__incl.md5
index 5375a61ce0..33097001ef 100644
--- a/docs/tket/api/Op_8hpp__dep__incl.md5
+++ b/docs/tket/api/Op_8hpp__dep__incl.md5
@@ -1 +1 @@
-d2147c2a121058e3dd3b696d5e8b39fc
\ No newline at end of file
+86e5fab696d7beca927c5214b5192982
\ No newline at end of file
diff --git a/docs/tket/api/Op_8hpp__dep__incl.png b/docs/tket/api/Op_8hpp__dep__incl.png
index 6163e6dcb2..14dad79ded 100644
Binary files a/docs/tket/api/Op_8hpp__dep__incl.png and b/docs/tket/api/Op_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/PauliStrings_8hpp__dep__incl.md5 b/docs/tket/api/PauliStrings_8hpp__dep__incl.md5
index fce737b13a..362f7cd249 100644
--- a/docs/tket/api/PauliStrings_8hpp__dep__incl.md5
+++ b/docs/tket/api/PauliStrings_8hpp__dep__incl.md5
@@ -1 +1 @@
-f18f12e8e0529ca1f7e74d953f0a189b
\ No newline at end of file
+c6654e5f7a4e0f93569a1896056f1079
\ No newline at end of file
diff --git a/docs/tket/api/PhasedXFrontier_8cpp_source.html b/docs/tket/api/PhasedXFrontier_8cpp_source.html
index 07baf7af90..d941f228a4 100644
--- a/docs/tket/api/PhasedXFrontier_8cpp_source.html
+++ b/docs/tket/api/PhasedXFrontier_8cpp_source.html
@@ -574,7 +574,7 @@
Defines tket::DeviceCharacterisation, used in NoiseAwarePlacement and in commute_SQ_gates_through_SWA...
-bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
+bool is_single_qubit_unitary_type(OpType optype)
Test for single-qubit gates that can be expressed as TK1.
boost::graph_traits< DAG >::vertex_descriptor Vertex
Gate_ptr as_gate_ptr(Op_ptr op)
Cast a general Op (of gate type) to a Gate.
OpType
Named operation types.
diff --git a/docs/tket/api/Rebase_8cpp_source.html b/docs/tket/api/Rebase_8cpp_source.html
index bb243754f3..906a66c009 100644
--- a/docs/tket/api/Rebase_8cpp_source.html
+++ b/docs/tket/api/Rebase_8cpp_source.html
@@ -450,7 +450,7 @@
Circuit CX_circ_from_multiq(const Op_ptr op)
Replace a multi-qubit operation with an equivalent circuit using CX gates.
SymEngine::Expression Expr
Representation of a phase as a multiple of .
std::shared_ptr< const Op > Op_ptr
-bool is_projective_type(OpType optype)
Test for measurement and reset gates.
+bool is_projective_type(OpType optype)
Test for measurement and reset gates.
Circuit TK2_circ_from_multiq(const Op_ptr op)
Replace a multi-qubit operation with an equivalent circuit using TK2 gates.
diff --git a/docs/tket/api/SequencedContainers_8hpp.html b/docs/tket/api/SequencedContainers_8hpp.html
index cabc8adf18..c1162b65b9 100644
--- a/docs/tket/api/SequencedContainers_8hpp.html
+++ b/docs/tket/api/SequencedContainers_8hpp.html
@@ -103,66 +103,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/SequencedContainers_8hpp__dep__incl.map b/docs/tket/api/SequencedContainers_8hpp__dep__incl.map
index 331196d1e7..e3116c45e7 100644
--- a/docs/tket/api/SequencedContainers_8hpp__dep__incl.map
+++ b/docs/tket/api/SequencedContainers_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/SequencedContainers_8hpp__dep__incl.md5 b/docs/tket/api/SequencedContainers_8hpp__dep__incl.md5
index cc8462292a..bd09cc90ff 100644
--- a/docs/tket/api/SequencedContainers_8hpp__dep__incl.md5
+++ b/docs/tket/api/SequencedContainers_8hpp__dep__incl.md5
@@ -1 +1 @@
-0def71d64947e3ff480e1c92c70c1f16
\ No newline at end of file
+86af4ee17cc6e9fd06d7f4f6b7f83d03
\ No newline at end of file
diff --git a/docs/tket/api/SequencedContainers_8hpp__dep__incl.png b/docs/tket/api/SequencedContainers_8hpp__dep__incl.png
index 7c149194d5..ca037d0c77 100644
Binary files a/docs/tket/api/SequencedContainers_8hpp__dep__incl.png and b/docs/tket/api/SequencedContainers_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/StandardSquash_8cpp_source.html b/docs/tket/api/StandardSquash_8cpp_source.html
index 36dc7f1485..4181315829 100644
--- a/docs/tket/api/StandardSquash_8cpp_source.html
+++ b/docs/tket/api/StandardSquash_8cpp_source.html
@@ -216,8 +216,8 @@
std::unordered_set< OpType > OpTypeSet
Set of operation types.
std::shared_ptr< const Gate > Gate_ptr
SymEngine::Expression Expr
Representation of a phase as a multiple of .
-bool is_projective_type(OpType optype)
Test for measurement and reset gates.
-bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
+bool is_projective_type(OpType optype)
Test for measurement and reset gates.
+bool is_single_qubit_type(OpType optype)
Test for gates over a single qubit.
boost::adjacency_list< boost::listS, boost::listS, boost::bidirectionalS, boost::property< boost::vertex_index_t, int, VertexProperties >, EdgeProperties > DAG
Graph representing a circuit, with operations as nodes.
bool is_boundary_q_type(OpType optype)
Test for input, creation, output or discard quantum "ops".
diff --git a/docs/tket/api/Symbols_8hpp__dep__incl.md5 b/docs/tket/api/Symbols_8hpp__dep__incl.md5
index b180dd90dd..8e101cfb6f 100644
--- a/docs/tket/api/Symbols_8hpp__dep__incl.md5
+++ b/docs/tket/api/Symbols_8hpp__dep__incl.md5
@@ -1 +1 @@
-c2d9f3139fa50651157fdc88831c88f5
\ No newline at end of file
+db6b066c213367ffb1fd3bb499dc92f1
\ No newline at end of file
diff --git a/docs/tket/api/UnitID_8hpp.html b/docs/tket/api/UnitID_8hpp.html
index 7346f51e5e..80e1d1f5f7 100644
--- a/docs/tket/api/UnitID_8hpp.html
+++ b/docs/tket/api/UnitID_8hpp.html
@@ -124,66 +124,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/UnitID_8hpp__dep__incl.map b/docs/tket/api/UnitID_8hpp__dep__incl.map
index f5842290c4..2376196f5c 100644
--- a/docs/tket/api/UnitID_8hpp__dep__incl.map
+++ b/docs/tket/api/UnitID_8hpp__dep__incl.map
@@ -1,62 +1,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/tket/api/UnitID_8hpp__dep__incl.md5 b/docs/tket/api/UnitID_8hpp__dep__incl.md5
index 8a132b8332..5162b2f3fb 100644
--- a/docs/tket/api/UnitID_8hpp__dep__incl.md5
+++ b/docs/tket/api/UnitID_8hpp__dep__incl.md5
@@ -1 +1 @@
-33fe4cf0db707fd692279b78a3695f3d
\ No newline at end of file
+6457febfa660b751839c6ca71cd8149d
\ No newline at end of file
diff --git a/docs/tket/api/UnitID_8hpp__dep__incl.png b/docs/tket/api/UnitID_8hpp__dep__incl.png
index b90fe6e6b1..c1e870fbff 100644
Binary files a/docs/tket/api/UnitID_8hpp__dep__incl.png and b/docs/tket/api/UnitID_8hpp__dep__incl.png differ
diff --git a/docs/tket/api/ZXConverters_8cpp_source.html b/docs/tket/api/ZXConverters_8cpp_source.html
index 25a84b9bb1..bde70d5b6d 100644
--- a/docs/tket/api/ZXConverters_8cpp_source.html
+++ b/docs/tket/api/ZXConverters_8cpp_source.html
@@ -1132,7 +1132,7 @@
bool equiv_0(const Expr &e, unsigned n, double tol)
Test whether a expression is approximately 0 modulo n.
std::vector< ZXVertPort > ZXVertPortVec
-bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
+bool is_classical_type(OpType optype)
Test for purely classical gates derived from ClassicalOp.
std::pair< ZXVertPortVec, ZXVertPort > add_n_bit_and(ZXDiagram &zxd, unsigned n, const QuantumType &qtype)
@@ -1151,7 +1151,7 @@
unsigned port_t
A specific entry or exit port of a vertex.
bool remove_all_gadgets(ZXDiagram &diag, const ZXVertVec &frontier, std::map< ZXVert, ZXVert > &input_qubits)
ZXVertSeqSet neighbours_of_frontier(const ZXDiagram &diag, const ZXVertVec &frontier)
-bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
+bool is_flowop_type(OpType optype)
Test for flowops (just for high-level control flow)
void clean_frontier(ZXDiagram &diag, ZXVertVec &frontier, Circuit &circ, std::map< ZXVert, unsigned > &qubit_map)
std::vector< UnitID > unit_vector_t
std::pair< std::pair< ZXVertPort, ZXVertPort >, ZXVertPortVec > add_conditional_zx(ZXDiagram &zxd, const ZXVert &left, const ZXVert &right, const QuantumType &qtype)
diff --git a/docs/tket/api/annotated.html b/docs/tket/api/annotated.html
index 1fd9413255..186d295f5c 100644
--- a/docs/tket/api/annotated.html
+++ b/docs/tket/api/annotated.html
@@ -223,159 +223,160 @@
C BadCommand
C Command
C Conditional Decorates another op, adding a QASM-style classical condition
- C VertexProperties Description of a node in a circuit, representing some operation
- C EdgeProperties Description of an edge in a circuit, representing a directional wire
- C DiagonalBox Box to synthesise a diagonal operator
- C MultiplexorBox Multiplexed ops
- C MultiplexedRotationBox Multiplexed single-axis rotations
- C MultiplexedU2Box Multiplexed U2 gate
- C MultiplexedTensoredU2Box Multiplexed-Tensored-U2 gate
- C PauliExpBoxInvalidity
- C PauliExpBox Operation defined as the exponential of a tensor of Pauli operators
- C PauliExpPairBox
- C PauliExpCommutingSetBox
- C StatePreparationBox Box to synthesise a statevector
- C ToffoliBox Box to synthesise a state permutation
- C ChoiMixTableau
- C BoolPauli Boolean encoding of Pauli <x, z> = <false, false> ==> I <x, z> = <false, true> ==> Z <x, z> = <true, false> ==> X <x, z> = <true, true> ==> Y
- C SymplecticTableau
- C UnitaryTableau
- C UnitaryRevTableau
- C CXMaker
- C DiagMatrix
- C ImplicitPermutationNotAllowed
- C PhasePolyBox A PhasePolyBox is capable of representing arbitrary Circuits made up of CNOT and RZ, as a PhasePolynomial plus a boolean matrix representing an additional linear transformation
- C CircToPhasePolyConversion This class realises the conversion all sub circuits of a given circuits which contains only CX+Rz to a PhasePolyBox
- C UnitaryTableauBox Encapsulation of a unitary stabilizer tableau as a Box to use within a circuit
- C cmp_tensors
- C UnknownPauliPartitionStrat
- C PauliPartitionerGraph A helper class for converting QubitOperator into PauliACGraphs and then colouring the PauliACGraph using some method
- C SubstitutionFailure
- C Gate
- C GateUnitaryMatrix Functions to return the unitary matrix which a gate represents
- C GateUnitaryMatrixError We do not wish to couple tightly to exception classes elsewhere
- C Rotation A faithful representation of SU(2)
- C SymTable Utility class for accessing the global symbol table
- C AASLabellingMethod
- C AASRouteError
- C AASRouteRoutingMethod
- C BoxDecomposition
- C BoxDecompositionRoutingMethod
- C LexicographicalComparisonError
- C LexicographicalComparison A class for running lexicographical comparisons of SWAP gates for some architecture and set of interacting qubits
- C LexiLabellingMethod
- C LexiRouteError
- C LexiRoute A class for modifiying a Circuit held in a MappingFrontier object with either an Architecture permitted single SWAP gate or BRIDGE gate
- C LexiRouteRoutingMethod
- C MappingFrontierError
- C MappingFrontier
- C MappingManagerError
- C MappingManager
- C MultiGateReorder
- C MultiGateReorderRoutingMethod
- C RoutingMethod
- C RoutingMethodCircuit
- ► C MeasurementSetup MeasurementSetup Captures an expectation value experiment
- C MeasurementBitMap
- C QPSHasher
- C ClassicalOp A purely classical operation
- C ClassicalEvalOp
- C ClassicalTransformOp A general classical operation where all inputs are also outputs
- C WASMOp Op containing a classical wasm function call
- C SetBitsOp An operation to set some bits to specified values
- C CopyBitsOp An operation to copy some bit values
- C PredicateOp A classical operation with single output bit
- C RangePredicateOp A predicate defined by a range of values in binary encoding
- C ExplicitPredicateOp A predicate defined explicitly by a truth table
- C ModifyingOp A classical operation with one output bit which is also an input bit
- C ExplicitModifierOp A modifying operation defined explicitly by a truth table
- C MultiBitOp A classical operation applied simultaneously to multiple bits
- C FlowOp
- C MetaOp
- C InvalidParameterCount Wrong number of parameters for an operation
- C Op Abstract class representing an operation type
- C OpJsonFactory
- C OpDesc Operation descriptor
- C OpTypeInfo General information about an OpType
- C BadOpType Operation type not valid in the current context
- C PauliGadgetProperties
- C DependencyEdgeProperties
- C MidCircuitMeasurementNotAllowed
- C PauliGraph Dependency graph of a circuit wrt Pauli Gadgets
- ► C NeighbourPlacements Given a placement map generates n
nearby placement maps
- C Result
- C Placement
- ► C GraphPlacement
- C Frontier Holds information for slice wise iteration of Circuit
- C WeightedEdge Holds information for constructing a weighted edge in a QubitGraph
- C LinePlacement
- C NoiseAwarePlacement
- C QubitGraph Instance of DirectedGraph to hold dependencies between Qubit UnitID objects as given from some Circuit
- C CompilationUnit
- C IncompatibleCompilerPasses
- C PassNotSerializable
- C PostConditions
- C BasePass
- C StandardPass
- C SequencePass
- C RepeatPass
- C RepeatWithMetricPass
- C RepeatUntilSatisfiedPass
- C IncorrectPredicate
- C UnsatisfiedPredicate
- C PredicateNotSerializable
- C Predicate
- C GateSetPredicate Asserts that all operations are in the specified set of types
- C NoClassicalControlPredicate Asserts that there are no conditional gates in the circuit
- C NoFastFeedforwardPredicate
- C NoClassicalBitsPredicate
- C NoWireSwapsPredicate
- C MaxTwoQubitGatesPredicate
- C PlacementPredicate
- C ConnectivityPredicate
- C DirectednessPredicate
- C CliffordCircuitPredicate
- C UserDefinedPredicate
- C DefaultRegisterPredicate
- C MaxNQubitsPredicate
- C MaxNClRegPredicate Asserts that the circuit only contains N classical registers or less
- C NoBarriersPredicate Asserts that the circuit contains no OpType::Barrier
- C CommutableMeasuresPredicate Asserts that any internal measurements can be commuted to the end of the circuit
- C NoMidMeasurePredicate Asserts that any measurements occur at the end of the circuit
- C NoSymbolsPredicate Asserts that no gates in the circuit have symbolic parameters
- C GlobalPhasedXPredicate Asserts that all NPhasedX gates act on all qubits In the future, it might be useful to have a generic GlobalGatePredicate for other global gates, or flag some gates as global
- C NormalisedTK2Predicate Asserts that all TK2 gates are normalised
- C InteractionPoint Represents a position that one port of a 2qb Clifford gadget could be commuted to (towards the end of the circuit)
- C RevInteractionPoint Represents a position that one port of a 2qb Clifford gadget could be commuted to (towards the start of the circuit)
- C InteractionMatch Represents a position to which two 2q Clifford gadgets could be commuted to Assumes:
- C TagEdge
- C TagSource
- C CliffordReductionPass
- C CliffordReductionPassTester Simple friend class of CliffordReductionPass
used for testing private member functions
- C AbstractSquasher Abstract Squasher interface
- C SingleQubitSquash Squashes single qubit gates using given Squasher
- C Transform A transformation of a circuit that preserves its semantics
- C SymCompareLess
- C SymbolsNotSupported Exception indicating that symbolic values are not supported
- C JsonError
- C UnknownPauli Pauli not supported
- C UnknownOpType OpType not supported
- C UnknownCXConfigType
- C NonDefaultQubit
- C QubitPauliString A string of Pauli letters from the alphabet {I, X, Y, Z}, implemented as a sparse list, indexed by qubit
- C PauliStabiliser A simple struct for Pauli strings with +/- phase, used to represent Pauli strings in a stabiliser subgroup
- C QubitPauliTensor A tensor of Pauli terms \( P = i^k \sigma_1 \otimes \sigma_2 \otimes \cdots \otimes \sigma_n \)
- C TagKey
- C TagValue
- C TagSeq
- C InvalidUnitConversion Conversion invalid
- C UnitID Location holding a bit or qubit of information
- C Qubit Location holding a qubit
- C Bit Location holding a bit
- C WasmState Location holding a wasm UID
- C Node Architectural qubit location
- C WasmNode WASM UID
- C unit_bimaps_t A pair of ("initial" and "final") correspondences between unit IDs
+ C ConjugationBox Box to express computations that follow the compute-action-uncompute pattern
+ C VertexProperties Description of a node in a circuit, representing some operation
+ C EdgeProperties Description of an edge in a circuit, representing a directional wire
+ C DiagonalBox Box to synthesise a diagonal operator
+ C MultiplexorBox Multiplexed ops
+ C MultiplexedRotationBox Multiplexed single-axis rotations
+ C MultiplexedU2Box Multiplexed U2 gate
+ C MultiplexedTensoredU2Box Multiplexed-Tensored-U2 gate
+ C PauliExpBoxInvalidity
+ C PauliExpBox Operation defined as the exponential of a tensor of Pauli operators
+ C PauliExpPairBox
+ C PauliExpCommutingSetBox
+ C StatePreparationBox Box to synthesise a statevector
+ C ToffoliBox Box to synthesise a state permutation
+ C ChoiMixTableau
+ C BoolPauli Boolean encoding of Pauli <x, z> = <false, false> ==> I <x, z> = <false, true> ==> Z <x, z> = <true, false> ==> X <x, z> = <true, true> ==> Y
+ C SymplecticTableau
+ C UnitaryTableau
+ C UnitaryRevTableau
+ C CXMaker
+ C DiagMatrix
+ C ImplicitPermutationNotAllowed
+ C PhasePolyBox A PhasePolyBox is capable of representing arbitrary Circuits made up of CNOT and RZ, as a PhasePolynomial plus a boolean matrix representing an additional linear transformation
+ C CircToPhasePolyConversion This class realises the conversion all sub circuits of a given circuits which contains only CX+Rz to a PhasePolyBox
+ C UnitaryTableauBox Encapsulation of a unitary stabilizer tableau as a Box to use within a circuit
+ C cmp_tensors
+ C UnknownPauliPartitionStrat
+ C PauliPartitionerGraph A helper class for converting QubitOperator into PauliACGraphs and then colouring the PauliACGraph using some method
+ C SubstitutionFailure
+ C Gate
+ C GateUnitaryMatrix Functions to return the unitary matrix which a gate represents
+ C GateUnitaryMatrixError We do not wish to couple tightly to exception classes elsewhere
+ C Rotation A faithful representation of SU(2)
+ C SymTable Utility class for accessing the global symbol table
+ C AASLabellingMethod
+ C AASRouteError
+ C AASRouteRoutingMethod
+ C BoxDecomposition
+ C BoxDecompositionRoutingMethod
+ C LexicographicalComparisonError
+ C LexicographicalComparison A class for running lexicographical comparisons of SWAP gates for some architecture and set of interacting qubits
+ C LexiLabellingMethod
+ C LexiRouteError
+ C LexiRoute A class for modifiying a Circuit held in a MappingFrontier object with either an Architecture permitted single SWAP gate or BRIDGE gate
+ C LexiRouteRoutingMethod
+ C MappingFrontierError
+ C MappingFrontier
+ C MappingManagerError
+ C MappingManager
+ C MultiGateReorder
+ C MultiGateReorderRoutingMethod
+ C RoutingMethod
+ C RoutingMethodCircuit
+ ► C MeasurementSetup MeasurementSetup Captures an expectation value experiment
+ C MeasurementBitMap
+ C QPSHasher
+ C ClassicalOp A purely classical operation
+ C ClassicalEvalOp
+ C ClassicalTransformOp A general classical operation where all inputs are also outputs
+ C WASMOp Op containing a classical wasm function call
+ C SetBitsOp An operation to set some bits to specified values
+ C CopyBitsOp An operation to copy some bit values
+ C PredicateOp A classical operation with single output bit
+ C RangePredicateOp A predicate defined by a range of values in binary encoding
+ C ExplicitPredicateOp A predicate defined explicitly by a truth table
+ C ModifyingOp A classical operation with one output bit which is also an input bit
+ C ExplicitModifierOp A modifying operation defined explicitly by a truth table
+ C MultiBitOp A classical operation applied simultaneously to multiple bits
+ C FlowOp
+ C MetaOp
+ C InvalidParameterCount Wrong number of parameters for an operation
+ C Op Abstract class representing an operation type
+ C OpJsonFactory
+ C OpDesc Operation descriptor
+ C OpTypeInfo General information about an OpType
+ C BadOpType Operation type not valid in the current context
+ C PauliGadgetProperties
+ C DependencyEdgeProperties
+ C MidCircuitMeasurementNotAllowed
+ C PauliGraph Dependency graph of a circuit wrt Pauli Gadgets
+ ► C NeighbourPlacements Given a placement map generates n
nearby placement maps
+ C Result
+ C Placement
+ ► C GraphPlacement
+ C Frontier Holds information for slice wise iteration of Circuit
+ C WeightedEdge Holds information for constructing a weighted edge in a QubitGraph
+ C LinePlacement
+ C NoiseAwarePlacement
+ C QubitGraph Instance of DirectedGraph to hold dependencies between Qubit UnitID objects as given from some Circuit
+ C CompilationUnit
+ C IncompatibleCompilerPasses
+ C PassNotSerializable
+ C PostConditions
+ C BasePass
+ C StandardPass
+ C SequencePass
+ C RepeatPass
+ C RepeatWithMetricPass
+ C RepeatUntilSatisfiedPass
+ C IncorrectPredicate
+ C UnsatisfiedPredicate
+ C PredicateNotSerializable
+ C Predicate
+ C GateSetPredicate Asserts that all operations are in the specified set of types
+ C NoClassicalControlPredicate Asserts that there are no conditional gates in the circuit
+ C NoFastFeedforwardPredicate
+ C NoClassicalBitsPredicate
+ C NoWireSwapsPredicate
+ C MaxTwoQubitGatesPredicate
+ C PlacementPredicate
+ C ConnectivityPredicate
+ C DirectednessPredicate
+ C CliffordCircuitPredicate
+ C UserDefinedPredicate
+ C DefaultRegisterPredicate
+ C MaxNQubitsPredicate
+ C MaxNClRegPredicate Asserts that the circuit only contains N classical registers or less
+ C NoBarriersPredicate Asserts that the circuit contains no OpType::Barrier
+ C CommutableMeasuresPredicate Asserts that any internal measurements can be commuted to the end of the circuit
+ C NoMidMeasurePredicate Asserts that any measurements occur at the end of the circuit
+ C NoSymbolsPredicate Asserts that no gates in the circuit have symbolic parameters
+ C GlobalPhasedXPredicate Asserts that all NPhasedX gates act on all qubits In the future, it might be useful to have a generic GlobalGatePredicate for other global gates, or flag some gates as global
+ C NormalisedTK2Predicate Asserts that all TK2 gates are normalised
+ C InteractionPoint Represents a position that one port of a 2qb Clifford gadget could be commuted to (towards the end of the circuit)
+ C RevInteractionPoint Represents a position that one port of a 2qb Clifford gadget could be commuted to (towards the start of the circuit)
+ C InteractionMatch Represents a position to which two 2q Clifford gadgets could be commuted to Assumes:
+ C TagEdge
+ C TagSource
+ C CliffordReductionPass
+ C CliffordReductionPassTester Simple friend class of CliffordReductionPass
used for testing private member functions
+ C AbstractSquasher Abstract Squasher interface
+ C SingleQubitSquash Squashes single qubit gates using given Squasher
+ C Transform A transformation of a circuit that preserves its semantics
+ C SymCompareLess
+ C SymbolsNotSupported Exception indicating that symbolic values are not supported
+ C JsonError
+ C UnknownPauli Pauli not supported
+ C UnknownOpType OpType not supported
+ C UnknownCXConfigType
+ C NonDefaultQubit
+ C QubitPauliString A string of Pauli letters from the alphabet {I, X, Y, Z}, implemented as a sparse list, indexed by qubit
+ C PauliStabiliser A simple struct for Pauli strings with +/- phase, used to represent Pauli strings in a stabiliser subgroup
+ C QubitPauliTensor A tensor of Pauli terms \( P = i^k \sigma_1 \otimes \sigma_2 \otimes \cdots \otimes \sigma_n \)
+ C TagKey
+ C TagValue
+ C TagSeq
+ C InvalidUnitConversion Conversion invalid
+ C UnitID Location holding a bit or qubit of information
+ C Qubit Location holding a qubit
+ C Bit Location holding a bit
+ C WasmState Location holding a wasm UID
+ C Node Architectural qubit location
+ C WasmNode WASM UID
+ C unit_bimaps_t A pair of ("initial" and "final") correspondences between unit IDs
diff --git a/docs/tket/api/classes.html b/docs/tket/api/classes.html
index 5db0435c78..a1b949c881 100644
--- a/docs/tket/api/classes.html
+++ b/docs/tket/api/classes.html
@@ -82,7 +82,7 @@
BadCommand (tket )BadOpType (tket )BasePass (tket )BasicGen (tket::zx )BestTsaWithArch (tket )BFS (tket::graphs )BicomponentGraph (tket::graphs::detail )BicomponentGraphTester (tket::graphs::detail )Bit (tket )BoolPauli (tket )BoundaryElement (tket )BoundaryGen (tket::zx )Box (tket )BoxDecomposition (tket )BoxDecompositionRoutingMethod (tket )BruteForceColouring (tket::graphs )
C
-ChoiMixTableau (tket )CircBox (tket )CircToPhasePolyConversion (tket )Circuit (tket )CircuitInequality (tket )CircuitInvalidity (tket )ClassicalEvalOp (tket )ClassicalExpBox (tket )ClassicalExpBoxBase (tket )ClassicalOp (tket )ClassicalTransformOp (tket )CliffordCircuitPredicate (tket )CliffordGen (tket::zx )CliffordReductionPass (tket )CliffordReductionPassTester (tket )cmp_tensors (tket )CNotSwapSynth (tket::aas )ColouringPriority (tket::graphs )Command (tket )Circuit::CommandIterator (tket )CommutableMeasuresPredicate (tket )CompilationUnit (tket )CompleteGraph (tket::graphs )CompositeGateDef (tket )Conditional (tket )ConnectivityPredicate (tket )ControlDecompError (tket::CircPool )CopyBitsOp (tket )CustomGate (tket )CutFrontier (tket )CXMaker (tket )Cycle (tket )CycleCom (tket )CycleFinder (tket )CycleHistory (tket )
+ChoiMixTableau (tket )CircBox (tket )CircToPhasePolyConversion (tket )Circuit (tket )CircuitInequality (tket )CircuitInvalidity (tket )ClassicalEvalOp (tket )ClassicalExpBox (tket )ClassicalExpBoxBase (tket )ClassicalOp (tket )ClassicalTransformOp (tket )CliffordCircuitPredicate (tket )CliffordGen (tket::zx )CliffordReductionPass (tket )CliffordReductionPassTester (tket )cmp_tensors (tket )CNotSwapSynth (tket::aas )ColouringPriority (tket::graphs )Command (tket )Circuit::CommandIterator (tket )CommutableMeasuresPredicate (tket )CompilationUnit (tket )CompleteGraph (tket::graphs )CompositeGateDef (tket )Conditional (tket )ConjugationBox (tket )ConnectivityPredicate (tket )ControlDecompError (tket::CircPool )CopyBitsOp (tket )CustomGate (tket )CutFrontier (tket )CXMaker (tket )Cycle (tket )CycleCom (tket )CycleFinder (tket )CycleHistory (tket )
D
DefaultRegisterPredicate (tket )DependencyEdgeProperties (tket )DeviceCharacterisation (tket )DFS (tket::graphs )DiagMatrix (tket )DiagonalBox (tket )DirectedGen (tket::zx )DirectedGraph (tket::graphs )DirectedGraphBase (tket::graphs )DirectednessPredicate (tket )DistancesFromArchitecture (tket )
diff --git a/docs/tket/api/classtket_1_1Box.html b/docs/tket/api/classtket_1_1Box.html
index 103b0d918c..431423a098 100644
--- a/docs/tket/api/classtket_1_1Box.html
+++ b/docs/tket/api/classtket_1_1Box.html
@@ -94,31 +94,32 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
@@ -389,7 +390,7 @@