Quipper and Proto-Quipper are a family of quantum programming languages that, by their nature as circuit description languages, involve two runtimes: one at which the program generates a circuit and one at which the circuit is executed, normally with probabilistic results due to measurements. Accordingly, the language distinguishes two kinds of data: parameters, which are known at circuit generation time, and states, which are known at circuit execution time. Sometimes, it is desirable for the results of measurements to control the generation of the next part of the circuit. Therefore, the language needs to turn states, such as measurement outcomes, into parameters, an operation we call dynamic lifting. The goal of this paper is to model this interaction between the runtimes by providing a general categorical structure enriched in what we call "bisets". We demonstrate that the biset-enriched structure achieves a proper semantics of the two runtimes and their interaction, by showing that it models a variant of Proto-Quipper with dynamic lifting. The present paper deals with the concrete categorical semantics of this language, whereas a companion paper [FKRS2022a] deals with the syntax, type system, operational semantics, and abstract categorical semantics.
翻译:Quipper 和 Proto- Quipper 是一个量子编程语言组, 其性质是电路描述语言, 涉及两个运行时间: 一个程序产生电路, 一个执行电路, 通常由于测量结果具有概率性。 因此, 语言区分两类数据: 参数, 在电路生成时已知, 以及电路运行时已知的状态。 有时, 测量结果的结果对于控制电路下一部分的生成是可取的。 因此, 语言需要将状态( 如测量结果)转换为参数, 我们称之为动态提升的操作。 本文的目标是在运行时间之间建立这种互动模式, 提供我们称之为“ 饼干” 的一般绝对结构。 我们通过显示它模拟Proto- Quipper的变异, 动态提升。 本文涉及该语言的具体直线语的语义, 而与之配套的纸[ FKRS20-22a] 和运行型系统( semplainalticle) 与Syntarical、 systemal sty、 sex、 stypeal typeal.