In QCL, decrement is done by "undoing" increment. The prefix ! is used to instead run the unitary inverse of the function. !inc(x) is the inverse of inc(x) and instead performs the operation The cond keyword means that the function can be conditional. In the model of computation used in this article (the quantum circuit model), a classic computer generates the gate composition for the quantum computer, and the quantum computer behaves as a coprocessor that receives instructions from the classical computer about which primitive gates to apply to which qubits. Measurement of quantum registers results in binary values that the classical computer can use in its computations. Quantum algorithms often contain both a classical and a quantum part. Unmeasured I/O (sending qubits to remote computers without collapsing their quantum states) can be used to create networks of quantum computers. Entanglement swapping can then be used to realize distributed algorithms with quantum computers that are not directly connected. Examples of distributed algorithms that only require the use of a handful of quantum logic gates is superdense coding, the quantum Byzantine agreement and the BB84 cipherkey exchange protocol. See also Adiabatic quantum computation Cellular automaton Cloud-based quantum computing Counterfactual definiteness Counterfactual quantum computation Landauer's principle Logical connective One-way quantum computer Quantum algorithm Quantum cellular automaton Quantum channel Quantum finite automata Quantum logic Quantum memory Quantum network Quantum Zeno effect Reversible computation Unitary transformation (quantum mechanics) Notes References Sources Quantum information science Logic gates Australian inventions