Quantum Programming Language LanQ - Mlnařík, Hynek (2007)
We define a typed imperative quantum programming language LanQ that allows programmers to implement any algorithm that is based on either one, or a combination of classical or quantum computation. The language syntax is similar to that of C language and forces programmers to structure their programs into smaller pieces of code (methods, blocks) what makes the program better readable and maintainable compared to programs in unstructured languages. It allows programmers to assign a quantum system to several variables in such a way that all quantum principles, namely no-cloning and no-deleting, are obeyed. The language also offers process algebraic features such as creation a new process (this is done by forking a new process from a running one) and interprocess communication. It therefore supports implementation of multiparty protocols. The resources sent over a channel are handled so that they are always owned by at most one process at one time. In the thesis, we formally describe the.