diff --git a/Cargo.lock b/Cargo.lock index 295ba5c4..1797a4b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -288,9 +288,9 @@ dependencies = [ [[package]] name = "clap-verbosity-flag" -version = "3.0.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54381ae56ad222eea3f529c692879e9c65e07945ae48d3dc4d1cb18dbec8cf44" +checksum = "34c77f67047557f62582784fd7482884697731b2932c7d37ced54bce2312e1e2" dependencies = [ "clap", "log", @@ -317,7 +317,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -539,7 +539,7 @@ checksum = "bc2323e10c92e1cf4d86e11538512e6dc03ceb586842970b6332af3d4046a046" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -561,7 +561,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -581,7 +581,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "unicode-xid", ] @@ -603,7 +603,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -627,7 +627,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -739,7 +739,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -858,7 +858,7 @@ dependencies = [ [[package]] name = "hugr" version = "0.13.3" -source = "git+https://github.com/CQCL/hugr.git#163b211cfb8b87a7b0a6a12c8141217e0c052dd5" +source = "git+https://github.com/CQCL/hugr.git?rev=7177c5f26c2ddf506d9987c84cf1899275d391d6#7177c5f26c2ddf506d9987c84cf1899275d391d6" dependencies = [ "hugr-core", "hugr-passes", @@ -867,7 +867,7 @@ dependencies = [ [[package]] name = "hugr-cli" version = "0.13.3" -source = "git+https://github.com/CQCL/hugr.git#163b211cfb8b87a7b0a6a12c8141217e0c052dd5" +source = "git+https://github.com/CQCL/hugr.git?rev=7177c5f26c2ddf506d9987c84cf1899275d391d6#7177c5f26c2ddf506d9987c84cf1899275d391d6" dependencies = [ "clap", "clap-verbosity-flag", @@ -882,7 +882,7 @@ dependencies = [ [[package]] name = "hugr-core" version = "0.13.3" -source = "git+https://github.com/CQCL/hugr.git#163b211cfb8b87a7b0a6a12c8141217e0c052dd5" +source = "git+https://github.com/CQCL/hugr.git?rev=7177c5f26c2ddf506d9987c84cf1899275d391d6#7177c5f26c2ddf506d9987c84cf1899275d391d6" dependencies = [ "bitvec", "bumpalo", @@ -914,7 +914,7 @@ dependencies = [ [[package]] name = "hugr-passes" version = "0.13.3" -source = "git+https://github.com/CQCL/hugr.git#163b211cfb8b87a7b0a6a12c8141217e0c052dd5" +source = "git+https://github.com/CQCL/hugr.git?rev=7177c5f26c2ddf506d9987c84cf1899275d391d6#7177c5f26c2ddf506d9987c84cf1899275d391d6" dependencies = [ "hugr-core", "itertools 0.13.0", @@ -1062,7 +1062,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1188,10 +1188,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1422,7 +1423,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1626,7 +1627,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1639,7 +1640,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1770,7 +1771,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.89", + "syn 2.0.90", "unicode-ident", ] @@ -1849,7 +1850,7 @@ checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1949,7 +1950,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1965,9 +1966,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.89" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -1982,7 +1983,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2036,7 +2037,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2047,7 +2048,7 @@ checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2279,7 +2280,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2350,7 +2351,7 @@ checksum = "70b20a22c42c8f1cd23ce5e34f165d4d37038f5b663ad20fb6adbdf029172483" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2451,9 +2452,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" dependencies = [ "cfg-if", "once_cell", @@ -2462,24 +2463,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2487,28 +2488,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" dependencies = [ "js-sys", "wasm-bindgen", @@ -2785,7 +2786,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "synstructure", ] @@ -2806,7 +2807,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "synstructure", ] @@ -2829,7 +2830,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d29acbb7..e2e74311 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,9 +26,9 @@ missing_docs = "warn" [patch.crates-io] # Uncomment to use unreleased versions of hugr -hugr-core = { git = "https://github.com/CQCL/hugr.git" } -hugr = { git = "https://github.com/CQCL/hugr.git" } -hugr-cli = { git = "https://github.com/CQCL/hugr.git" } +hugr-core = { git = "https://github.com/CQCL/hugr.git" , rev = "7177c5f26c2ddf506d9987c84cf1899275d391d6"} +hugr = { git = "https://github.com/CQCL/hugr.git" , rev = "7177c5f26c2ddf506d9987c84cf1899275d391d6"} +hugr-cli = { git = "https://github.com/CQCL/hugr.git" , rev = "7177c5f26c2ddf506d9987c84cf1899275d391d6"} [workspace.dependencies] diff --git a/tket2-exts/src/tket2_exts/__init__.py b/tket2-exts/src/tket2_exts/__init__.py index 4b5ab1b8..54df9d83 100644 --- a/tket2-exts/src/tket2_exts/__init__.py +++ b/tket2-exts/src/tket2_exts/__init__.py @@ -17,8 +17,8 @@ def futures() -> Extension: @functools.cache -def hseries() -> Extension: - return load_extension("tket2.hseries") +def qsystem() -> Extension: + return load_extension("tket2.qsystem") @functools.cache diff --git a/tket2-exts/src/tket2_exts/data/tket2/hseries.json b/tket2-exts/src/tket2_exts/data/tket2/qsystem.json similarity index 93% rename from tket2-exts/src/tket2_exts/data/tket2/hseries.json rename to tket2-exts/src/tket2_exts/data/tket2/qsystem.json index 5636f319..abdc1aec 100644 --- a/tket2-exts/src/tket2_exts/data/tket2/hseries.json +++ b/tket2-exts/src/tket2_exts/data/tket2/qsystem.json @@ -1,6 +1,6 @@ { "version": "0.2.0", - "name": "tket2.hseries", + "name": "tket2.qsystem", "extension_reqs": [ "arithmetic.float.types", "prelude", @@ -10,7 +10,7 @@ "values": {}, "operations": { "LazyMeasure": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "LazyMeasure", "description": "Lazily measure a qubit and lose it.", "signature": { @@ -48,7 +48,7 @@ "binary": false }, "Measure": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "Measure", "description": "Measure a qubit and lose it.", "signature": { @@ -72,7 +72,7 @@ "binary": false }, "MeasureReset": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "MeasureReset", "description": "Measure a qubit and reset it to the Z |0> eigenstate.", "signature": { @@ -99,7 +99,7 @@ "binary": false }, "PhasedX": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "PhasedX", "description": "PhasedX gate.", "signature": { @@ -135,7 +135,7 @@ "binary": false }, "QFree": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "QFree", "description": "Free a qubit (lose track of it).", "signature": { @@ -153,7 +153,7 @@ "binary": false }, "Reset": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "Reset", "description": "Reset a qubit to the Z |0> eigenstate.", "signature": { @@ -175,7 +175,7 @@ "binary": false }, "Rz": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "Rz", "description": "Rotate a qubit around the Z axis. Not physical.", "signature": { @@ -204,7 +204,7 @@ "binary": false }, "TryQAlloc": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "TryQAlloc", "description": "Allocate a qubit in the Z |0> eigenstate.", "signature": { @@ -231,7 +231,7 @@ "binary": false }, "ZZMax": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "ZZMax", "description": "Maximally entangling ZZ gate.", "signature": { @@ -259,7 +259,7 @@ "binary": false }, "ZZPhase": { - "extension": "tket2.hseries", + "extension": "tket2.qsystem", "name": "ZZPhase", "description": "ZZ gate with an angle.", "signature": { diff --git a/tket2-hseries/README.md b/tket2-hseries/README.md index e195e8e4..7f7bc2cf 100644 --- a/tket2-hseries/README.md +++ b/tket2-hseries/README.md @@ -3,7 +3,7 @@ ![msrv][] A TKET2 tool for preparing and validating `Hugr`s for compilation targeting -Quantinuum H-series quantum computers. +Quantinuum System quantum computers. ## Usage diff --git a/tket2-hseries/src/bin/tket2-hseries.rs b/tket2-hseries/src/bin/tket2-hseries.rs index a16a1cf9..5556ac45 100644 --- a/tket2-hseries/src/bin/tket2-hseries.rs +++ b/tket2-hseries/src/bin/tket2-hseries.rs @@ -10,7 +10,7 @@ fn main() { let reg = ExtensionRegistry::try_new([ tket2::extension::TKET2_EXTENSION.to_owned(), tket2::extension::rotation::ROTATION_EXTENSION.to_owned(), - tket2_hseries::extension::hseries::EXTENSION.to_owned(), + tket2_hseries::extension::qsystem::EXTENSION.to_owned(), tket2_hseries::extension::futures::EXTENSION.to_owned(), tket2_hseries::extension::result::EXTENSION.to_owned(), ]) diff --git a/tket2-hseries/src/extension.rs b/tket2-hseries/src/extension.rs index a888e2be..68b0eee3 100644 --- a/tket2-hseries/src/extension.rs +++ b/tket2-hseries/src/extension.rs @@ -1,4 +1,4 @@ //! This module defines the Hugr extensions used by tket2-hseries. pub mod futures; -pub mod hseries; +pub mod qsystem; pub mod result; diff --git a/tket2-hseries/src/extension/hseries.rs b/tket2-hseries/src/extension/qsystem.rs similarity index 80% rename from tket2-hseries/src/extension/hseries.rs rename to tket2-hseries/src/extension/qsystem.rs index deb124a6..9aaab4c4 100644 --- a/tket2-hseries/src/extension/hseries.rs +++ b/tket2-hseries/src/extension/qsystem.rs @@ -32,15 +32,15 @@ use super::futures::future_type; mod lower; use lower::pi_mul_f64; -pub use lower::{check_lowered, lower_tk2_op, LowerTk2Error, LowerTket2ToHSeriesPass}; +pub use lower::{check_lowered, lower_tk2_op, LowerTk2Error, LowerTket2ToQSystemPass}; -/// The "tket2.hseries" extension id. -pub const EXTENSION_ID: ExtensionId = ExtensionId::new_unchecked("tket2.hseries"); -/// The "tket2.hseries" extension version. +/// The "tket2.qsystem" extension id. +pub const EXTENSION_ID: ExtensionId = ExtensionId::new_unchecked("tket2.qsystem"); +/// The "tket2.qsystem" extension version. pub const EXTENSION_VERSION: Version = Version::new(0, 2, 0); lazy_static! { - /// The "tket2.hseries" extension. + /// The "tket2.qsystem" extension. pub static ref EXTENSION: Arc = { Extension::new_arc(EXTENSION_ID, EXTENSION_VERSION, |ext, ext_ref| { ext.add_requirements(ExtensionSet::from_iter([ @@ -48,11 +48,11 @@ lazy_static! { PRELUDE.name(), FLOAT_TYPES.name(), ].into_iter().cloned())); - HSeriesOp::load_all_ops( ext, ext_ref).unwrap(); + QSystemOp::load_all_ops( ext, ext_ref).unwrap(); }) }; - /// Extension registry including the "tket2.hseries" extension and + /// Extension registry including the "tket2.qsystem" extension and /// dependencies. pub static ref REGISTRY: ExtensionRegistry = ExtensionRegistry::try_new([ EXTENSION.to_owned(), @@ -79,7 +79,7 @@ lazy_static! { )] #[allow(missing_docs)] #[non_exhaustive] -pub enum HSeriesOp { +pub enum QSystemOp { Measure, LazyMeasure, Rz, @@ -92,9 +92,9 @@ pub enum HSeriesOp { MeasureReset, } -impl MakeOpDef for HSeriesOp { +impl MakeOpDef for QSystemOp { fn signature(&self) -> SignatureFunc { - use HSeriesOp::*; + use QSystemOp::*; let one_qb_row = type_row![QB_T]; let two_qb_row = type_row![QB_T, QB_T]; match self { @@ -122,22 +122,22 @@ impl MakeOpDef for HSeriesOp { fn description(&self) -> String { match self { - HSeriesOp::Measure => "Measure a qubit and lose it.", - HSeriesOp::LazyMeasure => "Lazily measure a qubit and lose it.", - HSeriesOp::Rz => "Rotate a qubit around the Z axis. Not physical.", - HSeriesOp::PhasedX => "PhasedX gate.", - HSeriesOp::ZZMax => "Maximally entangling ZZ gate.", - HSeriesOp::ZZPhase => "ZZ gate with an angle.", - HSeriesOp::TryQAlloc => "Allocate a qubit in the Z |0> eigenstate.", - HSeriesOp::QFree => "Free a qubit (lose track of it).", - HSeriesOp::Reset => "Reset a qubit to the Z |0> eigenstate.", - HSeriesOp::MeasureReset => "Measure a qubit and reset it to the Z |0> eigenstate.", + QSystemOp::Measure => "Measure a qubit and lose it.", + QSystemOp::LazyMeasure => "Lazily measure a qubit and lose it.", + QSystemOp::Rz => "Rotate a qubit around the Z axis. Not physical.", + QSystemOp::PhasedX => "PhasedX gate.", + QSystemOp::ZZMax => "Maximally entangling ZZ gate.", + QSystemOp::ZZPhase => "ZZ gate with an angle.", + QSystemOp::TryQAlloc => "Allocate a qubit in the Z |0> eigenstate.", + QSystemOp::QFree => "Free a qubit (lose track of it).", + QSystemOp::Reset => "Reset a qubit to the Z |0> eigenstate.", + QSystemOp::MeasureReset => "Measure a qubit and reset it to the Z |0> eigenstate.", } .to_string() } } -impl MakeRegisteredOp for HSeriesOp { +impl MakeRegisteredOp for QSystemOp { fn extension_id(&self) -> ExtensionId { EXTENSION_ID } @@ -148,73 +148,73 @@ impl MakeRegisteredOp for HSeriesOp { } /// An extension trait for [Dataflow] providing methods to add -/// "tket2.hseries" operations. -pub trait HSeriesOpBuilder: Dataflow + UnwrapBuilder { - /// Add a "tket2.hseries.LazyMeasure" op. +/// "tket2.qsystem" operations. +pub trait QSystemOpBuilder: Dataflow + UnwrapBuilder { + /// Add a "tket2.qsystem.LazyMeasure" op. fn add_lazy_measure(&mut self, qb: Wire) -> Result<[Wire; 2], BuildError> { Ok(self - .add_dataflow_op(HSeriesOp::LazyMeasure, [qb])? + .add_dataflow_op(QSystemOp::LazyMeasure, [qb])? .outputs_arr()) } - /// Add a "tket2.hseries.Measure" op. + /// Add a "tket2.qsystem.Measure" op. fn add_measure(&mut self, qb: Wire) -> Result { - Ok(self.add_dataflow_op(HSeriesOp::Measure, [qb])?.out_wire(0)) + Ok(self.add_dataflow_op(QSystemOp::Measure, [qb])?.out_wire(0)) } - /// Add a "tket2.hseries.Reset" op. + /// Add a "tket2.qsystem.Reset" op. fn add_reset(&mut self, qb: Wire) -> Result { - Ok(self.add_dataflow_op(HSeriesOp::Reset, [qb])?.out_wire(0)) + Ok(self.add_dataflow_op(QSystemOp::Reset, [qb])?.out_wire(0)) } - /// Add a "tket2.hseries.ZZMax" op. + /// Add a "tket2.qsystem.ZZMax" op. fn add_zz_max(&mut self, qb1: Wire, qb2: Wire) -> Result<[Wire; 2], BuildError> { Ok(self - .add_dataflow_op(HSeriesOp::ZZMax, [qb1, qb2])? + .add_dataflow_op(QSystemOp::ZZMax, [qb1, qb2])? .outputs_arr()) } - /// Add a "tket2.hseries.ZZPhase" op. + /// Add a "tket2.qsystem.ZZPhase" op. fn add_zz_phase(&mut self, qb1: Wire, qb2: Wire, angle: Wire) -> Result<[Wire; 2], BuildError> { Ok(self - .add_dataflow_op(HSeriesOp::ZZPhase, [qb1, qb2, angle])? + .add_dataflow_op(QSystemOp::ZZPhase, [qb1, qb2, angle])? .outputs_arr()) } - /// Add a "tket2.hseries.PhasedX" op. + /// Add a "tket2.qsystem.PhasedX" op. fn add_phased_x(&mut self, qb: Wire, angle1: Wire, angle2: Wire) -> Result { Ok(self - .add_dataflow_op(HSeriesOp::PhasedX, [qb, angle1, angle2])? + .add_dataflow_op(QSystemOp::PhasedX, [qb, angle1, angle2])? .out_wire(0)) } - /// Add a "tket2.hseries.Rz" op. + /// Add a "tket2.qsystem.Rz" op. fn add_rz(&mut self, qb: Wire, angle: Wire) -> Result { Ok(self - .add_dataflow_op(HSeriesOp::Rz, [qb, angle])? + .add_dataflow_op(QSystemOp::Rz, [qb, angle])? .out_wire(0)) } - /// Add a "tket2.hseries.TryQAlloc" op. + /// Add a "tket2.qsystem.TryQAlloc" op. fn add_try_alloc(&mut self) -> Result { - Ok(self.add_dataflow_op(HSeriesOp::TryQAlloc, [])?.out_wire(0)) + Ok(self.add_dataflow_op(QSystemOp::TryQAlloc, [])?.out_wire(0)) } - /// Add a "tket2.hseries.QFree" op. + /// Add a "tket2.qsystem.QFree" op. fn add_qfree(&mut self, qb: Wire) -> Result<(), BuildError> { - self.add_dataflow_op(HSeriesOp::QFree, [qb])?; + self.add_dataflow_op(QSystemOp::QFree, [qb])?; Ok(()) } - /// Add a "tket2.hseries.MeasureReset" op. + /// Add a "tket2.qsystem.MeasureReset" op. /// This operation is equivalent to a `Measure` followed by a `Reset`. fn add_measure_reset(&mut self, qb: Wire) -> Result<[Wire; 2], BuildError> { Ok(self - .add_dataflow_op(HSeriesOp::MeasureReset, [qb])? + .add_dataflow_op(QSystemOp::MeasureReset, [qb])? .outputs_arr()) } - /// Build a hadamard gate in terms of HSeries primitives. + /// Build a hadamard gate in terms of QSystem primitives. fn build_h(&mut self, qb: Wire) -> Result { let pi = pi_mul_f64(self, 1.0); let pi_2 = pi_mul_f64(self, 0.5); @@ -224,51 +224,51 @@ pub trait HSeriesOpBuilder: Dataflow + UnwrapBuilder { self.add_rz(q, pi) } - /// Build an X gate in terms of HSeries primitives. + /// Build an X gate in terms of QSystem primitives. fn build_x(&mut self, qb: Wire) -> Result { let pi = pi_mul_f64(self, 1.0); let zero = pi_mul_f64(self, 0.0); self.add_phased_x(qb, pi, zero) } - /// Build a Y gate in terms of HSeries primitives. + /// Build a Y gate in terms of QSystem primitives. fn build_y(&mut self, qb: Wire) -> Result { let pi = pi_mul_f64(self, 1.0); let pi_2 = pi_mul_f64(self, 0.5); self.add_phased_x(qb, pi, pi_2) } - /// Build a Z gate in terms of HSeries primitives. + /// Build a Z gate in terms of QSystem primitives. fn build_z(&mut self, qb: Wire) -> Result { let pi = pi_mul_f64(self, 1.0); self.add_rz(qb, pi) } - /// Build an S gate in terms of HSeries primitives. + /// Build an S gate in terms of QSystem primitives. fn build_s(&mut self, qb: Wire) -> Result { let pi_2 = pi_mul_f64(self, 0.5); self.add_rz(qb, pi_2) } - /// Build an Sdg gate in terms of HSeries primitives. + /// Build an Sdg gate in terms of QSystem primitives. fn build_sdg(&mut self, qb: Wire) -> Result { let pi_minus_2 = pi_mul_f64(self, -0.5); self.add_rz(qb, pi_minus_2) } - /// Build a T gate in terms of HSeries primitives. + /// Build a T gate in terms of QSystem primitives. fn build_t(&mut self, qb: Wire) -> Result { let pi_4 = pi_mul_f64(self, 0.25); self.add_rz(qb, pi_4) } - /// Build a Tdg gate in terms of HSeries primitives. + /// Build a Tdg gate in terms of QSystem primitives. fn build_tdg(&mut self, qb: Wire) -> Result { let pi_minus_4 = pi_mul_f64(self, -0.25); self.add_rz(qb, pi_minus_4) } - /// Build a CNOT gate in terms of HSeries primitives. + /// Build a CNOT gate in terms of QSystem primitives. fn build_cx(&mut self, c: Wire, t: Wire) -> Result<[Wire; 2], BuildError> { let pi = pi_mul_f64(self, 1.0); let pi_2 = pi_mul_f64(self, 0.5); @@ -283,7 +283,7 @@ pub trait HSeriesOpBuilder: Dataflow + UnwrapBuilder { Ok([c, t]) } - /// Build a CY gate in terms of HSeries primitives. + /// Build a CY gate in terms of QSystem primitives. fn build_cy(&mut self, a: Wire, b: Wire) -> Result<[Wire; 2], BuildError> { let pi_2 = pi_mul_f64(self, 0.5); let pi_minus_2 = pi_mul_f64(self, -0.5); @@ -297,7 +297,7 @@ pub trait HSeriesOpBuilder: Dataflow + UnwrapBuilder { Ok([a, b]) } - /// Build a CZ gate in terms of HSeries primitives. + /// Build a CZ gate in terms of QSystem primitives. fn build_cz(&mut self, a: Wire, b: Wire) -> Result<[Wire; 2], BuildError> { let pi = pi_mul_f64(self, 1.0); let pi_2 = pi_mul_f64(self, 0.5); @@ -312,19 +312,19 @@ pub trait HSeriesOpBuilder: Dataflow + UnwrapBuilder { Ok([a, b]) } - /// Build a RX gate in terms of HSeries primitives. + /// Build a RX gate in terms of QSystem primitives. fn build_rx(&mut self, qb: Wire, theta: Wire) -> Result { let zero = pi_mul_f64(self, 0.0); self.add_phased_x(qb, theta, zero) } - /// Build a RY gate in terms of HSeries primitives. + /// Build a RY gate in terms of QSystem primitives. fn build_ry(&mut self, qb: Wire, theta: Wire) -> Result { let pi_2 = pi_mul_f64(self, 0.5); self.add_phased_x(qb, theta, pi_2) } - /// Build a CRZ gate in terms of HSeries primitives. + /// Build a CRZ gate in terms of QSystem primitives. fn build_crz(&mut self, a: Wire, b: Wire, lambda: Wire) -> Result<[Wire; 2], BuildError> { let two = self.add_load_const(Value::from(ConstF64::new(2.0))); let lambda_2 = self @@ -339,7 +339,7 @@ pub trait HSeriesOpBuilder: Dataflow + UnwrapBuilder { Ok([a, b]) } - /// Build a Toffoli (CCX) gate in terms of HSeries primitives. + /// Build a Toffoli (CCX) gate in terms of QSystem primitives. fn build_toffoli(&mut self, a: Wire, b: Wire, c: Wire) -> Result<[Wire; 3], BuildError> { let pi = pi_mul_f64(self, 1.0); let pi_2 = pi_mul_f64(self, 0.5); @@ -401,7 +401,7 @@ pub trait HSeriesOpBuilder: Dataflow + UnwrapBuilder { } } -impl HSeriesOpBuilder for D {} +impl QSystemOpBuilder for D {} #[cfg(test)] mod test { @@ -423,8 +423,8 @@ mod test { fn create_extension() { assert_eq!(EXTENSION.name(), &EXTENSION_ID); - for o in HSeriesOp::iter() { - assert_eq!(HSeriesOp::from_def(get_opdef(o).unwrap()), Ok(o)); + for o in QSystemOp::iter() { + assert_eq!(QSystemOp::from_def(get_opdef(o).unwrap()), Ok(o)); } } @@ -471,9 +471,9 @@ mod test { #[test] fn test_cast() { // test overlapping names don't cause cast errors - for op in HSeriesOp::iter() { + for op in QSystemOp::iter() { let optype: OpType = op.into(); - let new_op: HSeriesOp = optype.cast().unwrap(); + let new_op: QSystemOp = optype.cast().unwrap(); assert_eq!(op, new_op); assert_eq!(optype.cast::(), None); } diff --git a/tket2-hseries/src/extension/hseries/lower.rs b/tket2-hseries/src/extension/qsystem/lower.rs similarity index 85% rename from tket2-hseries/src/extension/hseries/lower.rs rename to tket2-hseries/src/extension/qsystem/lower.rs index 4c5da318..452fcfa3 100644 --- a/tket2-hseries/src/extension/hseries/lower.rs +++ b/tket2-hseries/src/extension/qsystem/lower.rs @@ -15,13 +15,13 @@ use std::collections::HashMap; use strum::IntoEnumIterator; use tket2::{extension::rotation::RotationOpBuilder, Tk2Op}; -use crate::extension::hseries::{HSeriesOp, HSeriesOpBuilder}; +use crate::extension::qsystem::{self, QSystemOp, QSystemOpBuilder}; lazy_static! { - /// Extension registry including [crate::extension::hseries::REGISTRY] and + /// Extension registry including [crate::extension::qsystem::REGISTRY] and /// [tket2::extension::rotation::ROTATION_EXTENSION]. pub static ref REGISTRY: ExtensionRegistry = { - let mut registry = super::REGISTRY.to_owned(); + let mut registry = qsystem::REGISTRY.to_owned(); registry.register(tket2::extension::rotation::ROTATION_EXTENSION.to_owned()).unwrap(); registry }; @@ -111,7 +111,7 @@ fn build_to_radians(b: &mut DFGBuilder, rotation: Wire) -> Result Result, LowerTk2Error> { let mut replaced_nodes = lower_direct(hugr)?; let mut hugr_map: HashMap = HashMap::new(); @@ -136,10 +136,10 @@ fn lower_direct(hugr: &mut impl HugrMut) -> Result, LowerTk2Error> { Ok(hugr::algorithms::replace_many_ops(hugr, |op| { let op: Tk2Op = op.cast()?; Some(match op { - Tk2Op::TryQAlloc => HSeriesOp::TryQAlloc, - Tk2Op::QFree => HSeriesOp::QFree, - Tk2Op::Reset => HSeriesOp::Reset, - Tk2Op::MeasureFree => HSeriesOp::Measure, + Tk2Op::TryQAlloc => QSystemOp::TryQAlloc, + Tk2Op::QFree => QSystemOp::QFree, + Tk2Op::Reset => QSystemOp::Reset, + Tk2Op::MeasureFree => QSystemOp::Measure, _ => return None, }) })? @@ -171,15 +171,15 @@ pub fn check_lowered(hugr: &impl HugrView) -> Result<(), Vec> { } /// A `Hugr -> Hugr` pass that replaces [tket2::Tk2Op] nodes to -/// equivalent graphs made of [HSeriesOp]s. +/// equivalent graphs made of [QSystemOp]s. /// /// Invokes [lower_tk2_op]. If validation is enabled the resulting HUGR is /// checked with [check_lowered]. #[derive(Default, Debug, Clone)] -pub struct LowerTket2ToHSeriesPass(ValidationLevel); +pub struct LowerTket2ToQSystemPass(ValidationLevel); -impl LowerTket2ToHSeriesPass { - /// Run `LowerTket2ToHSeriesPass` on the given [HugrMut]. `registry` is used +impl LowerTket2ToQSystemPass { + /// Run `LowerTket2ToQSystemPass` on the given [HugrMut]. `registry` is used /// for validation, if enabled. pub fn run( &self, @@ -196,7 +196,7 @@ impl LowerTket2ToHSeriesPass { }) } - /// Returns a new `LowerTket2ToHSeriesPass` with the given [ValidationLevel]. + /// Returns a new `LowerTket2ToQSystemPass` with the given [ValidationLevel]. pub fn with_validation_level(&self, level: ValidationLevel) -> Self { Self(level) } @@ -245,35 +245,35 @@ mod test { let lowered = lower_direct(&mut h).unwrap(); assert_eq!(lowered.len(), 5); let circ = Circuit::new(&h, h.root()); - let ops: Vec = circ + let ops: Vec = circ .commands() .filter_map(|com| com.optype().cast()) .collect(); assert_eq!( ops, vec![ - HSeriesOp::TryQAlloc, - HSeriesOp::Measure, - HSeriesOp::TryQAlloc, - HSeriesOp::Reset, - HSeriesOp::QFree, + QSystemOp::TryQAlloc, + QSystemOp::Measure, + QSystemOp::TryQAlloc, + QSystemOp::Reset, + QSystemOp::QFree, ] ); assert_eq!(check_lowered(&h), Ok(())); } #[rstest] - #[case(Tk2Op::H, Some(vec![HSeriesOp::PhasedX, HSeriesOp::Rz]))] - #[case(Tk2Op::X, Some(vec![HSeriesOp::PhasedX]))] - #[case(Tk2Op::Y, Some(vec![HSeriesOp::PhasedX]))] - #[case(Tk2Op::Z, Some(vec![HSeriesOp::Rz]))] - #[case(Tk2Op::S, Some(vec![HSeriesOp::Rz]))] - #[case(Tk2Op::Sdg, Some(vec![HSeriesOp::Rz]))] - #[case(Tk2Op::T, Some(vec![HSeriesOp::Rz]))] - #[case(Tk2Op::Tdg, Some(vec![HSeriesOp::Rz]))] - #[case(Tk2Op::Rx, Some(vec![HSeriesOp::PhasedX]))] - #[case(Tk2Op::Ry, Some(vec![HSeriesOp::PhasedX]))] - #[case(Tk2Op::Rz, Some(vec![HSeriesOp::Rz]))] + #[case(Tk2Op::H, Some(vec![QSystemOp::PhasedX, QSystemOp::Rz]))] + #[case(Tk2Op::X, Some(vec![QSystemOp::PhasedX]))] + #[case(Tk2Op::Y, Some(vec![QSystemOp::PhasedX]))] + #[case(Tk2Op::Z, Some(vec![QSystemOp::Rz]))] + #[case(Tk2Op::S, Some(vec![QSystemOp::Rz]))] + #[case(Tk2Op::Sdg, Some(vec![QSystemOp::Rz]))] + #[case(Tk2Op::T, Some(vec![QSystemOp::Rz]))] + #[case(Tk2Op::Tdg, Some(vec![QSystemOp::Rz]))] + #[case(Tk2Op::Rx, Some(vec![QSystemOp::PhasedX]))] + #[case(Tk2Op::Ry, Some(vec![QSystemOp::PhasedX]))] + #[case(Tk2Op::Rz, Some(vec![QSystemOp::Rz]))] // multi qubit ordering is not deterministic #[case(Tk2Op::CX, None)] #[case(Tk2Op::CY, None)] @@ -283,17 +283,17 @@ mod test { // conditional doesn't fit in to commands #[case(Tk2Op::Measure, None)] #[case(Tk2Op::QAlloc, None)] - fn test_lower(#[case] t2op: Tk2Op, #[case] hseries_ops: Option>) { + fn test_lower(#[case] t2op: Tk2Op, #[case] qsystem_ops: Option>) { // build dfg with just the op let h = op_to_hugr(t2op).unwrap(); let circ = Circuit::new(&h, h.root()); - let ops: Vec = circ + let ops: Vec = circ .commands() .filter_map(|com| com.optype().cast()) .collect(); - if let Some(hseries_ops) = hseries_ops { - assert_eq!(ops, hseries_ops); + if let Some(qsystem_ops) = qsystem_ops { + assert_eq!(ops, qsystem_ops); } assert_eq!(check_lowered(&h), Ok(())); diff --git a/tket2-hseries/src/lazify_measure.rs b/tket2-hseries/src/lazify_measure.rs index d17049a8..66dfefb5 100644 --- a/tket2-hseries/src/lazify_measure.rs +++ b/tket2-hseries/src/lazify_measure.rs @@ -1,8 +1,8 @@ //! Provides `LazifyMeasurePass` which replaces [Tket2Op::Measure] nodes with -//! [HSeriesOp::Measure] nodes. +//! [QSystemOp::Measure] nodes. //! //! [Tket2Op::Measure]: tket2::Tk2Op::Measure -//! [HSeriesOp::Measure]: crate::extension::hseries::HSeriesOp::Measure +//! [QSystemOp::Measure]: crate::extension::qsystem::QSystemOp::Measure use std::collections::{HashMap, HashSet}; use derive_more::{Display, Error, From}; @@ -27,11 +27,11 @@ use lazy_static::lazy_static; use crate::extension::{ futures::FutureOpBuilder, - hseries::{self, HSeriesOpBuilder}, + qsystem::{self, QSystemOpBuilder}, }; /// A `Hugr -> Hugr` pass that replaces [tket2::Tk2Op::Measure] nodes with -/// [hseries::HSeriesOp::Measure] nodes. To construct a `LazifyMeasurePass` use +/// [qsystem::QSystemOp::Measure] nodes. To construct a `LazifyMeasurePass` use /// [Default::default]. /// /// The `Hugr` must not contain any non-local edges. If validation is enabled, @@ -114,7 +114,7 @@ lazy_static! { let [qb, lazy_r] = builder.add_lazy_measure(qb).unwrap(); let [r] = builder.add_read(lazy_r, BOOL_T).unwrap(); builder - .finish_hugr_with_outputs([qb, r], &hseries::REGISTRY) + .finish_hugr_with_outputs([qb, r], &qsystem::REGISTRY) .unwrap() }; } @@ -146,7 +146,7 @@ fn measure_replacement(num_dups: usize) -> Hugr { assert_eq!(num_out_types, rs.len()); assert_eq!(num_out_types, num_dups + 1); builder - .finish_hugr_with_outputs(rs, &hseries::REGISTRY) + .finish_hugr_with_outputs(rs, &qsystem::REGISTRY) .unwrap() } @@ -223,14 +223,14 @@ mod test { use crate::extension::{ futures::{self, FutureOpDef}, - hseries::HSeriesOp, + qsystem::QSystemOp, }; use super::*; lazy_static! { pub static ref REGISTRY: ExtensionRegistry = ExtensionRegistry::try_new([ - hseries::EXTENSION.to_owned(), + qsystem::EXTENSION.to_owned(), futures::EXTENSION.to_owned(), TKET2_EXTENSION.to_owned(), PRELUDE.to_owned(), @@ -260,7 +260,7 @@ mod test { let ot = hugr.get_optype(n); if let Some(FutureOpDef::Read) = ot.cast() { num_read += 1; - } else if let Some(HSeriesOp::LazyMeasure) = ot.cast() { + } else if let Some(QSystemOp::LazyMeasure) = ot.cast() { num_lazy_measure += 1; } else { assert_eq!(ot.cast::(), None) diff --git a/tket2-hseries/src/lib.rs b/tket2-hseries/src/lib.rs index 5557d335..2079204c 100644 --- a/tket2-hseries/src/lib.rs +++ b/tket2-hseries/src/lib.rs @@ -13,7 +13,7 @@ use tket2::Tk2Op; use extension::{ futures::FutureOpDef, - hseries::{HSeriesOp, LowerTk2Error, LowerTket2ToHSeriesPass}, + qsystem::{LowerTk2Error, LowerTket2ToQSystemPass, QSystemOp}, }; use lazify_measure::{LazifyMeasurePass, LazifyMeasurePassError}; @@ -23,44 +23,44 @@ pub mod extension; pub mod lazify_measure; -/// Modify a [hugr::Hugr] into a form that is acceptable for ingress into an H-series. +/// Modify a [hugr::Hugr] into a form that is acceptable for ingress into a Q-System. /// Returns an error if this cannot be done. /// -/// To construct a `HSeriesPass` use [Default::default]. +/// To construct a `QSystemPass` use [Default::default]. #[derive(Debug, Clone, Copy, Default)] -pub struct HSeriesPass { +pub struct QSystemPass { validation_level: ValidationLevel, } #[derive(Error, Debug, Display, From)] #[non_exhaustive] -/// An error reported from [HSeriesPass]. -pub enum HSeriesPassError { +/// An error reported from [QSystemPass]. +pub enum QSystemPassError { /// The [hugr::Hugr] was invalid either before or after a pass ran. ValidationError(ValidatePassError), /// An error from the component [LazifyMeasurePass]. LazyMeasureError(LazifyMeasurePassError), /// An error from the component [force_order()] pass. ForceOrderError(HugrError), - /// An error from the component [LowerTket2ToHSeriesPass] pass. + /// An error from the component [LowerTket2ToQSystemPass] pass. LowerTk2Error(LowerTk2Error), } -impl HSeriesPass { - /// Run `HSeriesPass` on the given [HugrMut]. `registry` is used for +impl QSystemPass { + /// Run `QSystemPass` on the given [HugrMut]. `registry` is used for /// validation, if enabled. pub fn run( &self, hugr: &mut impl HugrMut, registry: &ExtensionRegistry, - ) -> Result<(), HSeriesPassError> { + ) -> Result<(), QSystemPassError> { self.lower_tk2().run(hugr, registry)?; self.lazify_measure().run(hugr, registry)?; self.validation_level .run_validated_pass(hugr, registry, |hugr, _| { force_order(hugr, hugr.root(), |hugr, node| { let optype = hugr.get_optype(node); - if optype.cast::().is_some() || optype.cast::().is_some() { + if optype.cast::().is_some() || optype.cast::().is_some() { // quantum ops are lifted as early as possible -1 } else if let Some(FutureOpDef::Read) = hugr.get_optype(node).cast() { @@ -70,20 +70,20 @@ impl HSeriesPass { 0 } })?; - Ok::<_, HSeriesPassError>(()) + Ok::<_, QSystemPassError>(()) })?; Ok(()) } - fn lower_tk2(&self) -> LowerTket2ToHSeriesPass { - LowerTket2ToHSeriesPass::default().with_validation_level(self.validation_level) + fn lower_tk2(&self) -> LowerTket2ToQSystemPass { + LowerTket2ToQSystemPass::default().with_validation_level(self.validation_level) } fn lazify_measure(&self) -> LazifyMeasurePass { LazifyMeasurePass::default().with_validation_level(self.validation_level) } - /// Returns a new `HSeriesPass` with the given [ValidationLevel]. + /// Returns a new `QSystemPass` with the given [ValidationLevel]. pub fn with_validation_level(mut self, level: ValidationLevel) -> Self { self.validation_level = level; self @@ -105,12 +105,12 @@ mod test { use petgraph::visit::{Topo, Walker as _}; use crate::{ - extension::{futures::FutureOpDef, hseries::HSeriesOp}, - HSeriesPass, + extension::{futures::FutureOpDef, qsystem::QSystemOp}, + QSystemPass, }; #[test] - fn hseries_pass() { + fn qsystem_pass() { let registry = &tket2::extension::REGISTRY; let (mut hugr, [call_node, h_node, f_node, rx_node]) = { let mut builder = DFGBuilder::new(Signature::new(QB_T, vec![BOOL_T, BOOL_T])).unwrap(); @@ -134,14 +134,14 @@ mod test { // with no dependencies, this Reset should be lifted to the start let [qb] = builder - .add_dataflow_op(HSeriesOp::Reset, [qb]) + .add_dataflow_op(QSystemOp::Reset, [qb]) .unwrap() .outputs_arr(); let h_node = qb.node(); // depending on the angle means this op can't be lifted above the angle ops let [qb] = builder - .add_dataflow_op(HSeriesOp::Rz, [qb, angle]) + .add_dataflow_op(QSystemOp::Rz, [qb, angle]) .unwrap() .outputs_arr(); let rx_node = qb.node(); @@ -150,7 +150,7 @@ mod test { // Reads will be added. The Lazy Measure will be lifted and the // reads will be sunk. let [measure_result] = builder - .add_dataflow_op(HSeriesOp::Measure, [qb]) + .add_dataflow_op(QSystemOp::Measure, [qb]) .unwrap() .outputs_arr(); @@ -160,7 +160,7 @@ mod test { (hugr, [call_node, h_node, f_node, rx_node]) }; - HSeriesPass::default().run(&mut hugr, registry).unwrap(); + QSystemPass::default().run(&mut hugr, registry).unwrap(); let topo_sorted = Topo::new(&hugr.as_petgraph()) .iter(&hugr.as_petgraph()) diff --git a/tket2-py/tket2/circuit/build.py b/tket2-py/tket2/circuit/build.py index c0b5554f..3c568a04 100644 --- a/tket2-py/tket2/circuit/build.py +++ b/tket2-py/tket2/circuit/build.py @@ -52,7 +52,7 @@ def finish_package( extensions = [ ext.rotation(), ext.futures(), - ext.hseries(), + ext.qsystem(), ext.quantum(), ext.result(), *(other_extensions or []), diff --git a/tket2-py/tket2/extensions/__init__.py b/tket2-py/tket2/extensions/__init__.py index c90c382d..58354f40 100644 --- a/tket2-py/tket2/extensions/__init__.py +++ b/tket2-py/tket2/extensions/__init__.py @@ -1,4 +1,4 @@ -from tket2_exts import rotation, futures, hseries, quantum, result +from tket2_exts import rotation, futures, qsystem, quantum, result -__all__ = ["rotation", "futures", "hseries", "quantum", "result"] +__all__ = ["rotation", "futures", "qsystem", "quantum", "result"]