The Language-Integrated Quantum Operations (LIQUi|>) Simulator
F# TeX
Switch branches/tags
Nothing to show
Latest commit 0382c49 Aug 21, 2017 @dbwz8 dbwz8 Updated License agreement

The Language-Integrated Quantum Operations (LIQUi|〉) simulator


2017/07/13 Re-compiled for VS 2017

User Brandon Langenberg at FAU discovered that any compilations done with VS 2017 will not work with the shipped bits (since they were built with VS 2015). We have re-compiled all the binaries and have moved to F# 4.1 (FSharp.Core along with .Net Framework 4.6.1.

2017/06/21 Bug fixed in UserCode/DaveWecker/AltOutput.fs

User thiennm noted that classically controlled gates were dropping a qubit in the QASM output (see the Teleport example). His suggested fix has been adopted. Thanks!

2017/06/14 Fixed scripts on Linux and OSX

A recent change to FSharp on Linux and OSX made it impossible to incrementaly load scripts that were compiled with /S. We have updated the kit so that the linux directory now contains private copies of FSharp.Core.* which should fix the problem.

2017/04/18 Drawing Shor Circuits

We had a request for renderings of the circuits used by the __Shor() command. There is now a zipped file of all the circuits in both HTML and LaTeX in UserCode/DaveWecker as Shor_Render.7z

2016/07/02 Sample implementation of Spin.Test and Stabilizer.ShowState released

In UserCode\DaveWecker there are two new releases of sample implementations. The first shows how to implement the Spin.Test routine that's caled by the __Ferro() example in LIQUi|〉. There's also a new property on stabilizers called Tableau which will return the current (raw) stabilizers. See the Tableau.fsx sample in the same directory for further information. The file is a good place to start.

2016/05/20 Channels/POVMs added

We've made a major addition to the available noise models in the system by adding Channels (via Kraus operators) and Generalized Measurement (via POVMs). The Users Manual has a new section under "Advanced Noise Models" called "Channels and POVMs", the API docs have been updated and there's a new built in example called __Kraus. A sample call would be: __Kraus(1000,0.02,.02,true) which would do 1000 runs with Amplitude Damping and Depolarizing noise. See the Users Manual for full details as well as the provided source code in Samples\Kraus.fsx. You can also find an example of a simple quantum game (Peres) using POVMs in the UserCode\MartinRoettler directory.

2016/05/16 First Quantum Challenge Winners announced!

The winners of the first Quantum Challenge have been announced in the Microsoft Research Blog. Full information about the entries may be found in our GitHub repo.

2016/05/03 QuAM source code released

In UserCode\DaveWecker there's a new release of source code for the QuAM example that's built in to LIQUi|〉. See the file in the same directory for details. We also exposed a few more APIs to help make this and other examples easier to code.

2016/04/23 QLSA source code released

In UserCode\DaveWecker there's a new release of source code for the QLSA example that's built in to LIQUi|〉. See the file in the same directory for details.

2016/03/11 New introduction videos

Seven new short videos have been posted to the LIQUi|〉 Research site

2016/03/04 Outputting circuits for other Quantum Languages

We've uploaded sample code that shows how to print out circuits for other quantum languages. This specific example shows how to parse a circuit and generate QASM code. See UserCode example from DaveWecker

As always, we encourage you to join our (low volume) mailing list (instructions below) so you will directly receive announcements like these.

What Is LIQUi|〉?

LIQUi|〉 is a simulation platform developed by the Quantum Architectures and Computation team at Microsoft Research to aid in the exploration of quantum computation. LIQUi|〉 stands for “Language Integrated Quantum Operations”.
A quantum operation is usually referred to as a unitary operator (U) applied to a column state vector (also known as a ket: |>). The “i” is just a constant scaling factor, hence the acronym.

LIQUi|〉 includes three simulators:

  • A full state vector simulator that tracks the detailed evolution of the quantum state
  • A stabilizer simulator based on CHP (Aaronson and Gottesman,
  • A highly-optimized full state vector simulator for fermionic Hamiltonians

LIQUi|〉 is available under a Microsoft Research license.

For More Information

See the StationQ website and the paper, LIQUi|〉: A Software Design Architecture and Domain-Specific Language for Quantum Computing.

To stay up to date on what we're doing with LIQUi|〉, please watch our repository and sign up for the LIQUi|〉 email list. To sign up, send an email to with a one-line body reading:

SUB Liquid-news FirstName LastName

Replacing FirstName and LastName with your first and last names. If you prefer to remain anonymous, you may instead send an email containing:

SUB Liquid-news anonymous

How To Cite LIQUi|〉

If you use LIQUi|〉 in your research, please cite it as follows:

  • bibTex:
  author = {Dave Wecker and Krysta M.~Svore},
  title = {{LIQU}i|>: {A} {S}oftware {D}esign {A}rchitecture and {D}omain-{S}pecific 
            {L}anguage for {Q}uantum {C}omputing},
  year = {2014},
  eprint = {1402.4467},
  url = {arXiv:1402.4467v1}
  • Text:
D. Wecker and K. M. Svore, “LIQ<i>Ui</i>|&#x232A;: A Software Design Architecure and Domain-Specific 
    Language for Quantum Computing,” (2014), arXiv:1402.4467v1 [quant-ph],

What Can I Do With It?

You can use LIQUi|〉 to define quantum circuits, render them into a variety of graphical formats, and execute them using an appropriate simulator.

Some of the specific algorithms you can simulate with LIQUi|〉 are:

All of these algorithms, and many more, are included as samples with LIQUi|〉. A video of a recent talk at IQC on the reserach we've done with the simulator is at

How Do I Get It?

You can download the LIQUi|〉 executable, libraries, sample scripts, and documentation from this site.

See the Getting Started page for directions on how to download and start using LIQUi|〉.

If you wish to use LIQUi|〉 on a Windows virtual machine, see the Using LIQUi|〉 on Microsoft Azure page for directions.

How Do I Use It?

See the users' guide and the full help documentation. The help may also be downloaded as a single file, if desired. There is also a tutorial video available that will take you through the basics.

We've also posted seven short videos to the LIQUi|〉 Research site. These include:

Note that this version of LIQUi|〉 is limited to a maximum of 23 physical qubits for full state vector simulation.

If you run into a problem or have a question, you can post an issue. If you have other feedback, you can contact the LIQUi|〉 team at

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.