Alexis Toumi

Results 34 issues of Alexis Toumi

Quantum circuits should be drawn as closely as possible to the standard notation for controlled gates, bra and kets, measurements etc. ![example](https://raw.githubusercontent.com/oxford-quantum-group/discopy/drawing/docs/_static/imgs/quantum/circuit-example.png) Ideally, we want identity wires for bits and...

enhancement

The dagger of bubbles is broken. Indeed, `Bubble.dagger` is inherited from `Box.dagger` which assumes that the subclasses keep the same arguments `name, dom, cod, _dagger` for initialisation. ``` >>> f...

For now, the `Diagram` class is based on lists of boxes and offsets, it allows only to encode planar diagrams. In order to encode diagrams in compact categories, we would...

enhancement

We can already draw arbitrary permutations as sequences of swaps, but this can clutter diagrams unnecessarily. An easy fix is to define `Permutation` boxes, with an appropriate refactoring of the...

enhancement
good first issue

For now, DisCoPy has two ways to define diagrams: either directly as a list of boxes and offsets, or as an expression involving composition, tensor and identities. When drawing diagrams...

enhancement

Pattern matching and rewriting methods would be needed. That is, given a `diagram` and a pair of parallel diagrams `left` and `right`, we want: 1. A method `diagram.match(left)` which generates...

enhancement

Hello PyZX people! Just dropping by to let you know I've just added a back-and-forth interface between [DisCoPy](https://github.com/oxford-quantum-group/discopy) and PyZX. Also, I've started using [nbsphinx](https://nbsphinx.readthedocs.io/) for including jupyter notebooks into...

enhancement
good first issue

DisCoPy already has JSON de/serialisation for the `Diagram` class, see [dumps](https://docs.discopy.org/en/main/_api/discopy.cat.dumps.html) and [loads](https://docs.discopy.org/en/main/_api/discopy.cat.loads.html). We need the same feature for the `Hypergraph` class.

Smallest example to reproduce the bug: ```python >>> from discopy.frobenius import Ty, Box, Id >>> f = Box('f', Ty('x'), Ty('y')) >>> assert f == f @ Id() >>> hash(f) ==...

bug

Every time we do `Functor.__call__(self, other)`, we dispatch on `self` which then goes through the whole hierarchy of classes. It would be more efficient to dispatch on `other` instead, e.g....

enhancement