Learn More
It differs from the present version in that it has been copy-edited and reformatted. Abstract Many familiar models of the untyped lambda calculus are constructed by order theoretic methods. This paper provides some basic new facts about ordered models of the lambda calculus. We show that in any partially ordered model that is complete for the theory of β-or(More)
In this paper, we develop a functional programming language for quantum computers, by extending the simply-typed lambda calculus with quantum types and operations. The design of this language adheres to the " quantum data, classical control " paradigm, following the first author's work on quantum flow-charts. We define a call-by-value operational semantics,(More)
In this paper, we propose an adversary-centric, logical framework for formalizing cryptographic protocols. The formalism is inspired by the work of Compton and Dexter and of Cervesato et al., but we do not focus on proof search, but instead on logical validity. A novel contribution of this paper is a technique for giving very short proofs of protocol(More)
The field of quantum algorithms is vibrant. Still, there is currently a lack of programming languages for describing quantum computation on a practical scale, i.e., not just at the level of toy problems. We address this issue by introducing Quipper, a scalable, expressive, functional, higher-order quantum programming language. Quipper has been used to(More)
Overview Given a gate set S universal for quantum computing, the problem of decomposing a unitary operator U into a circuit over S is known as the synthesis problem. This problem can be solved exactly, if U belongs to the set of circuits generated by S. Otherwise, it can be solved approximately, by finding a circuit U such that ||U − U || < for some chosen(More)
The field of quantum computation suffers from a lack of syntax. In the absence of a convenient programming language, algorithms are frequently expressed in terms of hardware circuits or Turing machines. Neither approach particularly encourages structured programming or abstractions such as data types. In this paper, we describe the syntax and semantics of a(More)