3 research outputs found
Type-based Qubit Allocation for a First-Order Quantum Programming Language
Qubit allocation is a process to assign physical qubits to logical qubits in
a quantum program. Since some quantum computers have connectivity constraints
on applications of two-qubit operations, it is mainly concerned with finding an
assignment and inserting instructions to satisfy the connectivity constraints.
Many methods have been proposed for the qubit allocation problem for low-level
quantum programs. This paper presents a type-based framework of qubit
allocation for a quantum programming language with first-order functions. In
our framework, the connectivity constraints are expressed by a simple graph of
qubits called a coupling graph. We formalize (1) the source language, whose
type system verifies that the number of qubits required for a given program to
run does not exceed the number of nodes of the coupling graph, (2) the target
language, whose qualified type system verifies that a well-typed program
satisfies the connectivity constraints, and (3) an algorithm to translate a
source program into a target program. We prove that both languages are
type-safe and that the translation algorithm is type preserving.Comment: 15 pages + appendix, 10 figures, presented at PPL2022 (Japanese
domestic conference
Register allocation by proof transformation
Abstract. This paper presents a proof-theoretical framework for register allocation that accounts for the entire process of register allocation. Liveness analysis is proof reconstruction (similar to type inference), and register allocation is proof transformation from a proof system with unrestricted variable accesses to the one with restricted variable access. In our framework, the set of registers acts as the “working set ” of the live variables at each instruction step, which changes during the execution of the code. This eliminates the ad-hoc notion of “spilling”. The necessary memory-register moves are systematically incorporated in the proof transformation process. Its correctness is a simple corollary of our construction; the resulting proof is equivalent to the proof of the original code modulo the treatment of structural rules. This yields a simple yet powerful register allocation algorithm. The algorithm has been implemented, demonstrating the feasibility of the framework 1.