Comments (5)
Hi @boschmitt , I'd be happy to use that functionality. Any updates on this ?
from tweedledum.
Hi @Roland-djee.
There is already some limited support for OpenQASM 2.0.
I suppose the further support would require bigger architectural changes to tweedledum
, i.e., possibly creating a AST and a global context capable of handling various circuits inside a bigger program. Also, there is the newer OpenQASM 3.0 version that is still in development phase.
from tweedledum.
Yes, concretely, I would like to use the Exorcism
implementation. However, it requires input esops as strings (unless I missed something) which can be produced by traversing an AST of some sort. I was wondering if there were already such a functionality for OpenQASM format.
from tweedledum.
exorcism
works form an ESOP defined as a vector of cubes or from a truth table.
If you have a function: f(abc) = a!c ⊕ abc, then your ESOP will be [Cube(‘1-0’), Cube(‘111’)]
(Note that ‘b’ does not appear in the first cube, hence the use of ‘-‘)
For example (from python):
from tweedledum.classical import TruthTable, Cube, create_from_cubes, exorcism
esop = [Cube('101'), Cube('100'), Cube('011'), Cube('001'), Cube('000')]
opt_esop = exorcism(esop, 3)
for cube in opt_esop:
print(cube.to_string(3))
# Create a TruthTable from the orginal ESOP:
tt_esop = TruthTable(3)
create_from_cubes(tt_esop, esop, True)
# Create a TruthTable from the optimized orginal ESOP:
tt_opt_esop = TruthTable(3)
create_from_cubes(tt_opt_esop, opt_esop, True)
# Make sure they are the same
print(tt_esop == tt_opt_esop)
# Now, from a function TruthTable do exorcism (it will extract a PKRM and then do exorcism)
opt_esop_2 = exorcism(tt_opt_esop)
for cube in opt_esop_2:
print(cube.to_string(3))
from tweedledum.
Hi @boschmitt thanks. Yes, I am aware of this. I am just scratching my head around how to parse structures (ie. circuits) to generate these vectors of cubes. It looks like there is no other way than an AST of some sort.
from tweedledum.
Related Issues (20)
- CMake: doesn't install anything if -DTWEEDLEDUM_PYBINDS=OFF HOT 2
- Add support for python dimacs reader in memory HOT 2
- Import tweedledum failing on MacOS HOT 11
- DOC: error in README.md
- pip install fails HOT 3
- ability to specify a timeout on exact synthesis
- compute_depth() crashes on empty circuit
- Building fails HOT 6
- Build failure of tests (catch2) with gcc 10.3.0, glibc 2.34 HOT 1
- macOS 13 could not install tweedledum with CMake issue HOT 1
- With TWEEDLEDUM_PYBINDS=OFF fewer C++ files are compiled but still produces the same result
- Tests fail: E ModuleNotFoundError: No module named 'pybind11_tests'
- 3313 assertions in 73 test cases
- Python build should reuse the C++ library
- Install Issue on m1 macs HOT 4
- Build fails with Python 3.11 because of outdated pybind11 HOT 2
- "license_file" will be deprecated 10/30/2023 (replaced with "license_files") HOT 2
- Failure reading DIMACS files with 10 variables or more
- Unable to pip install -- invalid pyproject.toml configuration HOT 5
- Push a release with python 3.9 wheels HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tweedledum.