I am very happy to announce that I have added a class CktExpander to Qubiter At GitHub. The class reads any English file previously written by Qubiter and writes new English and Picture Files wherein every line of the original English file is expanded, if possible. A general Qubiter English file can have lines which denote U(2) matrices or swaps with 0, 1 or more controls attached. We say such a line is expanded if it is replaced by a sequence of lines each consisting of either (1) a qubit rotation or (2) a simple CNOT with only one control. Expander subroutines of this type are useful because quantum computers (for instance, IBM Quantum Experience) can only perform (1) or (2).
I have written a Jupyter Notebook that illustrates how to use this new Qubiter capability.
Actually, on June 2010, I published a blog post where I described a very similar effort: “Dumbing Down A Quantum Language“. Back then, I was using JAVA instead of Python. But afterwards, I came to the conclusion that JAVA support for numerics, linear algebra, plotting and statistics is inadequate for the purposes of writing Qubiter, whereas Python, with numpy, scipy, mathplotlib, pandas, etc., is almost perfect for the job. So when I was a java head, I wrote some classes that also expanded the lines of an English file into simpler operations. I am very happy that this is the second time that I try to write such subroutines, because practice makes perfect, even in programming. I feel that my Python expander subroutines are far better than my prior JAVA expander subroutines.