Charles Yuan
Charles Yuan
One benefit of symbolic split/join would be to remove some checks: ``` if is_symbolic(x): raise DecomposeTypeError(...) _ = bb.split(x) ``` in decompositions, which 1) makes the code cleaner and 2)...
Going on a bit more of a limb, this would be a case where a `QTuple` data type would be useful. If we have a `QAny(m)` and a `QAny(n)`, then...
In the second example, it would be `bb.split(x) == np.array([y, z])` s.t. `y.dtype == QAny(m) and z.dtype == QAny(n)`. Perhaps this would coexist with the existing behavior of split which...
The first example would require some rewriting to follow the structure that the second example is aiming to exploit. So I guess it would not be simply removing the check...
The spirit of the first example is that it should be possible in principle to automatically derive many more call graphs from decompositions if the decompositions can work even on...
The concrete example I had in mind for the convenience of a zero-sized register is as follows. You have a hierarchy of bloqs that all have a (non-zero-sized) `system` register...
In classical programming, a zero-sized register is represented by the `void` type (`NoneType` in Python), which is inhabited by one value (`None`). So that is the correct value to use...
> Would we need a special allocation and freeing to allocate these null values? A null value stores zero information and every instance of the null value can be physically...
With all the above said, I would also be easily convinced that the effort required to correctly push zero-sized registers through the code would be not worth it right now,...
> There's also the question of whether e.g. QUInt(0) and QFxp(0) are different quantum data types. My thought early on was actually that there should be a `QNone` type and...