Quantum Computing

Imperative Quantum Programming with Ownership and Borrowing in Guppy

Linear types enforce no-cloning and no-deleting theorems in functional quantum programming. However, in imperative quantum programming, they have not gained widespread adoption. This work aims to develop a quantum type system that combines ergonomic …

Guppy: Pythonic Quantum-Classical Programming

Talk on Guppy at the Quantum Software 2.0 workshop co-located with IEEE Quantum Week 2024.

Guppy: Pythonic Quantum-Classical Programming

We present ongoing work on Guppy, a domain-specific language embedded in Python that allows users to write high-level hybrid quantum programs with complex control flow in Pythonic syntax, aiming to run them on actual quantum hardware.

Hoare meets Heisenberg: A Lightweight Logic for Quantum Programs

We show that Gottesman's (1998) semantics for Clifford circuits based on the Heisenberg representation gives rise to a lightweight Hoare-like logic for efficiently characterizing a common subset of quantum programs. Our applications include (i) …

Beyond Separation: Toward a Specification Language for Modular Reasoning about Quantum Programs

There has been a recent surge of interest in separation logics for quantum computation. Unlike Reynolds' initial attempts to formulate a separation logic for reasoning about _pointer manipulation_ using small, intuitive programs, the attempts in the …

Q# as a Quantum Algorithmic Language

Q# is a standalone domain-specific programming language from Microsoft for writing and running quantum programs. Like most industrial languages, it was designed without a formal specification, which can naturally lead to ambiguity in its …

The Essence of Q#

Ongoing project with the aim to establish firm mathematical foundations for the Q# programming language.

Toward a Type-Theoretic Interpretation of Q#

Q# is a high-level programming language from Microsoft for writing and running quantum programs. Like most industrial languages, it was designed without a formal specification, which can naturally lead to ambiguity in its interpretation. Further, …

Toward Formalizing the Q# Programming Language

Q# is a high-level programming language from Microsoft for writing and running quantum programs. Like most industrial languages, it was designed without a formal specification, which can naturally lead to ambiguity in its interpretation. We aim to …

Extending Gottesman Types Beyond the Clifford Group

We extend our previous work on Gottesman Types to cover circuits beyond Clifford Group and introduce the notion of linear combination types.